[Libreoffice-commits] core.git: Branch 'libreoffice-5-0' - connectivity/source

Lionel Elie Mamane lionel at mamane.lu
Mon Dec 14 03:03:33 PST 2015


 connectivity/source/drivers/odbc/OPreparedStatement.cxx |   12 +++++++++---
 connectivity/source/inc/odbc/OPreparedStatement.hxx     |    1 +
 2 files changed, 10 insertions(+), 3 deletions(-)

New commits:
commit fabfd88b11bb6253e9631664d9adb47c119f9e7d
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Sun Dec 13 19:21:30 2015 +0100

    tdf#96461 ODBC SQLBindParameter: correct DecimalDigits for time(date) values
    
    Change-Id: I33c63d2c002d9abcbadb16bcd460996ef3212f4a
    Reviewed-on: https://gerrit.libreoffice.org/20687
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/connectivity/source/drivers/odbc/OPreparedStatement.cxx b/connectivity/source/drivers/odbc/OPreparedStatement.cxx
index f5ff4e3..7beb3ea 100644
--- a/connectivity/source/drivers/odbc/OPreparedStatement.cxx
+++ b/connectivity/source/drivers/odbc/OPreparedStatement.cxx
@@ -291,6 +291,12 @@ void OPreparedStatement::setParameterPre(sal_Int32 parameterIndex)
 
 template <typename T> void OPreparedStatement::setScalarParameter(const sal_Int32 parameterIndex, const sal_Int32 i_nType, const SQLULEN i_nColSize, const T i_Value)
 {
+    setScalarParameter(parameterIndex, i_nType, i_nColSize, invalid_scale, i_Value);
+}
+
+
+template <typename T> void OPreparedStatement::setScalarParameter(const sal_Int32 parameterIndex, const sal_Int32 i_nType, const SQLULEN i_nColSize, sal_Int32 i_nScale, const T i_Value)
+{
     ::osl::MutexGuard aGuard( m_aMutex );
     setParameterPre(parameterIndex);
 
@@ -299,7 +305,7 @@ template <typename T> void OPreparedStatement::setScalarParameter(const sal_Int3
     TnoRef *bindBuf = static_cast< TnoRef* >( allocBindBuf(parameterIndex, sizeof(i_Value)) );
     *bindBuf = i_Value;
 
-    setParameter(parameterIndex, i_nType, i_nColSize, invalid_scale, bindBuf, sizeof(i_Value), sizeof(i_Value));
+    setParameter(parameterIndex, i_nType, i_nColSize, i_nScale, bindBuf, sizeof(i_Value), sizeof(i_Value));
 }
 
 
@@ -443,7 +449,7 @@ void SAL_CALL OPreparedStatement::setTime( sal_Int32 parameterIndex, const css::
     else
         nColSize = 18;
     TIME_STRUCT x(OTools::TimeToOdbcTime(aVal));
-    setScalarParameter<TIME_STRUCT&>(parameterIndex, DataType::TIME, nColSize, x);
+    setScalarParameter<TIME_STRUCT&>(parameterIndex, DataType::TIME, nColSize, (nColSize == 8)? 0 : nColSize-9, x);
 }
 
 
@@ -477,7 +483,7 @@ void SAL_CALL OPreparedStatement::setTimestamp( sal_Int32 parameterIndex, const
         nColSize = 29;
 
     TIMESTAMP_STRUCT x(OTools::DateTimeToTimestamp(aVal));
-    setScalarParameter<TIMESTAMP_STRUCT&>(parameterIndex, DataType::TIMESTAMP, nColSize, x);
+    setScalarParameter<TIMESTAMP_STRUCT&>(parameterIndex, DataType::TIMESTAMP, nColSize, (nColSize <= 19)? 0 : nColSize-20, x);
 }
 
 
diff --git a/connectivity/source/inc/odbc/OPreparedStatement.hxx b/connectivity/source/inc/odbc/OPreparedStatement.hxx
index 5996883..d8f9552 100644
--- a/connectivity/source/inc/odbc/OPreparedStatement.hxx
+++ b/connectivity/source/inc/odbc/OPreparedStatement.hxx
@@ -81,6 +81,7 @@ namespace connectivity
             void initBoundParam () throw(::com::sun::star::sdbc::SQLException);
             void setParameterPre(sal_Int32 parameterIndex);
             template <typename T> void setScalarParameter(sal_Int32 parameterIndex, sal_Int32 _nType, SQLULEN _nColumnSize, const T i_Value);
+            template <typename T> void setScalarParameter(sal_Int32 parameterIndex, sal_Int32 _nType, SQLULEN _nColumnSize, sal_Int32 _nScale, const T i_Value);
             void setParameter(sal_Int32 parameterIndex, sal_Int32 _nType, SQLULEN _nColumnSize, sal_Int32 _nScale, const void* _pData, SQLULEN _nDataLen, SQLLEN _nDataAllocLen);
             void setParameter(sal_Int32 parameterIndex, sal_Int32 _nType, sal_Int32 _nColumnSize, sal_Int32 _nByteSize, void* _pData);
             // Wrappers for special cases


More information about the Libreoffice-commits mailing list