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