1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_connectivity.hxx" 30*cdf0e10cSrcweir #include "TDatabaseMetaDataBase.hxx" 31*cdf0e10cSrcweir #include "RowFunctionParser.hxx" 32*cdf0e10cSrcweir 33*cdf0e10cSrcweir #include <comphelper/sequenceashashmap.hxx> 34*cdf0e10cSrcweir #include <comphelper/evtlistenerhlp.hxx> 35*cdf0e10cSrcweir #include <com/sun/star/lang/XComponent.hpp> 36*cdf0e10cSrcweir #include "resource/sharedresources.hxx" 37*cdf0e10cSrcweir #include "resource/common_res.hrc" 38*cdf0e10cSrcweir #include <connectivity/dbexception.hxx> 39*cdf0e10cSrcweir 40*cdf0e10cSrcweir using namespace com::sun::star::uno; 41*cdf0e10cSrcweir using namespace com::sun::star::lang; 42*cdf0e10cSrcweir using namespace com::sun::star::sdbc; 43*cdf0e10cSrcweir using namespace com::sun::star::lang; 44*cdf0e10cSrcweir using namespace com::sun::star::beans; 45*cdf0e10cSrcweir using namespace comphelper; 46*cdf0e10cSrcweir using namespace connectivity; 47*cdf0e10cSrcweir 48*cdf0e10cSrcweir 49*cdf0e10cSrcweir ODatabaseMetaDataBase::ODatabaseMetaDataBase(const Reference< XConnection >& _rxConnection,const Sequence< PropertyValue >& _rInfo) 50*cdf0e10cSrcweir : m_aConnectionInfo(_rInfo) 51*cdf0e10cSrcweir ,m_isCatalogAtStart(false,sal_False) 52*cdf0e10cSrcweir ,m_sCatalogSeparator(false,::rtl::OUString()) 53*cdf0e10cSrcweir ,m_sIdentifierQuoteString(false,::rtl::OUString()) 54*cdf0e10cSrcweir ,m_supportsCatalogsInTableDefinitions(false,sal_False) 55*cdf0e10cSrcweir ,m_supportsSchemasInTableDefinitions(false,sal_False) 56*cdf0e10cSrcweir ,m_supportsCatalogsInDataManipulation(false,sal_False) 57*cdf0e10cSrcweir ,m_supportsSchemasInDataManipulation(false,sal_False) 58*cdf0e10cSrcweir ,m_supportsMixedCaseQuotedIdentifiers(false,sal_False) 59*cdf0e10cSrcweir ,m_supportsAlterTableWithAddColumn(false,sal_False) 60*cdf0e10cSrcweir ,m_supportsAlterTableWithDropColumn(false,sal_False) 61*cdf0e10cSrcweir ,m_MaxStatements(false,0) 62*cdf0e10cSrcweir ,m_MaxTablesInSelect(false,0) 63*cdf0e10cSrcweir ,m_storesMixedCaseQuotedIdentifiers(false,sal_False) 64*cdf0e10cSrcweir , m_xConnection(_rxConnection) 65*cdf0e10cSrcweir { 66*cdf0e10cSrcweir osl_incrementInterlockedCount( &m_refCount ); 67*cdf0e10cSrcweir { 68*cdf0e10cSrcweir m_xListenerHelper = new OEventListenerHelper(this); 69*cdf0e10cSrcweir Reference<XComponent> xCom(m_xConnection,UNO_QUERY); 70*cdf0e10cSrcweir if(xCom.is()) 71*cdf0e10cSrcweir xCom->addEventListener(m_xListenerHelper); 72*cdf0e10cSrcweir } 73*cdf0e10cSrcweir osl_decrementInterlockedCount( &m_refCount ); 74*cdf0e10cSrcweir } 75*cdf0e10cSrcweir // ------------------------------------------------------------------------- 76*cdf0e10cSrcweir ODatabaseMetaDataBase::~ODatabaseMetaDataBase() 77*cdf0e10cSrcweir { 78*cdf0e10cSrcweir } 79*cdf0e10cSrcweir 80*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 81*cdf0e10cSrcweir Sequence< PropertyValue > SAL_CALL ODatabaseMetaDataBase::getConnectionInfo( ) throw (RuntimeException) 82*cdf0e10cSrcweir { 83*cdf0e10cSrcweir return m_aConnectionInfo; 84*cdf0e10cSrcweir } 85*cdf0e10cSrcweir 86*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 87*cdf0e10cSrcweir void SAL_CALL ODatabaseMetaDataBase::disposing( const EventObject& /*Source*/ ) throw(RuntimeException) 88*cdf0e10cSrcweir { 89*cdf0e10cSrcweir // cut off all references to the connection 90*cdf0e10cSrcweir m_xConnection.clear(); 91*cdf0e10cSrcweir m_xListenerHelper.clear(); 92*cdf0e10cSrcweir } 93*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 94*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL ODatabaseMetaDataBase::getTypeInfo( ) throw(SQLException, RuntimeException) 95*cdf0e10cSrcweir { 96*cdf0e10cSrcweir ::osl::MutexGuard aGuard( m_aMutex ); 97*cdf0e10cSrcweir if ( m_aTypeInfoRows.empty() ) 98*cdf0e10cSrcweir { 99*cdf0e10cSrcweir Reference< XResultSet > xRet = impl_getTypeInfo_throw(); 100*cdf0e10cSrcweir Reference< XRow > xRow(xRet,UNO_QUERY); 101*cdf0e10cSrcweir ::comphelper::SequenceAsHashMap aMap(m_aConnectionInfo); 102*cdf0e10cSrcweir Sequence< Any > aTypeInfoSettings; 103*cdf0e10cSrcweir aTypeInfoSettings = aMap.getUnpackedValueOrDefault(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TypeInfoSettings")),aTypeInfoSettings); 104*cdf0e10cSrcweir 105*cdf0e10cSrcweir if ( xRow.is() ) 106*cdf0e10cSrcweir { 107*cdf0e10cSrcweir static sal_Int32 pTypes[] = { 108*cdf0e10cSrcweir DataType::VARCHAR 109*cdf0e10cSrcweir ,DataType::INTEGER 110*cdf0e10cSrcweir ,DataType::INTEGER 111*cdf0e10cSrcweir ,DataType::VARCHAR 112*cdf0e10cSrcweir ,DataType::VARCHAR 113*cdf0e10cSrcweir ,DataType::VARCHAR 114*cdf0e10cSrcweir ,DataType::INTEGER 115*cdf0e10cSrcweir ,DataType::BOOLEAN 116*cdf0e10cSrcweir ,DataType::INTEGER 117*cdf0e10cSrcweir ,DataType::BOOLEAN 118*cdf0e10cSrcweir ,DataType::BOOLEAN 119*cdf0e10cSrcweir ,DataType::BOOLEAN 120*cdf0e10cSrcweir ,DataType::VARCHAR 121*cdf0e10cSrcweir ,DataType::INTEGER 122*cdf0e10cSrcweir ,DataType::INTEGER 123*cdf0e10cSrcweir ,DataType::INTEGER 124*cdf0e10cSrcweir ,DataType::INTEGER 125*cdf0e10cSrcweir ,DataType::INTEGER 126*cdf0e10cSrcweir }; 127*cdf0e10cSrcweir ::std::vector<ExpressionNodeSharedPtr> aConditions; 128*cdf0e10cSrcweir if ( aTypeInfoSettings.getLength() > 1 && ((aTypeInfoSettings.getLength() % 2) == 0) ) 129*cdf0e10cSrcweir { 130*cdf0e10cSrcweir const Any* pIter = aTypeInfoSettings.getConstArray(); 131*cdf0e10cSrcweir const Any* pEnd = pIter + aTypeInfoSettings.getLength(); 132*cdf0e10cSrcweir try 133*cdf0e10cSrcweir { 134*cdf0e10cSrcweir for(;pIter != pEnd;++pIter) 135*cdf0e10cSrcweir aConditions.push_back(FunctionParser::parseFunction(::comphelper::getString(*pIter))); 136*cdf0e10cSrcweir } 137*cdf0e10cSrcweir catch(ParseError&) 138*cdf0e10cSrcweir { 139*cdf0e10cSrcweir ::connectivity::SharedResources aResources; 140*cdf0e10cSrcweir const ::rtl::OUString sError( aResources.getResourceString(STR_FORMULA_WRONG)); 141*cdf0e10cSrcweir ::dbtools::throwGenericSQLException(sError,*this); 142*cdf0e10cSrcweir } 143*cdf0e10cSrcweir } 144*cdf0e10cSrcweir 145*cdf0e10cSrcweir ::connectivity::ODatabaseMetaDataResultSet::ORows aTypeInfoRows; 146*cdf0e10cSrcweir while( xRet->next() ) 147*cdf0e10cSrcweir { 148*cdf0e10cSrcweir ::connectivity::ODatabaseMetaDataResultSet::ORow aRow; 149*cdf0e10cSrcweir aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue()); 150*cdf0e10cSrcweir sal_Int32* pType = pTypes; 151*cdf0e10cSrcweir for (sal_Int32 i = 1; i <= sal_Int32(sizeof(pTypes)/sizeof(pTypes[0])); ++i,++pType) 152*cdf0e10cSrcweir { 153*cdf0e10cSrcweir ORowSetValue aValue; 154*cdf0e10cSrcweir aValue.fill(i,*pType,xRow); 155*cdf0e10cSrcweir aRow.push_back(new ORowSetValueDecorator(aValue)); 156*cdf0e10cSrcweir } 157*cdf0e10cSrcweir 158*cdf0e10cSrcweir ::std::vector<ExpressionNodeSharedPtr>::iterator aIter = aConditions.begin(); 159*cdf0e10cSrcweir ::std::vector<ExpressionNodeSharedPtr>::iterator aEnd = aConditions.end(); 160*cdf0e10cSrcweir for (; aIter != aEnd; ++aIter) 161*cdf0e10cSrcweir { 162*cdf0e10cSrcweir if ( (*aIter)->evaluate(aRow)->getValue().getBool() ) 163*cdf0e10cSrcweir { 164*cdf0e10cSrcweir ++aIter; 165*cdf0e10cSrcweir (*aIter)->fill(aRow); 166*cdf0e10cSrcweir } 167*cdf0e10cSrcweir else 168*cdf0e10cSrcweir ++aIter; 169*cdf0e10cSrcweir } 170*cdf0e10cSrcweir aTypeInfoRows.push_back(aRow); 171*cdf0e10cSrcweir } 172*cdf0e10cSrcweir m_aTypeInfoRows = aTypeInfoRows; 173*cdf0e10cSrcweir } 174*cdf0e10cSrcweir } 175*cdf0e10cSrcweir ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTypeInfo); 176*cdf0e10cSrcweir Reference< XResultSet > xRet = pResult; 177*cdf0e10cSrcweir pResult->setRows(m_aTypeInfoRows); 178*cdf0e10cSrcweir return xRet; 179*cdf0e10cSrcweir } 180*cdf0e10cSrcweir // ------------------------------------------------------------------------- 181*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL ODatabaseMetaDataBase::getExportedKeys( 182*cdf0e10cSrcweir const Any& /*catalog*/, const ::rtl::OUString& /*schema*/, const ::rtl::OUString& /*table*/ ) throw(SQLException, RuntimeException) 183*cdf0e10cSrcweir { 184*cdf0e10cSrcweir return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eExportedKeys ); 185*cdf0e10cSrcweir } 186*cdf0e10cSrcweir // ------------------------------------------------------------------------- 187*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL ODatabaseMetaDataBase::getImportedKeys( 188*cdf0e10cSrcweir const Any& /*catalog*/, const ::rtl::OUString& /*schema*/, const ::rtl::OUString& /*table*/ ) throw(SQLException, RuntimeException) 189*cdf0e10cSrcweir { 190*cdf0e10cSrcweir return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eImportedKeys ); 191*cdf0e10cSrcweir } 192*cdf0e10cSrcweir // ------------------------------------------------------------------------- 193*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL ODatabaseMetaDataBase::getPrimaryKeys( 194*cdf0e10cSrcweir const Any& /*catalog*/, const ::rtl::OUString& /*schema*/, const ::rtl::OUString& /*table*/ ) throw(SQLException, RuntimeException) 195*cdf0e10cSrcweir { 196*cdf0e10cSrcweir return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::ePrimaryKeys ); 197*cdf0e10cSrcweir } 198*cdf0e10cSrcweir // ------------------------------------------------------------------------- 199*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL ODatabaseMetaDataBase::getIndexInfo( 200*cdf0e10cSrcweir const Any& /*catalog*/, const ::rtl::OUString& /*schema*/, const ::rtl::OUString& /*table*/, 201*cdf0e10cSrcweir sal_Bool /*unique*/, sal_Bool /*approximate*/ ) throw(SQLException, RuntimeException) 202*cdf0e10cSrcweir { 203*cdf0e10cSrcweir return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eIndexInfo ); 204*cdf0e10cSrcweir } 205*cdf0e10cSrcweir // ------------------------------------------------------------------------- 206*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL ODatabaseMetaDataBase::getBestRowIdentifier( 207*cdf0e10cSrcweir const Any& /*catalog*/, const ::rtl::OUString& /*schema*/, const ::rtl::OUString& /*table*/, sal_Int32 /*scope*/, 208*cdf0e10cSrcweir sal_Bool /*nullable*/ ) throw(SQLException, RuntimeException) 209*cdf0e10cSrcweir { 210*cdf0e10cSrcweir return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eBestRowIdentifier ); 211*cdf0e10cSrcweir } 212*cdf0e10cSrcweir // ------------------------------------------------------------------------- 213*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL ODatabaseMetaDataBase::getCrossReference( 214*cdf0e10cSrcweir const Any& /*primaryCatalog*/, const ::rtl::OUString& /*primarySchema*/, 215*cdf0e10cSrcweir const ::rtl::OUString& /*primaryTable*/, const Any& /*foreignCatalog*/, 216*cdf0e10cSrcweir const ::rtl::OUString& /*foreignSchema*/, const ::rtl::OUString& /*foreignTable*/ ) throw(SQLException, RuntimeException) 217*cdf0e10cSrcweir { 218*cdf0e10cSrcweir return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eCrossReference ); 219*cdf0e10cSrcweir } 220*cdf0e10cSrcweir // ------------------------------------------------------------------------- 221*cdf0e10cSrcweir Reference< XConnection > SAL_CALL ODatabaseMetaDataBase::getConnection( ) throw(SQLException, RuntimeException) 222*cdf0e10cSrcweir { 223*cdf0e10cSrcweir return m_xConnection; 224*cdf0e10cSrcweir } 225*cdf0e10cSrcweir // ------------------------------------------------------------------------- 226*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL ODatabaseMetaDataBase::getProcedureColumns( 227*cdf0e10cSrcweir const Any& /*catalog*/, const ::rtl::OUString& /*schemaPattern*/, 228*cdf0e10cSrcweir const ::rtl::OUString& /*procedureNamePattern*/, const ::rtl::OUString& /*columnNamePattern*/ ) throw(SQLException, RuntimeException) 229*cdf0e10cSrcweir { 230*cdf0e10cSrcweir return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eProcedureColumns ); 231*cdf0e10cSrcweir } 232*cdf0e10cSrcweir // ------------------------------------------------------------------------- 233*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL ODatabaseMetaDataBase::getProcedures( 234*cdf0e10cSrcweir const Any& /*catalog*/, const ::rtl::OUString& /*schemaPattern*/, 235*cdf0e10cSrcweir const ::rtl::OUString& /*procedureNamePattern*/ ) throw(SQLException, RuntimeException) 236*cdf0e10cSrcweir { 237*cdf0e10cSrcweir return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eProcedures ); 238*cdf0e10cSrcweir } 239*cdf0e10cSrcweir // ------------------------------------------------------------------------- 240*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL ODatabaseMetaDataBase::getVersionColumns( 241*cdf0e10cSrcweir const Any& /*catalog*/, const ::rtl::OUString& /*schema*/, const ::rtl::OUString& /*table*/ ) throw(SQLException, RuntimeException) 242*cdf0e10cSrcweir { 243*cdf0e10cSrcweir return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eVersionColumns ); 244*cdf0e10cSrcweir } 245*cdf0e10cSrcweir // ------------------------------------------------------------------------- 246*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL ODatabaseMetaDataBase::getSchemas( ) throw(SQLException, RuntimeException) 247*cdf0e10cSrcweir { 248*cdf0e10cSrcweir return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eSchemas ); 249*cdf0e10cSrcweir } 250*cdf0e10cSrcweir // ------------------------------------------------------------------------- 251*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL ODatabaseMetaDataBase::getColumnPrivileges( 252*cdf0e10cSrcweir const Any& /*catalog*/, const ::rtl::OUString& /*schema*/, const ::rtl::OUString& /*table*/, 253*cdf0e10cSrcweir const ::rtl::OUString& /*columnNamePattern*/ ) throw(SQLException, RuntimeException) 254*cdf0e10cSrcweir { 255*cdf0e10cSrcweir return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eColumnPrivileges ); 256*cdf0e10cSrcweir } 257*cdf0e10cSrcweir // ------------------------------------------------------------------------- 258*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL ODatabaseMetaDataBase::getTablePrivileges( 259*cdf0e10cSrcweir const Any& /*catalog*/, const ::rtl::OUString& /*schema*/, const ::rtl::OUString& /*table*/) throw(SQLException, RuntimeException) 260*cdf0e10cSrcweir { 261*cdf0e10cSrcweir return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eTablePrivileges ); 262*cdf0e10cSrcweir } 263*cdf0e10cSrcweir // ------------------------------------------------------------------------- 264*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL ODatabaseMetaDataBase::getCatalogs( ) throw(SQLException, RuntimeException) 265*cdf0e10cSrcweir { 266*cdf0e10cSrcweir return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eCatalogs ); 267*cdf0e10cSrcweir } 268*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 269*cdf0e10cSrcweir ::rtl::OUString SAL_CALL ODatabaseMetaDataBase::getIdentifierQuoteString( ) throw(SQLException, RuntimeException) 270*cdf0e10cSrcweir { 271*cdf0e10cSrcweir return callImplMethod(m_sIdentifierQuoteString,::std::mem_fun_t< ::rtl::OUString ,ODatabaseMetaDataBase>(&ODatabaseMetaDataBase::impl_getIdentifierQuoteString_throw)); 272*cdf0e10cSrcweir } 273*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 274*cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataBase::isCatalogAtStart( ) throw(SQLException, RuntimeException) 275*cdf0e10cSrcweir { 276*cdf0e10cSrcweir return callImplMethod(m_isCatalogAtStart,::std::mem_fun_t< sal_Bool,ODatabaseMetaDataBase>(&ODatabaseMetaDataBase::impl_isCatalogAtStart_throw)); 277*cdf0e10cSrcweir } 278*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 279*cdf0e10cSrcweir ::rtl::OUString SAL_CALL ODatabaseMetaDataBase::getCatalogSeparator( ) throw(SQLException, RuntimeException) 280*cdf0e10cSrcweir { 281*cdf0e10cSrcweir return callImplMethod(m_sCatalogSeparator,::std::mem_fun_t< ::rtl::OUString,ODatabaseMetaDataBase>(&ODatabaseMetaDataBase::impl_getCatalogSeparator_throw)); 282*cdf0e10cSrcweir } 283*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 284*cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataBase::supportsCatalogsInTableDefinitions( ) throw(SQLException, RuntimeException) 285*cdf0e10cSrcweir { 286*cdf0e10cSrcweir return callImplMethod(m_supportsCatalogsInTableDefinitions,::std::mem_fun_t< sal_Bool,ODatabaseMetaDataBase>(&ODatabaseMetaDataBase::impl_supportsCatalogsInTableDefinitions_throw)); 287*cdf0e10cSrcweir } 288*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 289*cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataBase::supportsSchemasInTableDefinitions( ) throw(SQLException, RuntimeException) 290*cdf0e10cSrcweir { 291*cdf0e10cSrcweir return callImplMethod(m_supportsSchemasInTableDefinitions,::std::mem_fun_t< sal_Bool,ODatabaseMetaDataBase>(&ODatabaseMetaDataBase::impl_supportsSchemasInTableDefinitions_throw)); 292*cdf0e10cSrcweir } 293*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 294*cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataBase::supportsCatalogsInDataManipulation( ) throw(SQLException, RuntimeException) 295*cdf0e10cSrcweir { 296*cdf0e10cSrcweir return callImplMethod(m_supportsCatalogsInDataManipulation,::std::mem_fun_t< sal_Bool,ODatabaseMetaDataBase>(&ODatabaseMetaDataBase::impl_supportsCatalogsInDataManipulation_throw)); 297*cdf0e10cSrcweir } 298*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 299*cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataBase::supportsSchemasInDataManipulation( ) throw(SQLException, RuntimeException) 300*cdf0e10cSrcweir { 301*cdf0e10cSrcweir return callImplMethod(m_supportsSchemasInDataManipulation,::std::mem_fun_t< sal_Bool,ODatabaseMetaDataBase>(&ODatabaseMetaDataBase::impl_supportsSchemasInDataManipulation_throw)); 302*cdf0e10cSrcweir } 303*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 304*cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataBase::supportsMixedCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException) 305*cdf0e10cSrcweir { 306*cdf0e10cSrcweir return callImplMethod(m_supportsMixedCaseQuotedIdentifiers,::std::mem_fun_t< sal_Bool,ODatabaseMetaDataBase>(&ODatabaseMetaDataBase::impl_supportsMixedCaseQuotedIdentifiers_throw)); 307*cdf0e10cSrcweir } 308*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 309*cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataBase::supportsAlterTableWithAddColumn( ) throw(SQLException, RuntimeException) 310*cdf0e10cSrcweir { 311*cdf0e10cSrcweir return callImplMethod(m_supportsAlterTableWithAddColumn,::std::mem_fun_t< sal_Bool,ODatabaseMetaDataBase>(&ODatabaseMetaDataBase::impl_supportsAlterTableWithAddColumn_throw)); 312*cdf0e10cSrcweir } 313*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 314*cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataBase::supportsAlterTableWithDropColumn( ) throw(SQLException, RuntimeException) 315*cdf0e10cSrcweir { 316*cdf0e10cSrcweir return callImplMethod(m_supportsAlterTableWithDropColumn,::std::mem_fun_t< sal_Bool,ODatabaseMetaDataBase>(&ODatabaseMetaDataBase::impl_supportsAlterTableWithDropColumn_throw)); 317*cdf0e10cSrcweir } 318*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 319*cdf0e10cSrcweir sal_Int32 SAL_CALL ODatabaseMetaDataBase::getMaxStatements( ) throw(SQLException, RuntimeException) 320*cdf0e10cSrcweir { 321*cdf0e10cSrcweir return callImplMethod(m_MaxStatements,::std::mem_fun_t< sal_Int32,ODatabaseMetaDataBase>(&ODatabaseMetaDataBase::impl_getMaxStatements_throw)); 322*cdf0e10cSrcweir } 323*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 324*cdf0e10cSrcweir sal_Int32 SAL_CALL ODatabaseMetaDataBase::getMaxTablesInSelect( ) throw(SQLException, RuntimeException) 325*cdf0e10cSrcweir { 326*cdf0e10cSrcweir return callImplMethod(m_MaxTablesInSelect,::std::mem_fun_t< sal_Int32,ODatabaseMetaDataBase>(&ODatabaseMetaDataBase::impl_getMaxTablesInSelect_throw)); 327*cdf0e10cSrcweir } 328*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 329*cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataBase::storesMixedCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException) 330*cdf0e10cSrcweir { 331*cdf0e10cSrcweir return callImplMethod(m_storesMixedCaseQuotedIdentifiers,::std::mem_fun_t< sal_Bool,ODatabaseMetaDataBase>(&ODatabaseMetaDataBase::impl_storesMixedCaseQuotedIdentifiers_throw)); 332*cdf0e10cSrcweir } 333*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 334