Package org.firebirdsql.jdbc

## Class FBDatabaseMetaData

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

All Implemented Interfaces:
  `java.sql.DatabaseMetaData`, `java.sql.Wrapper`, `FirebirdDatabaseMetaData`

    public class FBDatabaseMetaData
    extends java.lang.Object
    implements FirebirdDatabaseMetaData

Comprehensive information about the database as a whole.

Author:
  David Jencks, Mark Rotteveel

### Field Summary

Fields
`protected static DatatypeCoder` `datatypeCoder`
`static java.lang.String` `GET_COLUMNS_END`
`static java.lang.String` `GLOBAL_TEMPORARY`
`static java.lang.String` `SYSTEM_TABLE`
`static java.lang.String` `TABLE`
`static java.lang.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
`protected` `FBDatabaseMetaData​(FBConnection c)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
`boolean` `allProceduresAreCallable()`
`boolean` `allTablesAreSelectable()`
`boolean` `autoCommitFailureClosesAllResultSets()`
`protected RowDescriptor` `buildTablePrivilegeRSMetaData()`
`void` `close()` Closes any cached metadata statements held by this database metadata implementation.
`boolean` `dataDefinitionCausesTransactionCommit()`
`boolean` `dataDefinitionIgnoredInTransactions()`
`boolean` `deletesAreDetected​(int type)`
`boolean` `doesMaxRowSizeIncludeBlobs()`
`protected java.sql.ResultSet` `doQuery​(java.lang.String sql, java.util.List<java.lang.String> params)` Execute an sql query with a given set of parameters.
`protected java.sql.ResultSet` `doQuery​(java.lang.String sql, java.util.List<java.lang.String> params, boolean standalone)` Execute an sql query with a given set of parameters.
`static java.lang.String` `escapeWildcards​(java.lang.String objectName)` Escapes the like wildcards and escape (`\_%` in the provided search string with a `\`.
`boolean` `generatedKeyAlwaysReturned()`
`java.sql.ResultSet` `getAttributes​(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String typeNamePattern, java.lang.String attributeNamePattern)`
`java.sql.ResultSet` `getBestRowIdentifier​(java.lang.String catalog, java.lang.String schema, java.lang.String table, int scope, boolean nullable)`
`protected static byte[]` `getBytes​(java.lang.String value)`
`java.sql.ResultSet` `getCatalogs()`
`java.lang.String` `getCatalogSeparator()`
`java.lang.String` `getCatalogTerm()`
`java.sql.ResultSet` `getClientInfoProperties()`
`java.sql.ResultSet` `getColumnPrivileges​(java.lang.String catalog, java.lang.String schema, java.lang.String table, java.lang.String columnNamePattern)`
`java.sql.ResultSet` `getColumns​(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern, java.lang.String columnNamePattern)`
`java.sql.Connection` `getConnection()`
`int` `getConnectionDialect()` Get the dialect of the connection.
`java.sql.ResultSet` `getCrossReference​(java.lang.String primaryCatalog, java.lang.String primarySchema, java.lang.String primaryTable, java.lang.String foreignCatalog, java.lang.String foreignSchema, java.lang.String foreignTable)`
`int` `getDatabaseDialect()` Get the dialect of the database.
`int` `getDatabaseMajorVersion()`
`int` `getDatabaseMinorVersion()`
`java.lang.String` `getDatabaseProductName()`
`java.lang.String` `getDatabaseProductVersion()`
`protected DbMetadataMediator` `getDbMetadataMediator()`
`int` `getDefaultTransactionIsolation()`
`int` `getDriverMajorVersion()`
`int` `getDriverMinorVersion()`
`java.lang.String` `getDriverName()`
`java.lang.String` `getDriverVersion()`
`java.sql.ResultSet` `getExportedKeys​(java.lang.String catalog, java.lang.String schema, java.lang.String table)`
`java.lang.String` `getExtraNameCharacters()`
`java.sql.ResultSet` `getFunctionColumns​(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String functionNamePattern, java.lang.String columnNamePattern)`
`java.sql.ResultSet` `getFunctions​(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String functionNamePattern)`
`java.lang.String` `getIdentifierQuoteString()`
`java.sql.ResultSet` `getImportedKeys​(java.lang.String catalog, java.lang.String schema, java.lang.String table)`
`java.sql.ResultSet` `getIndexInfo​(java.lang.String catalog, java.lang.String schema, java.lang.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` `getMaxProcedureNameLength()`
`int` `getMaxRowSize()`
`int` `getMaxSchemaNameLength()`
`int` `getMaxStatementLength()`
`int` `getMaxStatements()`
`int` `getMaxTableNameLength()`
`int` `getMaxTablesInSelect()`
`int` `getMaxUserNameLength()`
`java.lang.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.
`java.sql.ResultSet` `getPrimaryKeys​(java.lang.String catalog, java.lang.String schema, java.lang.String table)`
`java.sql.ResultSet` `getProcedureColumns​(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String procedureNamePattern, java.lang.String columnNamePattern)`
`java.sql.ResultSet` `getProcedures​(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String procedureNamePattern)`
`java.lang.String` `getProcedureSourceCode​(java.lang.String procedureName)` Get the source of a stored procedure.
`java.lang.String` `getProcedureTerm()`
`java.sql.ResultSet` `getPseudoColumns​(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern, java.lang.String columnNamePattern)`
`int` `getResultSetHoldability()`
`java.sql.RowIdLifetime` `getRowIdLifetime()`
`java.sql.ResultSet` `getSchemas()`
`java.sql.ResultSet` `getSchemas​(java.lang.String catalog, java.lang.String schemaPattern)`
`java.lang.String` `getSchemaTerm()`
`java.lang.String` `getSearchStringEscape()`
`java.lang.String` `getSQLKeywords()`
`int` `getSQLStateType()`
`java.lang.String` `getStringFunctions()`
`java.sql.ResultSet` `getSuperTables​(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern)`
`java.sql.ResultSet` `getSuperTypes​(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern)`
`java.lang.String` `getSystemFunctions()`
`java.sql.ResultSet` `getTablePrivileges​(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern)`
`java.sql.ResultSet` `getTables​(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern, java.lang.String[] types)`
`java.lang.String[]` `getTableTypeNames()` Supported table type names.
`java.sql.ResultSet` `getTableTypes()`
`java.lang.String` `getTimeDateFunctions()`
`java.lang.String` `getTriggerSourceCode​(java.lang.String triggerName)` Get the source of a trigger.
`java.sql.ResultSet` `getTypeInfo()`
`java.sql.ResultSet` `getUDTs​(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String typeNamePattern, int[] types)`
`java.lang.String` `getURL()`
`java.lang.String` `getUserName()`
`java.sql.ResultSet` `getVersionColumns​(java.lang.String catalog, java.lang.String schema, java.lang.String table)`
`java.lang.String` `getViewSourceCode​(java.lang.String viewName)` Get the source of a view.
`protected java.lang.String` `getWantsSystemTables​(java.lang.String[] types)`
`protected java.lang.String` `getWantsTables​(java.lang.String[] types)`
`protected java.lang.String` `getWantsViews​(java.lang.String[] types)`
`static boolean` `hasNoWildcards​(java.lang.String pattern)` Deprecated. Will be removed in Jaybird 5
`boolean` `insertsAreDetected​(int type)`
`boolean` `isCatalogAtStart()`
`boolean` `isReadOnly()`
`boolean` `isWrapperFor​(java.lang.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)`
`protected FBResultSet` `processTablePrivileges​(RowDescriptor rowDescriptor, java.sql.ResultSet fbTablePrivileges)`
`boolean` `storesLowerCaseIdentifiers()`
`boolean` `storesLowerCaseQuotedIdentifiers()`
`boolean` `storesMixedCaseIdentifiers()`
`boolean` `storesMixedCaseQuotedIdentifiers()`
`boolean` `storesUpperCaseIdentifiers()`
`boolean` `storesUpperCaseQuotedIdentifiers()`
`static java.lang.String` `stripEscape​(java.lang.String pattern)` Deprecated. Will be removed in Jaybird 5
`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​(java.lang.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 Detail

#### datatypeCoder

    protected static final DatatypeCoder datatypeCoder

#### TABLE

    public static final java.lang.String TABLE

See Also:
  Constant Field Values

#### SYSTEM_TABLE

    public static final java.lang.String SYSTEM_TABLE

See Also:
  Constant Field Values

#### VIEW

    public static final java.lang.String VIEW

See Also:
  Constant Field Values

#### GLOBAL_TEMPORARY

    public static final java.lang.String GLOBAL_TEMPORARY

See Also:
  Constant Field Values

#### GET_COLUMNS_END

    public static final java.lang.String GET_COLUMNS_END

See Also:
  Constant Field Values

### Constructor Detail

#### FBDatabaseMetaData

    protected FBDatabaseMetaData​(FBConnection c)
                          throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

### Method Detail

#### 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 java.sql.SQLException

Specified by:
  `allProceduresAreCallable` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### allTablesAreSelectable

    public boolean allTablesAreSelectable()
                                   throws java.sql.SQLException

Specified by:
  `allTablesAreSelectable` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getURL

    public java.lang.String getURL()
                            throws java.sql.SQLException

Specified by:
  `getURL` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getUserName

    public java.lang.String getUserName()
                                 throws java.sql.SQLException

Specified by:
  `getUserName` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### isReadOnly

    public boolean isReadOnly()
                       throws java.sql.SQLException

Specified by:
  `isReadOnly` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### nullsAreSortedHigh

    public boolean nullsAreSortedHigh()
                               throws java.sql.SQLException

Specified by:
  `nullsAreSortedHigh` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### nullsAreSortedLow

    public boolean nullsAreSortedLow()
                              throws java.sql.SQLException

Specified by:
  `nullsAreSortedLow` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### nullsAreSortedAtStart

    public boolean nullsAreSortedAtStart()
                                  throws java.sql.SQLException

Specified by:
  `nullsAreSortedAtStart` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### nullsAreSortedAtEnd

    public boolean nullsAreSortedAtEnd()
                                throws java.sql.SQLException

Specified by:
  `nullsAreSortedAtEnd` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getDatabaseProductName

    public java.lang.String getDatabaseProductName()
                                            throws java.sql.SQLException

Specified by:
  `getDatabaseProductName` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getDatabaseProductVersion

    public java.lang.String getDatabaseProductVersion()
                                               throws java.sql.SQLException

Specified by:
  `getDatabaseProductVersion` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getDriverName

    public java.lang.String getDriverName()
                                   throws java.sql.SQLException

Specified by:
  `getDriverName` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getDriverVersion

    public java.lang.String getDriverVersion()
                                      throws java.sql.SQLException

Specified by:
  `getDriverVersion` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getDriverMajorVersion

    public int getDriverMajorVersion()

Specified by:
  `getDriverMajorVersion` in interface `java.sql.DatabaseMetaData`

#### getDriverMinorVersion

    public int getDriverMinorVersion()

Specified by:
  `getDriverMinorVersion` in interface `java.sql.DatabaseMetaData`

#### usesLocalFiles

    public boolean usesLocalFiles()
                           throws java.sql.SQLException

Specified by:
  `usesLocalFiles` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### usesLocalFilePerTable

    public boolean usesLocalFilePerTable()
                                  throws java.sql.SQLException

Specified by:
  `usesLocalFilePerTable` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsMixedCaseIdentifiers

    public boolean supportsMixedCaseIdentifiers()
                                         throws java.sql.SQLException

Specified by:
  `supportsMixedCaseIdentifiers` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsStatementPooling

    public boolean supportsStatementPooling()
                                     throws java.sql.SQLException

Specified by:
  `supportsStatementPooling` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### locatorsUpdateCopy

    public boolean locatorsUpdateCopy()
                               throws java.sql.SQLException

Specified by:
  `locatorsUpdateCopy` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### storesUpperCaseIdentifiers

    public boolean storesUpperCaseIdentifiers()
                                       throws java.sql.SQLException

Specified by:
  `storesUpperCaseIdentifiers` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### storesLowerCaseIdentifiers

    public boolean storesLowerCaseIdentifiers()
                                       throws java.sql.SQLException

Specified by:
  `storesLowerCaseIdentifiers` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### storesMixedCaseIdentifiers

    public boolean storesMixedCaseIdentifiers()
                                       throws java.sql.SQLException

Specified by:
  `storesMixedCaseIdentifiers` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsMixedCaseQuotedIdentifiers

    public boolean supportsMixedCaseQuotedIdentifiers()
                                               throws java.sql.SQLException

Specified by:
  `supportsMixedCaseQuotedIdentifiers` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### storesUpperCaseQuotedIdentifiers

    public boolean storesUpperCaseQuotedIdentifiers()
                                             throws java.sql.SQLException

Specified by:
  `storesUpperCaseQuotedIdentifiers` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### storesLowerCaseQuotedIdentifiers

    public boolean storesLowerCaseQuotedIdentifiers()
                                             throws java.sql.SQLException

Specified by:
  `storesLowerCaseQuotedIdentifiers` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### storesMixedCaseQuotedIdentifiers

    public boolean storesMixedCaseQuotedIdentifiers()
                                             throws java.sql.SQLException

Specified by:
  `storesMixedCaseQuotedIdentifiers` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getIdentifierQuoteString

    public java.lang.String getIdentifierQuoteString()
                                              throws java.sql.SQLException

Specified by:
  `getIdentifierQuoteString` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getSQLKeywords

    public java.lang.String getSQLKeywords()
                                    throws java.sql.SQLException

Specified by:
  `getSQLKeywords` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getNumericFunctions

    public java.lang.String getNumericFunctions()
                                         throws java.sql.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 `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getStringFunctions

    public java.lang.String getStringFunctions()
                                        throws java.sql.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 `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getSystemFunctions

    public java.lang.String getSystemFunctions()
                                        throws java.sql.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 `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getTimeDateFunctions

    public java.lang.String getTimeDateFunctions()
                                          throws java.sql.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 `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getSearchStringEscape

    public java.lang.String getSearchStringEscape()
                                           throws java.sql.SQLException

Specified by:
  `getSearchStringEscape` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getExtraNameCharacters

    public java.lang.String getExtraNameCharacters()
                                            throws java.sql.SQLException

Specified by:
  `getExtraNameCharacters` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsAlterTableWithAddColumn

    public boolean supportsAlterTableWithAddColumn()
                                            throws java.sql.SQLException

Specified by:
  `supportsAlterTableWithAddColumn` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsAlterTableWithDropColumn

    public boolean supportsAlterTableWithDropColumn()
                                             throws java.sql.SQLException

Specified by:
  `supportsAlterTableWithDropColumn` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsColumnAliasing

    public boolean supportsColumnAliasing()
                                   throws java.sql.SQLException

Specified by:
  `supportsColumnAliasing` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### nullPlusNonNullIsNull

    public boolean nullPlusNonNullIsNull()
                                  throws java.sql.SQLException

Specified by:
  `nullPlusNonNullIsNull` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsConvert

    public boolean supportsConvert()
                            throws java.sql.SQLException

Specified by:
  `supportsConvert` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsConvert

    public boolean supportsConvert​(int fromType,
                                   int toType)
                            throws java.sql.SQLException

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

Specified by:
  `supportsConvert` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsTableCorrelationNames

    public boolean supportsTableCorrelationNames()
                                          throws java.sql.SQLException

Specified by:
  `supportsTableCorrelationNames` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsDifferentTableCorrelationNames

    public boolean supportsDifferentTableCorrelationNames()
                                                   throws java.sql.SQLException

Specified by:
  `supportsDifferentTableCorrelationNames` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsExpressionsInOrderBy

    public boolean supportsExpressionsInOrderBy()
                                         throws java.sql.SQLException

Specified by:
  `supportsExpressionsInOrderBy` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsOrderByUnrelated

    public boolean supportsOrderByUnrelated()
                                     throws java.sql.SQLException

Specified by:
  `supportsOrderByUnrelated` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsGroupBy

    public boolean supportsGroupBy()
                            throws java.sql.SQLException

Specified by:
  `supportsGroupBy` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsGroupByUnrelated

    public boolean supportsGroupByUnrelated()
                                     throws java.sql.SQLException

Specified by:
  `supportsGroupByUnrelated` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsGroupByBeyondSelect

    public boolean supportsGroupByBeyondSelect()
                                        throws java.sql.SQLException

Specified by:
  `supportsGroupByBeyondSelect` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsLikeEscapeClause

    public boolean supportsLikeEscapeClause()
                                     throws java.sql.SQLException

Specified by:
  `supportsLikeEscapeClause` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsMultipleResultSets

    public boolean supportsMultipleResultSets()
                                       throws java.sql.SQLException

Specified by:
  `supportsMultipleResultSets` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsMultipleTransactions

    public boolean supportsMultipleTransactions()
                                         throws java.sql.SQLException

Specified by:
  `supportsMultipleTransactions` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsNonNullableColumns

    public boolean supportsNonNullableColumns()
                                       throws java.sql.SQLException

Specified by:
  `supportsNonNullableColumns` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsMinimumSQLGrammar

    public boolean supportsMinimumSQLGrammar()
                                      throws java.sql.SQLException

Specified by:
  `supportsMinimumSQLGrammar` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsCoreSQLGrammar

    public boolean supportsCoreSQLGrammar()
                                   throws java.sql.SQLException

Specified by:
  `supportsCoreSQLGrammar` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsExtendedSQLGrammar

    public boolean supportsExtendedSQLGrammar()
                                       throws java.sql.SQLException

Specified by:
  `supportsExtendedSQLGrammar` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsANSI92EntryLevelSQL

    public boolean supportsANSI92EntryLevelSQL()
                                        throws java.sql.SQLException

Specified by:
  `supportsANSI92EntryLevelSQL` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsANSI92IntermediateSQL

    public boolean supportsANSI92IntermediateSQL()
                                          throws java.sql.SQLException

Specified by:
  `supportsANSI92IntermediateSQL` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsANSI92FullSQL

    public boolean supportsANSI92FullSQL()
                                  throws java.sql.SQLException

Specified by:
  `supportsANSI92FullSQL` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsIntegrityEnhancementFacility

    public boolean supportsIntegrityEnhancementFacility()
                                                 throws java.sql.SQLException

Specified by:
  `supportsIntegrityEnhancementFacility` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsOuterJoins

    public boolean supportsOuterJoins()
                               throws java.sql.SQLException

Specified by:
  `supportsOuterJoins` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsFullOuterJoins

    public boolean supportsFullOuterJoins()
                                   throws java.sql.SQLException

Specified by:
  `supportsFullOuterJoins` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsLimitedOuterJoins

    public boolean supportsLimitedOuterJoins()
                                      throws java.sql.SQLException

Specified by:
  `supportsLimitedOuterJoins` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getSchemaTerm

    public java.lang.String getSchemaTerm()
                                   throws java.sql.SQLException

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

#### getProcedureTerm

    public java.lang.String getProcedureTerm()
                                      throws java.sql.SQLException

Specified by:
  `getProcedureTerm` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getCatalogTerm

    public java.lang.String getCatalogTerm()
                                    throws java.sql.SQLException

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

#### isCatalogAtStart

    public boolean isCatalogAtStart()
                             throws java.sql.SQLException

Specified by:
  `isCatalogAtStart` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getCatalogSeparator

    public java.lang.String getCatalogSeparator()
                                         throws java.sql.SQLException

Specified by:
  `getCatalogSeparator` in interface `java.sql.DatabaseMetaData`
Returns:
  the separator string, always `null` because catalogs are not supported by database server (see JDBC CTS for details).
Throws:
  `java.sql.SQLException`

#### supportsSchemasInDataManipulation

    public boolean supportsSchemasInDataManipulation()
                                              throws java.sql.SQLException

Specified by:
  `supportsSchemasInDataManipulation` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsSchemasInProcedureCalls

    public boolean supportsSchemasInProcedureCalls()
                                            throws java.sql.SQLException

Specified by:
  `supportsSchemasInProcedureCalls` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsSchemasInTableDefinitions

    public boolean supportsSchemasInTableDefinitions()
                                              throws java.sql.SQLException

Specified by:
  `supportsSchemasInTableDefinitions` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsSchemasInIndexDefinitions

    public boolean supportsSchemasInIndexDefinitions()
                                              throws java.sql.SQLException

Specified by:
  `supportsSchemasInIndexDefinitions` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsSchemasInPrivilegeDefinitions

    public boolean supportsSchemasInPrivilegeDefinitions()
                                                  throws java.sql.SQLException

Specified by:
  `supportsSchemasInPrivilegeDefinitions` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsCatalogsInDataManipulation

    public boolean supportsCatalogsInDataManipulation()
                                               throws java.sql.SQLException

Specified by:
  `supportsCatalogsInDataManipulation` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsCatalogsInProcedureCalls

    public boolean supportsCatalogsInProcedureCalls()
                                             throws java.sql.SQLException

Specified by:
  `supportsCatalogsInProcedureCalls` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsCatalogsInTableDefinitions

    public boolean supportsCatalogsInTableDefinitions()
                                               throws java.sql.SQLException

Specified by:
  `supportsCatalogsInTableDefinitions` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsCatalogsInIndexDefinitions

    public boolean supportsCatalogsInIndexDefinitions()
                                               throws java.sql.SQLException

Specified by:
  `supportsCatalogsInIndexDefinitions` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsCatalogsInPrivilegeDefinitions

    public boolean supportsCatalogsInPrivilegeDefinitions()
                                                   throws java.sql.SQLException

Specified by:
  `supportsCatalogsInPrivilegeDefinitions` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsPositionedDelete

    public boolean supportsPositionedDelete()
                                     throws java.sql.SQLException

Specified by:
  `supportsPositionedDelete` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsPositionedUpdate

    public boolean supportsPositionedUpdate()
                                     throws java.sql.SQLException

Specified by:
  `supportsPositionedUpdate` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsSelectForUpdate

    public boolean supportsSelectForUpdate()
                                    throws java.sql.SQLException

Specified by:
  `supportsSelectForUpdate` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsStoredProcedures

    public boolean supportsStoredProcedures()
                                     throws java.sql.SQLException

Specified by:
  `supportsStoredProcedures` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsSubqueriesInComparisons

    public boolean supportsSubqueriesInComparisons()
                                            throws java.sql.SQLException

Specified by:
  `supportsSubqueriesInComparisons` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsSubqueriesInExists

    public boolean supportsSubqueriesInExists()
                                       throws java.sql.SQLException

Specified by:
  `supportsSubqueriesInExists` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsSubqueriesInIns

    public boolean supportsSubqueriesInIns()
                                    throws java.sql.SQLException

Specified by:
  `supportsSubqueriesInIns` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsSubqueriesInQuantifieds

    public boolean supportsSubqueriesInQuantifieds()
                                            throws java.sql.SQLException

Specified by:
  `supportsSubqueriesInQuantifieds` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsCorrelatedSubqueries

    public boolean supportsCorrelatedSubqueries()
                                         throws java.sql.SQLException

Specified by:
  `supportsCorrelatedSubqueries` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsUnion

    public boolean supportsUnion()
                          throws java.sql.SQLException

Specified by:
  `supportsUnion` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsUnionAll

    public boolean supportsUnionAll()
                             throws java.sql.SQLException

Specified by:
  `supportsUnionAll` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsOpenCursorsAcrossCommit

    public boolean supportsOpenCursorsAcrossCommit()
                                            throws java.sql.SQLException

Specified by:
  `supportsOpenCursorsAcrossCommit` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsOpenCursorsAcrossRollback

    public boolean supportsOpenCursorsAcrossRollback()
                                              throws java.sql.SQLException

Specified by:
  `supportsOpenCursorsAcrossRollback` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsOpenStatementsAcrossCommit

    public boolean supportsOpenStatementsAcrossCommit()
                                               throws java.sql.SQLException

Specified by:
  `supportsOpenStatementsAcrossCommit` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsOpenStatementsAcrossRollback

    public boolean supportsOpenStatementsAcrossRollback()
                                                 throws java.sql.SQLException

Specified by:
  `supportsOpenStatementsAcrossRollback` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxBinaryLiteralLength

    public int getMaxBinaryLiteralLength()
                                  throws java.sql.SQLException

Specified by:
  `getMaxBinaryLiteralLength` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxCharLiteralLength

    public int getMaxCharLiteralLength()
                                throws java.sql.SQLException

Specified by:
  `getMaxCharLiteralLength` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxColumnNameLength

    public int getMaxColumnNameLength()
                               throws java.sql.SQLException

Specified by:
  `getMaxColumnNameLength` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxColumnsInGroupBy

    public int getMaxColumnsInGroupBy()
                               throws java.sql.SQLException

Specified by:
  `getMaxColumnsInGroupBy` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxColumnsInIndex

    public int getMaxColumnsInIndex()
                             throws java.sql.SQLException

Specified by:
  `getMaxColumnsInIndex` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxColumnsInOrderBy

    public int getMaxColumnsInOrderBy()
                               throws java.sql.SQLException

Specified by:
  `getMaxColumnsInOrderBy` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxColumnsInSelect

    public int getMaxColumnsInSelect()
                              throws java.sql.SQLException

Specified by:
  `getMaxColumnsInSelect` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxColumnsInTable

    public int getMaxColumnsInTable()
                             throws java.sql.SQLException

Specified by:
  `getMaxColumnsInTable` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxConnections

    public int getMaxConnections()
                          throws java.sql.SQLException

Specified by:
  `getMaxConnections` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxCursorNameLength

    public int getMaxCursorNameLength()
                               throws java.sql.SQLException

Specified by:
  `getMaxCursorNameLength` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxIndexLength

    public int getMaxIndexLength()
                          throws java.sql.SQLException

Specified by:
  `getMaxIndexLength` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxSchemaNameLength

    public int getMaxSchemaNameLength()
                               throws java.sql.SQLException

Specified by:
  `getMaxSchemaNameLength` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxProcedureNameLength

    public int getMaxProcedureNameLength()
                                  throws java.sql.SQLException

Specified by:
  `getMaxProcedureNameLength` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxCatalogNameLength

    public int getMaxCatalogNameLength()
                                throws java.sql.SQLException

Specified by:
  `getMaxCatalogNameLength` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxRowSize

    public int getMaxRowSize()
                      throws java.sql.SQLException

Specified by:
  `getMaxRowSize` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### doesMaxRowSizeIncludeBlobs

    public boolean doesMaxRowSizeIncludeBlobs()
                                       throws java.sql.SQLException

Specified by:
  `doesMaxRowSizeIncludeBlobs` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxStatementLength

    public int getMaxStatementLength()
                              throws java.sql.SQLException

Specified by:
  `getMaxStatementLength` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxStatements

    public int getMaxStatements()
                         throws java.sql.SQLException

Specified by:
  `getMaxStatements` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxTableNameLength

    public int getMaxTableNameLength()
                              throws java.sql.SQLException

Specified by:
  `getMaxTableNameLength` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxTablesInSelect

    public int getMaxTablesInSelect()
                             throws java.sql.SQLException

Specified by:
  `getMaxTablesInSelect` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getMaxUserNameLength

    public int getMaxUserNameLength()
                             throws java.sql.SQLException

Specified by:
  `getMaxUserNameLength` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getDefaultTransactionIsolation

    public int getDefaultTransactionIsolation()
                                       throws java.sql.SQLException

Specified by:
  `getDefaultTransactionIsolation` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsTransactions

    public boolean supportsTransactions()
                                 throws java.sql.SQLException

Specified by:
  `supportsTransactions` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsTransactionIsolationLevel

    public boolean supportsTransactionIsolationLevel​(int level)
                                              throws java.sql.SQLException

Specified by:
  `supportsTransactionIsolationLevel` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsDataDefinitionAndDataManipulationTransactions

    public boolean supportsDataDefinitionAndDataManipulationTransactions()
                                                                  throws java.sql.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 `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsDataManipulationTransactionsOnly

    public boolean supportsDataManipulationTransactionsOnly()
                                                     throws java.sql.SQLException

Specified by:
  `supportsDataManipulationTransactionsOnly` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### dataDefinitionCausesTransactionCommit

    public boolean dataDefinitionCausesTransactionCommit()
                                                  throws java.sql.SQLException

Read the note on `supportsDataDefinitionAndDataManipulationTransactions()`.

Specified by:
  `dataDefinitionCausesTransactionCommit` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### dataDefinitionIgnoredInTransactions

    public boolean dataDefinitionIgnoredInTransactions()
                                                throws java.sql.SQLException

Read the note on `supportsDataDefinitionAndDataManipulationTransactions()`.

Specified by:
  `dataDefinitionIgnoredInTransactions` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getProcedures

    public java.sql.ResultSet getProcedures​(java.lang.String catalog,
                                            java.lang.String schemaPattern,
                                            java.lang.String procedureNamePattern)
                                     throws java.sql.SQLException

Specified by:
  `getProcedures` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getProcedureColumns

    public java.sql.ResultSet getProcedureColumns​(java.lang.String catalog,
                                                  java.lang.String schemaPattern,
                                                  java.lang.String procedureNamePattern,
                                                  java.lang.String columnNamePattern)
                                           throws java.sql.SQLException

Specified by:
  `getProcedureColumns` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getTables

    public java.sql.ResultSet getTables​(java.lang.String catalog,
                                        java.lang.String schemaPattern,
                                        java.lang.String tableNamePattern,
                                        java.lang.String[] types)
                                 throws java.sql.SQLException

Specified by:
  `getTables` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getSchemas

    public java.sql.ResultSet getSchemas()
                                  throws java.sql.SQLException

Specified by:
  `getSchemas` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getCatalogs

    public java.sql.ResultSet getCatalogs()
                                   throws java.sql.SQLException

Specified by:
  `getCatalogs` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getTableTypes

    public java.sql.ResultSet getTableTypes()
                                     throws java.sql.SQLException

Specified by:
  `getTableTypes` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getTableTypeNames

    public java.lang.String[] getTableTypeNames()
                                         throws java.sql.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:
  `java.sql.SQLException` - For problems determining supported table types
See Also:
  `DatabaseMetaData.getTableTypes()`

#### getColumns

    public java.sql.ResultSet getColumns​(java.lang.String catalog,
                                         java.lang.String schemaPattern,
                                         java.lang.String tableNamePattern,
                                         java.lang.String columnNamePattern)
                                  throws java.sql.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 `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getColumnPrivileges

    public java.sql.ResultSet getColumnPrivileges​(java.lang.String catalog,
                                                  java.lang.String schema,
                                                  java.lang.String table,
                                                  java.lang.String columnNamePattern)
                                           throws java.sql.SQLException

Specified by:
  `getColumnPrivileges` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getTablePrivileges

    public java.sql.ResultSet getTablePrivileges​(java.lang.String catalog,
                                                 java.lang.String schemaPattern,
                                                 java.lang.String tableNamePattern)
                                          throws java.sql.SQLException

Specified by:
  `getTablePrivileges` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### buildTablePrivilegeRSMetaData

    protected final RowDescriptor buildTablePrivilegeRSMetaData()

#### processTablePrivileges

    protected final FBResultSet processTablePrivileges​(RowDescriptor rowDescriptor,
                                                       java.sql.ResultSet fbTablePrivileges)
                                                throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### getBestRowIdentifier

    public java.sql.ResultSet getBestRowIdentifier​(java.lang.String catalog,
                                                   java.lang.String schema,
                                                   java.lang.String table,
                                                   int scope,
                                                   boolean nullable)
                                            throws java.sql.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 `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getVersionColumns

    public java.sql.ResultSet getVersionColumns​(java.lang.String catalog,
                                                java.lang.String schema,
                                                java.lang.String table)
                                         throws java.sql.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 `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getPrimaryKeys

    public java.sql.ResultSet getPrimaryKeys​(java.lang.String catalog,
                                             java.lang.String schema,
                                             java.lang.String table)
                                      throws java.sql.SQLException

Specified by:
  `getPrimaryKeys` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getImportedKeys

    public java.sql.ResultSet getImportedKeys​(java.lang.String catalog,
                                              java.lang.String schema,
                                              java.lang.String table)
                                       throws java.sql.SQLException

Specified by:
  `getImportedKeys` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getExportedKeys

    public java.sql.ResultSet getExportedKeys​(java.lang.String catalog,
                                              java.lang.String schema,
                                              java.lang.String table)
                                       throws java.sql.SQLException

Specified by:
  `getExportedKeys` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getCrossReference

    public java.sql.ResultSet getCrossReference​(java.lang.String primaryCatalog,
                                                java.lang.String primarySchema,
                                                java.lang.String primaryTable,
                                                java.lang.String foreignCatalog,
                                                java.lang.String foreignSchema,
                                                java.lang.String foreignTable)
                                         throws java.sql.SQLException

Specified by:
  `getCrossReference` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getTypeInfo

    public java.sql.ResultSet getTypeInfo()
                                   throws java.sql.SQLException

Specified by:
  `getTypeInfo` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getIndexInfo

    public java.sql.ResultSet getIndexInfo​(java.lang.String catalog,
                                           java.lang.String schema,
                                           java.lang.String table,
                                           boolean unique,
                                           boolean approximate)
                                    throws java.sql.SQLException

Specified by:
  `getIndexInfo` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsResultSetType

    public boolean supportsResultSetType​(int type)
                                  throws java.sql.SQLException

Specified by:
  `supportsResultSetType` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsResultSetConcurrency

    public boolean supportsResultSetConcurrency​(int type,
                                                int concurrency)
                                         throws java.sql.SQLException

Specified by:
  `supportsResultSetConcurrency` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### ownUpdatesAreVisible

    public boolean ownUpdatesAreVisible​(int type)
                                 throws java.sql.SQLException

Specified by:
  `ownUpdatesAreVisible` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### ownDeletesAreVisible

    public boolean ownDeletesAreVisible​(int type)
                                 throws java.sql.SQLException

Specified by:
  `ownDeletesAreVisible` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### ownInsertsAreVisible

    public boolean ownInsertsAreVisible​(int type)
                                 throws java.sql.SQLException

Specified by:
  `ownInsertsAreVisible` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### othersUpdatesAreVisible

    public boolean othersUpdatesAreVisible​(int type)
                                    throws java.sql.SQLException

Specified by:
  `othersUpdatesAreVisible` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### othersDeletesAreVisible

    public boolean othersDeletesAreVisible​(int type)
                                    throws java.sql.SQLException

Specified by:
  `othersDeletesAreVisible` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### othersInsertsAreVisible

    public boolean othersInsertsAreVisible​(int type)
                                    throws java.sql.SQLException

Specified by:
  `othersInsertsAreVisible` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### updatesAreDetected

    public boolean updatesAreDetected​(int type)
                               throws java.sql.SQLException

Specified by:
  `updatesAreDetected` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### deletesAreDetected

    public boolean deletesAreDetected​(int type)
                               throws java.sql.SQLException

Specified by:
  `deletesAreDetected` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### insertsAreDetected

    public boolean insertsAreDetected​(int type)
                               throws java.sql.SQLException

Specified by:
  `insertsAreDetected` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsBatchUpdates

    public boolean supportsBatchUpdates()
                                 throws java.sql.SQLException

Specified by:
  `supportsBatchUpdates` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getUDTs

    public java.sql.ResultSet getUDTs​(java.lang.String catalog,
                                      java.lang.String schemaPattern,
                                      java.lang.String typeNamePattern,
                                      int[] types)
                               throws java.sql.SQLException

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

Specified by:
  `getUDTs` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getConnection

    public java.sql.Connection getConnection()
                                      throws java.sql.SQLException

Specified by:
  `getConnection` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getAttributes

    public java.sql.ResultSet getAttributes​(java.lang.String catalog,
                                            java.lang.String schemaPattern,
                                            java.lang.String typeNamePattern,
                                            java.lang.String attributeNamePattern)
                                     throws java.sql.SQLException

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

Specified by:
  `getAttributes` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsSavepoints

    public boolean supportsSavepoints()
                               throws java.sql.SQLException

Specified by:
  `supportsSavepoints` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsNamedParameters

    public boolean supportsNamedParameters()
                                    throws java.sql.SQLException

Specified by:
  `supportsNamedParameters` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsMultipleOpenResults

    public boolean supportsMultipleOpenResults()
                                        throws java.sql.SQLException

Specified by:
  `supportsMultipleOpenResults` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsGetGeneratedKeys

    public boolean supportsGetGeneratedKeys()
                                     throws java.sql.SQLException

Specified by:
  `supportsGetGeneratedKeys` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getSuperTypes

    public java.sql.ResultSet getSuperTypes​(java.lang.String catalog,
                                            java.lang.String schemaPattern,
                                            java.lang.String tableNamePattern)
                                     throws java.sql.SQLException

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

Specified by:
  `getSuperTypes` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getSuperTables

    public java.sql.ResultSet getSuperTables​(java.lang.String catalog,
                                             java.lang.String schemaPattern,
                                             java.lang.String tableNamePattern)
                                      throws java.sql.SQLException

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

Specified by:
  `getSuperTables` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsResultSetHoldability

    public boolean supportsResultSetHoldability​(int holdability)
                                         throws java.sql.SQLException

Specified by:
  `supportsResultSetHoldability` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getResultSetHoldability

    public int getResultSetHoldability()
                                throws java.sql.SQLException

Specified by:
  `getResultSetHoldability` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getDatabaseMajorVersion

    public int getDatabaseMajorVersion()
                                throws java.sql.SQLException

Specified by:
  `getDatabaseMajorVersion` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getDatabaseMinorVersion

    public int getDatabaseMinorVersion()
                                throws java.sql.SQLException

Specified by:
  `getDatabaseMinorVersion` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getOdsMajorVersion

    public int getOdsMajorVersion()
                           throws java.sql.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:
  `java.sql.SQLException` - if a database access error occurs

#### getOdsMinorVersion

    public int getOdsMinorVersion()
                           throws java.sql.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:
  `java.sql.SQLException` - if a database access error occurs

#### getDatabaseDialect

    public int getDatabaseDialect()
                           throws java.sql.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:
  `java.sql.SQLException` - if a database access error occurs
See Also:
  `FirebirdDatabaseMetaData.getConnectionDialect()`

#### getConnectionDialect

    public int getConnectionDialect()
                             throws java.sql.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:
  `java.sql.SQLException` - if a database access error occurs
See Also:
  `FirebirdDatabaseMetaData.getDatabaseDialect()`

#### getSQLStateType

    public int getSQLStateType()
                        throws java.sql.SQLException

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

Specified by:
  `getSQLStateType` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### supportsStoredFunctionsUsingCallSyntax

    public boolean supportsStoredFunctionsUsingCallSyntax()
                                                   throws java.sql.SQLException

Specified by:
  `supportsStoredFunctionsUsingCallSyntax` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### autoCommitFailureClosesAllResultSets

    public boolean autoCommitFailureClosesAllResultSets()
                                                 throws java.sql.SQLException

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

Specified by:
  `autoCommitFailureClosesAllResultSets` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getClientInfoProperties

    public java.sql.ResultSet getClientInfoProperties()
                                               throws java.sql.SQLException

Specified by:
  `getClientInfoProperties` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getFunctionColumns

    public java.sql.ResultSet getFunctionColumns​(java.lang.String catalog,
                                                 java.lang.String schemaPattern,
                                                 java.lang.String functionNamePattern,
                                                 java.lang.String columnNamePattern)
                                          throws java.sql.SQLException

This method does not return columns of functions defined in packages.

Specified by:
  `getFunctionColumns` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getFunctions

    public java.sql.ResultSet getFunctions​(java.lang.String catalog,
                                           java.lang.String schemaPattern,
                                           java.lang.String functionNamePattern)
                                    throws java.sql.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)

This method does not return functions defined in packages.

Specified by:
  `getFunctions` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getSchemas

    public java.sql.ResultSet getSchemas​(java.lang.String catalog,
                                         java.lang.String schemaPattern)
                                  throws java.sql.SQLException

Specified by:
  `getSchemas` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### isWrapperFor

    public boolean isWrapperFor​(java.lang.Class<?> iface)
                         throws java.sql.SQLException

Specified by:
  `isWrapperFor` in interface `java.sql.Wrapper`
Throws:
  `java.sql.SQLException`

#### unwrap

    public <T> T unwrap​(java.lang.Class<T> iface)
                 throws java.sql.SQLException

Specified by:
  `unwrap` in interface `java.sql.Wrapper`
Throws:
  `java.sql.SQLException`

#### hasNoWildcards

    @Deprecated
    public static boolean hasNoWildcards​(java.lang.String pattern)

Deprecated.
Will be removed in Jaybird 5
Determine if there are no SQL wildcard characters ('%' or '_') in the given pattern.

Parameters:
  `pattern` - The pattern to be checked for wildcards
Returns:
  `true` if there are no wildcards in the pattern, `false` otherwise

#### stripEscape

    @Deprecated
    public static java.lang.String stripEscape​(java.lang.String pattern)

Deprecated.
Will be removed in Jaybird 5
Strips all backslash-escapes from a string.

Parameters:
  `pattern` - The string to be stripped
Returns:
  pattern with all backslash-escapes removed

#### escapeWildcards

    public static java.lang.String escapeWildcards​(java.lang.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.

#### getWantsSystemTables

    protected java.lang.String getWantsSystemTables​(java.lang.String[] types)

#### getWantsTables

    protected java.lang.String getWantsTables​(java.lang.String[] types)

#### getWantsViews

    protected java.lang.String getWantsViews​(java.lang.String[] types)

#### getPseudoColumns

    public java.sql.ResultSet getPseudoColumns​(java.lang.String catalog,
                                               java.lang.String schemaPattern,
                                               java.lang.String tableNamePattern,
                                               java.lang.String columnNamePattern)
                                        throws java.sql.SQLException

Specified by:
  `getPseudoColumns` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### generatedKeyAlwaysReturned

    public boolean generatedKeyAlwaysReturned()
                                       throws java.sql.SQLException

Specified by:
  `generatedKeyAlwaysReturned` in interface `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getProcedureSourceCode

    public java.lang.String getProcedureSourceCode​(java.lang.String procedureName)
                                            throws java.sql.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:
  `java.sql.SQLException` - if specified procedure cannot be found.

#### getTriggerSourceCode

    public java.lang.String getTriggerSourceCode​(java.lang.String triggerName)
                                          throws java.sql.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:
  `java.sql.SQLException` - if specified trigger cannot be found.

#### getViewSourceCode

    public java.lang.String getViewSourceCode​(java.lang.String viewName)
                                       throws java.sql.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:
  `java.sql.SQLException` - if specified view cannot be found.

#### getBytes

    protected static byte[] getBytes​(java.lang.String value)

#### doQuery

    protected java.sql.ResultSet doQuery​(java.lang.String sql,
                                         java.util.List<java.lang.String> params)
                                  throws java.sql.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:
  `java.sql.SQLException` - if a database access error occurs

#### doQuery

    protected java.sql.ResultSet doQuery​(java.lang.String sql,
                                         java.util.List<java.lang.String> params,
                                         boolean standalone)
                                  throws java.sql.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:
  `java.sql.SQLException` - if a database access error occurs

#### getRowIdLifetime

    public java.sql.RowIdLifetime getRowIdLifetime()
                                            throws java.sql.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 `java.sql.DatabaseMetaData`
Throws:
  `java.sql.SQLException`

#### getJDBCMajorVersion

    public int getJDBCMajorVersion()

Specified by:
  `getJDBCMajorVersion` in interface `java.sql.DatabaseMetaData`

#### getJDBCMinorVersion

    public int getJDBCMinorVersion()

Specified by:
  `getJDBCMinorVersion` in interface `java.sql.DatabaseMetaData`

#### getDbMetadataMediator

    protected DbMetadataMediator getDbMetadataMediator()