495 lines
14 KiB
C++
495 lines
14 KiB
C++
/*
|
|
* 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_ */
|