1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * This file is part of the LibreOffice project. 4 * 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/. 8 * 9 * This file incorporates work covered by the following license notice: 10 * 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 . 18 */ 19 20 #pragma once 21 22 #include "mysqlc_connection.hxx" 23 24 #include <com/sun/star/sdbc/XDatabaseMetaData.hpp> 25 #include <cppuhelper/implbase1.hxx> 26 27 namespace connectivity::mysqlc 28 { 29 using ::com::sun::star::uno::Any; 30 31 //************ Class: ODatabaseMetaData 32 33 typedef ::cppu::WeakImplHelper1<css::sdbc::XDatabaseMetaData> ODatabaseMetaData_BASE; 34 35 class ODatabaseMetaData final : public ODatabaseMetaData_BASE 36 { 37 OConnection& m_rConnection; 38 MYSQL* m_pMySql; 39 40 public: getOwnConnection() const41 const OConnection& getOwnConnection() const { return m_rConnection; } 42 43 explicit ODatabaseMetaData(OConnection& _rCon, MYSQL* pMySql); 44 virtual ~ODatabaseMetaData() override; 45 46 // as I mentioned before this interface is really BIG 47 // XDatabaseMetaData 48 sal_Bool SAL_CALL allProceduresAreCallable() override; 49 sal_Bool SAL_CALL allTablesAreSelectable() override; 50 OUString SAL_CALL getURL() override; 51 OUString SAL_CALL getUserName() override; 52 sal_Bool SAL_CALL isReadOnly() override; 53 sal_Bool SAL_CALL nullsAreSortedHigh() override; 54 sal_Bool SAL_CALL nullsAreSortedLow() override; 55 sal_Bool SAL_CALL nullsAreSortedAtStart() override; 56 sal_Bool SAL_CALL nullsAreSortedAtEnd() override; 57 OUString SAL_CALL getDatabaseProductName() override; 58 OUString SAL_CALL getDatabaseProductVersion() override; 59 OUString SAL_CALL getDriverName() override; 60 OUString SAL_CALL getDriverVersion() override; 61 sal_Int32 SAL_CALL getDriverMajorVersion() override; 62 sal_Int32 SAL_CALL getDriverMinorVersion() override; 63 sal_Bool SAL_CALL usesLocalFiles() override; 64 sal_Bool SAL_CALL usesLocalFilePerTable() override; 65 sal_Bool SAL_CALL supportsMixedCaseIdentifiers() override; 66 sal_Bool SAL_CALL storesUpperCaseIdentifiers() override; 67 sal_Bool SAL_CALL storesLowerCaseIdentifiers() override; 68 sal_Bool SAL_CALL storesMixedCaseIdentifiers() override; 69 sal_Bool SAL_CALL supportsMixedCaseQuotedIdentifiers() override; 70 sal_Bool SAL_CALL storesUpperCaseQuotedIdentifiers() override; 71 sal_Bool SAL_CALL storesLowerCaseQuotedIdentifiers() override; 72 sal_Bool SAL_CALL storesMixedCaseQuotedIdentifiers() override; 73 OUString SAL_CALL getIdentifierQuoteString() override; 74 OUString SAL_CALL getSQLKeywords() override; 75 OUString SAL_CALL getNumericFunctions() override; 76 OUString SAL_CALL getStringFunctions() override; 77 OUString SAL_CALL getSystemFunctions() override; 78 OUString SAL_CALL getTimeDateFunctions() override; 79 OUString SAL_CALL getSearchStringEscape() override; 80 OUString SAL_CALL getExtraNameCharacters() override; 81 sal_Bool SAL_CALL supportsAlterTableWithAddColumn() override; 82 sal_Bool SAL_CALL supportsAlterTableWithDropColumn() override; 83 sal_Bool SAL_CALL supportsColumnAliasing() override; 84 sal_Bool SAL_CALL nullPlusNonNullIsNull() override; 85 sal_Bool SAL_CALL supportsTypeConversion() override; 86 sal_Bool SAL_CALL supportsConvert(sal_Int32 fromType, sal_Int32 toType) override; 87 sal_Bool SAL_CALL supportsTableCorrelationNames() override; 88 sal_Bool SAL_CALL supportsDifferentTableCorrelationNames() override; 89 sal_Bool SAL_CALL supportsExpressionsInOrderBy() override; 90 sal_Bool SAL_CALL supportsOrderByUnrelated() override; 91 sal_Bool SAL_CALL supportsGroupBy() override; 92 sal_Bool SAL_CALL supportsGroupByUnrelated() override; 93 sal_Bool SAL_CALL supportsGroupByBeyondSelect() override; 94 sal_Bool SAL_CALL supportsLikeEscapeClause() override; 95 sal_Bool SAL_CALL supportsMultipleResultSets() override; 96 sal_Bool SAL_CALL supportsMultipleTransactions() override; 97 sal_Bool SAL_CALL supportsNonNullableColumns() override; 98 sal_Bool SAL_CALL supportsMinimumSQLGrammar() override; 99 sal_Bool SAL_CALL supportsCoreSQLGrammar() override; 100 sal_Bool SAL_CALL supportsExtendedSQLGrammar() override; 101 sal_Bool SAL_CALL supportsANSI92EntryLevelSQL() override; 102 sal_Bool SAL_CALL supportsANSI92IntermediateSQL() override; 103 sal_Bool SAL_CALL supportsANSI92FullSQL() override; 104 sal_Bool SAL_CALL supportsIntegrityEnhancementFacility() override; 105 sal_Bool SAL_CALL supportsOuterJoins() override; 106 sal_Bool SAL_CALL supportsFullOuterJoins() override; 107 sal_Bool SAL_CALL supportsLimitedOuterJoins() override; 108 OUString SAL_CALL getSchemaTerm() override; 109 OUString SAL_CALL getProcedureTerm() override; 110 OUString SAL_CALL getCatalogTerm() override; 111 sal_Bool SAL_CALL isCatalogAtStart() override; 112 OUString SAL_CALL getCatalogSeparator() override; 113 sal_Bool SAL_CALL supportsSchemasInDataManipulation() override; 114 sal_Bool SAL_CALL supportsSchemasInProcedureCalls() override; 115 sal_Bool SAL_CALL supportsSchemasInTableDefinitions() override; 116 sal_Bool SAL_CALL supportsSchemasInIndexDefinitions() override; 117 sal_Bool SAL_CALL supportsSchemasInPrivilegeDefinitions() override; 118 sal_Bool SAL_CALL supportsCatalogsInDataManipulation() override; 119 sal_Bool SAL_CALL supportsCatalogsInProcedureCalls() override; 120 sal_Bool SAL_CALL supportsCatalogsInTableDefinitions() override; 121 sal_Bool SAL_CALL supportsCatalogsInIndexDefinitions() override; 122 sal_Bool SAL_CALL supportsCatalogsInPrivilegeDefinitions() override; 123 sal_Bool SAL_CALL supportsPositionedDelete() override; 124 sal_Bool SAL_CALL supportsPositionedUpdate() override; 125 sal_Bool SAL_CALL supportsSelectForUpdate() override; 126 sal_Bool SAL_CALL supportsStoredProcedures() override; 127 sal_Bool SAL_CALL supportsSubqueriesInComparisons() override; 128 sal_Bool SAL_CALL supportsSubqueriesInExists() override; 129 sal_Bool SAL_CALL supportsSubqueriesInIns() override; 130 sal_Bool SAL_CALL supportsSubqueriesInQuantifieds() override; 131 sal_Bool SAL_CALL supportsCorrelatedSubqueries() override; 132 sal_Bool SAL_CALL supportsUnion() override; 133 sal_Bool SAL_CALL supportsUnionAll() override; 134 sal_Bool SAL_CALL supportsOpenCursorsAcrossCommit() override; 135 sal_Bool SAL_CALL supportsOpenCursorsAcrossRollback() override; 136 sal_Bool SAL_CALL supportsOpenStatementsAcrossCommit() override; 137 sal_Bool SAL_CALL supportsOpenStatementsAcrossRollback() override; 138 sal_Int32 SAL_CALL getMaxBinaryLiteralLength() override; 139 sal_Int32 SAL_CALL getMaxCharLiteralLength() override; 140 sal_Int32 SAL_CALL getMaxColumnNameLength() override; 141 sal_Int32 SAL_CALL getMaxColumnsInGroupBy() override; 142 sal_Int32 SAL_CALL getMaxColumnsInIndex() override; 143 sal_Int32 SAL_CALL getMaxColumnsInOrderBy() override; 144 sal_Int32 SAL_CALL getMaxColumnsInSelect() override; 145 sal_Int32 SAL_CALL getMaxColumnsInTable() override; 146 sal_Int32 SAL_CALL getMaxConnections() override; 147 sal_Int32 SAL_CALL getMaxCursorNameLength() override; 148 sal_Int32 SAL_CALL getMaxIndexLength() override; 149 sal_Int32 SAL_CALL getMaxSchemaNameLength() override; 150 sal_Int32 SAL_CALL getMaxProcedureNameLength() override; 151 sal_Int32 SAL_CALL getMaxCatalogNameLength() override; 152 sal_Int32 SAL_CALL getMaxRowSize() override; 153 sal_Bool SAL_CALL doesMaxRowSizeIncludeBlobs() override; 154 sal_Int32 SAL_CALL getMaxStatementLength() override; 155 sal_Int32 SAL_CALL getMaxStatements() override; 156 sal_Int32 SAL_CALL getMaxTableNameLength() override; 157 sal_Int32 SAL_CALL getMaxTablesInSelect() override; 158 sal_Int32 SAL_CALL getMaxUserNameLength() override; 159 sal_Int32 SAL_CALL getDefaultTransactionIsolation() override; 160 sal_Bool SAL_CALL supportsTransactions() override; 161 sal_Bool SAL_CALL supportsTransactionIsolationLevel(sal_Int32 level) override; 162 sal_Bool SAL_CALL supportsDataDefinitionAndDataManipulationTransactions() override; 163 sal_Bool SAL_CALL supportsDataManipulationTransactionsOnly() override; 164 sal_Bool SAL_CALL dataDefinitionCausesTransactionCommit() override; 165 sal_Bool SAL_CALL dataDefinitionIgnoredInTransactions() override; 166 css::uno::Reference<css::sdbc::XResultSet> 167 SAL_CALL getProcedures(const Any& catalog, const OUString& schemaPattern, 168 const OUString& procedureNamePattern) override; 169 css::uno::Reference<css::sdbc::XResultSet> 170 SAL_CALL getProcedureColumns(const Any& catalog, const OUString& schemaPattern, 171 const OUString& procedureNamePattern, 172 const OUString& columnNamePattern) override; 173 css::uno::Reference<css::sdbc::XResultSet> 174 SAL_CALL getTables(const Any& catalog, const OUString& schemaPattern, 175 const OUString& tableNamePattern, 176 const css::uno::Sequence<OUString>& types) override; 177 css::uno::Reference<css::sdbc::XResultSet> SAL_CALL getSchemas() override; 178 css::uno::Reference<css::sdbc::XResultSet> SAL_CALL getCatalogs() override; 179 css::uno::Reference<css::sdbc::XResultSet> SAL_CALL getTableTypes() override; 180 css::uno::Reference<css::sdbc::XResultSet> 181 SAL_CALL getColumns(const Any& catalog, const OUString& schemaPattern, 182 const OUString& tableNamePattern, 183 const OUString& columnNamePattern) override; 184 css::uno::Reference<css::sdbc::XResultSet> 185 SAL_CALL getColumnPrivileges(const Any& catalog, const OUString& schema, 186 const OUString& table, 187 const OUString& columnNamePattern) override; 188 css::uno::Reference<css::sdbc::XResultSet> 189 SAL_CALL getTablePrivileges(const Any& catalog, const OUString& schemaPattern, 190 const OUString& tableNamePattern) override; 191 css::uno::Reference<css::sdbc::XResultSet> 192 SAL_CALL getBestRowIdentifier(const Any& catalog, const OUString& schema, 193 const OUString& table, sal_Int32 scope, 194 sal_Bool nullable) override; 195 css::uno::Reference<css::sdbc::XResultSet> SAL_CALL 196 getVersionColumns(const Any& catalog, const OUString& schema, const OUString& table) override; 197 css::uno::Reference<css::sdbc::XResultSet> SAL_CALL 198 getPrimaryKeys(const Any& catalog, const OUString& schema, const OUString& table) override; 199 css::uno::Reference<css::sdbc::XResultSet> SAL_CALL 200 getImportedKeys(const Any& catalog, const OUString& schema, const OUString& table) override; 201 css::uno::Reference<css::sdbc::XResultSet> SAL_CALL 202 getExportedKeys(const Any& catalog, const OUString& schema, const OUString& table) override; 203 css::uno::Reference<css::sdbc::XResultSet> 204 SAL_CALL getCrossReference(const Any& primaryCatalog, const OUString& primarySchema, 205 const OUString& primaryTable, const Any& foreignCatalog, 206 const OUString& foreignSchema, 207 const OUString& foreignTable) override; 208 css::uno::Reference<css::sdbc::XResultSet> SAL_CALL getTypeInfo() override; 209 css::uno::Reference<css::sdbc::XResultSet> 210 SAL_CALL getIndexInfo(const Any& catalog, const OUString& schema, const OUString& table, 211 sal_Bool unique, sal_Bool approximate) override; 212 sal_Bool SAL_CALL supportsResultSetType(sal_Int32 setType) override; 213 sal_Bool SAL_CALL supportsResultSetConcurrency(sal_Int32 setType, 214 sal_Int32 concurrency) override; 215 sal_Bool SAL_CALL ownUpdatesAreVisible(sal_Int32 setType) override; 216 sal_Bool SAL_CALL ownDeletesAreVisible(sal_Int32 setType) override; 217 sal_Bool SAL_CALL ownInsertsAreVisible(sal_Int32 setType) override; 218 sal_Bool SAL_CALL othersUpdatesAreVisible(sal_Int32 setType) override; 219 sal_Bool SAL_CALL othersDeletesAreVisible(sal_Int32 setType) override; 220 sal_Bool SAL_CALL othersInsertsAreVisible(sal_Int32 setType) override; 221 sal_Bool SAL_CALL updatesAreDetected(sal_Int32 setType) override; 222 sal_Bool SAL_CALL deletesAreDetected(sal_Int32 setType) override; 223 sal_Bool SAL_CALL insertsAreDetected(sal_Int32 setType) override; 224 sal_Bool SAL_CALL supportsBatchUpdates() override; 225 css::uno::Reference<css::sdbc::XResultSet> 226 SAL_CALL getUDTs(const Any& catalog, const OUString& schemaPattern, 227 const OUString& typeNamePattern, 228 const css::uno::Sequence<sal_Int32>& types) override; 229 css::uno::Reference<css::sdbc::XConnection> SAL_CALL getConnection() override; 230 }; 231 } 232 233 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 234