1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef CONNECTIVITY_SDATABASEMETADATA_HXX
21 #define CONNECTIVITY_SDATABASEMETADATA_HXX
23 #include "mysqlc_connection.hxx"
25 #include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
26 #include <cppuhelper/implbase1.hxx>
28 #include <cppconn/metadata.h>
30 namespace connectivity
34 typedef ::com::sun::star::sdbc::SQLException my_SQLException
;
35 typedef ::com::sun::star::uno::RuntimeException my_RuntimeException
;
36 typedef ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XResultSet
> my_XResultSetRef
;
37 using ::com::sun::star::uno::Any
;
39 //**************************************************************
40 //************ Class: ODatabaseMetaData
41 //**************************************************************
43 typedef ::cppu::WeakImplHelper1
< ::com::sun::star::sdbc::XDatabaseMetaData
> ODatabaseMetaData_BASE
;
45 class ODatabaseMetaData
: public ODatabaseMetaData_BASE
47 OConnection
& m_rConnection
;
48 sal_Bool m_bUseCatalog
;
50 sql::DatabaseMetaData
* meta
;
51 OUString identifier_quote_string
;
52 bool identifier_quote_string_set
;
55 OUString
impl_getStringMetaData( const sal_Char
* _methodName
, const std::string
& (sql::DatabaseMetaData::*_Method
)() );
56 OUString
impl_getStringMetaData( const sal_Char
* _methodName
, std::string (sql::DatabaseMetaData::*_Method
)() );
57 OUString
impl_getStringMetaData( const sal_Char
* _methodName
, const sql::SQLString
& (sql::DatabaseMetaData::*_Method
)() );
58 OUString
impl_getStringMetaData( const sal_Char
* _methodName
, sql::SQLString (sql::DatabaseMetaData::*_Method
)() );
59 sal_Int32
impl_getInt32MetaData( const sal_Char
* _methodName
, unsigned int (sql::DatabaseMetaData::*_Method
)() );
60 sal_Bool
impl_getBoolMetaData( const sal_Char
* _methodName
, bool (sql::DatabaseMetaData::*_Method
)() );
61 sal_Bool
impl_getBoolMetaData( const sal_Char
* _methodName
, bool (sql::DatabaseMetaData::*_Method
)(int), sal_Int32 _arg
);
62 sal_Bool
impl_getRSTypeMetaData( const sal_Char
* _methodName
, bool (sql::DatabaseMetaData::*_Method
)(int), sal_Int32 _resultSetType
);
65 inline const OConnection
& getOwnConnection() const { return m_rConnection
; }
67 ODatabaseMetaData(OConnection
& _rCon
);
68 virtual ~ODatabaseMetaData();
70 // as I mentioned before this interface is really BIG
72 sal_Bool SAL_CALL
allProceduresAreCallable() throw(my_SQLException
, my_RuntimeException
);
73 sal_Bool SAL_CALL
allTablesAreSelectable() throw(my_SQLException
, my_RuntimeException
);
74 OUString SAL_CALL
getURL() throw(my_SQLException
, my_RuntimeException
);
75 OUString SAL_CALL
getUserName() throw(my_SQLException
, my_RuntimeException
);
76 sal_Bool SAL_CALL
isReadOnly() throw(my_SQLException
, my_RuntimeException
);
77 sal_Bool SAL_CALL
nullsAreSortedHigh() throw(my_SQLException
, my_RuntimeException
);
78 sal_Bool SAL_CALL
nullsAreSortedLow() throw(my_SQLException
, my_RuntimeException
);
79 sal_Bool SAL_CALL
nullsAreSortedAtStart() throw(my_SQLException
, my_RuntimeException
);
80 sal_Bool SAL_CALL
nullsAreSortedAtEnd() throw(my_SQLException
, my_RuntimeException
);
81 OUString SAL_CALL
getDatabaseProductName() throw(my_SQLException
, my_RuntimeException
);
82 OUString SAL_CALL
getDatabaseProductVersion() throw(my_SQLException
, my_RuntimeException
);
83 OUString SAL_CALL
getDriverName() throw(my_SQLException
, my_RuntimeException
);
84 OUString SAL_CALL
getDriverVersion() throw(my_SQLException
, my_RuntimeException
);
85 sal_Int32 SAL_CALL
getDriverMajorVersion() throw(my_RuntimeException
);
86 sal_Int32 SAL_CALL
getDriverMinorVersion() throw(my_RuntimeException
);
87 sal_Bool SAL_CALL
usesLocalFiles() throw(my_SQLException
, my_RuntimeException
);
88 sal_Bool SAL_CALL
usesLocalFilePerTable() throw(my_SQLException
, my_RuntimeException
);
89 sal_Bool SAL_CALL
supportsMixedCaseIdentifiers() throw(my_SQLException
, my_RuntimeException
);
90 sal_Bool SAL_CALL
storesUpperCaseIdentifiers() throw(my_SQLException
, my_RuntimeException
);
91 sal_Bool SAL_CALL
storesLowerCaseIdentifiers() throw(my_SQLException
, my_RuntimeException
);
92 sal_Bool SAL_CALL
storesMixedCaseIdentifiers() throw(my_SQLException
, my_RuntimeException
);
93 sal_Bool SAL_CALL
supportsMixedCaseQuotedIdentifiers() throw(my_SQLException
, my_RuntimeException
);
94 sal_Bool SAL_CALL
storesUpperCaseQuotedIdentifiers() throw(my_SQLException
, my_RuntimeException
);
95 sal_Bool SAL_CALL
storesLowerCaseQuotedIdentifiers() throw(my_SQLException
, my_RuntimeException
);
96 sal_Bool SAL_CALL
storesMixedCaseQuotedIdentifiers() throw(my_SQLException
, my_RuntimeException
);
97 OUString SAL_CALL
getIdentifierQuoteString() throw(my_SQLException
, my_RuntimeException
);
98 OUString SAL_CALL
getSQLKeywords() throw(my_SQLException
, my_RuntimeException
);
99 OUString SAL_CALL
getNumericFunctions() throw(my_SQLException
, my_RuntimeException
);
100 OUString SAL_CALL
getStringFunctions() throw(my_SQLException
, my_RuntimeException
);
101 OUString SAL_CALL
getSystemFunctions() throw(my_SQLException
, my_RuntimeException
);
102 OUString SAL_CALL
getTimeDateFunctions() throw(my_SQLException
, my_RuntimeException
);
103 OUString SAL_CALL
getSearchStringEscape() throw(my_SQLException
, my_RuntimeException
);
104 OUString SAL_CALL
getExtraNameCharacters() throw(my_SQLException
, my_RuntimeException
);
105 sal_Bool SAL_CALL
supportsAlterTableWithAddColumn() throw(my_SQLException
, my_RuntimeException
);
106 sal_Bool SAL_CALL
supportsAlterTableWithDropColumn() throw(my_SQLException
, my_RuntimeException
);
107 sal_Bool SAL_CALL
supportsColumnAliasing() throw(my_SQLException
, my_RuntimeException
);
108 sal_Bool SAL_CALL
nullPlusNonNullIsNull() throw(my_SQLException
, my_RuntimeException
);
109 sal_Bool SAL_CALL
supportsTypeConversion() throw(my_SQLException
, my_RuntimeException
);
110 sal_Bool SAL_CALL
supportsConvert(sal_Int32 fromType
, sal_Int32 toType
)
111 throw(my_SQLException
, my_RuntimeException
);
112 sal_Bool SAL_CALL
supportsTableCorrelationNames() throw(my_SQLException
, my_RuntimeException
);
113 sal_Bool SAL_CALL
supportsDifferentTableCorrelationNames() throw(my_SQLException
, my_RuntimeException
);
114 sal_Bool SAL_CALL
supportsExpressionsInOrderBy() throw(my_SQLException
, my_RuntimeException
);
115 sal_Bool SAL_CALL
supportsOrderByUnrelated() throw(my_SQLException
, my_RuntimeException
);
116 sal_Bool SAL_CALL
supportsGroupBy() throw(my_SQLException
, my_RuntimeException
);
117 sal_Bool SAL_CALL
supportsGroupByUnrelated() throw(my_SQLException
, my_RuntimeException
);
118 sal_Bool SAL_CALL
supportsGroupByBeyondSelect() throw(my_SQLException
, my_RuntimeException
);
119 sal_Bool SAL_CALL
supportsLikeEscapeClause() throw(my_SQLException
, my_RuntimeException
);
120 sal_Bool SAL_CALL
supportsMultipleResultSets() throw(my_SQLException
, my_RuntimeException
);
121 sal_Bool SAL_CALL
supportsMultipleTransactions() throw(my_SQLException
, my_RuntimeException
);
122 sal_Bool SAL_CALL
supportsNonNullableColumns() throw(my_SQLException
, my_RuntimeException
);
123 sal_Bool SAL_CALL
supportsMinimumSQLGrammar() throw(my_SQLException
, my_RuntimeException
);
124 sal_Bool SAL_CALL
supportsCoreSQLGrammar() throw(my_SQLException
, my_RuntimeException
);
125 sal_Bool SAL_CALL
supportsExtendedSQLGrammar() throw(my_SQLException
, my_RuntimeException
);
126 sal_Bool SAL_CALL
supportsANSI92EntryLevelSQL() throw(my_SQLException
, my_RuntimeException
);
127 sal_Bool SAL_CALL
supportsANSI92IntermediateSQL() throw(my_SQLException
, my_RuntimeException
);
128 sal_Bool SAL_CALL
supportsANSI92FullSQL() throw(my_SQLException
, my_RuntimeException
);
129 sal_Bool SAL_CALL
supportsIntegrityEnhancementFacility()throw(my_SQLException
, my_RuntimeException
);
130 sal_Bool SAL_CALL
supportsOuterJoins() throw(my_SQLException
, my_RuntimeException
);
131 sal_Bool SAL_CALL
supportsFullOuterJoins() throw(my_SQLException
, my_RuntimeException
);
132 sal_Bool SAL_CALL
supportsLimitedOuterJoins() throw(my_SQLException
, my_RuntimeException
);
133 OUString SAL_CALL
getSchemaTerm() throw(my_SQLException
, my_RuntimeException
);
134 OUString SAL_CALL
getProcedureTerm() throw(my_SQLException
, my_RuntimeException
);
135 OUString SAL_CALL
getCatalogTerm() throw(my_SQLException
, my_RuntimeException
);
136 sal_Bool SAL_CALL
isCatalogAtStart() throw(my_SQLException
, my_RuntimeException
);
137 OUString SAL_CALL
getCatalogSeparator() throw(my_SQLException
, my_RuntimeException
);
138 sal_Bool SAL_CALL
supportsSchemasInDataManipulation() throw(my_SQLException
, my_RuntimeException
);
139 sal_Bool SAL_CALL
supportsSchemasInProcedureCalls() throw(my_SQLException
, my_RuntimeException
);
140 sal_Bool SAL_CALL
supportsSchemasInTableDefinitions() throw(my_SQLException
, my_RuntimeException
);
141 sal_Bool SAL_CALL
supportsSchemasInIndexDefinitions() throw(my_SQLException
, my_RuntimeException
);
142 sal_Bool SAL_CALL
supportsSchemasInPrivilegeDefinitions() throw(my_SQLException
, my_RuntimeException
);
143 sal_Bool SAL_CALL
supportsCatalogsInDataManipulation() throw(my_SQLException
, my_RuntimeException
);
144 sal_Bool SAL_CALL
supportsCatalogsInProcedureCalls() throw(my_SQLException
, my_RuntimeException
);
145 sal_Bool SAL_CALL
supportsCatalogsInTableDefinitions() throw(my_SQLException
, my_RuntimeException
);
146 sal_Bool SAL_CALL
supportsCatalogsInIndexDefinitions() throw(my_SQLException
, my_RuntimeException
);
147 sal_Bool SAL_CALL
supportsCatalogsInPrivilegeDefinitions() throw(my_SQLException
, my_RuntimeException
);
148 sal_Bool SAL_CALL
supportsPositionedDelete() throw(my_SQLException
, my_RuntimeException
);
149 sal_Bool SAL_CALL
supportsPositionedUpdate() throw(my_SQLException
, my_RuntimeException
);
150 sal_Bool SAL_CALL
supportsSelectForUpdate() throw(my_SQLException
, my_RuntimeException
);
151 sal_Bool SAL_CALL
supportsStoredProcedures() throw(my_SQLException
, my_RuntimeException
);
152 sal_Bool SAL_CALL
supportsSubqueriesInComparisons() throw(my_SQLException
, my_RuntimeException
);
153 sal_Bool SAL_CALL
supportsSubqueriesInExists() throw(my_SQLException
, my_RuntimeException
);
154 sal_Bool SAL_CALL
supportsSubqueriesInIns() throw(my_SQLException
, my_RuntimeException
);
155 sal_Bool SAL_CALL
supportsSubqueriesInQuantifieds() throw(my_SQLException
, my_RuntimeException
);
156 sal_Bool SAL_CALL
supportsCorrelatedSubqueries() throw(my_SQLException
, my_RuntimeException
);
157 sal_Bool SAL_CALL
supportsUnion() throw(my_SQLException
, my_RuntimeException
);
158 sal_Bool SAL_CALL
supportsUnionAll() throw(my_SQLException
, my_RuntimeException
);
159 sal_Bool SAL_CALL
supportsOpenCursorsAcrossCommit() throw(my_SQLException
, my_RuntimeException
);
160 sal_Bool SAL_CALL
supportsOpenCursorsAcrossRollback() throw(my_SQLException
, my_RuntimeException
);
161 sal_Bool SAL_CALL
supportsOpenStatementsAcrossCommit() throw(my_SQLException
, my_RuntimeException
);
162 sal_Bool SAL_CALL
supportsOpenStatementsAcrossRollback() throw(my_SQLException
, my_RuntimeException
);
163 sal_Int32 SAL_CALL
getMaxBinaryLiteralLength() throw(my_SQLException
, my_RuntimeException
);
164 sal_Int32 SAL_CALL
getMaxCharLiteralLength() throw(my_SQLException
, my_RuntimeException
);
165 sal_Int32 SAL_CALL
getMaxColumnNameLength() throw(my_SQLException
, my_RuntimeException
);
166 sal_Int32 SAL_CALL
getMaxColumnsInGroupBy() throw(my_SQLException
, my_RuntimeException
);
167 sal_Int32 SAL_CALL
getMaxColumnsInIndex() throw(my_SQLException
, my_RuntimeException
);
168 sal_Int32 SAL_CALL
getMaxColumnsInOrderBy() throw(my_SQLException
, my_RuntimeException
);
169 sal_Int32 SAL_CALL
getMaxColumnsInSelect() throw(my_SQLException
, my_RuntimeException
);
170 sal_Int32 SAL_CALL
getMaxColumnsInTable() throw(my_SQLException
, my_RuntimeException
);
171 sal_Int32 SAL_CALL
getMaxConnections() throw(my_SQLException
, my_RuntimeException
);
172 sal_Int32 SAL_CALL
getMaxCursorNameLength() throw(my_SQLException
, my_RuntimeException
);
173 sal_Int32 SAL_CALL
getMaxIndexLength() throw(my_SQLException
, my_RuntimeException
);
174 sal_Int32 SAL_CALL
getMaxSchemaNameLength() throw(my_SQLException
, my_RuntimeException
);
175 sal_Int32 SAL_CALL
getMaxProcedureNameLength() throw(my_SQLException
, my_RuntimeException
);
176 sal_Int32 SAL_CALL
getMaxCatalogNameLength() throw(my_SQLException
, my_RuntimeException
);
177 sal_Int32 SAL_CALL
getMaxRowSize() throw(my_SQLException
, my_RuntimeException
);
178 sal_Bool SAL_CALL
doesMaxRowSizeIncludeBlobs() throw(my_SQLException
, my_RuntimeException
);
179 sal_Int32 SAL_CALL
getMaxStatementLength() throw(my_SQLException
, my_RuntimeException
);
180 sal_Int32 SAL_CALL
getMaxStatements() throw(my_SQLException
, my_RuntimeException
);
181 sal_Int32 SAL_CALL
getMaxTableNameLength() throw(my_SQLException
, my_RuntimeException
);
182 sal_Int32 SAL_CALL
getMaxTablesInSelect() throw(my_SQLException
, my_RuntimeException
);
183 sal_Int32 SAL_CALL
getMaxUserNameLength() throw(my_SQLException
, my_RuntimeException
);
184 sal_Int32 SAL_CALL
getDefaultTransactionIsolation() throw(my_SQLException
, my_RuntimeException
);
185 sal_Bool SAL_CALL
supportsTransactions() throw(my_SQLException
, my_RuntimeException
);
186 sal_Bool SAL_CALL
supportsTransactionIsolationLevel(sal_Int32 level
)
187 throw(my_SQLException
, my_RuntimeException
);
188 sal_Bool SAL_CALL
supportsDataDefinitionAndDataManipulationTransactions()
189 throw(my_SQLException
, my_RuntimeException
);
190 sal_Bool SAL_CALL
supportsDataManipulationTransactionsOnly()throw(my_SQLException
, my_RuntimeException
);
191 sal_Bool SAL_CALL
dataDefinitionCausesTransactionCommit() throw(my_SQLException
, my_RuntimeException
);
192 sal_Bool SAL_CALL
dataDefinitionIgnoredInTransactions() throw(my_SQLException
, my_RuntimeException
);
193 my_XResultSetRef SAL_CALL
getProcedures(const Any
& catalog
, const OUString
& schemaPattern
, const OUString
& procedureNamePattern
) throw(my_SQLException
, my_RuntimeException
);
194 my_XResultSetRef SAL_CALL
getProcedureColumns(const Any
& catalog
, const OUString
& schemaPattern
, const OUString
& procedureNamePattern
, const OUString
& columnNamePattern
) throw(my_SQLException
, my_RuntimeException
);
195 my_XResultSetRef SAL_CALL
getTables(const Any
& catalog
, const OUString
& schemaPattern
, const OUString
& tableNamePattern
, const ::com::sun::star::uno::Sequence
< OUString
>& types
) throw(my_SQLException
, my_RuntimeException
);
196 my_XResultSetRef SAL_CALL
getSchemas() throw(my_SQLException
, my_RuntimeException
);
197 my_XResultSetRef SAL_CALL
getCatalogs() throw(my_SQLException
, my_RuntimeException
);
198 my_XResultSetRef SAL_CALL
getTableTypes() throw(my_SQLException
, my_RuntimeException
);
199 my_XResultSetRef SAL_CALL
getColumns(const Any
& catalog
, const OUString
& schemaPattern
, const OUString
& tableNamePattern
, const OUString
& columnNamePattern
) throw(my_SQLException
, my_RuntimeException
);
200 my_XResultSetRef SAL_CALL
getColumnPrivileges(const Any
& catalog
, const OUString
& schema
, const OUString
& table
, const OUString
& columnNamePattern
) throw(my_SQLException
, my_RuntimeException
);
201 my_XResultSetRef SAL_CALL
getTablePrivileges(const Any
& catalog
, const OUString
& schemaPattern
, const OUString
& tableNamePattern
) throw(my_SQLException
, my_RuntimeException
);
202 my_XResultSetRef SAL_CALL
getBestRowIdentifier(const Any
& catalog
, const OUString
& schema
, const OUString
& table
, sal_Int32 scope
, sal_Bool nullable
) throw(my_SQLException
, my_RuntimeException
);
203 my_XResultSetRef SAL_CALL
getVersionColumns(const Any
& catalog
, const OUString
& schema
, const OUString
& table
) throw(my_SQLException
, my_RuntimeException
);
204 my_XResultSetRef SAL_CALL
getPrimaryKeys(const Any
& catalog
, const OUString
& schema
, const OUString
& table
) throw(my_SQLException
, my_RuntimeException
);
205 my_XResultSetRef SAL_CALL
getImportedKeys(const Any
& catalog
, const OUString
& schema
, const OUString
& table
) throw(my_SQLException
, my_RuntimeException
);
206 my_XResultSetRef SAL_CALL
getExportedKeys(const Any
& catalog
, const OUString
& schema
, const OUString
& table
) throw(my_SQLException
, my_RuntimeException
);
207 my_XResultSetRef SAL_CALL
getCrossReference(const Any
& primaryCatalog
, const OUString
& primarySchema
, const OUString
& primaryTable
, const Any
& foreignCatalog
, const OUString
& foreignSchema
, const OUString
& foreignTable
) throw(my_SQLException
, my_RuntimeException
);
208 my_XResultSetRef SAL_CALL
getTypeInfo() throw(my_SQLException
, my_RuntimeException
);
209 my_XResultSetRef SAL_CALL
getIndexInfo(const Any
& catalog
, const OUString
& schema
, const OUString
& table
, sal_Bool unique
, sal_Bool approximate
) throw(my_SQLException
, my_RuntimeException
);
210 sal_Bool SAL_CALL
supportsResultSetType(sal_Int32 setType
) throw(my_SQLException
, my_RuntimeException
);
211 sal_Bool SAL_CALL
supportsResultSetConcurrency(sal_Int32 setType
, sal_Int32 concurrency
) throw(my_SQLException
, my_RuntimeException
);
212 sal_Bool SAL_CALL
ownUpdatesAreVisible(sal_Int32 setType
) throw(my_SQLException
, my_RuntimeException
);
213 sal_Bool SAL_CALL
ownDeletesAreVisible(sal_Int32 setType
) throw(my_SQLException
, my_RuntimeException
);
214 sal_Bool SAL_CALL
ownInsertsAreVisible(sal_Int32 setType
) throw(my_SQLException
, my_RuntimeException
);
215 sal_Bool SAL_CALL
othersUpdatesAreVisible(sal_Int32 setType
)throw(my_SQLException
, my_RuntimeException
);
216 sal_Bool SAL_CALL
othersDeletesAreVisible(sal_Int32 setType
)throw(my_SQLException
, my_RuntimeException
);
217 sal_Bool SAL_CALL
othersInsertsAreVisible(sal_Int32 setType
)throw(my_SQLException
, my_RuntimeException
);
218 sal_Bool SAL_CALL
updatesAreDetected(sal_Int32 setType
) throw(my_SQLException
, my_RuntimeException
);
219 sal_Bool SAL_CALL
deletesAreDetected(sal_Int32 setType
) throw(my_SQLException
, my_RuntimeException
);
220 sal_Bool SAL_CALL
insertsAreDetected(sal_Int32 setType
) throw(my_SQLException
, my_RuntimeException
);
221 sal_Bool SAL_CALL
supportsBatchUpdates() throw(my_SQLException
, my_RuntimeException
);
222 my_XResultSetRef SAL_CALL
getUDTs(const Any
& catalog
, const OUString
& schemaPattern
, const OUString
& typeNamePattern
, const ::com::sun::star::uno::Sequence
< sal_Int32
>& types
) throw(my_SQLException
, my_RuntimeException
);
223 ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XConnection
> SAL_CALL
getConnection() throw(my_SQLException
, my_RuntimeException
);
228 #endif // CONNECTIVITY_SDATABASEMETADATA_HXX
230 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */