Module org.firebirdsql.jaybird
Package org.firebirdsql.jdbc

# Class FBDatabaseMetaData

java.lang.Object
org.firebirdsql.jdbc.FBDatabaseMetaData

All Implemented Interfaces:
  `DatabaseMetaData`, `Wrapper`, `FirebirdDatabaseMetaData`

@InternalApi public class FBDatabaseMetaData extends Object implements FirebirdDatabaseMetaData
Comprehensive information about the database as a whole.

This class is internal API of Jaybird. Future versions may radically change, move, or make inaccessible this type. For the public API, refer to the `DatabaseMetaData` and `FirebirdDatabaseMetaData` interfaces.

Author:
  David Jencks, Mark Rotteveel

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`GLOBAL_TEMPORARY`
`static final String`
`SYSTEM_TABLE`
`static final String`
`TABLE`
`static final String`
`VIEW`

### Fields inherited from interface java.sql.DatabaseMetaData

`attributeNoNulls, attributeNullable, attributeNullableUnknown, bestRowNotPseudo, bestRowPseudo, bestRowSession, bestRowTemporary, bestRowTransaction, bestRowUnknown, columnNoNulls, columnNullable, columnNullableUnknown, functionColumnIn, functionColumnInOut, functionColumnOut, functionColumnResult, functionColumnUnknown, functionNoNulls, functionNoTable, functionNullable, functionNullableUnknown, functionResultUnknown, functionReturn, functionReturnsTable, importedKeyCascade, importedKeyInitiallyDeferred, importedKeyInitiallyImmediate, importedKeyNoAction, importedKeyNotDeferrable, importedKeyRestrict, importedKeySetDefault, importedKeySetNull, procedureColumnIn, procedureColumnInOut, procedureColumnOut, procedureColumnResult, procedureColumnReturn, procedureColumnUnknown, procedureNoNulls, procedureNoResult, procedureNullable, procedureNullableUnknown, procedureResultUnknown, procedureReturnsResult, sqlStateSQL, sqlStateSQL99, sqlStateXOpen, tableIndexClustered, tableIndexHashed, tableIndexOther, tableIndexStatistic, typeNoNulls, typeNullable, typeNullableUnknown, typePredBasic, typePredChar, typePredNone, typeSearchable, versionColumnNotPseudo, versionColumnPseudo, versionColumnUnknown`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`FBDatabaseMetaData(FBConnection c)`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`allProceduresAreCallable()`
`boolean`
`allTablesAreSelectable()`
`boolean`
`autoCommitFailureClosesAllResultSets()`
`void`
`close()`
Closes any cached metadata statements held by this database metadata implementation.
`boolean`
`dataDefinitionCausesTransactionCommit()`
`boolean`
`dataDefinitionIgnoredInTransactions()`
`boolean`
`deletesAreDetected(int type)`
`boolean`
`doesMaxRowSizeIncludeBlobs()`
`protected ResultSet`
`doQuery(String sql, List<String> params)`
Execute an SQL query with a given set of parameters.
`protected ResultSet`
`doQuery(String sql, List<String> params, boolean standalone)`
Execute an SQL query with a given set of parameters.
`static String`
`escapeWildcards(String objectName)`
Escapes the like wildcards and escape (`\_%` in the provided search string with a `\`.
`boolean`
`generatedKeyAlwaysReturned()`
`ResultSet`
`getAttributes(String catalog, String schemaPattern, String typeNamePattern, String attributeNamePattern)`
`ResultSet`
`getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable)`
`protected static byte[]`
`getBytes(String value)`
`ResultSet`
`getCatalogs()`
`String`
`getCatalogSeparator()`
`String`
`getCatalogTerm()`
`ResultSet`
`getClientInfoProperties()`
`ResultSet`
`getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern)`
`ResultSet`
`getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)`
`Connection`
`getConnection()`
`int`
`getConnectionDialect()`
Get the dialect of the connection.
`ResultSet`
`getCrossReference(String primaryCatalog, String primarySchema, String primaryTable, String foreignCatalog, String foreignSchema, String foreignTable)`
`int`
`getDatabaseDialect()`
Get the dialect of the database.
`int`
`getDatabaseMajorVersion()`
`int`
`getDatabaseMinorVersion()`
`String`
`getDatabaseProductName()`
`String`
`getDatabaseProductVersion()`
`protected DbMetadataMediator`
`getDbMetadataMediator()`
`int`
`getDefaultTransactionIsolation()`
`int`
`getDriverMajorVersion()`
`int`
`getDriverMinorVersion()`
`String`
`getDriverName()`
`String`
`getDriverVersion()`
`ResultSet`
`getExportedKeys(String catalog, String schema, String table)`
`String`
`getExtraNameCharacters()`
`ResultSet`
`getFunctionColumns(String catalog, String schemaPattern, String functionNamePattern, String columnNamePattern)`
`ResultSet`
`getFunctions(String catalog, String schemaPattern, String functionNamePattern)`
`String`
`getIdentifierQuoteString()`
`ResultSet`
`getImportedKeys(String catalog, String schema, String table)`
`ResultSet`
`getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate)`
`int`
`getJDBCMajorVersion()`
`int`
`getJDBCMinorVersion()`
`int`
`getMaxBinaryLiteralLength()`
`int`
`getMaxCatalogNameLength()`
`int`
`getMaxCharLiteralLength()`
`int`
`getMaxColumnNameLength()`
`int`
`getMaxColumnsInGroupBy()`
`int`
`getMaxColumnsInIndex()`
`int`
`getMaxColumnsInOrderBy()`
`int`
`getMaxColumnsInSelect()`
`int`
`getMaxColumnsInTable()`
`int`
`getMaxConnections()`
`int`
`getMaxCursorNameLength()`
`int`
`getMaxIndexLength()`
`int`
`getMaxObjectNameLength()`
The default maximum identifier length.
`int`
`getMaxProcedureNameLength()`
`int`
`getMaxRowSize()`
`int`
`getMaxSchemaNameLength()`
`int`
`getMaxStatementLength()`
`int`
`getMaxStatements()`
`int`
`getMaxTableNameLength()`
`int`
`getMaxTablesInSelect()`
`int`
`getMaxUserNameLength()`
`String`
`getNumericFunctions()`
`int`
`getOdsMajorVersion()`
Get the major version of the ODS (On-Disk Structure) of the database.
`int`
`getOdsMinorVersion()`
Get the minor version of the ODS (On-Disk Structure) of the database.
`ResultSet`
`getPrimaryKeys(String catalog, String schema, String table)`
`ResultSet`
`getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern)`
`ResultSet`
`getProcedures(String catalog, String schemaPattern, String procedureNamePattern)`
`String`
`getProcedureSourceCode(String procedureName)`
Get the source of a stored procedure.
`String`
`getProcedureTerm()`
`ResultSet`
`getPseudoColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)`
`int`
`getResultSetHoldability()`
`RowIdLifetime`
`getRowIdLifetime()`
`ResultSet`
`getSchemas()`
`ResultSet`
`getSchemas(String catalog, String schemaPattern)`
`String`
`getSchemaTerm()`
`String`
`getSearchStringEscape()`
`String`
`getSQLKeywords()`
`int`
`getSQLStateType()`
`String`
`getStringFunctions()`
`ResultSet`
`getSuperTables(String catalog, String schemaPattern, String tableNamePattern)`
`ResultSet`
`getSuperTypes(String catalog, String schemaPattern, String tableNamePattern)`
`String`
`getSystemFunctions()`
`ResultSet`
`getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern)`
`ResultSet`
`getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)`
`String[]`
`getTableTypeNames()`
Supported table type names.
`ResultSet`
`getTableTypes()`
`String`
`getTimeDateFunctions()`
`String`
`getTriggerSourceCode(String triggerName)`
Get the source of a trigger.
`ResultSet`
`getTypeInfo()`
`ResultSet`
`getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types)`
`String`
`getURL()`
`String`
`getUserName()`
`ResultSet`
`getVersionColumns(String catalog, String schema, String table)`
`String`
`getViewSourceCode(String viewName)`
Get the source of a view.
`boolean`
`insertsAreDetected(int type)`
`boolean`
`isCatalogAtStart()`
`boolean`
`isReadOnly()`
`boolean`
`isWrapperFor(Class<?> iface)`
`boolean`
`locatorsUpdateCopy()`
`boolean`
`nullPlusNonNullIsNull()`
`boolean`
`nullsAreSortedAtEnd()`
`boolean`
`nullsAreSortedAtStart()`
`boolean`
`nullsAreSortedHigh()`
`boolean`
`nullsAreSortedLow()`
`boolean`
`othersDeletesAreVisible(int type)`
`boolean`
`othersInsertsAreVisible(int type)`
`boolean`
`othersUpdatesAreVisible(int type)`
`boolean`
`ownDeletesAreVisible(int type)`
`boolean`
`ownInsertsAreVisible(int type)`
`boolean`
`ownUpdatesAreVisible(int type)`
`boolean`
`storesLowerCaseIdentifiers()`
`boolean`
`storesLowerCaseQuotedIdentifiers()`
`boolean`
`storesMixedCaseIdentifiers()`
`boolean`
`storesMixedCaseQuotedIdentifiers()`
`boolean`
`storesUpperCaseIdentifiers()`
`boolean`
`storesUpperCaseQuotedIdentifiers()`
`boolean`
`supportsAlterTableWithAddColumn()`
`boolean`
`supportsAlterTableWithDropColumn()`
`boolean`
`supportsANSI92EntryLevelSQL()`
`boolean`
`supportsANSI92FullSQL()`
`boolean`
`supportsANSI92IntermediateSQL()`
`boolean`
`supportsBatchUpdates()`
`boolean`
`supportsCatalogsInDataManipulation()`
`boolean`
`supportsCatalogsInIndexDefinitions()`
`boolean`
`supportsCatalogsInPrivilegeDefinitions()`
`boolean`
`supportsCatalogsInProcedureCalls()`
`boolean`
`supportsCatalogsInTableDefinitions()`
`boolean`
`supportsColumnAliasing()`
`boolean`
`supportsConvert()`
`boolean`
`supportsConvert(int fromType, int toType)`
`boolean`
`supportsCoreSQLGrammar()`
`boolean`
`supportsCorrelatedSubqueries()`
`boolean`
`supportsDataDefinitionAndDataManipulationTransactions()`
`boolean`
`supportsDataManipulationTransactionsOnly()`
`boolean`
`supportsDifferentTableCorrelationNames()`
`boolean`
`supportsExpressionsInOrderBy()`
`boolean`
`supportsExtendedSQLGrammar()`
`boolean`
`supportsFullOuterJoins()`
`boolean`
`supportsGetGeneratedKeys()`
`boolean`
`supportsGroupBy()`
`boolean`
`supportsGroupByBeyondSelect()`
`boolean`
`supportsGroupByUnrelated()`
`boolean`
`supportsIntegrityEnhancementFacility()`
`boolean`
`supportsLikeEscapeClause()`
`boolean`
`supportsLimitedOuterJoins()`
`boolean`
`supportsMinimumSQLGrammar()`
`boolean`
`supportsMixedCaseIdentifiers()`
`boolean`
`supportsMixedCaseQuotedIdentifiers()`
`boolean`
`supportsMultipleOpenResults()`
`boolean`
`supportsMultipleResultSets()`
`boolean`
`supportsMultipleTransactions()`
`boolean`
`supportsNamedParameters()`
`boolean`
`supportsNonNullableColumns()`
`boolean`
`supportsOpenCursorsAcrossCommit()`
`boolean`
`supportsOpenCursorsAcrossRollback()`
`boolean`
`supportsOpenStatementsAcrossCommit()`
`boolean`
`supportsOpenStatementsAcrossRollback()`
`boolean`
`supportsOrderByUnrelated()`
`boolean`
`supportsOuterJoins()`
`boolean`
`supportsPositionedDelete()`
`boolean`
`supportsPositionedUpdate()`
`boolean`
`supportsResultSetConcurrency(int type, int concurrency)`
`boolean`
`supportsResultSetHoldability(int holdability)`
`boolean`
`supportsResultSetType(int type)`
`boolean`
`supportsSavepoints()`
`boolean`
`supportsSchemasInDataManipulation()`
`boolean`
`supportsSchemasInIndexDefinitions()`
`boolean`
`supportsSchemasInPrivilegeDefinitions()`
`boolean`
`supportsSchemasInProcedureCalls()`
`boolean`
`supportsSchemasInTableDefinitions()`
`boolean`
`supportsSelectForUpdate()`
`boolean`
`supportsStatementPooling()`
`boolean`
`supportsStoredFunctionsUsingCallSyntax()`
`boolean`
`supportsStoredProcedures()`
`boolean`
`supportsSubqueriesInComparisons()`
`boolean`
`supportsSubqueriesInExists()`
`boolean`
`supportsSubqueriesInIns()`
`boolean`
`supportsSubqueriesInQuantifieds()`
`boolean`
`supportsTableCorrelationNames()`
`boolean`
`supportsTransactionIsolationLevel(int level)`
`boolean`
`supportsTransactions()`
`boolean`
`supportsUnion()`
`boolean`
`supportsUnionAll()`
`<T> T`
`unwrap(Class<T> iface)`
`boolean`
`updatesAreDetected(int type)`
`boolean`
`usesLocalFilePerTable()`
`boolean`
`usesLocalFiles()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface java.sql.DatabaseMetaData

`getMaxLogicalLobSize, supportsRefCursors, supportsSharding`

## Field Details

### TABLE

public static final String TABLE

See Also:
  - Constant Field Values

### SYSTEM_TABLE

public static final String SYSTEM_TABLE

See Also:
  - Constant Field Values

### VIEW

public static final String VIEW

See Also:
  - Constant Field Values

### GLOBAL_TEMPORARY

public static final String GLOBAL_TEMPORARY

See Also:
  - Constant Field Values

## Constructor Details

### FBDatabaseMetaData

protected FBDatabaseMetaData(FBConnection c) throws SQLException

Throws:
  `SQLException`

## Method Details

### close

public void close()
Description copied from interface: `FirebirdDatabaseMetaData`
Closes any cached metadata statements held by this database metadata implementation.

The database metadata object itself remains usable. Exceptions during statement close are logged and suppressed.

Specified by:
  `close` in interface `FirebirdDatabaseMetaData`

### allProceduresAreCallable

public boolean allProceduresAreCallable() throws SQLException

Specified by:
  `allProceduresAreCallable` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### allTablesAreSelectable

public boolean allTablesAreSelectable() throws SQLException

Specified by:
  `allTablesAreSelectable` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getURL

public String getURL() throws SQLException

Specified by:
  `getURL` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getUserName

public String getUserName() throws SQLException

Specified by:
  `getUserName` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### isReadOnly

public boolean isReadOnly() throws SQLException

Specified by:
  `isReadOnly` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### nullsAreSortedHigh

public boolean nullsAreSortedHigh() throws SQLException

Specified by:
  `nullsAreSortedHigh` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### nullsAreSortedLow

public boolean nullsAreSortedLow() throws SQLException

Specified by:
  `nullsAreSortedLow` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### nullsAreSortedAtStart

public boolean nullsAreSortedAtStart() throws SQLException

Specified by:
  `nullsAreSortedAtStart` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### nullsAreSortedAtEnd

public boolean nullsAreSortedAtEnd() throws SQLException

Specified by:
  `nullsAreSortedAtEnd` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getDatabaseProductName

public String getDatabaseProductName() throws SQLException

Specified by:
  `getDatabaseProductName` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getDatabaseProductVersion

public String getDatabaseProductVersion() throws SQLException

Specified by:
  `getDatabaseProductVersion` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getDriverName

public String getDriverName() throws SQLException

Specified by:
  `getDriverName` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getDriverVersion

public String getDriverVersion() throws SQLException

Specified by:
  `getDriverVersion` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getDriverMajorVersion

public int getDriverMajorVersion()

Specified by:
  `getDriverMajorVersion` in interface `DatabaseMetaData`

### getDriverMinorVersion

public int getDriverMinorVersion()

Specified by:
  `getDriverMinorVersion` in interface `DatabaseMetaData`

### usesLocalFiles

public boolean usesLocalFiles() throws SQLException

Specified by:
  `usesLocalFiles` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### usesLocalFilePerTable

public boolean usesLocalFilePerTable() throws SQLException

Specified by:
  `usesLocalFilePerTable` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsMixedCaseIdentifiers

public boolean supportsMixedCaseIdentifiers() throws SQLException

Specified by:
  `supportsMixedCaseIdentifiers` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsStatementPooling

public boolean supportsStatementPooling() throws SQLException

Specified by:
  `supportsStatementPooling` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### locatorsUpdateCopy

public boolean locatorsUpdateCopy() throws SQLException

Specified by:
  `locatorsUpdateCopy` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### storesUpperCaseIdentifiers

public boolean storesUpperCaseIdentifiers() throws SQLException

Specified by:
  `storesUpperCaseIdentifiers` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### storesLowerCaseIdentifiers

public boolean storesLowerCaseIdentifiers() throws SQLException

Specified by:
  `storesLowerCaseIdentifiers` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### storesMixedCaseIdentifiers

public boolean storesMixedCaseIdentifiers() throws SQLException

Specified by:
  `storesMixedCaseIdentifiers` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsMixedCaseQuotedIdentifiers

public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException

Specified by:
  `supportsMixedCaseQuotedIdentifiers` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### storesUpperCaseQuotedIdentifiers

public boolean storesUpperCaseQuotedIdentifiers() throws SQLException

Specified by:
  `storesUpperCaseQuotedIdentifiers` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### storesLowerCaseQuotedIdentifiers

public boolean storesLowerCaseQuotedIdentifiers() throws SQLException

Specified by:
  `storesLowerCaseQuotedIdentifiers` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### storesMixedCaseQuotedIdentifiers

public boolean storesMixedCaseQuotedIdentifiers() throws SQLException

Specified by:
  `storesMixedCaseQuotedIdentifiers` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getIdentifierQuoteString

public String getIdentifierQuoteString() throws SQLException

Specified by:
  `getIdentifierQuoteString` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getSQLKeywords

public String getSQLKeywords() throws SQLException

Specified by:
  `getSQLKeywords` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getNumericFunctions

public String getNumericFunctions() throws SQLException

NOTE: Some of the functions listed may only work on Firebird 2.1 or higher, or when equivalent UDFs are installed.

Specified by:
  `getNumericFunctions` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getStringFunctions

public String getStringFunctions() throws SQLException

NOTE: Some of the functions listed may only work on Firebird 2.1 or higher, or when equivalent UDFs are installed.

Specified by:
  `getStringFunctions` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getSystemFunctions

public String getSystemFunctions() throws SQLException

NOTE: Some of the functions listed may only work on Firebird 2.1 or higher, or when equivalent UDFs are installed.

Specified by:
  `getSystemFunctions` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getTimeDateFunctions

public String getTimeDateFunctions() throws SQLException

NOTE: Some of the functions listed may only work on Firebird 2.1 or higher, or when equivalent UDFs are installed.

Specified by:
  `getTimeDateFunctions` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getSearchStringEscape

public String getSearchStringEscape() throws SQLException

Specified by:
  `getSearchStringEscape` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getExtraNameCharacters

public String getExtraNameCharacters() throws SQLException

Specified by:
  `getExtraNameCharacters` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsAlterTableWithAddColumn

public boolean supportsAlterTableWithAddColumn() throws SQLException

Specified by:
  `supportsAlterTableWithAddColumn` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsAlterTableWithDropColumn

public boolean supportsAlterTableWithDropColumn() throws SQLException

Specified by:
  `supportsAlterTableWithDropColumn` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsColumnAliasing

public boolean supportsColumnAliasing() throws SQLException

Specified by:
  `supportsColumnAliasing` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### nullPlusNonNullIsNull

public boolean nullPlusNonNullIsNull() throws SQLException

Specified by:
  `nullPlusNonNullIsNull` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsConvert

public boolean supportsConvert() throws SQLException

Specified by:
  `supportsConvert` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsConvert

public boolean supportsConvert(int fromType, int toType) throws SQLException

See also `org.firebirdsql.jdbc.escape.ConvertFunction` for caveats.

Specified by:
  `supportsConvert` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsTableCorrelationNames

public boolean supportsTableCorrelationNames() throws SQLException

Specified by:
  `supportsTableCorrelationNames` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsDifferentTableCorrelationNames

public boolean supportsDifferentTableCorrelationNames() throws SQLException

Specified by:
  `supportsDifferentTableCorrelationNames` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsExpressionsInOrderBy

public boolean supportsExpressionsInOrderBy() throws SQLException

Specified by:
  `supportsExpressionsInOrderBy` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsOrderByUnrelated

public boolean supportsOrderByUnrelated() throws SQLException

Specified by:
  `supportsOrderByUnrelated` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsGroupBy

public boolean supportsGroupBy() throws SQLException

Specified by:
  `supportsGroupBy` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsGroupByUnrelated

public boolean supportsGroupByUnrelated() throws SQLException

Specified by:
  `supportsGroupByUnrelated` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsGroupByBeyondSelect

public boolean supportsGroupByBeyondSelect() throws SQLException

Specified by:
  `supportsGroupByBeyondSelect` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsLikeEscapeClause

public boolean supportsLikeEscapeClause() throws SQLException

Specified by:
  `supportsLikeEscapeClause` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsMultipleResultSets

public boolean supportsMultipleResultSets() throws SQLException

Specified by:
  `supportsMultipleResultSets` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsMultipleTransactions

public boolean supportsMultipleTransactions() throws SQLException

Specified by:
  `supportsMultipleTransactions` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsNonNullableColumns

public boolean supportsNonNullableColumns() throws SQLException

Specified by:
  `supportsNonNullableColumns` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsMinimumSQLGrammar

public boolean supportsMinimumSQLGrammar() throws SQLException

Specified by:
  `supportsMinimumSQLGrammar` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsCoreSQLGrammar

public boolean supportsCoreSQLGrammar() throws SQLException

Specified by:
  `supportsCoreSQLGrammar` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsExtendedSQLGrammar

public boolean supportsExtendedSQLGrammar() throws SQLException

Specified by:
  `supportsExtendedSQLGrammar` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsANSI92EntryLevelSQL

public boolean supportsANSI92EntryLevelSQL() throws SQLException

Specified by:
  `supportsANSI92EntryLevelSQL` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsANSI92IntermediateSQL

public boolean supportsANSI92IntermediateSQL() throws SQLException

Specified by:
  `supportsANSI92IntermediateSQL` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsANSI92FullSQL

public boolean supportsANSI92FullSQL() throws SQLException

Specified by:
  `supportsANSI92FullSQL` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsIntegrityEnhancementFacility

public boolean supportsIntegrityEnhancementFacility() throws SQLException

Specified by:
  `supportsIntegrityEnhancementFacility` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsOuterJoins

public boolean supportsOuterJoins() throws SQLException

Specified by:
  `supportsOuterJoins` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsFullOuterJoins

public boolean supportsFullOuterJoins() throws SQLException

Specified by:
  `supportsFullOuterJoins` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsLimitedOuterJoins

public boolean supportsLimitedOuterJoins() throws SQLException

Specified by:
  `supportsLimitedOuterJoins` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getSchemaTerm

public String getSchemaTerm() throws SQLException

Specified by:
  `getSchemaTerm` in interface `DatabaseMetaData`
Returns:
  the vendor term, always `null` because schemas are not supported by database server (see JDBC CTS for details).
Throws:
  `SQLException`

### getProcedureTerm

public String getProcedureTerm() throws SQLException

Specified by:
  `getProcedureTerm` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getCatalogTerm

public String getCatalogTerm() throws SQLException

Specified by:
  `getCatalogTerm` in interface `DatabaseMetaData`
Returns:
  the vendor term for catalog, normally `null` because catalogs are not supported by database server (see JDBC CTS for details), or `"PACKAGE"` when `useCatalogAsPackage = true` and packages are supported.
Throws:
  `SQLException`

### isCatalogAtStart

public boolean isCatalogAtStart() throws SQLException

Will report `true` when `useCatalogAsPackage = true` and packages are supported.

Specified by:
  `isCatalogAtStart` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getCatalogSeparator

public String getCatalogSeparator() throws SQLException

Specified by:
  `getCatalogSeparator` in interface `DatabaseMetaData`
Returns:
  the separator string, always `null` because catalogs are not supported by database server (see JDBC CTS for details), or `"."` when `useCatalogAsPackage = true` and packages are supported.
Throws:
  `SQLException`

### supportsSchemasInDataManipulation

public boolean supportsSchemasInDataManipulation() throws SQLException

Specified by:
  `supportsSchemasInDataManipulation` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsSchemasInProcedureCalls

public boolean supportsSchemasInProcedureCalls() throws SQLException

Specified by:
  `supportsSchemasInProcedureCalls` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsSchemasInTableDefinitions

public boolean supportsSchemasInTableDefinitions() throws SQLException

Specified by:
  `supportsSchemasInTableDefinitions` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsSchemasInIndexDefinitions

public boolean supportsSchemasInIndexDefinitions() throws SQLException

Specified by:
  `supportsSchemasInIndexDefinitions` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsSchemasInPrivilegeDefinitions

public boolean supportsSchemasInPrivilegeDefinitions() throws SQLException

Specified by:
  `supportsSchemasInPrivilegeDefinitions` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsCatalogsInDataManipulation

public boolean supportsCatalogsInDataManipulation() throws SQLException

Will report `true` when `useCatalogAsPackage = true` and packages are supported.

Specified by:
  `supportsCatalogsInDataManipulation` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsCatalogsInProcedureCalls

public boolean supportsCatalogsInProcedureCalls() throws SQLException

Will report `true` when `useCatalogAsPackage = true` and packages are supported.

Specified by:
  `supportsCatalogsInProcedureCalls` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsCatalogsInTableDefinitions

public boolean supportsCatalogsInTableDefinitions() throws SQLException

Specified by:
  `supportsCatalogsInTableDefinitions` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsCatalogsInIndexDefinitions

public boolean supportsCatalogsInIndexDefinitions() throws SQLException

Specified by:
  `supportsCatalogsInIndexDefinitions` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsCatalogsInPrivilegeDefinitions

public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException

Specified by:
  `supportsCatalogsInPrivilegeDefinitions` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsPositionedDelete

public boolean supportsPositionedDelete() throws SQLException

Specified by:
  `supportsPositionedDelete` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsPositionedUpdate

public boolean supportsPositionedUpdate() throws SQLException

Specified by:
  `supportsPositionedUpdate` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsSelectForUpdate

public boolean supportsSelectForUpdate() throws SQLException

Specified by:
  `supportsSelectForUpdate` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsStoredProcedures

public boolean supportsStoredProcedures() throws SQLException

Specified by:
  `supportsStoredProcedures` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsSubqueriesInComparisons

public boolean supportsSubqueriesInComparisons() throws SQLException

Specified by:
  `supportsSubqueriesInComparisons` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsSubqueriesInExists

public boolean supportsSubqueriesInExists() throws SQLException

Specified by:
  `supportsSubqueriesInExists` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsSubqueriesInIns

public boolean supportsSubqueriesInIns() throws SQLException

Specified by:
  `supportsSubqueriesInIns` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsSubqueriesInQuantifieds

public boolean supportsSubqueriesInQuantifieds() throws SQLException

Specified by:
  `supportsSubqueriesInQuantifieds` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsCorrelatedSubqueries

public boolean supportsCorrelatedSubqueries() throws SQLException

Specified by:
  `supportsCorrelatedSubqueries` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsUnion

public boolean supportsUnion() throws SQLException

Specified by:
  `supportsUnion` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsUnionAll

public boolean supportsUnionAll() throws SQLException

Specified by:
  `supportsUnionAll` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsOpenCursorsAcrossCommit

public boolean supportsOpenCursorsAcrossCommit() throws SQLException

Specified by:
  `supportsOpenCursorsAcrossCommit` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsOpenCursorsAcrossRollback

public boolean supportsOpenCursorsAcrossRollback() throws SQLException

Specified by:
  `supportsOpenCursorsAcrossRollback` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsOpenStatementsAcrossCommit

public boolean supportsOpenStatementsAcrossCommit() throws SQLException

Specified by:
  `supportsOpenStatementsAcrossCommit` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsOpenStatementsAcrossRollback

public boolean supportsOpenStatementsAcrossRollback() throws SQLException

Specified by:
  `supportsOpenStatementsAcrossRollback` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxBinaryLiteralLength

public int getMaxBinaryLiteralLength() throws SQLException

Specified by:
  `getMaxBinaryLiteralLength` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxCharLiteralLength

public int getMaxCharLiteralLength() throws SQLException

Specified by:
  `getMaxCharLiteralLength` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxColumnNameLength

public int getMaxColumnNameLength() throws SQLException

NOTE: This method reports the standard maximum length, and does not take into account restrictions configured through `MaxIdentifierByteLength` or `MaxIdentifierCharLength`.

Specified by:
  `getMaxColumnNameLength` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxObjectNameLength

public int getMaxObjectNameLength()
Description copied from interface: `FirebirdDatabaseMetaData`
The default maximum identifier length.

NOTE: This method reports the standard maximum length, and does not take into account restrictions configured through `MaxIdentifierByteLength` or `MaxIdentifierCharLength`.

Specified by:
  `getMaxObjectNameLength` in interface `FirebirdDatabaseMetaData`
Returns:
  the (default) maximum identifier length

### getMaxColumnsInGroupBy

public int getMaxColumnsInGroupBy() throws SQLException

Specified by:
  `getMaxColumnsInGroupBy` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxColumnsInIndex

public int getMaxColumnsInIndex() throws SQLException

Specified by:
  `getMaxColumnsInIndex` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxColumnsInOrderBy

public int getMaxColumnsInOrderBy() throws SQLException

Specified by:
  `getMaxColumnsInOrderBy` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxColumnsInSelect

public int getMaxColumnsInSelect() throws SQLException

Specified by:
  `getMaxColumnsInSelect` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxColumnsInTable

public int getMaxColumnsInTable() throws SQLException

Specified by:
  `getMaxColumnsInTable` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxConnections

public int getMaxConnections() throws SQLException

Specified by:
  `getMaxConnections` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxCursorNameLength

public int getMaxCursorNameLength() throws SQLException

Specified by:
  `getMaxCursorNameLength` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxIndexLength

public int getMaxIndexLength() throws SQLException

Specified by:
  `getMaxIndexLength` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxSchemaNameLength

public int getMaxSchemaNameLength() throws SQLException

Specified by:
  `getMaxSchemaNameLength` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxProcedureNameLength

public int getMaxProcedureNameLength() throws SQLException

NOTE: This method reports the standard maximum length, and does not take into account restrictions configured through `MaxIdentifierByteLength` or `MaxIdentifierCharLength`.

Specified by:
  `getMaxProcedureNameLength` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxCatalogNameLength

public int getMaxCatalogNameLength() throws SQLException

Will normally report `0`, but non-zero when `useCatalogAsPackage = true` and packages are supported.

Specified by:
  `getMaxCatalogNameLength` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxRowSize

public int getMaxRowSize() throws SQLException

Specified by:
  `getMaxRowSize` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### doesMaxRowSizeIncludeBlobs

public boolean doesMaxRowSizeIncludeBlobs() throws SQLException

Specified by:
  `doesMaxRowSizeIncludeBlobs` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxStatementLength

public int getMaxStatementLength() throws SQLException

Specified by:
  `getMaxStatementLength` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxStatements

public int getMaxStatements() throws SQLException

Specified by:
  `getMaxStatements` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxTableNameLength

public int getMaxTableNameLength() throws SQLException

NOTE: This method reports the standard maximum length, and does not take into account restrictions configured through `MaxIdentifierByteLength` or `MaxIdentifierCharLength`.

Specified by:
  `getMaxTableNameLength` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxTablesInSelect

public int getMaxTablesInSelect() throws SQLException

Specified by:
  `getMaxTablesInSelect` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getMaxUserNameLength

public int getMaxUserNameLength() throws SQLException

NOTE: This method reports the standard maximum length, and does not take into account restrictions configured through `MaxIdentifierByteLength` or `MaxIdentifierCharLength`.

Specified by:
  `getMaxUserNameLength` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getDefaultTransactionIsolation

public int getDefaultTransactionIsolation() throws SQLException

Specified by:
  `getDefaultTransactionIsolation` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsTransactions

public boolean supportsTransactions() throws SQLException

Specified by:
  `supportsTransactions` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsTransactionIsolationLevel

public boolean supportsTransactionIsolationLevel(int level) throws SQLException

Specified by:
  `supportsTransactionIsolationLevel` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsDataDefinitionAndDataManipulationTransactions

public boolean supportsDataDefinitionAndDataManipulationTransactions() throws SQLException

Although Firebird supports both DML and DDL in transactions, it is not possible to use objects in the same transaction that defines them. For example, it is not possible to insert into a table in the same transaction that created it.

Specified by:
  `supportsDataDefinitionAndDataManipulationTransactions` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### supportsDataManipulationTransactionsOnly

public boolean supportsDataManipulationTransactionsOnly() throws SQLException

Specified by:
  `supportsDataManipulationTransactionsOnly` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### dataDefinitionCausesTransactionCommit

public boolean dataDefinitionCausesTransactionCommit() throws SQLException

Read the note on `supportsDataDefinitionAndDataManipulationTransactions()`.

Specified by:
  `dataDefinitionCausesTransactionCommit` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### dataDefinitionIgnoredInTransactions

public boolean dataDefinitionIgnoredInTransactions() throws SQLException

Read the note on `supportsDataDefinitionAndDataManipulationTransactions()`.

Specified by:
  `dataDefinitionIgnoredInTransactions` in interface `DatabaseMetaData`
Throws:
  `SQLException`

### getProcedures

public ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern) throws SQLException

By default, this method does not return procedures defined in packages. To also return procedures in packages, set connection property `useCatalogAsPackage` to `true`. When enabled, this method has the following differences in behaviour:

- The `catalog` parameter will return normal and packaged procedures when `null`, only normal (non-packaged) procedures when empty string (`""`), and procedures from a specific package (exact case-sensitive match!) for other non-`null` values
- Column `PROCEDURE_CAT` for normal procedures is empty string (`""`) instead of `null`, for packaged procedures it is the package name
- Column `SPECIFIC_NAME` for packaged procedures will report `<quoted-package-name>.<quoted-procedure-name>` (normal procedures will report the same as column `PROCEDURE_NAME`, the unquoted name)

Specified by:
  `getProcedures` in interface `DatabaseMetaData`
Throws:
  `SQLException`

- ### getProcedureColumns

  public ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern) throws SQLException

  By default, this method does not return columns of procedures defined in packages. To also return columns of procedures in packages, set connection property `useCatalogAsPackage` to `true`. When enabled, this method has the following differences in behaviour:

  - The `catalog` parameter will return normal and packaged procedures when `null`, only normal (non-packaged) procedures when empty string (`""`), and procedures from a specific package (exact case-sensitive match!) for other non-`null` values
  - Column `PROCEDURE_CAT` for normal procedures is empty string (`""`) instead of `null`, for packaged procedures it is the package name
  - Column `SPECIFIC_NAME` for packaged procedures will report `<quoted-package-name>.<quoted-procedure-name>` (normal procedures will report the same as column `PROCEDURE_NAME`, the unquoted name)

Specified by:
  `getProcedureColumns` in interface `DatabaseMetaData`
Throws:
  `SQLException`

- ### getTables

  public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) throws SQLException

  Jaybird defines these additional columns:

  11. OWNER_NAME String => Owner of the table
  12. JB_RELATION_ID Short => Value of `RDB$RELATIONS.RDB$RELATION_ID` of the table
  Specified by:
    `getTables` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getSchemas

  public ResultSet getSchemas() throws SQLException
  Specified by:
    `getSchemas` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getCatalogs

  public ResultSet getCatalogs() throws SQLException

  When `useCatalogAsPackage = true` and packages are supported, this method will return the package names in column `TABLE_CAT`.

  >
  Specified by:
    `getCatalogs` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getTableTypes

  public ResultSet getTableTypes() throws SQLException
  Specified by:
    `getTableTypes` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getTableTypeNames

  public String[] getTableTypeNames() throws SQLException
  Description copied from interface: `FirebirdDatabaseMetaData`
  Supported table type names.
  Specified by:
    `getTableTypeNames` in interface `FirebirdDatabaseMetaData`
  Returns:
    An array with the supported table types names for `DatabaseMetaData.getTables(String, String, String, String[])`
  Throws:
    `SQLException` - For problems determining supported table types
  See Also:
    - `DatabaseMetaData.getTableTypes()`

- ### getColumns

  public ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) throws SQLException

  Jaybird defines these additional columns:

  25. JB_IS_IDENTITY String => Indicates whether this column is an identity column (NOTE: Jaybird specific column; retrieve by name!). There is a subtle difference with the meaning of `IS_AUTOINCREMENT`. This column indicates if the column is a true identity column.
      - YES --- if the column is an identity column
      - NO --- if the column is not an identity column
  26. JB_IDENTITY_TYPE String => Type of identity column (NOTE: Jaybird specific column; retrieve by name!)
      - ALWAYS --- for a GENERATED ALWAYS AS IDENTITY column (not yet supported in Firebird 3!)
      - BY DEFAULT --- for a GENERATED BY DEFAULT AS IDENTITY column
      - null --- if the column is not an identity type (or the identity type is unknown)
  Specified by:
    `getColumns` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getColumnPrivileges

  public ResultSet getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern) throws SQLException

  Jaybird defines an additional column:

  9. JB_GRANTEE_TYPE String => Object type of `GRANTEE` (NOTE: Jaybird specific column; retrieve by name!).

  Privileges granted to the table as a whole are reported for each individual column.

  NOTE: This implementation returns all privileges, not just applicable to the current user. It is unclear if this complies with the JDBC requirements. This may change in the future to only return only privileges applicable to the current user, user `PUBLIC` and — maybe — active roles.

  Specified by:
    `getColumnPrivileges` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getTablePrivileges

  public ResultSet getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) throws SQLException

  Jaybird defines an additional column:

  8. JB_GRANTEE_TYPE String => Object type of `GRANTEE` (NOTE: Jaybird specific column; retrieve by name!).

  NOTE: This implementation returns all privileges, not just applicable to the current user. It is unclear if this complies with the JDBC requirements. This may change in the future to only return only privileges applicable to the current user, user `PUBLIC` and — maybe — active roles.

  Specified by:
    `getTablePrivileges` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getBestRowIdentifier

  public ResultSet getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable) throws SQLException

  Jaybird considers the primary key (scoped as `bestRowSession` as the best identifier for all scopes. Pseudo column `RDB$DB_KEY` (scoped as `bestRowTransaction` is considered the second-best alternative for scopes `bestRowTemporary` and `bestRowTransaction` if `table` has no primary key.

  Jaybird currently considers `RDB$DB_KEY` to be `DatabaseMetaData.bestRowTransaction` even if the dbkey_scope is set to 1 (session). This may change in the future. See also `getRowIdLifetime()`.

  Specified by:
    `getBestRowIdentifier` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getVersionColumns

  public ResultSet getVersionColumns(String catalog, String schema, String table) throws SQLException

  Jaybird considers both `RDB$DB_KEY` and `RDB$RECORD_VERSION` (Firebird 3 and higher) as version columns.

  Jaybird only returns pseudo-column as version columns, so 'last updated' columns updated by a trigger, calculated columns, or other forms of change tracking are not reported by this method.

  Specified by:
    `getVersionColumns` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getPrimaryKeys

  public ResultSet getPrimaryKeys(String catalog, String schema, String table) throws SQLException

  Jaybird defines these additional columns:

  7. JB_PK_INDEX_NAME String => Index backing the primary key
  Specified by:
    `getPrimaryKeys` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getImportedKeys

  public ResultSet getImportedKeys(String catalog, String schema, String table) throws SQLException

  Jaybird defines these additional columns:

  15. JB_FK_INDEX_NAME String => Index backing the foreign key
  16. JB_PK_INDEX_NAME String => Index backing the primary key
  Specified by:
    `getImportedKeys` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getExportedKeys

  public ResultSet getExportedKeys(String catalog, String schema, String table) throws SQLException

  Jaybird defines these additional columns:

  15. JB_FK_INDEX_NAME String => Index backing the foreign key
  16. JB_PK_INDEX_NAME String => Index backing the primary key
  Specified by:
    `getExportedKeys` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getCrossReference

  public ResultSet getCrossReference(String primaryCatalog, String primarySchema, String primaryTable, String foreignCatalog, String foreignSchema, String foreignTable) throws SQLException

  Jaybird defines these additional columns:

  15. JB_FK_INDEX_NAME String => Index backing the foreign key
  16. JB_PK_INDEX_NAME String => Index backing the primary key
  Specified by:
    `getCrossReference` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getTypeInfo

  public ResultSet getTypeInfo() throws SQLException
  Specified by:
    `getTypeInfo` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getIndexInfo

  public ResultSet getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) throws SQLException

  Implementation note: The value of `FILTER_CONDITION` is populated with the value of `RDB$INDICES.RDB$CONDITION_SOURCE`, which includes the `WHERE` keyword and comments before the `WHERE` keyword. This is an implementation detail which may change in the future. That is, Jaybird may change in the future to only include the condition itself, not the `WHERE` keyword, and/or may remove some or all comments.

  Specified by:
    `getIndexInfo` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### supportsResultSetType

  public boolean supportsResultSetType(int type) throws SQLException
  Specified by:
    `supportsResultSetType` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### supportsResultSetConcurrency

  public boolean supportsResultSetConcurrency(int type, int concurrency) throws SQLException
  Specified by:
    `supportsResultSetConcurrency` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### ownUpdatesAreVisible

  public boolean ownUpdatesAreVisible(int type) throws SQLException
  Specified by:
    `ownUpdatesAreVisible` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### ownDeletesAreVisible

  public boolean ownDeletesAreVisible(int type) throws SQLException
  Specified by:
    `ownDeletesAreVisible` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### ownInsertsAreVisible

  public boolean ownInsertsAreVisible(int type) throws SQLException
  Specified by:
    `ownInsertsAreVisible` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### othersUpdatesAreVisible

  public boolean othersUpdatesAreVisible(int type) throws SQLException
  Specified by:
    `othersUpdatesAreVisible` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### othersDeletesAreVisible

  public boolean othersDeletesAreVisible(int type) throws SQLException
  Specified by:
    `othersDeletesAreVisible` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### othersInsertsAreVisible

  public boolean othersInsertsAreVisible(int type) throws SQLException
  Specified by:
    `othersInsertsAreVisible` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### updatesAreDetected

  public boolean updatesAreDetected(int type) throws SQLException
  Specified by:
    `updatesAreDetected` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### deletesAreDetected

  public boolean deletesAreDetected(int type) throws SQLException
  Specified by:
    `deletesAreDetected` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### insertsAreDetected

  public boolean insertsAreDetected(int type) throws SQLException
  Specified by:
    `insertsAreDetected` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### supportsBatchUpdates

  public boolean supportsBatchUpdates() throws SQLException
  Specified by:
    `supportsBatchUpdates` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getUDTs

  public ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) throws SQLException

  UDTs are not supported by Firebird. This method will always return an empty ResultSet.

  Specified by:
    `getUDTs` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getConnection

  public Connection getConnection() throws SQLException
  Specified by:
    `getConnection` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getAttributes

  public ResultSet getAttributes(String catalog, String schemaPattern, String typeNamePattern, String attributeNamePattern) throws SQLException

  UDTs are not supported by Firebird. This method will always return an empty ResultSet.

  Specified by:
    `getAttributes` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### supportsSavepoints

  public boolean supportsSavepoints() throws SQLException
  Specified by:
    `supportsSavepoints` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### supportsNamedParameters

  public boolean supportsNamedParameters() throws SQLException
  Specified by:
    `supportsNamedParameters` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### supportsMultipleOpenResults

  public boolean supportsMultipleOpenResults() throws SQLException
  Specified by:
    `supportsMultipleOpenResults` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### supportsGetGeneratedKeys

  public boolean supportsGetGeneratedKeys() throws SQLException
  Specified by:
    `supportsGetGeneratedKeys` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getSuperTypes

  public ResultSet getSuperTypes(String catalog, String schemaPattern, String tableNamePattern) throws SQLException

  Supertypes are not supported by Firebird. This method will always return an empty ResultSet.

  Specified by:
    `getSuperTypes` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getSuperTables

  public ResultSet getSuperTables(String catalog, String schemaPattern, String tableNamePattern) throws SQLException

  Supertables are not supported by Firebird. This method will always return an empty ResultSet.

  Specified by:
    `getSuperTables` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### supportsResultSetHoldability

  public boolean supportsResultSetHoldability(int holdability) throws SQLException
  Specified by:
    `supportsResultSetHoldability` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getResultSetHoldability

  public int getResultSetHoldability() throws SQLException
  Specified by:
    `getResultSetHoldability` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getDatabaseMajorVersion

  public int getDatabaseMajorVersion() throws SQLException
  Specified by:
    `getDatabaseMajorVersion` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getDatabaseMinorVersion

  public int getDatabaseMinorVersion() throws SQLException
  Specified by:
    `getDatabaseMinorVersion` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getOdsMajorVersion

  public int getOdsMajorVersion() throws SQLException
  Description copied from interface: `FirebirdDatabaseMetaData`
  Get the major version of the ODS (On-Disk Structure) of the database.
  Specified by:
    `getOdsMajorVersion` in interface `FirebirdDatabaseMetaData`
  Returns:
    The major version number of the database itself
  Throws:
    `SQLException` - if a database access error occurs

- ### getOdsMinorVersion

  public int getOdsMinorVersion() throws SQLException
  Description copied from interface: `FirebirdDatabaseMetaData`
  Get the minor version of the ODS (On-Disk Structure) of the database.
  Specified by:
    `getOdsMinorVersion` in interface `FirebirdDatabaseMetaData`
  Returns:
    The minor version number of the database itself
  Throws:
    `SQLException` - if a database access error occurs

- ### getDatabaseDialect

  public int getDatabaseDialect() throws SQLException
  Description copied from interface: `FirebirdDatabaseMetaData`
  Get the dialect of the database.
  Specified by:
    `getDatabaseDialect` in interface `FirebirdDatabaseMetaData`
  Returns:
    The dialect of the database
  Throws:
    `SQLException` - if a database access error occurs
  See Also:
    - `FirebirdDatabaseMetaData.getConnectionDialect()`

- ### getConnectionDialect

  public int getConnectionDialect() throws SQLException
  Description copied from interface: `FirebirdDatabaseMetaData`
  Get the dialect of the connection.

  The connection dialect may be different from the database dialect.

  Specified by:
    `getConnectionDialect` in interface `FirebirdDatabaseMetaData`
  Returns:
    The dialect of the connection
  Throws:
    `SQLException` - if a database access error occurs
  See Also:
    - `FirebirdDatabaseMetaData.getDatabaseDialect()`

- ### getSQLStateType

  public int getSQLStateType() throws SQLException

  Firebird primarily uses SQL standard SQL states, but may occasionally use values from X/Open.

  Specified by:
    `getSQLStateType` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### supportsStoredFunctionsUsingCallSyntax

  public boolean supportsStoredFunctionsUsingCallSyntax() throws SQLException
  Specified by:
    `supportsStoredFunctionsUsingCallSyntax` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### autoCommitFailureClosesAllResultSets

  public boolean autoCommitFailureClosesAllResultSets() throws SQLException

  The holdable result sets remain open, others are closed, but this happens before the statement is executed.

  Specified by:
    `autoCommitFailureClosesAllResultSets` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getClientInfoProperties

  public ResultSet getClientInfoProperties() throws SQLException
  Specified by:
    `getClientInfoProperties` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getFunctionColumns

  public ResultSet getFunctionColumns(String catalog, String schemaPattern, String functionNamePattern, String columnNamePattern) throws SQLException

  By default, this method does not return columns of functions defined in packages. To also return columns of functions in packages, set connection property `useCatalogAsPackage` to `true`. When enabled, this method has the following differences in behaviour:

  - The `catalog` parameter will return normal and packaged functions when `null`, only normal (non-packaged) function when empty string (`""`), and functions from a specific package (exact case-sensitive match!) for other non-`null` values
  - Column `FUNCTION_CAT` for normal functions is empty string (`""`) instead of `null`, for packaged functions it is the package name
  - Column `SPECIFIC_NAME` for packaged functions will report `<quoted-package-name>.<quoted-function-name>` (normal functions will report the same as column `FUNCTION_NAME`, the unquoted name)

Specified by:
  `getFunctionColumns` in interface `DatabaseMetaData`
Throws:
  `SQLException`

- ### getFunctions

  public ResultSet getFunctions(String catalog, String schemaPattern, String functionNamePattern) throws SQLException

  Jaybird defines a number of additional columns. As these are not defined in JDBC, their position may change with revisions of JDBC. We recommend to retrieve these columns by name. The following additional columns are available:

  7. JB_FUNCTION_SOURCE String => The source of the function (for Firebird 3+ PSQL functions only)).
  8. JB_FUNCTION_KIND String => The kind of function, one of "UDF", "PSQL" (Firebird 3+) or "UDR" (Firebird 3+)
  9. JB_MODULE_NAME String => Value of `RDB$MODULE_NAME` (is `null` for PSQL)
  10. JB_ENTRYPOINT String => Value of `RDB$ENTRYPOINT` (is `null` for PSQL)
  11. JB_ENGINE_NAME String => Value of `RDB$ENGINE_NAME` (is `null` for UDF and PSQL)

  By default, this method does not return functions defined in packages. To also return functions in packages, set connection property `useCatalogAsPackage` to `true`. When enabled, this method has the following differences in behaviour:

  - The `catalog` parameter will return normal and packaged functions when `null`, only normal (non-packaged) function when empty string (`""`), and functions from a specific package (exact case-sensitive match!) for other non-`null` values
  - Column `FUNCTION_CAT` for normal functions is empty string (`""`) instead of `null`, for packaged functions it is the package name
  - Column `SPECIFIC_NAME` for packaged functions will report `<quoted-package-name>.<quoted-function-name>` (normal functions will report the same as column `FUNCTION_NAME`, the unquoted name)

Specified by:
  `getFunctions` in interface `DatabaseMetaData`
Throws:
  `SQLException`

- ### getSchemas

  public ResultSet getSchemas(String catalog, String schemaPattern) throws SQLException
  Specified by:
    `getSchemas` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### isWrapperFor

  public boolean isWrapperFor(Class<?> iface) throws SQLException
  Specified by:
    `isWrapperFor` in interface `Wrapper`
  Throws:
    `SQLException`

- ### unwrap

  public <T> T unwrap(Class<T> iface) throws SQLException
  Specified by:
    `unwrap` in interface `Wrapper`
  Throws:
    `SQLException`

- ### escapeWildcards

  public static String escapeWildcards(String objectName)
  Escapes the like wildcards and escape (`\_%` in the provided search string with a `\`.

  Primary purpose is to escape object names with wildcards for use in metadata patterns for literal matches, but it can also be used to escape for SQL `LIKE`.

  Parameters:
    `objectName` - Object name to escape.
  Returns:
    Object name with wildcards escaped.

- ### getPseudoColumns

  public ResultSet getPseudoColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) throws SQLException
  Specified by:
    `getPseudoColumns` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### generatedKeyAlwaysReturned

  public boolean generatedKeyAlwaysReturned() throws SQLException
  Specified by:
    `generatedKeyAlwaysReturned` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getProcedureSourceCode

  public String getProcedureSourceCode(String procedureName) throws SQLException
  Description copied from interface: `FirebirdDatabaseMetaData`
  Get the source of a stored procedure.
  Specified by:
    `getProcedureSourceCode` in interface `FirebirdDatabaseMetaData`
  Parameters:
    `procedureName` - name of the stored procedure.
  Returns:
    source of the stored procedure.
  Throws:
    `SQLException` - if specified procedure cannot be found.

- ### getTriggerSourceCode

  public String getTriggerSourceCode(String triggerName) throws SQLException
  Description copied from interface: `FirebirdDatabaseMetaData`
  Get the source of a trigger.
  Specified by:
    `getTriggerSourceCode` in interface `FirebirdDatabaseMetaData`
  Parameters:
    `triggerName` - name of the trigger.
  Returns:
    source of the trigger.
  Throws:
    `SQLException` - if specified trigger cannot be found.

- ### getViewSourceCode

  public String getViewSourceCode(String viewName) throws SQLException
  Description copied from interface: `FirebirdDatabaseMetaData`
  Get the source of a view.
  Specified by:
    `getViewSourceCode` in interface `FirebirdDatabaseMetaData`
  Parameters:
    `viewName` - name of the view.
  Returns:
    source of the view.
  Throws:
    `SQLException` - if specified view cannot be found.

- ### getBytes

  protected static byte[] getBytes(String value)

- ### doQuery

  protected ResultSet doQuery(String sql, List<String> params) throws SQLException
  Execute an SQL query with a given set of parameters.
  Parameters:
    `sql` - The sql statement to be used for the query
    `params` - The parameters to be used in the query
  Throws:
    `SQLException` - if a database access error occurs

- ### doQuery

  protected ResultSet doQuery(String sql, List<String> params, boolean standalone) throws SQLException
  Execute an SQL query with a given set of parameters.
  Parameters:
    `sql` - The sql statement to be used for the query
    `params` - The parameters to be used in the query
    `standalone` - The query to be executed is a standalone query (should not be cached and be closed asap)
  Throws:
    `SQLException` - if a database access error occurs

- ### getRowIdLifetime

  public RowIdLifetime getRowIdLifetime() throws SQLException

  Minimum lifetime supported by Firebird is transaction-scope, and this can be changed to session-scope with `isc_dpb_dbkey_scope` set to `1` (eg connection property `dbkey_scope=1`). This implementation, however, will always report `RowIdLifetime.ROWID_VALID_TRANSACTION`.

  Specified by:
    `getRowIdLifetime` in interface `DatabaseMetaData`
  Throws:
    `SQLException`

- ### getJDBCMajorVersion

  public int getJDBCMajorVersion()
  Specified by:
    `getJDBCMajorVersion` in interface `DatabaseMetaData`

- ### getJDBCMinorVersion

  public int getJDBCMinorVersion()
  Specified by:
    `getJDBCMinorVersion` in interface `DatabaseMetaData`

- ### getDbMetadataMediator

  protected DbMetadataMediator getDbMetadataMediator()