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
    Modifier and Type | Field | Description
    --- | --- | ---
    `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
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `FBDatabaseMetaData​(FBConnection c)` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    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 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.
    `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)` |
    `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​(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

    - #### 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

  - ### 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

      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 `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

      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. This note does not apply to the `OOREMOTE` sub-protocol, which already restricts privileges to the current user and `PUBLIC`.

      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

      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. This note does not apply to the `OOREMOTE` sub-protocol, which already restricts privileges to the current user and `PUBLIC`.

      Specified by:
        `getTablePrivileges` in interface `java.sql.DatabaseMetaData`
      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`

    - #### 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.

    - #### 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()