summaryrefslogtreecommitdiff
path: root/mysqlc/source/mysqlc_databasemetadata.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'mysqlc/source/mysqlc_databasemetadata.cxx')
-rw-r--r--mysqlc/source/mysqlc_databasemetadata.cxx2215
1 files changed, 2215 insertions, 0 deletions
diff --git a/mysqlc/source/mysqlc_databasemetadata.cxx b/mysqlc/source/mysqlc_databasemetadata.cxx
new file mode 100644
index 000000000000..fef3e5524f87
--- /dev/null
+++ b/mysqlc/source/mysqlc_databasemetadata.cxx
@@ -0,0 +1,2215 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+#include "mysqlc_databasemetadata.hxx"
+#include <com/sun/star/sdbc/DataType.hpp>
+#include <com/sun/star/sdbc/ResultSetType.hpp>
+#include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
+#include <com/sun/star/sdbc/TransactionIsolation.hpp>
+#include <com/sun/star/sdbc/KeyRule.hpp>
+#include <com/sun/star/sdbc/Deferrability.hpp>
+#include <com/sun/star/sdbc/IndexType.hpp>
+#include <com/sun/star/sdbc/BestRowScope.hpp>
+#include <com/sun/star/sdbc/ColumnType.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+
+
+#include "mysqlc_general.hxx"
+#include "mysqlc_statement.hxx"
+#include "mysqlc_driver.hxx"
+#include "mysqlc_preparedstatement.hxx"
+
+#include <stdio.h>
+
+using namespace connectivity::mysqlc;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::sdbc;
+using ::rtl::OUString;
+using mysqlc_sdbc_driver::getStringFromAny;
+
+#include <cppconn/connection.h>
+#include <cppconn/resultset.h>
+#include <cppconn/metadata.h>
+#include <cppconn/statement.h>
+#include <cppconn/prepared_statement.h>
+
+#include <sal/macros.h>
+
+static std::string wild("%");
+
+using ::rtl::OUStringToOString;
+
+// -----------------------------------------------------------------------------
+void lcl_setRows_throw(const Reference< XResultSet >& _xResultSet,sal_Int32 _nType,const std::vector< std::vector< Any > >& _rRows)
+{
+ Reference< XInitialization> xIni(_xResultSet,UNO_QUERY);
+ Sequence< Any > aArgs(2);
+ aArgs[0] <<= _nType;
+
+ Sequence< Sequence< Any > > aRows(_rRows.size());
+
+ std::vector< std::vector< Any > >::const_iterator aIter = _rRows.begin();
+ Sequence< Any > * pRowsIter = aRows.getArray();
+ Sequence< Any > * pRowsEnd = pRowsIter + aRows.getLength();
+ for (; pRowsIter != pRowsEnd;++pRowsIter,++aIter) {
+ if (!aIter->empty()) {
+ Sequence<Any> aSeq(&(*aIter->begin()),aIter->size());
+ (*pRowsIter) = aSeq;
+ }
+ }
+ aArgs[1] <<= aRows;
+ xIni->initialize(aArgs);
+}
+
+
+/* {{{ ODatabaseMetaData::ODatabaseMetaData() -I- */
+ODatabaseMetaData::ODatabaseMetaData(OConnection& _rCon)
+ :m_rConnection(_rCon)
+ ,m_bUseCatalog(sal_True)
+ ,meta(_rCon.getConnectionSettings().cppConnection->getMetaData())
+ ,identifier_quote_string_set(false)
+{
+ OSL_TRACE("ODatabaseMetaData::ODatabaseMetaData");
+ if (!m_rConnection.isCatalogUsed())
+ {
+ osl_incrementInterlockedCount(&m_refCount);
+ m_bUseCatalog = !(usesLocalFiles() || usesLocalFilePerTable());
+ osl_decrementInterlockedCount(&m_refCount);
+ }
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::~ODatabaseMetaData() -I- */
+ODatabaseMetaData::~ODatabaseMetaData()
+{
+ OSL_TRACE("ODatabaseMetaData::~ODatabaseMetaData");
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getStringMetaData() -I- */
+OUString ODatabaseMetaData::impl_getStringMetaData(const sal_Char* _methodName, const std::string& (sql::DatabaseMetaData::*_Method)() )
+{
+ OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
+ OUString stringMetaData;
+ try {
+ stringMetaData = mysqlc_sdbc_driver::convert((meta->*_Method)(), m_rConnection.getConnectionEncoding());
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return stringMetaData;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getStringMetaData() -I- */
+OUString ODatabaseMetaData::impl_getStringMetaData(const sal_Char* _methodName, std::string (sql::DatabaseMetaData::*_Method)() )
+{
+ OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
+ OUString stringMetaData;
+ try {
+ stringMetaData = mysqlc_sdbc_driver::convert((meta->*_Method)(), m_rConnection.getConnectionEncoding());
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return stringMetaData;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getStringMetaData() -I- */
+OUString ODatabaseMetaData::impl_getStringMetaData(const sal_Char* _methodName, const sql::SQLString& (sql::DatabaseMetaData::*_Method)() )
+{
+ OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
+ OUString stringMetaData;
+ try {
+ stringMetaData = mysqlc_sdbc_driver::convert((meta->*_Method)(), m_rConnection.getConnectionEncoding());
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return stringMetaData;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getStringMetaData() -I- */
+OUString ODatabaseMetaData::impl_getStringMetaData(const sal_Char* _methodName, sql::SQLString (sql::DatabaseMetaData::*_Method)() )
+{
+ OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
+ OUString stringMetaData;
+ try {
+ stringMetaData = mysqlc_sdbc_driver::convert((meta->*_Method)(), m_rConnection.getConnectionEncoding());
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return stringMetaData;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getInt32MetaData() -I- */
+sal_Int32 ODatabaseMetaData::impl_getInt32MetaData(const sal_Char* _methodName, unsigned int (sql::DatabaseMetaData::*_Method)() )
+{
+ OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
+ sal_Int32 int32MetaData(0);
+ try {
+ int32MetaData = (meta->*_Method)();
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return int32MetaData;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getBoolMetaData() -I- */
+sal_Bool ODatabaseMetaData::impl_getBoolMetaData(const sal_Char* _methodName, bool (sql::DatabaseMetaData::*_Method)() )
+{
+ OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
+ sal_Bool boolMetaData(0);
+ try {
+ boolMetaData = (meta->*_Method)() ? sal_True : sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return boolMetaData;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getBoolMetaData() -I- */
+sal_Bool ODatabaseMetaData::impl_getBoolMetaData(const sal_Char* _methodName, bool (sql::DatabaseMetaData::*_Method)(int), sal_Int32 _arg )
+{
+ OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
+ sal_Bool boolMetaData(0);
+ try {
+ boolMetaData = (meta->*_Method)( _arg ) ? sal_True : sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return boolMetaData;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getRSTypeMetaData() -I- */
+sal_Bool ODatabaseMetaData::impl_getRSTypeMetaData(const sal_Char* _methodName, bool (sql::DatabaseMetaData::*_Method)(int), sal_Int32 _resultSetType )
+{
+ int resultSetType(sql::ResultSet::TYPE_FORWARD_ONLY);
+ switch ( _resultSetType ) {
+ case ResultSetType::SCROLL_INSENSITIVE: resultSetType = sql::ResultSet::TYPE_SCROLL_INSENSITIVE; break;
+ case ResultSetType::SCROLL_SENSITIVE: resultSetType = sql::ResultSet::TYPE_SCROLL_SENSITIVE; break;
+ }
+
+ return impl_getBoolMetaData(_methodName, _Method, resultSetType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getCatalogSeparator() -I- */
+OUString SAL_CALL ODatabaseMetaData::getCatalogSeparator()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getCatalogSeparator", &sql::DatabaseMetaData::getCatalogSeparator);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxBinaryLiteralLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxBinaryLiteralLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxBinaryLiteralLength", &sql::DatabaseMetaData::getMaxBinaryLiteralLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxRowSize() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxRowSize()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxRowSize", &sql::DatabaseMetaData::getMaxRowSize);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxCatalogNameLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxCatalogNameLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxCatalogNameLength", &sql::DatabaseMetaData::getMaxCatalogNameLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxCharLiteralLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxCharLiteralLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxCharLiteralLength", &sql::DatabaseMetaData::getMaxCharLiteralLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxColumnNameLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnNameLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxColumnNameLength", &sql::DatabaseMetaData::getMaxColumnNameLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxColumnsInIndex() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInIndex()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxColumnsInIndex", &sql::DatabaseMetaData::getMaxColumnsInIndex);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxCursorNameLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxCursorNameLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxCursorNameLength", &sql::DatabaseMetaData::getMaxCursorNameLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxConnections() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxConnections()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxConnections", &sql::DatabaseMetaData::getMaxConnections);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxColumnsInTable() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInTable()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxColumnsInTable", &sql::DatabaseMetaData::getMaxColumnsInTable);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxStatementLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxStatementLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxStatementLength", &sql::DatabaseMetaData::getMaxStatementLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxTableNameLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxTableNameLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxTableNameLength", &sql::DatabaseMetaData::getMaxTableNameLength);
+}
+/* }}} */
+
+/* {{{ ODatabaseMetaData::getMaxTablesInSelect() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxTablesInSelect()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxTablesInSelect", &sql::DatabaseMetaData::getMaxTablesInSelect);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::doesMaxRowSizeIncludeBlobs() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::doesMaxRowSizeIncludeBlobs()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("doesMaxRowSizeIncludeBlobs", &sql::DatabaseMetaData::doesMaxRowSizeIncludeBlobs);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::storesLowerCaseQuotedIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::storesLowerCaseQuotedIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("storesLowerCaseQuotedIdentifiers", &sql::DatabaseMetaData::storesLowerCaseQuotedIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::storesLowerCaseIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::storesLowerCaseIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("storesLowerCaseIdentifiers", &sql::DatabaseMetaData::storesLowerCaseIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::storesMixedCaseQuotedIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::storesMixedCaseQuotedIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("storesMixedCaseQuotedIdentifiers", &sql::DatabaseMetaData::storesMixedCaseQuotedIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::storesMixedCaseIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::storesMixedCaseIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("storesMixedCaseIdentifiers", &sql::DatabaseMetaData::storesMixedCaseIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::storesUpperCaseQuotedIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::storesUpperCaseQuotedIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("storesUpperCaseQuotedIdentifiers", &sql::DatabaseMetaData::storesUpperCaseQuotedIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::storesUpperCaseIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::storesUpperCaseIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("storesUpperCaseIdentifiers", &sql::DatabaseMetaData::storesUpperCaseIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsAlterTableWithAddColumn() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsAlterTableWithAddColumn()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsAlterTableWithAddColumn", &sql::DatabaseMetaData::supportsAlterTableWithAddColumn);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsAlterTableWithDropColumn() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsAlterTableWithDropColumn()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsAlterTableWithDropColumn", &sql::DatabaseMetaData::supportsAlterTableWithDropColumn);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxIndexLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxIndexLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxIndexLength", &sql::DatabaseMetaData::getMaxIndexLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsNonNullableColumns() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsNonNullableColumns()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsNonNullableColumns", &sql::DatabaseMetaData::supportsNonNullableColumns);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getCatalogTerm() -I- */
+OUString SAL_CALL ODatabaseMetaData::getCatalogTerm()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getCatalogTerm", &sql::DatabaseMetaData::getCatalogTerm);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getIdentifierQuoteString() -I- */
+OUString SAL_CALL ODatabaseMetaData::getIdentifierQuoteString()
+ throw(SQLException, RuntimeException)
+{
+ if (identifier_quote_string_set == false) {
+ identifier_quote_string = impl_getStringMetaData("getIdentifierQuoteString", &sql::DatabaseMetaData::getIdentifierQuoteString);
+ identifier_quote_string_set = true;
+ }
+ return identifier_quote_string;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getExtraNameCharacters() -I- */
+OUString SAL_CALL ODatabaseMetaData::getExtraNameCharacters()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getExtraNameCharacters", &sql::DatabaseMetaData::getExtraNameCharacters);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsDifferentTableCorrelationNames() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsDifferentTableCorrelationNames()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsDifferentTableCorrelationNames", &sql::DatabaseMetaData::supportsDifferentTableCorrelationNames);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::isCatalogAtStart() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::isCatalogAtStart()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("isCatalogAtStart", &sql::DatabaseMetaData::isCatalogAtStart);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::dataDefinitionIgnoredInTransactions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::dataDefinitionIgnoredInTransactions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("dataDefinitionIgnoredInTransactions", &sql::DatabaseMetaData::dataDefinitionIgnoredInTransactions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::dataDefinitionCausesTransactionCommit() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::dataDefinitionCausesTransactionCommit()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("dataDefinitionCausesTransactionCommit", &sql::DatabaseMetaData::dataDefinitionCausesTransactionCommit);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsDataManipulationTransactionsOnly() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsDataManipulationTransactionsOnly()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsDataManipulationTransactionsOnly", &sql::DatabaseMetaData::supportsDataManipulationTransactionsOnly);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsDataDefinitionAndDataManipulationTransactions", &sql::DatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsPositionedDelete() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsPositionedDelete()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsPositionedDelete", &sql::DatabaseMetaData::supportsPositionedDelete);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsPositionedUpdate() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsPositionedUpdate()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsPositionedUpdate", &sql::DatabaseMetaData::supportsPositionedUpdate);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsOpenStatementsAcrossRollback() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenStatementsAcrossRollback()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsOpenStatementsAcrossRollback", &sql::DatabaseMetaData::supportsOpenStatementsAcrossRollback);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsOpenStatementsAcrossCommit() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenStatementsAcrossCommit()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsOpenStatementsAcrossCommit", &sql::DatabaseMetaData::supportsOpenStatementsAcrossCommit);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsOpenCursorsAcrossCommit() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenCursorsAcrossCommit()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsOpenCursorsAcrossCommit", &sql::DatabaseMetaData::supportsOpenCursorsAcrossCommit);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsOpenCursorsAcrossRollback() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenCursorsAcrossRollback()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsOpenCursorsAcrossRollback", &sql::DatabaseMetaData::supportsOpenCursorsAcrossRollback);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsTransactionIsolationLevel() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsTransactionIsolationLevel(sal_Int32 level)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsTransactionIsolationLevel", &sql::DatabaseMetaData::supportsTransactionIsolationLevel, level);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSchemasInDataManipulation() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInDataManipulation()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSchemasInDataManipulation", &sql::DatabaseMetaData::supportsSchemasInDataManipulation);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsANSI92FullSQL() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsANSI92FullSQL()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsANSI92FullSQL", &sql::DatabaseMetaData::supportsANSI92FullSQL);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsANSI92EntryLevelSQL() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsANSI92EntryLevelSQL()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsANSI92EntryLevelSQL", &sql::DatabaseMetaData::supportsANSI92EntryLevelSQL);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsIntegrityEnhancementFacility() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsIntegrityEnhancementFacility()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsIntegrityEnhancementFacility", &sql::DatabaseMetaData::supportsIntegrityEnhancementFacility);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSchemasInIndexDefinitions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInIndexDefinitions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSchemasInIndexDefinitions", &sql::DatabaseMetaData::supportsSchemasInIndexDefinitions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSchemasInTableDefinitions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInTableDefinitions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSchemasInTableDefinitions", &sql::DatabaseMetaData::supportsSchemasInTableDefinitions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsCatalogsInTableDefinitions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInTableDefinitions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsCatalogsInTableDefinitions", &sql::DatabaseMetaData::supportsCatalogsInTableDefinitions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsCatalogsInIndexDefinitions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInIndexDefinitions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsCatalogsInIndexDefinitions", &sql::DatabaseMetaData::supportsCatalogsInIndexDefinitions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsCatalogsInDataManipulation() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInDataManipulation()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsCatalogsInDataManipulation", &sql::DatabaseMetaData::supportsCatalogsInDataManipulation);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsOuterJoins() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOuterJoins()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsOuterJoins", &sql::DatabaseMetaData::supportsOuterJoins);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxStatements() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxStatements()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxStatements", &sql::DatabaseMetaData::getMaxStatements);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxProcedureNameLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxProcedureNameLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxProcedureNameLength", &sql::DatabaseMetaData::getMaxProcedureNameLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxSchemaNameLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxSchemaNameLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxSchemaNameLength", &sql::DatabaseMetaData::getMaxSchemaNameLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsTransactions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsTransactions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsTransactions", &sql::DatabaseMetaData::supportsTransactions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::allProceduresAreCallable() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::allProceduresAreCallable()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("allProceduresAreCallable", &sql::DatabaseMetaData::allProceduresAreCallable);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsStoredProcedures() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsStoredProcedures()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsStoredProcedures", &sql::DatabaseMetaData::supportsStoredProcedures);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSelectForUpdate() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSelectForUpdate()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSelectForUpdate", &sql::DatabaseMetaData::supportsSelectForUpdate);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::allTablesAreSelectable() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::allTablesAreSelectable()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("allTablesAreSelectable", &sql::DatabaseMetaData::allTablesAreSelectable);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::isReadOnly() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::isReadOnly()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("isReadOnly", &sql::DatabaseMetaData::isReadOnly);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::usesLocalFiles() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::usesLocalFiles()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("usesLocalFiles", &sql::DatabaseMetaData::usesLocalFiles);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::usesLocalFilePerTable() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::usesLocalFilePerTable()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("usesLocalFilePerTable", &sql::DatabaseMetaData::usesLocalFilePerTable);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsTypeConversion() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsTypeConversion()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsTypeConversion", &sql::DatabaseMetaData::supportsTypeConversion);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::nullPlusNonNullIsNull() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::nullPlusNonNullIsNull()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("nullPlusNonNullIsNull", &sql::DatabaseMetaData::nullPlusNonNullIsNull);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsColumnAliasing() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsColumnAliasing()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsColumnAliasing", &sql::DatabaseMetaData::supportsColumnAliasing);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsTableCorrelationNames() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsTableCorrelationNames()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsTableCorrelationNames", &sql::DatabaseMetaData::supportsTableCorrelationNames);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsConvert() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsConvert(sal_Int32 /* fromType */, sal_Int32 /* toType */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::supportsConvert");
+ try {
+ /* ToDo -> use supportsConvert( fromType, toType) */
+ return meta->supportsConvert()? sal_True:sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::supportsConvert", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::supportsConvert", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return sal_False;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsExpressionsInOrderBy() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsExpressionsInOrderBy()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsExpressionsInOrderBy", &sql::DatabaseMetaData::supportsExpressionsInOrderBy);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsGroupBy() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsGroupBy()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsGroupBy", &sql::DatabaseMetaData::supportsGroupBy);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsGroupByBeyondSelect() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsGroupByBeyondSelect()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsGroupByBeyondSelect", &sql::DatabaseMetaData::supportsGroupByBeyondSelect);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsGroupByUnrelated() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsGroupByUnrelated()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsGroupByUnrelated", &sql::DatabaseMetaData::supportsGroupByUnrelated);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsMultipleTransactions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsMultipleTransactions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsMultipleTransactions", &sql::DatabaseMetaData::supportsMultipleTransactions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsMultipleResultSets() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsMultipleResultSets()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsMultipleResultSets", &sql::DatabaseMetaData::supportsMultipleResultSets);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsLikeEscapeClause() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsLikeEscapeClause()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsLikeEscapeClause", &sql::DatabaseMetaData::supportsLikeEscapeClause);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsOrderByUnrelated() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOrderByUnrelated()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsOrderByUnrelated", &sql::DatabaseMetaData::supportsOrderByUnrelated);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsUnion() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsUnion()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsUnion", &sql::DatabaseMetaData::supportsUnion);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsUnionAll() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsUnionAll()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsUnionAll", &sql::DatabaseMetaData::supportsUnionAll);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsMixedCaseIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsMixedCaseIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsMixedCaseIdentifiers", &sql::DatabaseMetaData::supportsMixedCaseIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsMixedCaseQuotedIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsMixedCaseQuotedIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsMixedCaseQuotedIdentifiers", &sql::DatabaseMetaData::supportsMixedCaseQuotedIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::nullsAreSortedAtEnd() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedAtEnd()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("nullsAreSortedAtEnd", &sql::DatabaseMetaData::nullsAreSortedAtEnd);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::nullsAreSortedAtStart() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedAtStart()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("nullsAreSortedAtStart", &sql::DatabaseMetaData::nullsAreSortedAtStart);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::nullsAreSortedHigh() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedHigh()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("nullsAreSortedHigh", &sql::DatabaseMetaData::nullsAreSortedHigh);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::nullsAreSortedLow() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedLow()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("nullsAreSortedLow", &sql::DatabaseMetaData::nullsAreSortedLow);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSchemasInProcedureCalls() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInProcedureCalls()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSchemasInProcedureCalls", &sql::DatabaseMetaData::supportsSchemasInProcedureCalls);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSchemasInPrivilegeDefinitions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInPrivilegeDefinitions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSchemasInPrivilegeDefinitions", &sql::DatabaseMetaData::supportsSchemasInPrivilegeDefinitions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsCatalogsInProcedureCalls() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInProcedureCalls()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsCatalogsInProcedureCalls", &sql::DatabaseMetaData::supportsCatalogsInProcedureCalls);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsCatalogsInPrivilegeDefinitions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInPrivilegeDefinitions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsCatalogsInPrivilegeDefinitions", &sql::DatabaseMetaData::supportsCatalogsInPrivilegeDefinitions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsCorrelatedSubqueries() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsCorrelatedSubqueries()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsCorrelatedSubqueries", &sql::DatabaseMetaData::supportsCorrelatedSubqueries);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSubqueriesInComparisons() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInComparisons()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSubqueriesInComparisons", &sql::DatabaseMetaData::supportsSubqueriesInComparisons);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSubqueriesInExists() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInExists()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSubqueriesInExists", &sql::DatabaseMetaData::supportsSubqueriesInExists);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSubqueriesInIns() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInIns()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSubqueriesInIns", &sql::DatabaseMetaData::supportsSubqueriesInIns);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSubqueriesInQuantifieds() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInQuantifieds()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSubqueriesInQuantifieds", &sql::DatabaseMetaData::supportsSubqueriesInQuantifieds);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsANSI92IntermediateSQL() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsANSI92IntermediateSQL()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsANSI92IntermediateSQL", &sql::DatabaseMetaData::supportsANSI92IntermediateSQL);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getURL() -I- */
+OUString SAL_CALL ODatabaseMetaData::getURL()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getURL");
+ return m_rConnection.getConnectionSettings().connectionURL;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getUserName() -I- */
+OUString SAL_CALL ODatabaseMetaData::getUserName()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getUserName", &sql::DatabaseMetaData::getUserName);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getDriverName() -I- */
+OUString SAL_CALL ODatabaseMetaData::getDriverName()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getDriverName");
+ OUString aValue( RTL_CONSTASCII_USTRINGPARAM( "MySQL Connector/OO.org" ) );
+ return aValue;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getDriverVersion() -I- */
+OUString SAL_CALL ODatabaseMetaData::getDriverVersion()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getDriverVersion");
+ static const OUString sVersion( RTL_CONSTASCII_USTRINGPARAM( "0.9.2" ) );
+ return sVersion;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getDatabaseProductVersion() -I- */
+OUString SAL_CALL ODatabaseMetaData::getDatabaseProductVersion()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getDatabaseProductVersion", &sql::DatabaseMetaData::getDatabaseProductVersion);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getDatabaseProductName() -I- */
+OUString SAL_CALL ODatabaseMetaData::getDatabaseProductName()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getDatabaseProductName", &sql::DatabaseMetaData::getDatabaseProductName);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getProcedureTerm() -I- */
+OUString SAL_CALL ODatabaseMetaData::getProcedureTerm()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getProcedureTerm", &sql::DatabaseMetaData::getProcedureTerm);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getSchemaTerm() -I- */
+OUString SAL_CALL ODatabaseMetaData::getSchemaTerm()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getSchemaTerm", &sql::DatabaseMetaData::getSchemaTerm);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getDriverMajorVersion() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getDriverMajorVersion()
+ throw(RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getDriverMajorVersion");
+ return MYSQLC_VERSION_MAJOR;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getDefaultTransactionIsolation() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getDefaultTransactionIsolation()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getDefaultTransactionIsolation");
+ try {
+ switch (meta->getDefaultTransactionIsolation()) {
+ case sql::TRANSACTION_SERIALIZABLE: return TransactionIsolation::SERIALIZABLE;
+ case sql::TRANSACTION_REPEATABLE_READ: return TransactionIsolation::REPEATABLE_READ;
+ case sql::TRANSACTION_READ_COMMITTED: return TransactionIsolation::READ_COMMITTED;
+ case sql::TRANSACTION_READ_UNCOMMITTED: return TransactionIsolation::READ_UNCOMMITTED;
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getDriverMajorVersion", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getDriverMajorVersion", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return TransactionIsolation::NONE;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getDriverMinorVersion() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getDriverMinorVersion()
+ throw(RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getDriverMinorVersion");
+ return MYSQLC_VERSION_MINOR;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getSQLKeywords() -I- */
+OUString SAL_CALL ODatabaseMetaData::getSQLKeywords()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getSQLKeywords", &sql::DatabaseMetaData::getSQLKeywords);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getSearchStringEscape() -I- */
+OUString SAL_CALL ODatabaseMetaData::getSearchStringEscape()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getSearchStringEscape", &sql::DatabaseMetaData::getSearchStringEscape);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getStringFunctions() -I- */
+OUString SAL_CALL ODatabaseMetaData::getStringFunctions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getStringFunctions", &sql::DatabaseMetaData::getStringFunctions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getTimeDateFunctions() -I- */
+OUString SAL_CALL ODatabaseMetaData::getTimeDateFunctions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getTimeDateFunctions", &sql::DatabaseMetaData::getTimeDateFunctions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getSystemFunctions() -I- */
+OUString SAL_CALL ODatabaseMetaData::getSystemFunctions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getSystemFunctions", &sql::DatabaseMetaData::getSystemFunctions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getNumericFunctions() -I- */
+OUString SAL_CALL ODatabaseMetaData::getNumericFunctions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getNumericFunctions", &sql::DatabaseMetaData::getNumericFunctions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsExtendedSQLGrammar() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsExtendedSQLGrammar()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsExtendedSQLGrammar", &sql::DatabaseMetaData::supportsExtendedSQLGrammar);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsCoreSQLGrammar() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsCoreSQLGrammar()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsCoreSQLGrammar", &sql::DatabaseMetaData::supportsCoreSQLGrammar);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsMinimumSQLGrammar() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsMinimumSQLGrammar()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsMinimumSQLGrammar", &sql::DatabaseMetaData::supportsMinimumSQLGrammar);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsFullOuterJoins() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsFullOuterJoins()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsFullOuterJoins", &sql::DatabaseMetaData::supportsFullOuterJoins);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsLimitedOuterJoins() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsLimitedOuterJoins()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsLimitedOuterJoins", &sql::DatabaseMetaData::supportsLimitedOuterJoins);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxColumnsInGroupBy() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInGroupBy()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxColumnsInGroupBy", &sql::DatabaseMetaData::getMaxColumnsInGroupBy);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxColumnsInOrderBy() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInOrderBy()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxColumnsInOrderBy", &sql::DatabaseMetaData::getMaxColumnsInOrderBy);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxColumnsInSelect() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInSelect()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxColumnsInSelect", &sql::DatabaseMetaData::getMaxColumnsInSelect);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxUserNameLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxUserNameLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxUserNameLength", &sql::DatabaseMetaData::getMaxUserNameLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsResultSetType() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsResultSetType(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("supportsResultSetType", &sql::DatabaseMetaData::supportsResultSetType, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsResultSetConcurrency() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsResultSetConcurrency(sal_Int32 setType, sal_Int32 concurrency)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::supportsResultSetConcurrency");
+ /* TODO: Check this out */
+ try {
+ return meta->supportsResultSetConcurrency(setType, concurrency==com::sun::star::sdbc::TransactionIsolation::READ_COMMITTED?
+ sql::TRANSACTION_READ_COMMITTED:
+ (concurrency == com::sun::star::sdbc::TransactionIsolation::SERIALIZABLE?
+ sql::TRANSACTION_SERIALIZABLE:sql::TRANSACTION_SERIALIZABLE))? sal_True:sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::supportsResultSetConcurrency", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::supportsResultSetConcurrency", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return sal_False;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::ownUpdatesAreVisible() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::ownUpdatesAreVisible(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("ownUpdatesAreVisible", &sql::DatabaseMetaData::ownUpdatesAreVisible, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::ownDeletesAreVisible() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::ownDeletesAreVisible(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("ownDeletesAreVisible", &sql::DatabaseMetaData::ownDeletesAreVisible, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::ownInsertsAreVisible() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::ownInsertsAreVisible(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("ownInsertsAreVisible", &sql::DatabaseMetaData::ownInsertsAreVisible, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::othersUpdatesAreVisible() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::othersUpdatesAreVisible(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("othersUpdatesAreVisible", &sql::DatabaseMetaData::othersUpdatesAreVisible, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::othersDeletesAreVisible() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::othersDeletesAreVisible(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("othersDeletesAreVisible", &sql::DatabaseMetaData::othersDeletesAreVisible, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::othersInsertsAreVisible() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::othersInsertsAreVisible(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("othersInsertsAreVisible", &sql::DatabaseMetaData::othersInsertsAreVisible, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::updatesAreDetected() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::updatesAreDetected(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("updatesAreDetected", &sql::DatabaseMetaData::updatesAreDetected, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::deletesAreDetected() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::deletesAreDetected(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("deletesAreDetected", &sql::DatabaseMetaData::deletesAreDetected, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::insertsAreDetected() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::insertsAreDetected(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("insertsAreDetected", &sql::DatabaseMetaData::insertsAreDetected, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsBatchUpdates() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsBatchUpdates()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsBatchUpdates", &sql::DatabaseMetaData::supportsBatchUpdates);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getConnection() -I- */
+Reference< XConnection > SAL_CALL ODatabaseMetaData::getConnection()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getConnection");
+ return (Reference< XConnection >)&m_rConnection;
+}
+/* }}} */
+
+
+/*
+ Here follow all methods which return(a resultset
+ the first methods is an example implementation how to use this resultset
+ of course you could implement it on your and you should do this because
+ the general way is more memory expensive
+*/
+
+/* {{{ ODatabaseMetaData::getTableTypes() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTableTypes()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getTableTypes");
+ const char * table_types[] = {"TABLE", "VIEW"};
+ sal_Int32 requiredVersion[] = {0, 50000};
+
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+
+ for (sal_uInt32 i = 0; i < 2; i++) {
+ if (m_rConnection.getMysqlVersion() >= requiredVersion[i]) {
+ std::vector< Any > aRow(1);
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(table_types[i], encoding)));
+ rRows.push_back(aRow);
+ }
+ }
+ lcl_setRows_throw(xResultSet, 5 ,rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getTypeInfo() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTypeInfo()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getTypeInfo");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+
+ std::vector< std::vector< Any > > rRows;
+
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ unsigned int i = 0;
+ while (mysqlc_types[i].typeName) {
+ std::vector< Any > aRow(1);
+
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(mysqlc_types[i].typeName, encoding)));
+ aRow.push_back(makeAny(mysqlc_types[i].dataType));
+ aRow.push_back(makeAny(mysqlc_types[i].precision));
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(mysqlc_types[i].literalPrefix, encoding)));
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(mysqlc_types[i].literalSuffix, encoding)));
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(mysqlc_types[i].createParams, encoding)));
+ aRow.push_back(makeAny(mysqlc_types[i].nullable));
+ aRow.push_back(makeAny(mysqlc_types[i].caseSensitive));
+ aRow.push_back(makeAny(mysqlc_types[i].searchable));
+ aRow.push_back(makeAny(mysqlc_types[i].isUnsigned));
+ aRow.push_back(makeAny(mysqlc_types[i].fixedPrecScale));
+ aRow.push_back(makeAny(mysqlc_types[i].autoIncrement));
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(mysqlc_types[i].localTypeName, encoding)));
+ aRow.push_back(makeAny(mysqlc_types[i].minScale));
+ aRow.push_back(makeAny(mysqlc_types[i].maxScale));
+ aRow.push_back(makeAny(sal_Int32(0)));
+ aRow.push_back(makeAny(sal_Int32(0)));
+ aRow.push_back(makeAny(sal_Int32(10)));
+
+ rRows.push_back(aRow);
+ i++;
+ }
+
+ lcl_setRows_throw(xResultSet, 14, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getCatalogs() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getCatalogs()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getCatalogs");
+
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getCatalogs());
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getCatalogs", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getCatalogs", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 0, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getSchemas() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getSchemas()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getSchemas");
+
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getSchemas());
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ bool informationSchema = false;
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ sql::SQLString columnStringValue = rset->getString(i);
+ if (i == 1) { // TABLE_SCHEM
+ informationSchema = (0 == columnStringValue.compare("information_schema"));
+ }
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(columnStringValue, encoding)));
+ }
+ if (!informationSchema ) {
+ rRows.push_back(aRow);
+ }
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getSchemas", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getSchemas", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 1, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getColumnPrivileges() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getColumnPrivileges(
+ const Any& catalog,
+ const OUString& schema,
+ const OUString& table,
+ const OUString& columnNamePattern)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getColumnPrivileges");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
+ tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr()),
+ cNamePattern(OUStringToOString(columnNamePattern, m_rConnection.getConnectionEncoding()).getStr());
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getColumnPrivileges(cat, sch, tab, cNamePattern.compare("")? cNamePattern:wild));
+
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getColumnPrivileges", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getColumnPrivileges", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 2, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getColumns() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getColumns(
+ const Any& catalog,
+ const OUString& schemaPattern,
+ const OUString& tableNamePattern,
+ const OUString& columnNamePattern)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getColumns");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sPattern(OUStringToOString(schemaPattern, m_rConnection.getConnectionEncoding()).getStr()),
+ tNamePattern(OUStringToOString(tableNamePattern, m_rConnection.getConnectionEncoding()).getStr()),
+ cNamePattern(OUStringToOString(columnNamePattern, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ std::auto_ptr< sql::ResultSet> rset( meta->getColumns(cat,
+ sPattern.compare("")? sPattern:wild,
+ tNamePattern.compare("")? tNamePattern:wild,
+ cNamePattern.compare("")? cNamePattern:wild));
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ if (i == 5) { // ColumnType
+ sal_Int32 sdbc_type = mysqlc_sdbc_driver::mysqlToOOOType(atoi(rset->getString(i).c_str()));
+ aRow.push_back(makeAny(sdbc_type));
+ } else {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getColumns", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getColumns", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ lcl_setRows_throw(xResultSet, 3, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getTables() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTables(
+ const Any& catalog,
+ const OUString& schemaPattern,
+ const OUString& tableNamePattern,
+ const Sequence< OUString >& types )
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getTables");
+ sal_Int32 nLength = types.getLength();
+
+ Reference< XResultSet > xResultSet(getOwnConnection().
+ getDriver().getFactory()->createInstance(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sPattern(OUStringToOString(schemaPattern, m_rConnection.getConnectionEncoding()).getStr()),
+ tNamePattern(OUStringToOString(tableNamePattern, m_rConnection.getConnectionEncoding()).getStr());
+
+ std::list<sql::SQLString> tabTypes;
+ for (const OUString *pStart = types.getConstArray(), *p = pStart, *pEnd = pStart + nLength; p != pEnd; ++p) {
+ tabTypes.push_back(OUStringToOString(*p, m_rConnection.getConnectionEncoding()).getStr());
+ }
+
+ try {
+ std::auto_ptr< sql::ResultSet> rset( meta->getTables(cat,
+ sPattern.compare("")? sPattern:wild,
+ tNamePattern.compare("")? tNamePattern:wild,
+ tabTypes));
+
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ bool informationSchema = false;
+ for (sal_uInt32 i = 1; (i <= columns) && !informationSchema; ++i) {
+ sql::SQLString columnStringValue = rset->getString(i);
+ if (i == 2) { // TABLE_SCHEM
+ informationSchema = ( 0 == columnStringValue.compare("information_schema"));
+ }
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(columnStringValue, encoding)));
+ }
+ if (!informationSchema) {
+ rRows.push_back(aRow);
+ }
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getTables", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getTables", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 4, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getProcedureColumns() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getProcedureColumns(
+ const Any& /* catalog */,
+ const OUString& /* schemaPattern */,
+ const OUString& /* procedureNamePattern */,
+ const OUString& /* columnNamePattern */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getProcedureColumns");
+ // Currently there is no information available
+ return NULL;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getProcedures() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getProcedures(
+ const Any& catalog,
+ const OUString& schemaPattern,
+ const OUString& procedureNamePattern)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getProcedures");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sPattern(OUStringToOString(schemaPattern, m_rConnection.getConnectionEncoding()).getStr()),
+ pNamePattern(OUStringToOString(procedureNamePattern, m_rConnection.getConnectionEncoding()).getStr());
+
+
+ try {
+ std::auto_ptr< sql::ResultSet> rset( meta->getProcedures(cat,
+ sPattern.compare("")? sPattern:wild,
+ pNamePattern.compare("")? pNamePattern:wild));
+
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getProcedures", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getProcedures", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 7,rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getVersionColumns() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getVersionColumns(
+ const Any& /* catalog */,
+ const OUString& /* schema */,
+ const OUString& /* table */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getVersionColumns");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+ lcl_setRows_throw(xResultSet, 16,rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getExportedKeys() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getExportedKeys(
+ const Any& catalog ,
+ const OUString& schema ,
+ const OUString& table )
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getExportedKeys");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
+ tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getExportedKeys(cat, sch, tab));
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getExportedKeys", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getExportedKeys", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 8, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getImportedKeys() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getImportedKeys(
+ const Any& catalog,
+ const OUString& schema,
+ const OUString& table)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getImportedKeys");
+
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
+ tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getImportedKeys(cat, sch, tab));
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getImportedKeys", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getImportedKeys", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet,9,rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getPrimaryKeys() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getPrimaryKeys(
+ const Any& catalog,
+ const OUString& schema,
+ const OUString& table)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getPrimaryKeys");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
+ tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getPrimaryKeys(cat, sch, tab));
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getPrimaryKeys", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getPrimaryKeys", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 10, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getIndexInfo() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getIndexInfo(
+ const Any& catalog,
+ const OUString& schema,
+ const OUString& table,
+ sal_Bool unique,
+ sal_Bool approximate)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getIndexInfo");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
+ tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getIndexInfo(cat, sch, tab, unique, approximate));
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getIndexInfo", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getIndexInfo", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 11, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getBestRowIdentifier() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getBestRowIdentifier(
+ const Any& catalog,
+ const OUString& schema,
+ const OUString& table,
+ sal_Int32 scope,
+ sal_Bool nullable)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getBestRowIdentifier");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
+ tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getBestRowIdentifier(cat, sch, tab, scope, nullable));
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getBestRowIdentifier", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getBestRowIdentifier", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 15, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getTablePrivileges() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTablePrivileges(
+ const Any& catalog,
+ const OUString& schemaPattern,
+ const OUString& tableNamePattern)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getTablePrivileges");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sPattern(OUStringToOString(schemaPattern, m_rConnection.getConnectionEncoding()).getStr()),
+ tPattern(OUStringToOString(tableNamePattern, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ static bool fakeTablePrivileges = false;
+ if (fakeTablePrivileges) {
+ static const sal_Char* allPrivileges[] = {
+ "ALTER", "DELETE", "DROP", "INDEX", "INSERT", "LOCK TABLES", "SELECT", "UPDATE"
+ };
+ Any userName; userName <<= getUserName();
+ for (size_t i = 0; i < SAL_N_ELEMENTS( allPrivileges ); ++i) {
+ std::vector< Any > aRow;
+ aRow.push_back(makeAny( sal_Int32( i ) ));
+ aRow.push_back(catalog); // TABLE_CAT
+ aRow.push_back(makeAny( schemaPattern )); // TABLE_SCHEM
+ aRow.push_back(makeAny( tableNamePattern )); // TABLE_NAME
+ aRow.push_back(Any()); // GRANTOR
+ aRow.push_back(userName); // GRANTEE
+ aRow.push_back(makeAny( ::rtl::OUString::createFromAscii( allPrivileges[i] ) )); // PRIVILEGE
+ aRow.push_back(Any()); // IS_GRANTABLE
+
+ rRows.push_back(aRow);
+ }
+ } else {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getTablePrivileges(cat, sPattern.compare("")? sPattern:wild, tPattern.compare("")? tPattern:wild));
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getTablePrivileges", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getTablePrivileges", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet,12,rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getCrossReference() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getCrossReference(
+ const Any& primaryCatalog,
+ const OUString& primarySchema,
+ const OUString& primaryTable,
+ const Any& foreignCatalog,
+ const OUString& foreignSchema,
+ const OUString& foreignTable)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getCrossReference");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string primaryCat(primaryCatalog.hasValue()? OUStringToOString(getStringFromAny(primaryCatalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ foreignCat(foreignCatalog.hasValue()? OUStringToOString(getStringFromAny(foreignCatalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ pSchema(OUStringToOString(primarySchema, m_rConnection.getConnectionEncoding()).getStr()),
+ pTable(OUStringToOString(primaryTable, m_rConnection.getConnectionEncoding()).getStr()),
+ fSchema(OUStringToOString(foreignSchema, m_rConnection.getConnectionEncoding()).getStr()),
+ fTable(OUStringToOString(foreignTable, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getCrossReference(primaryCat, pSchema, pTable, foreignCat, fSchema, fTable));
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getCrossReference", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getCrossReference", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet,13,rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getUDTs() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getUDTs(
+ const Any& /* catalog */,
+ const OUString& /* schemaPattern */,
+ const OUString& /* typeNamePattern */,
+ const Sequence< sal_Int32 >& /* types */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getUDTs");
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getUDTs", *this);
+ return NULL;
+}
+/* }}} */
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */