[Libreoffice-commits] .: 4 commits - comphelper/inc comphelper/source connectivity/source
Lionel Elie Mamane
lmamane at kemper.freedesktop.org
Tue Feb 14 10:55:45 PST 2012
comphelper/inc/comphelper/types.hxx | 1
comphelper/source/misc/types.cxx | 8 +
connectivity/source/drivers/odbcbase/OPreparedStatement.cxx | 77 ------------
connectivity/source/drivers/odbcbase/OStatement.cxx | 18 +-
connectivity/source/drivers/odbcbase/OTools.cxx | 11 +
connectivity/source/inc/odbc/OPreparedStatement.hxx | 4
connectivity/source/inc/odbc/OStatement.hxx | 6
connectivity/source/inc/odbc/OTools.hxx | 20 +--
8 files changed, 41 insertions(+), 104 deletions(-)
New commits:
commit c8d91a8f2f6780cd187c65660ebf18e5eea568bc
Author: Kate Goss <katherine.goss at gmail.com>
Date: Mon Feb 13 21:53:08 2012 +0000
Remove unused code from connectivity::odbc::OPreparedStatement
Remove methods getDataBuf(int), getParamLength(int), getPrecision(int).
diff --git a/connectivity/source/drivers/odbcbase/OPreparedStatement.cxx b/connectivity/source/drivers/odbcbase/OPreparedStatement.cxx
index 63401f5..d1288f9 100644
--- a/connectivity/source/drivers/odbcbase/OPreparedStatement.cxx
+++ b/connectivity/source/drivers/odbcbase/OPreparedStatement.cxx
@@ -674,27 +674,6 @@ sal_Int8* OPreparedStatement::allocBindBuf( sal_Int32 index,sal_Int32 bufLen)
// -------------------------------------------------------------------------
//--------------------------------------------------------------------
-// getDataBuf
-// Gets the data buffer for the given parameter index
-//--------------------------------------------------------------------
-
-sal_Int8* OPreparedStatement::getDataBuf (sal_Int32 index)
-{
- sal_Int8* b = NULL;
-
- // Sanity check the parameter number
-
- if ((index >= 1) &&
- (index <= numParams))
- {
- b = boundParams[index - 1].getBindDataBuffer ();
- }
-
- return b;
-}
-// -------------------------------------------------------------------------
-
-//--------------------------------------------------------------------
// getLengthBuf
// Gets the length buffer for the given parameter index
//--------------------------------------------------------------------
@@ -716,34 +695,6 @@ sal_Int8* OPreparedStatement::getLengthBuf (sal_Int32 index)
// -------------------------------------------------------------------------
//--------------------------------------------------------------------
-// getParamLength
-// Returns the length of the given parameter number. When each
-// parameter was bound, a 4-sal_Int8 buffer was given to hold the
-// length (stored in native format). Get the buffer, convert the
-// buffer from native format, and return it. If the length is -1,
-// the column is considered to be NULL.
-//--------------------------------------------------------------------
-
-sal_Int32 OPreparedStatement::getParamLength ( sal_Int32 index)
-{
- sal_Int32 paramLen = SQL_NULL_DATA;
-
- // Sanity check the parameter number
-
- if ((index >= 1) &&
- (index <= numParams)) {
-
- // Now get the length of the parameter from the
- // bound param array. -1 is returned if it is NULL.
- long n = 0;
- memcpy (&n, boundParams[index -1].getBindLengthBuffer (), sizeof (n));
- paramLen = n;
- }
- return paramLen;
-}
-// -------------------------------------------------------------------------
-
-//--------------------------------------------------------------------
// putParamData
// Puts parameter data from a previously bound input stream. The
// input stream was bound using SQL_LEN_DATA_AT_EXEC.
@@ -810,34 +761,6 @@ void OPreparedStatement::putParamData (sal_Int32 index) throw(SQLException)
}
}
// -------------------------------------------------------------------------
-//--------------------------------------------------------------------
-// getPrecision
-// Given a SQL type, return the maximum precision for the column.
-// Returns -1 if not known
-//--------------------------------------------------------------------
-
-sal_Int32 OPreparedStatement::getPrecision ( sal_Int32 sqlType)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(OStatement_BASE::rBHelper.bDisposed);
-
- sal_Int32 prec = -1;
- const TTypeInfoVector& rTypeInfo = m_pConnection->getTypeInfo();
- if ( !rTypeInfo.empty() )
- {
- m_pConnection->buildTypeInfo();
- }
-
- if ( !rTypeInfo.empty() )
- {
- OTypeInfo aInfo;
- aInfo.nType = (sal_Int16)sqlType;
- TTypeInfoVector::const_iterator aIter = ::std::find(rTypeInfo.begin(),rTypeInfo.end(),aInfo);
- if(aIter != rTypeInfo.end())
- prec = (*aIter).nPrecision;
- }
- return prec;
-}
//--------------------------------------------------------------------
// setStream
diff --git a/connectivity/source/inc/odbc/OPreparedStatement.hxx b/connectivity/source/inc/odbc/OPreparedStatement.hxx
index 8c41355..076c9e0 100644
--- a/connectivity/source/inc/odbc/OPreparedStatement.hxx
+++ b/connectivity/source/inc/odbc/OPreparedStatement.hxx
@@ -88,15 +88,11 @@ namespace connectivity
void putParamData (sal_Int32 index) throw(::com::sun::star::sdbc::SQLException);
void setStream (sal_Int32 ParameterIndex,const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream>& x,
SQLLEN length,sal_Int32 SQLtype) throw(::com::sun::star::sdbc::SQLException);
- sal_Int32 getParamLength ( sal_Int32 index);
sal_Int8* getLengthBuf (sal_Int32 index);
- sal_Int8* getDataBuf (sal_Int32 index);
sal_Int8* allocBindBuf ( sal_Int32 index, sal_Int32 bufLen);
void initBoundParam () throw(::com::sun::star::sdbc::SQLException);
void setParameter(sal_Int32 parameterIndex,sal_Int32 _nType,sal_Int32 _nSize,void* _pData);
- sal_Int32 getPrecision ( sal_Int32 sqlType);
-
sal_Bool isPrepared() const { return m_bPrepared;}
void prepareStatement();
void checkParameterIndex(sal_Int32 _parameterIndex);
commit cdb2d21c550d18c5565a4ade7aeca4594a836f94
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date: Tue Feb 14 19:41:08 2012 +0100
ODBC: align *all* the handling of SQLULEN properties with maximal ODBC size
diff --git a/connectivity/source/drivers/odbcbase/OStatement.cxx b/connectivity/source/drivers/odbcbase/OStatement.cxx
index 6355217..5c64c26 100644
--- a/connectivity/source/drivers/odbcbase/OStatement.cxx
+++ b/connectivity/source/drivers/odbcbase/OStatement.cxx
@@ -756,13 +756,13 @@ sal_Int64 OStatement_Base::getMaxFieldSize() const
return ::rtl::OUString::createFromAscii((const char*)pName);
}
//------------------------------------------------------------------------------
-void OStatement_Base::setQueryTimeOut(sal_Int32 seconds)
+void OStatement_Base::setQueryTimeOut(sal_Int64 seconds)
{
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
setStmtOption<SQLULEN, SQL_IS_UINTEGER>(SQL_ATTR_QUERY_TIMEOUT,seconds);
}
//------------------------------------------------------------------------------
-void OStatement_Base::setMaxRows(sal_Int32 _par0)
+void OStatement_Base::setMaxRows(sal_Int64 _par0)
{
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
setStmtOption<SQLULEN, SQL_IS_UINTEGER>(SQL_ATTR_MAX_ROWS, _par0);
@@ -872,7 +872,7 @@ void OStatement_Base::setFetchSize(sal_Int32 _par0)
}
}
//------------------------------------------------------------------------------
-void OStatement_Base::setMaxFieldSize(sal_Int32 _par0)
+void OStatement_Base::setMaxFieldSize(sal_Int64 _par0)
{
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
setStmtOption<SQLULEN, SQL_IS_UINTEGER>(SQL_ATTR_MAX_LENGTH, _par0);
@@ -913,9 +913,9 @@ void OStatement_Base::setUsingBookmarks(sal_Bool _bUseBookmark)
DECL_BOOL_PROP0(ESCAPEPROCESSING);
DECL_PROP0(FETCHDIRECTION,sal_Int32);
DECL_PROP0(FETCHSIZE, sal_Int32);
- DECL_PROP0(MAXFIELDSIZE,sal_Int32);
- DECL_PROP0(MAXROWS, sal_Int32);
- DECL_PROP0(QUERYTIMEOUT,sal_Int32);
+ DECL_PROP0(MAXFIELDSIZE,sal_Int64);
+ DECL_PROP0(MAXROWS, sal_Int64);
+ DECL_PROP0(QUERYTIMEOUT,sal_Int64);
DECL_PROP0(RESULTSETCONCURRENCY,sal_Int32);
DECL_PROP0(RESULTSETTYPE,sal_Int32);
DECL_BOOL_PROP0(USEBOOKMARKS);
@@ -997,13 +997,13 @@ void OStatement_Base::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const A
switch(nHandle)
{
case PROPERTY_ID_QUERYTIMEOUT:
- setQueryTimeOut(comphelper::getINT32(rValue));
+ setQueryTimeOut(comphelper::getINT64(rValue));
break;
case PROPERTY_ID_MAXFIELDSIZE:
- setMaxFieldSize(comphelper::getINT32(rValue));
+ setMaxFieldSize(comphelper::getINT64(rValue));
break;
case PROPERTY_ID_MAXROWS:
- setMaxRows(comphelper::getINT32(rValue));
+ setMaxRows(comphelper::getINT64(rValue));
break;
case PROPERTY_ID_CURSORNAME:
setCursorName(comphelper::getString(rValue));
diff --git a/connectivity/source/inc/odbc/OStatement.hxx b/connectivity/source/inc/odbc/OStatement.hxx
index e0d4663..4768f70 100644
--- a/connectivity/source/inc/odbc/OStatement.hxx
+++ b/connectivity/source/inc/odbc/OStatement.hxx
@@ -99,9 +99,9 @@ namespace connectivity
sal_Bool getEscapeProcessing() const;
template < typename T, SQLINTEGER BufferLength > T getStmtOption (SQLINTEGER fOption, T dflt = 0) const;
- void setQueryTimeOut(sal_Int32 _par0) ;
- void setMaxFieldSize(sal_Int32 _par0) ;
- void setMaxRows(sal_Int32 _par0) ;
+ void setQueryTimeOut(sal_Int64 _par0) ;
+ void setMaxFieldSize(sal_Int64 _par0) ;
+ void setMaxRows(sal_Int64 _par0) ;
void setFetchDirection(sal_Int32 _par0) ;
void setFetchSize(sal_Int32 _par0) ;
void setCursorName(const ::rtl::OUString &_par0);
commit 034b130b90af330caab0b9fe7f19db45b5232eea
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date: Tue Feb 14 19:39:01 2012 +0100
comphelper: add getINT64
diff --git a/comphelper/inc/comphelper/types.hxx b/comphelper/inc/comphelper/types.hxx
index dfa1565..a23116f 100644
--- a/comphelper/inc/comphelper/types.hxx
+++ b/comphelper/inc/comphelper/types.hxx
@@ -156,6 +156,7 @@ namespace comphelper
// no, we don't use templates here. This would lead to a lot of implicit uses of the conversion methods,
// which would be difficult to trace ...
+ COMPHELPER_DLLPUBLIC sal_Int64 getINT64(const staruno::Any& _rAny);
COMPHELPER_DLLPUBLIC sal_Int32 getINT32(const staruno::Any& _rAny);
COMPHELPER_DLLPUBLIC sal_Int16 getINT16(const staruno::Any& _rAny);
COMPHELPER_DLLPUBLIC double getDouble(const staruno::Any& _rAny);
diff --git a/comphelper/source/misc/types.cxx b/comphelper/source/misc/types.cxx
index f3df258..c9eb6bb 100644
--- a/comphelper/source/misc/types.cxx
+++ b/comphelper/source/misc/types.cxx
@@ -80,6 +80,14 @@ sal_Bool operator ==(const Time& _rLeft, const Time& _rRight)
}
//------------------------------------------------------------------------------
+sal_Int64 getINT64(const Any& _rAny)
+{
+ sal_Int64 nReturn = 0;
+ OSL_VERIFY( _rAny >>= nReturn );
+ return nReturn;
+}
+
+//------------------------------------------------------------------------------
sal_Int32 getINT32(const Any& _rAny)
{
sal_Int32 nReturn = 0;
commit c1ef5ba65c1b3d9c9bb8c45f68e494493e628837
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date: Tue Feb 14 18:34:52 2012 +0100
improve OTools::binParameter/bindData interaction
Don't duplicate the decision point for "data at execution or copied data"
diff --git a/connectivity/source/drivers/odbcbase/OTools.cxx b/connectivity/source/drivers/odbcbase/OTools.cxx
index 9e8714c..df74076 100644
--- a/connectivity/source/drivers/odbcbase/OTools.cxx
+++ b/connectivity/source/drivers/odbcbase/OTools.cxx
@@ -181,14 +181,15 @@ void OTools::bindParameter( OConnection* _pConnection,
SQLLEN* pLen = (SQLLEN*)pLenBuffer;
SQLULEN nColumnSize=0;
SQLSMALLINT nDecimalDigits=0;
+ bool atExec;
OTools::getBindTypes(_bUseWChar,_bUseOldTimeDate,_nODBCtype,fCType,fSqlType);
- OTools::bindData(_nODBCtype,_bUseWChar,pDataBuffer,pLen,_pValue,_nTextEncoding,nColumnSize);
+ OTools::bindData(_nODBCtype,_bUseWChar,pDataBuffer,pLen,_pValue,_nTextEncoding,nColumnSize, atExec);
if ((nColumnSize == 0) && (fSqlType == SQL_CHAR || fSqlType == SQL_VARCHAR || fSqlType == SQL_LONGVARCHAR))
nColumnSize = 1;
- if(fSqlType == SQL_LONGVARCHAR || fSqlType == SQL_LONGVARBINARY)
+ if (atExec)
memcpy(pDataBuffer,&nPos,sizeof(nPos));
nRetcode = (*(T3SQLBindParameter)_pConnection->getOdbcFunction(ODBC3SQLBindParameter))(_hStmt,
@@ -211,10 +212,12 @@ void OTools::bindData( SQLSMALLINT _nOdbcType,
SQLLEN*& pLen,
const void* _pValue,
rtl_TextEncoding _nTextEncoding,
- SQLULEN& _nColumnSize)
+ SQLULEN& _nColumnSize,
+ bool &atExec)
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "odbc", "Ocke.Janssen at sun.com", "OTools::bindData" );
_nColumnSize = 0;
+ atExec = false;
switch (_nOdbcType)
{
@@ -307,6 +310,7 @@ void OTools::bindData( SQLSMALLINT _nOdbcType,
nLen = ((const ::com::sun::star::uno::Sequence< sal_Int8 > *)_pValue)->getLength();
*pLen = (SQLLEN)SQL_LEN_DATA_AT_EXEC(nLen);
}
+ atExec = true;
break;
case SQL_LONGVARCHAR:
{
@@ -319,6 +323,7 @@ void OTools::bindData( SQLSMALLINT _nOdbcType,
nLen = aString.getLength();
}
*pLen = (SQLLEN)SQL_LEN_DATA_AT_EXEC(nLen);
+ atExec = true;
} break;
case SQL_DATE:
*(DATE_STRUCT*)_pData = *(DATE_STRUCT*)_pValue;
diff --git a/connectivity/source/inc/odbc/OTools.hxx b/connectivity/source/inc/odbc/OTools.hxx
index 7f48373..ad1fb12 100644
--- a/connectivity/source/inc/odbc/OTools.hxx
+++ b/connectivity/source/inc/odbc/OTools.hxx
@@ -216,13 +216,16 @@ namespace connectivity
SQLLEN _nSize) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
/**
- bindData copies the from pValue to pData
- @param _nOdbcType the ODBC sql type
- @param _bUseWChar true when Unicode should be used
- @param _pData contains a copy of the data to be set
- @param _pValue contains the data to be copied
- @param _nTextEncoding the text encoding
- @param _nColumnSize the columnsize which is a out param
+ bindData copies data from pValue to pData
+ @param _nOdbcType [in] the ODBC sql type
+ @param _bUseWChar [in] true when Unicode should be used
+ @param _pData [in/out] data copy destination
+ @param pLen [out] buffer length of data written to _pData
+ @param _pValue [in] contains the data to be copied
+ @param _nTextEncoding [in] the text encoding
+ @param _nColumnSize [out] columnSize of data written to _pData
+ @param atExec [out] data was not copied, but setup for data-at-execution;
+ caller is responsible for writing a token in _pData
*/
static void bindData( SQLSMALLINT _nOdbcType,
sal_Bool _bUseWChar,
@@ -230,7 +233,8 @@ namespace connectivity
SQLLEN*& pLen,
const void* _pValue,
rtl_TextEncoding _nTextEncoding,
- SQLULEN& _nColumnSize);
+ SQLULEN& _nColumnSize,
+ bool &atExec);
static void bindParameter( OConnection* _pConnection,
SQLHANDLE _hStmt,
More information about the Libreoffice-commits
mailing list