bump product version to 4.1.6.2
[LibreOffice.git] / mysqlc / source / mysqlc_databasemetadata.hxx
bloba6a79e34f929328cba85454d1cc803572ce89158
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
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
32 namespace mysqlc
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;
49 protected:
50 sql::DatabaseMetaData * meta;
51 OUString identifier_quote_string;
52 bool identifier_quote_string_set;
54 private:
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 );
64 public:
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
71 // XDatabaseMetaData
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: */