connectivity/source/drivers/odbcbase/ODatabaseMetaData.cxx | 39 ++---------- connectivity/source/drivers/odbcbase/OPreparedStatement.cxx | 3 connectivity/source/inc/odbc/OBoundParam.hxx | 2 offapi/com/sun/star/sdbc/XDatabaseMetaData.idl | 16 ++-- 4 files changed, 18 insertions(+), 42 deletions(-)
New commits: commit 84d21e4de26bd69f7ca5b10f2c72779f07e11347 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Tue Feb 14 14:54:03 2012 +0100 odbc 64 bit crash: correct buffer length allocation for a SQLLEN diff --git a/connectivity/source/inc/odbc/OBoundParam.hxx b/connectivity/source/inc/odbc/OBoundParam.hxx index 2310a2e..99a4901 100644 --- a/connectivity/source/inc/odbc/OBoundParam.hxx +++ b/connectivity/source/inc/odbc/OBoundParam.hxx @@ -68,7 +68,7 @@ namespace connectivity // to a Java sal_Int32. The jdbcodbc 'C' bridge provides an // interface to do this. - paramLength = new sal_Int8[4]; + paramLength = new sal_Int8[sizeof(SQLLEN)]; } //-------------------------------------------------------------------- commit 288cc968c4d1fa07b4f3cc106ea6934c4afd955a Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Tue Feb 14 09:49:19 2012 +0100 new[] already allocates each element of the array And calls the default constructor, naturally. diff --git a/connectivity/source/drivers/odbcbase/OPreparedStatement.cxx b/connectivity/source/drivers/odbcbase/OPreparedStatement.cxx index 2dbde52..63401f5 100644 --- a/connectivity/source/drivers/odbcbase/OPreparedStatement.cxx +++ b/connectivity/source/drivers/odbcbase/OPreparedStatement.cxx @@ -641,11 +641,10 @@ void OPreparedStatement::initBoundParam () throw(SQLException) boundParams = new OBoundParam[numParams]; - // Allocate and initialize each bound parameter + // initialize each bound parameter for (sal_Int32 i = 0; i < numParams; i++) { - boundParams[i] = OBoundParam(); boundParams[i].initialize (); } } commit 50e5118710c84461b0e09dc0576e924ea149f6d4 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Tue Feb 14 06:27:51 2012 +0100 odbc getTableTypes: ask the driver instead of guessing diff --git a/connectivity/source/drivers/odbcbase/ODatabaseMetaData.cxx b/connectivity/source/drivers/odbcbase/ODatabaseMetaData.cxx index 093c6d9..783e259 100644 --- a/connectivity/source/drivers/odbcbase/ODatabaseMetaData.cxx +++ b/connectivity/source/drivers/odbcbase/ODatabaseMetaData.cxx @@ -728,43 +728,18 @@ sal_Bool SAL_CALL ODatabaseMetaData::supportsOuterJoins( ) throw(SQLException, // ------------------------------------------------------------------------- Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTableTypes( ) throw(SQLException, RuntimeException) { - - // there exists no possibility to get table types so we have to check - static ::rtl::OUString sTableTypes[] = - { - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TABLE")), - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VIEW")), - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SYSTEM TABLE")), - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GLOBAL TEMPORARY")), - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("LOCAL TEMPORARY")), - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ALIAS")), - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SYNONYM")) - }; - sal_Int32 nSize = sizeof(sTableTypes) / sizeof(::rtl::OUString); - ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTableTypes); - Reference< XResultSet > xRef = pResult; - SQLUINTEGER nValue = 0; + Reference< XResultSet > xRef; try { - OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CREATE_VIEW,nValue,*this); - } - catch(const Exception&) - { + ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection); + xRef = pResult; + pResult->openTablesTypes(); } - sal_Bool bViewsSupported = (nValue & SQL_CV_CREATE_VIEW) == SQL_CV_CREATE_VIEW; - - ::connectivity::ODatabaseMetaDataResultSet::ORows aRows; - for(sal_Int32 i=0;i < nSize;++i) + catch(SQLException&) { - if( !bViewsSupported && i == 1) - continue; // no views supported - ::connectivity::ODatabaseMetaDataResultSet::ORow aRow; - aRow.push_back(::connectivity::ODatabaseMetaDataResultSet::getEmptyValue()); - aRow.push_back(new ::connectivity::ORowSetValueDecorator(sTableTypes[i])); - aRows.push_back(aRow); + xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTableTypes); } - pResult->setRows(aRows); - return xRef; + return xRef; } // ------------------------------------------------------------------------- sal_Int32 ODatabaseMetaData::impl_getMaxStatements_throw( ) commit 7535373fa693ddff5311054800efcc602cdcacd9 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Tue Feb 14 06:19:08 2012 +0100 correct documentation of com::sun::star::sdbc::XDatabaseMetaData diff --git a/offapi/com/sun/star/sdbc/XDatabaseMetaData.idl b/offapi/com/sun/star/sdbc/XDatabaseMetaData.idl index 4f06bb5..abee6d2 100644 --- a/offapi/com/sun/star/sdbc/XDatabaseMetaData.idl +++ b/offapi/com/sun/star/sdbc/XDatabaseMetaData.idl @@ -45,31 +45,33 @@ the form of <type scope="com::sun::star::sdbc">XResultSet</type> objects. - You can use the normal <type scope="com::sun::star::sdbc">XResultSet</type> + You can use the normal <type scope="com::sun::star::sdbc">XRow</type> + (or <type scope="com::sun::star::sdb">XColumn</type>) methods such as - <member scope="com::sun::star::sdbc">XResultSet::getString()</member> + <member scope="com::sun::star::sdbc">XRow::getString()</member> and - <member scope="com::sun::star::sdbc">XResultSet::getInt()</member> + <member scope="com::sun::star::sdbc">XRow::getInt()</member> to retrieve the data from these XResultSets. If a given form of metadata is not available, these methods should throw a <type scope="com::sun::star::sdbc">SQLException</type> . - That a value of <type scope="com::sun::star::sdbc">XResultSet</type> is <NULL/> - can be checked with the method <member scope="com::sun::star::sdbc">XResultSet::wasNull()</member>. + After calling one of the getXXX() methods, + one can check whether that value is <NULL/> + with the method <member scope="com::sun::star::sdbc">XRow::wasNull()</member>. In the text only "(may be <NULL/>)" is mentioned for this case. </p> <p>Some of these methods take arguments that are String patterns. These arguments all have names such as fooPattern. Within a pattern String, "%" means match any substring of 0 or more characters, and "_" means match any one character. Only metadata entries matching the search pattern - are returned. If a search pattern argument is set to <VOID/>, + is returned. If a search pattern argument is set to <VOID/>, that argument's criteria will be dropped from the search. </p> <p> A <type scope="com::sun::star::sdbc">SQLException</type> will be thrown if a driver does not support - a meta data method. In the case of methods that return an XResultSet, + a metadata method. In the case of methods that return an XResultSet, either an XResultSet (which may be empty) is returned or a SQLException is thrown.</p> */ _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits