[Libreoffice-commits] core.git: 2 commits - connectivity/source

Andrzej J.R. Hunt andrzej at ahunt.org
Thu Aug 29 02:11:24 PDT 2013


 connectivity/source/drivers/firebird/PreparedStatement.cxx |   26 ++++++++-----
 connectivity/source/drivers/firebird/PreparedStatement.hxx |    2 -
 2 files changed, 18 insertions(+), 10 deletions(-)

New commits:
commit d5cb782f9e84e1371c5e0c829f5c564fa7edee40
Author: Andrzej J.R. Hunt <andrzej at ahunt.org>
Date:   Thu Aug 29 10:04:33 2013 +0100

    Implement setTimestamp. (firebird-sdbc)
    
    Change-Id: I0c009a99061de787cd250912406a74a75fbc260a

diff --git a/connectivity/source/drivers/firebird/PreparedStatement.cxx b/connectivity/source/drivers/firebird/PreparedStatement.cxx
index 0a753db..c38e8d3 100644
--- a/connectivity/source/drivers/firebird/PreparedStatement.cxx
+++ b/connectivity/source/drivers/firebird/PreparedStatement.cxx
@@ -28,6 +28,7 @@
 #include <cppuhelper/typeprovider.hxx>
 #include <osl/diagnose.h>
 #include <propertyids.hxx>
+#include <time.h>
 
 #include <com/sun/star/sdbc/DataType.hpp>
 #include <com/sun/star/lang/DisposedException.hpp>
@@ -410,15 +411,22 @@ void SAL_CALL OPreparedStatement::setTime( sal_Int32 parameterIndex, const Time&
     checkDisposed(OStatementCommonBase_Base::rBHelper.bDisposed);
 
 }
-// -------------------------------------------------------------------------
 
-void SAL_CALL OPreparedStatement::setTimestamp( sal_Int32 parameterIndex, const DateTime& aVal ) throw(SQLException, RuntimeException)
+void SAL_CALL OPreparedStatement::setTimestamp(sal_Int32 nIndex, const DateTime& rTimestamp)
+    throw(SQLException, RuntimeException)
 {
-    (void) parameterIndex;
-    (void) aVal;
-    ::osl::MutexGuard aGuard( m_pConnection->getMutex() );
-    checkDisposed(OStatementCommonBase_Base::rBHelper.bDisposed);
+    struct tm aCTime;
+    aCTime.tm_sec = rTimestamp.Seconds;
+    aCTime.tm_min = rTimestamp.Minutes;
+    aCTime.tm_hour = rTimestamp.Hours;
+    aCTime.tm_mday = rTimestamp.Day;
+    aCTime.tm_mon = rTimestamp.Month;
+    aCTime.tm_year = rTimestamp.Year;
+
+    ISC_TIMESTAMP aISCTimestamp;
+    isc_encode_timestamp(&aCTime, &aISCTimestamp);
 
+    setValue< ISC_TIMESTAMP >(nIndex, aISCTimestamp, SQL_TIMESTAMP);
 }
 // -------------------------------------------------------------------------
 
commit e218242ebd8bbf5dbd5a995a6881cbdd2ee106e1
Author: Andrzej J.R. Hunt <andrzej at ahunt.org>
Date:   Thu Aug 29 09:49:37 2013 +0100

    Pass by reference instead of value, fix template parameters. (firebird-sdbc)
    
    We will also want to pass structs etc. into setValue hence we should pass
    by reference.
    
    Change-Id: Ia8aa02ca14414003c33cd8d070510759091b5ec9

diff --git a/connectivity/source/drivers/firebird/PreparedStatement.cxx b/connectivity/source/drivers/firebird/PreparedStatement.cxx
index fdbb0a4..0a753db 100644
--- a/connectivity/source/drivers/firebird/PreparedStatement.cxx
+++ b/connectivity/source/drivers/firebird/PreparedStatement.cxx
@@ -331,7 +331,7 @@ void SAL_CALL OPreparedStatement::setBoolean(sal_Int32 nIndex, sal_Bool x)
 }
 
 template <typename T>
-void OPreparedStatement::setValue(sal_Int32 nIndex, T nValue, ISC_SHORT nType)
+void OPreparedStatement::setValue(sal_Int32 nIndex, T& nValue, ISC_SHORT nType)
     throw(SQLException)
 {
     MutexGuard aGuard( m_pConnection->getMutex() );
@@ -380,13 +380,13 @@ void SAL_CALL OPreparedStatement::setLong(sal_Int32 nIndex, sal_Int64 nValue)
 void SAL_CALL OPreparedStatement::setFloat(sal_Int32 nIndex, float nValue)
     throw(SQLException, RuntimeException)
 {
-    setValue< sal_Int64 >(nIndex, nValue, SQL_FLOAT);
+    setValue< float >(nIndex, nValue, SQL_FLOAT);
 }
 
 void SAL_CALL OPreparedStatement::setDouble(sal_Int32 nIndex, double nValue)
     throw(SQLException, RuntimeException)
 {
-    setValue< sal_Int64 >(nIndex, nValue, SQL_DOUBLE); // TODO: SQL_D_FLOAT?
+    setValue< double >(nIndex, nValue, SQL_DOUBLE); // TODO: SQL_D_FLOAT?
 }
 
 // -------------------------------------------------------------------------
diff --git a/connectivity/source/drivers/firebird/PreparedStatement.hxx b/connectivity/source/drivers/firebird/PreparedStatement.hxx
index 5392a93..c32be80 100644
--- a/connectivity/source/drivers/firebird/PreparedStatement.hxx
+++ b/connectivity/source/drivers/firebird/PreparedStatement.hxx
@@ -78,7 +78,7 @@ namespace connectivity
              * Set a numeric value in the input SQLDA. If the destination
              * parameter is not of nType then an Exception will be thrown.
              */
-            template <typename T> void setValue(sal_Int32 nIndex, T nValue, ISC_SHORT nType)
+            template <typename T> void setValue(sal_Int32 nIndex, T& nValue, ISC_SHORT nType)
                 throw(::com::sun::star::sdbc::SQLException);
             void setParameterNull(sal_Int32 nParameterIndex, bool bSetNull = true);
 


More information about the Libreoffice-commits mailing list