123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494 |
- /*
- * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 2.0, as
- * published by the Free Software Foundation.
- *
- * This program is also distributed with certain software (including
- * but not limited to OpenSSL) that is licensed under separate terms,
- * as designated in a particular file or component or in included license
- * documentation. The authors of MySQL hereby grant you an
- * additional permission to link the program and your derivative works
- * with the separately licensed software that they have included with
- * MySQL.
- *
- * Without limiting anything contained in the foregoing, this file,
- * which is part of MySQL Connector/C++, is also subject to the
- * Universal FOSS Exception, version 1.0, a copy of which can be found at
- * http://oss.oracle.com/licenses/universal-foss-exception.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the GNU General Public License, version 2.0, for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
- #ifndef _SQL_METADATA_H_
- #define _SQL_METADATA_H_
- #include <string>
- #include <list>
- #include "datatype.h"
- #include "sqlstring.h"
- namespace sql
- {
- class ResultSet;
- class Connection;
- class DatabaseMetaData
- {
- protected:
- virtual ~DatabaseMetaData() {}
- public:
- enum
- {
- attributeNoNulls = 0,
- attributeNullable,
- attributeNullableUnknown
- };
- enum
- {
- bestRowTemporary = 0,
- bestRowTransaction,
- bestRowSession
- };
- enum
- {
- bestRowUnknown = 0,
- bestRowNotPseudo,
- bestRowPseudo
- };
- enum
- {
- columnNoNulls = 0,
- columnNullable,
- columnNullableUnknown
- };
- enum
- {
- importedKeyCascade = 0,
- importedKeyInitiallyDeferred,
- importedKeyInitiallyImmediate,
- importedKeyNoAction,
- importedKeyNotDeferrable,
- importedKeyRestrict,
- importedKeySetDefault,
- importedKeySetNull
- };
- enum
- {
- procedureColumnIn = 0,
- procedureColumnInOut,
- procedureColumnOut,
- procedureColumnResult,
- procedureColumnReturn,
- procedureColumnUnknown,
- procedureNoNulls,
- procedureNoResult,
- procedureNullable,
- procedureNullableUnknown,
- procedureResultUnknown,
- procedureReturnsResult
- };
- enum
- {
- sqlStateSQL99 = 0,
- sqlStateXOpen
- };
- enum
- {
- tableIndexClustered = 0,
- tableIndexHashed,
- tableIndexOther,
- tableIndexStatistic
- };
- enum
- {
- versionColumnUnknown = 0,
- versionColumnNotPseudo = 1,
- versionColumnPseudo = 2
- };
- enum
- {
- typeNoNulls = 0,
- typeNullable = 1,
- typeNullableUnknown = 2
- };
- enum
- {
- typePredNone = 0,
- typePredChar = 1,
- typePredBasic= 2,
- typeSearchable = 3
- };
- virtual bool allProceduresAreCallable() = 0;
- virtual bool allTablesAreSelectable() = 0;
- virtual bool dataDefinitionCausesTransactionCommit() = 0;
- virtual bool dataDefinitionIgnoredInTransactions() = 0;
- virtual bool deletesAreDetected(int type) = 0;
- virtual bool doesMaxRowSizeIncludeBlobs() = 0;
- virtual ResultSet * getAttributes(const sql::SQLString& catalog, const sql::SQLString& schemaPattern, const sql::SQLString& typeNamePattern, const sql::SQLString& attributeNamePattern) = 0;
- virtual ResultSet * getBestRowIdentifier(const sql::SQLString& catalog, const sql::SQLString& schema, const sql::SQLString& table, int scope, bool nullable) = 0;
- virtual ResultSet * getCatalogs() = 0;
- virtual const sql::SQLString& getCatalogSeparator() = 0;
- virtual const sql::SQLString& getCatalogTerm() = 0;
- virtual ResultSet * getColumnPrivileges(const sql::SQLString& catalog, const sql::SQLString& schema, const sql::SQLString& table, const sql::SQLString& columnNamePattern) = 0;
- virtual ResultSet * getColumns(const sql::SQLString& catalog, const sql::SQLString& schemaPattern, const sql::SQLString& tableNamePattern, const sql::SQLString& columnNamePattern) = 0;
- virtual Connection * getConnection() = 0;
- virtual ResultSet * getCrossReference(const sql::SQLString& primaryCatalog, const sql::SQLString& primarySchema, const sql::SQLString& primaryTable, const sql::SQLString& foreignCatalog, const sql::SQLString& foreignSchema, const sql::SQLString& foreignTable) = 0;
- virtual unsigned int getDatabaseMajorVersion() = 0;
- virtual unsigned int getDatabaseMinorVersion() = 0;
- virtual unsigned int getDatabasePatchVersion() = 0;
- virtual const sql::SQLString& getDatabaseProductName() = 0;
- virtual SQLString getDatabaseProductVersion() = 0;
- virtual int getDefaultTransactionIsolation() = 0;
- virtual unsigned int getDriverMajorVersion() = 0;
- virtual unsigned int getDriverMinorVersion() = 0;
- virtual unsigned int getDriverPatchVersion() = 0;
- virtual const sql::SQLString& getDriverName() = 0;
- virtual const sql::SQLString& getDriverVersion() = 0;
- virtual ResultSet * getExportedKeys(const sql::SQLString& catalog, const sql::SQLString& schema, const sql::SQLString& table) = 0;
- virtual const sql::SQLString& getExtraNameCharacters() = 0;
- virtual const sql::SQLString& getIdentifierQuoteString() = 0;
- virtual ResultSet * getImportedKeys(const sql::SQLString& catalog, const sql::SQLString& schema, const sql::SQLString& table) = 0;
- virtual ResultSet * getIndexInfo(const sql::SQLString& catalog, const sql::SQLString& schema, const sql::SQLString& table, bool unique, bool approximate) = 0;
- virtual unsigned int getCDBCMajorVersion() = 0;
- virtual unsigned int getCDBCMinorVersion() = 0;
- virtual unsigned int getMaxBinaryLiteralLength() = 0;
- virtual unsigned int getMaxCatalogNameLength() = 0;
- virtual unsigned int getMaxCharLiteralLength() = 0;
- virtual unsigned int getMaxColumnNameLength() = 0;
- virtual unsigned int getMaxColumnsInGroupBy() = 0;
- virtual unsigned int getMaxColumnsInIndex() = 0;
- virtual unsigned int getMaxColumnsInOrderBy() = 0;
- virtual unsigned int getMaxColumnsInSelect() = 0;
- virtual unsigned int getMaxColumnsInTable() = 0;
- virtual unsigned int getMaxConnections() = 0;
- virtual unsigned int getMaxCursorNameLength() = 0;
- virtual unsigned int getMaxIndexLength() = 0;
- virtual unsigned int getMaxProcedureNameLength() = 0;
- virtual unsigned int getMaxRowSize() = 0;
- virtual unsigned int getMaxSchemaNameLength() = 0;
- virtual unsigned int getMaxStatementLength() = 0;
- virtual unsigned int getMaxStatements() = 0;
- virtual unsigned int getMaxTableNameLength() = 0;
- virtual unsigned int getMaxTablesInSelect() = 0;
- virtual unsigned int getMaxUserNameLength() = 0;
- virtual const sql::SQLString& getNumericFunctions() = 0;
- virtual ResultSet * getPrimaryKeys(const sql::SQLString& catalog, const sql::SQLString& schema, const sql::SQLString& table) = 0;
- virtual ResultSet * getProcedureColumns(const sql::SQLString& catalog, const sql::SQLString& schemaPattern, const sql::SQLString& procedureNamePattern, const sql::SQLString& columnNamePattern) = 0;
- virtual ResultSet * getProcedures(const sql::SQLString& catalog, const sql::SQLString& schemaPattern, const sql::SQLString& procedureNamePattern) = 0;
- virtual const sql::SQLString& getProcedureTerm() = 0;
- virtual int getResultSetHoldability() = 0;
- virtual ResultSet * getSchemas() = 0;
- virtual const sql::SQLString& getSchemaTerm() = 0;
- virtual ResultSet * getSchemaCollation(const sql::SQLString& catalog, const sql::SQLString& schemaPattern) = 0;
- virtual ResultSet * getSchemaCharset(const sql::SQLString& catalog, const sql::SQLString& schemaPattern) = 0;
- virtual const sql::SQLString& getSearchStringEscape() = 0;
- virtual const sql::SQLString& getSQLKeywords() = 0;
- virtual int getSQLStateType() = 0;
- virtual const sql::SQLString& getStringFunctions() = 0;
- virtual ResultSet * getSuperTables(const sql::SQLString& catalog, const sql::SQLString& schemaPattern, const sql::SQLString& tableNamePattern) = 0;
- virtual ResultSet * getSuperTypes(const sql::SQLString& catalog, const sql::SQLString& schemaPattern, const sql::SQLString& typeNamePattern) = 0;
- virtual const sql::SQLString& getSystemFunctions() = 0;
- virtual ResultSet * getTablePrivileges(const sql::SQLString& catalog, const sql::SQLString& schemaPattern, const sql::SQLString& tableNamePattern) = 0;
- virtual ResultSet * getTables(const sql::SQLString& catalog, const sql::SQLString& schemaPattern, const sql::SQLString& tableNamePattern, std::list<sql::SQLString> &types) = 0;
- virtual ResultSet * getTableTypes() = 0;
- virtual ResultSet * getTableCollation(const sql::SQLString& catalog, const sql::SQLString& schemaPattern, const sql::SQLString& tableNamePattern) = 0;
- virtual ResultSet * getTableCharset(const sql::SQLString& catalog, const sql::SQLString& schemaPattern, const sql::SQLString& tableNamePattern) = 0;
- virtual const sql::SQLString& getTimeDateFunctions() = 0;
- virtual ResultSet * getTypeInfo() = 0;
- virtual ResultSet * getUDTs(const sql::SQLString& catalog, const sql::SQLString& schemaPattern, const sql::SQLString& typeNamePattern, std::list<int> &types) = 0;
- virtual SQLString getURL() = 0;
- virtual SQLString getUserName() = 0;
- virtual ResultSet * getVersionColumns(const sql::SQLString& catalog, const sql::SQLString& schema, const sql::SQLString& table) = 0;
- virtual bool insertsAreDetected(int type) = 0;
- virtual bool isCatalogAtStart() = 0;
- virtual bool isReadOnly() = 0;
- virtual bool locatorsUpdateCopy() = 0;
- virtual bool nullPlusNonNullIsNull() = 0;
- virtual bool nullsAreSortedAtEnd() = 0;
- virtual bool nullsAreSortedAtStart() = 0;
- virtual bool nullsAreSortedHigh() = 0;
- virtual bool nullsAreSortedLow() = 0;
- virtual bool othersDeletesAreVisible(int type) = 0;
- virtual bool othersInsertsAreVisible(int type) = 0;
- virtual bool othersUpdatesAreVisible(int type) = 0;
- virtual bool ownDeletesAreVisible(int type) = 0;
- virtual bool ownInsertsAreVisible(int type) = 0;
- virtual bool ownUpdatesAreVisible(int type) = 0;
- virtual bool storesLowerCaseIdentifiers() = 0;
- virtual bool storesLowerCaseQuotedIdentifiers() = 0;
- virtual bool storesMixedCaseIdentifiers() = 0;
- virtual bool storesMixedCaseQuotedIdentifiers() = 0;
- virtual bool storesUpperCaseIdentifiers() = 0;
- virtual bool storesUpperCaseQuotedIdentifiers() = 0;
- virtual bool supportsAlterTableWithAddColumn() = 0;
- virtual bool supportsAlterTableWithDropColumn() = 0;
- virtual bool supportsANSI92EntryLevelSQL() = 0;
- virtual bool supportsANSI92FullSQL() = 0;
- virtual bool supportsANSI92IntermediateSQL() = 0;
- virtual bool supportsBatchUpdates() = 0;
- virtual bool supportsCatalogsInDataManipulation() = 0;
- virtual bool supportsCatalogsInIndexDefinitions() = 0;
- virtual bool supportsCatalogsInPrivilegeDefinitions() = 0;
- virtual bool supportsCatalogsInProcedureCalls() = 0;
- virtual bool supportsCatalogsInTableDefinitions() = 0;
- virtual bool supportsColumnAliasing() = 0;
- virtual bool supportsConvert() = 0;
- virtual bool supportsConvert(int fromType, int toType) = 0;
- virtual bool supportsCoreSQLGrammar() = 0;
- virtual bool supportsCorrelatedSubqueries() = 0;
- virtual bool supportsDataDefinitionAndDataManipulationTransactions() = 0;
- virtual bool supportsDataManipulationTransactionsOnly() = 0;
- virtual bool supportsDifferentTableCorrelationNames() = 0;
- virtual bool supportsExpressionsInOrderBy() = 0;
- virtual bool supportsExtendedSQLGrammar() = 0;
- virtual bool supportsFullOuterJoins() = 0;
- virtual bool supportsGetGeneratedKeys() = 0;
- virtual bool supportsGroupBy() = 0;
- virtual bool supportsGroupByBeyondSelect() = 0;
- virtual bool supportsGroupByUnrelated() = 0;
- virtual bool supportsIntegrityEnhancementFacility() = 0;
- virtual bool supportsLikeEscapeClause() = 0;
- virtual bool supportsLimitedOuterJoins() = 0;
- virtual bool supportsMinimumSQLGrammar() = 0;
- virtual bool supportsMixedCaseIdentifiers() = 0;
- virtual bool supportsMixedCaseQuotedIdentifiers() = 0;
- virtual bool supportsMultipleOpenResults() = 0;
- virtual bool supportsMultipleResultSets() = 0;
- virtual bool supportsMultipleTransactions() = 0;
- virtual bool supportsNamedParameters() = 0;
- virtual bool supportsNonNullableColumns() = 0;
- virtual bool supportsOpenCursorsAcrossCommit() = 0;
- virtual bool supportsOpenCursorsAcrossRollback() = 0;
- virtual bool supportsOpenStatementsAcrossCommit() = 0;
- virtual bool supportsOpenStatementsAcrossRollback() = 0;
- virtual bool supportsOrderByUnrelated() = 0;
- virtual bool supportsOuterJoins() = 0;
- virtual bool supportsPositionedDelete() = 0;
- virtual bool supportsPositionedUpdate() = 0;
- virtual bool supportsResultSetConcurrency(int type, int concurrency) = 0;
- virtual bool supportsResultSetHoldability(int holdability) = 0;
- virtual bool supportsResultSetType(int type) = 0;
- virtual bool supportsSavepoints() = 0;
- virtual bool supportsSchemasInDataManipulation() = 0;
- virtual bool supportsSchemasInIndexDefinitions() = 0;
- virtual bool supportsSchemasInPrivilegeDefinitions() = 0;
- virtual bool supportsSchemasInProcedureCalls() = 0;
- virtual bool supportsSchemasInTableDefinitions() = 0;
- virtual bool supportsSelectForUpdate() = 0;
- virtual bool supportsStatementPooling() = 0;
- virtual bool supportsStoredProcedures() = 0;
- virtual bool supportsSubqueriesInComparisons() = 0;
- virtual bool supportsSubqueriesInExists() = 0;
- virtual bool supportsSubqueriesInIns() = 0;
- virtual bool supportsSubqueriesInQuantifieds() = 0;
- virtual bool supportsTableCorrelationNames() = 0;
- virtual bool supportsTransactionIsolationLevel(int level) = 0;
- virtual bool supportsTransactions() = 0;
- virtual bool supportsTypeConversion() = 0; /* SDBC */
- virtual bool supportsUnion() = 0;
- virtual bool supportsUnionAll() = 0;
- virtual bool updatesAreDetected(int type) = 0;
- virtual bool usesLocalFilePerTable() = 0;
- virtual bool usesLocalFiles() = 0;
- virtual ResultSet *getSchemata(const sql::SQLString& catalogName = "") = 0;
- virtual ResultSet *getSchemaObjects(const sql::SQLString& catalogName = "",
- const sql::SQLString& schemaName = "",
- const sql::SQLString& objectType = "",
- bool includingDdl = true,
- const sql::SQLString& objectName = "",
- const sql::SQLString& contextTableName = "") = 0;
- virtual ResultSet *getSchemaObjectTypes() = 0;
- };
- } /* namespace sql */
- #endif /* _SQL_METADATA_H_ */
|