org.h2.jdbc

## Class JdbcDatabaseMetaData

- java.lang.Object
- - org.h2.message.TraceObject
  - - org.h2.jdbc.JdbcDatabaseMetaData

- All Implemented Interfaces:
    java.sql.DatabaseMetaData, java.sql.Wrapper, JdbcDatabaseMetaDataBackwardsCompat

      public final class JdbcDatabaseMetaData
      extends org.h2.message.TraceObject
      implements java.sql.DatabaseMetaData, JdbcDatabaseMetaDataBackwardsCompat

  Represents the meta data for a database.

- - ### Field Summary

    - ### Fields inherited from class org.h2.message.TraceObject

      `ARRAY, BLOB, CALLABLE_STATEMENT, CLOB, CONNECTION, DATA_SOURCE, DATABASE_META_DATA, PARAMETER_META_DATA, PREPARED_STATEMENT, RESULT_SET, RESULT_SET_META_DATA, SAVEPOINT, SQLXML, STATEMENT, trace, XA_DATA_SOURCE, XID`

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `allProceduresAreCallable()` Checks if all procedures callable.
    `boolean` | `allTablesAreSelectable()` Checks if it possible to query all tables returned by getTables.
    `boolean` | `autoCommitFailureClosesAllResultSets()` Returns whether an exception while auto commit is on closes all result sets.
    `boolean` | `dataDefinitionCausesTransactionCommit()` Returns whether CREATE/DROP commit an open transaction.
    `boolean` | `dataDefinitionIgnoredInTransactions()` Returns whether CREATE/DROP do not affect transactions.
    `boolean` | `deletesAreDetected(int type)` Returns whether deletes are detected.
    `boolean` | `doesMaxRowSizeIncludeBlobs()` Returns whether the maximum row size includes blobs.
    `boolean` | `generatedKeyAlwaysReturned()` Returns whether database always returns generated keys if valid names or indexes of columns were specified and command was completed successfully.
    `java.sql.ResultSet` | `getAttributes(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String typeNamePattern, java.lang.String attributeNamePattern)` [Not supported]
    `java.sql.ResultSet` | `getBestRowIdentifier(java.lang.String catalog, java.lang.String schema, java.lang.String table, int scope, boolean nullable)` Gets the list of columns that best identifier a row in a table.
    `java.sql.ResultSet` | `getCatalogs()` Gets the list of catalogs.
    `java.lang.String` | `getCatalogSeparator()` Returns the catalog separator.
    `java.lang.String` | `getCatalogTerm()` Returns the term for "catalog".
    `java.sql.ResultSet` | `getClientInfoProperties()`
    `java.sql.ResultSet` | `getColumnPrivileges(java.lang.String catalog, java.lang.String schema, java.lang.String table, java.lang.String columnNamePattern)` Gets the list of column privileges.
    `java.sql.ResultSet` | `getColumns(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern, java.lang.String columnNamePattern)` Gets the list of columns.
    `java.sql.Connection` | `getConnection()` Returns the connection that created this object.
    `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)` Gets the list of foreign key columns that references a table, as well as the list of primary key columns that are references by a table.
    `int` | `getDatabaseMajorVersion()` Gets the major version of the database.
    `int` | `getDatabaseMinorVersion()` Gets the minor version of the database.
    `java.lang.String` | `getDatabaseProductName()` Gets the database product name.
    `java.lang.String` | `getDatabaseProductVersion()` Gets the product version of the database.
    `int` | `getDefaultTransactionIsolation()` Returns the default transaction isolation level.
    `int` | `getDriverMajorVersion()` Returns the major version of this driver.
    `int` | `getDriverMinorVersion()` Returns the minor version of this driver.
    `java.lang.String` | `getDriverName()` Gets the name of the JDBC driver.
    `java.lang.String` | `getDriverVersion()` Gets the version number of the driver.
    `java.sql.ResultSet` | `getExportedKeys(java.lang.String catalog, java.lang.String schema, java.lang.String table)` Gets the list of foreign key columns that reference a table.
    `java.lang.String` | `getExtraNameCharacters()` Returns the characters that are allowed for identifiers in addiction to A-Z, a-z, 0-9 and '_'.
    `java.sql.ResultSet` | `getFunctionColumns(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String functionNamePattern, java.lang.String columnNamePattern)` [Not supported] Gets the list of function columns.
    `java.sql.ResultSet` | `getFunctions(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String functionNamePattern)` [Not supported] Gets the list of functions.
    `java.lang.String` | `getIdentifierQuoteString()` Returns the string used to quote identifiers.
    `java.sql.ResultSet` | `getImportedKeys(java.lang.String catalog, java.lang.String schema, java.lang.String table)` Gets the list of primary key columns that are referenced by a table.
    `java.sql.ResultSet` | `getIndexInfo(java.lang.String catalog, java.lang.String schema, java.lang.String table, boolean unique, boolean approximate)` Gets the list of indexes for this database.
    `int` | `getJDBCMajorVersion()` Gets the major version of the supported JDBC API.
    `int` | `getJDBCMinorVersion()` Gets the minor version of the supported JDBC API.
    `int` | `getMaxBinaryLiteralLength()` Returns the maximum length for hex values (characters).
    `int` | `getMaxCatalogNameLength()` Returns the maximum length for a catalog name.
    `int` | `getMaxCharLiteralLength()` Returns the maximum length for literals.
    `int` | `getMaxColumnNameLength()` Returns the maximum length for column names.
    `int` | `getMaxColumnsInGroupBy()` Returns the maximum number of columns in GROUP BY.
    `int` | `getMaxColumnsInIndex()` Returns the maximum number of columns in CREATE INDEX.
    `int` | `getMaxColumnsInOrderBy()` Returns the maximum number of columns in ORDER BY.
    `int` | `getMaxColumnsInSelect()` Returns the maximum number of columns in SELECT.
    `int` | `getMaxColumnsInTable()` Returns the maximum number of columns in CREATE TABLE.
    `int` | `getMaxConnections()` Returns the maximum number of open connection.
    `int` | `getMaxCursorNameLength()` Returns the maximum length for a cursor name.
    `int` | `getMaxIndexLength()` Returns the maximum length for an index (in bytes).
    `int` | `getMaxProcedureNameLength()` Returns the maximum length for a procedure name.
    `int` | `getMaxRowSize()` Returns the maximum size of a row (in bytes).
    `int` | `getMaxSchemaNameLength()` Returns the maximum length for a schema name.
    `int` | `getMaxStatementLength()` Returns the maximum length of a statement.
    `int` | `getMaxStatements()` Returns the maximum number of open statements.
    `int` | `getMaxTableNameLength()` Returns the maximum length for a table name.
    `int` | `getMaxTablesInSelect()` Returns the maximum number of tables in a SELECT.
    `int` | `getMaxUserNameLength()` Returns the maximum length for a user name.
    `java.lang.String` | `getNumericFunctions()` Returns the list of numeric functions supported by this database.
    `java.sql.ResultSet` | `getPrimaryKeys(java.lang.String catalog, java.lang.String schema, java.lang.String table)` Gets the primary key columns for a table.
    `java.sql.ResultSet` | `getProcedureColumns(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String procedureNamePattern, java.lang.String columnNamePattern)` Gets the list of procedure columns.
    `java.sql.ResultSet` | `getProcedures(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String procedureNamePattern)` Gets the list of procedures.
    `java.lang.String` | `getProcedureTerm()` Returns the term for "procedure".
    `java.sql.ResultSet` | `getPseudoColumns(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern, java.lang.String columnNamePattern)` Gets the list of pseudo and invisible columns.
    `int` | `getResultSetHoldability()` Gets the result set holdability.
    `java.sql.RowIdLifetime` | `getRowIdLifetime()` Get the lifetime of a rowid.
    `java.sql.ResultSet` | `getSchemas()` Gets the list of schemas.
    `java.sql.ResultSet` | `getSchemas(java.lang.String catalogPattern, java.lang.String schemaPattern)` Gets the list of schemas in the database.
    `java.lang.String` | `getSchemaTerm()` Returns the term for "schema".
    `java.lang.String` | `getSearchStringEscape()` Returns the default escape character for DatabaseMetaData search patterns.
    `java.lang.String` | `getSQLKeywords()` Gets the comma-separated list of all SQL keywords that are not supported as unquoted identifiers, in addition to the SQL:2003 reserved words.
    `int` | `getSQLStateType()` Gets the SQL State type.
    `java.lang.String` | `getStringFunctions()` Returns the list of string functions supported by this database.
    `java.sql.ResultSet` | `getSuperTables(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern)` Get the list of super tables of a table.
    `java.sql.ResultSet` | `getSuperTypes(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String typeNamePattern)` [Not supported]
    `java.lang.String` | `getSystemFunctions()` Returns the list of system functions supported by this database.
    `java.sql.ResultSet` | `getTablePrivileges(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern)` Gets the list of table privileges.
    `java.sql.ResultSet` | `getTables(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern, java.lang.String[] types)` Gets the list of tables in the database.
    `java.sql.ResultSet` | `getTableTypes()` Gets the list of table types.
    `java.lang.String` | `getTimeDateFunctions()` Returns the list of date and time functions supported by this database.
    `java.sql.ResultSet` | `getTypeInfo()` Gets the list of data types.
    `java.sql.ResultSet` | `getUDTs(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String typeNamePattern, int[] types)` Gets the list of user-defined data types.
    `java.lang.String` | `getURL()` Returns the database URL for this connection.
    `java.lang.String` | `getUserName()` Returns the user name as passed to DriverManager.getConnection(url, user, password).
    `java.sql.ResultSet` | `getVersionColumns(java.lang.String catalog, java.lang.String schema, java.lang.String table)` Get the list of columns that are update when any value is updated.
    `boolean` | `insertsAreDetected(int type)` Returns whether inserts are detected.
    `boolean` | `isCatalogAtStart()` Returns whether the catalog is at the beginning.
    `boolean` | `isReadOnly()` Returns the same as Connection.isReadOnly().
    `boolean` | `isWrapperFor(java.lang.Class<?> iface)` Checks if unwrap can return an object of this class.
    `boolean` | `locatorsUpdateCopy()` Does the database make a copy before updating.
    `boolean` | `nullPlusNonNullIsNull()` Returns whether NULL+1 is NULL or not.
    `boolean` | `nullsAreSortedAtEnd()` Checks if NULL values are sorted at the end (no matter if ASC or DESC is used).
    `boolean` | `nullsAreSortedAtStart()` Checks if NULL values are sorted at the beginning (no matter if ASC or DESC is used).
    `boolean` | `nullsAreSortedHigh()` Checks if NULL values are sorted high (bigger than anything that is not null).
    `boolean` | `nullsAreSortedLow()` Checks if NULL values are sorted low (smaller than anything that is not null).
    `boolean` | `othersDeletesAreVisible(int type)` Returns whether other deletes are visible.
    `boolean` | `othersInsertsAreVisible(int type)` Returns whether other inserts are visible.
    `boolean` | `othersUpdatesAreVisible(int type)` Returns whether other updates are visible.
    `boolean` | `ownDeletesAreVisible(int type)` Returns whether own deletes are visible.
    `boolean` | `ownInsertsAreVisible(int type)` Returns whether own inserts are visible.
    `boolean` | `ownUpdatesAreVisible(int type)` Returns whether own updates are visible.
    `boolean` | `storesLowerCaseIdentifiers()` Checks if for CREATE TABLE Test(ID INT), getTables returns test as the table name.
    `boolean` | `storesLowerCaseQuotedIdentifiers()` Checks if for CREATE TABLE "Test"(ID INT), getTables returns test as the table name.
    `boolean` | `storesMixedCaseIdentifiers()` Checks if for CREATE TABLE Test(ID INT), getTables returns Test as the table name and identifiers are not case sensitive.
    `boolean` | `storesMixedCaseQuotedIdentifiers()` Checks if for CREATE TABLE "Test"(ID INT), getTables returns Test as the table name and identifiers are case insensitive.
    `boolean` | `storesUpperCaseIdentifiers()` Checks if for CREATE TABLE Test(ID INT), getTables returns TEST as the table name.
    `boolean` | `storesUpperCaseQuotedIdentifiers()` Checks if for CREATE TABLE "Test"(ID INT), getTables returns TEST as the table name.
    `boolean` | `supportsAlterTableWithAddColumn()` Returns whether alter table with add column is supported.
    `boolean` | `supportsAlterTableWithDropColumn()` Returns whether alter table with drop column is supported.
    `boolean` | `supportsANSI92EntryLevelSQL()` Returns whether SQL-92 entry level grammar is supported.
    `boolean` | `supportsANSI92FullSQL()` Returns whether SQL-92 full level grammar is supported.
    `boolean` | `supportsANSI92IntermediateSQL()` Returns whether SQL-92 intermediate level grammar is supported.
    `boolean` | `supportsBatchUpdates()` Returns whether batch updates are supported.
    `boolean` | `supportsCatalogsInDataManipulation()` Returns whether the catalog name in INSERT, UPDATE, DELETE is supported.
    `boolean` | `supportsCatalogsInIndexDefinitions()` Returns whether the catalog name in CREATE INDEX is supported.
    `boolean` | `supportsCatalogsInPrivilegeDefinitions()` Returns whether the catalog name in GRANT is supported.
    `boolean` | `supportsCatalogsInProcedureCalls()` Returns whether the catalog name in procedure calls is supported.
    `boolean` | `supportsCatalogsInTableDefinitions()` Returns whether the catalog name in CREATE TABLE is supported.
    `boolean` | `supportsColumnAliasing()` Returns whether column aliasing is supported.
    `boolean` | `supportsConvert()` Returns whether CONVERT is supported.
    `boolean` | `supportsConvert(int fromType, int toType)` Returns whether CONVERT is supported for one datatype to another.
    `boolean` | `supportsCoreSQLGrammar()` Returns whether ODBC Core SQL grammar is supported.
    `boolean` | `supportsCorrelatedSubqueries()` Returns whether correlated subqueries are supported.
    `boolean` | `supportsDataDefinitionAndDataManipulationTransactions()` Returns whether data manipulation and CREATE/DROP is supported in transactions.
    `boolean` | `supportsDataManipulationTransactionsOnly()` Returns whether only data manipulations are supported in transactions.
    `boolean` | `supportsDifferentTableCorrelationNames()` Returns whether table correlation names (table alias) are restricted to be different than table names.
    `boolean` | `supportsExpressionsInOrderBy()` Returns whether expression in ORDER BY are supported.
    `boolean` | `supportsExtendedSQLGrammar()` Returns whether ODBC Extended SQL grammar is supported.
    `boolean` | `supportsFullOuterJoins()` Returns whether full outer joins are supported.
    `boolean` | `supportsGetGeneratedKeys()` Does the database support getGeneratedKeys.
    `boolean` | `supportsGroupBy()` Returns whether GROUP BY is supported.
    `boolean` | `supportsGroupByBeyondSelect()` Checks whether a GROUP BY clause can use columns that are not in the SELECT clause, provided that it specifies all the columns in the SELECT clause.
    `boolean` | `supportsGroupByUnrelated()` Returns whether GROUP BY is supported if the column is not in the SELECT list.
    `boolean` | `supportsIntegrityEnhancementFacility()` Returns whether referential integrity is supported.
    `boolean` | `supportsLikeEscapeClause()` Returns whether LIKE...
    `boolean` | `supportsLimitedOuterJoins()` Returns whether limited outer joins are supported.
    `boolean` | `supportsMinimumSQLGrammar()` Returns whether ODBC Minimum SQL grammar is supported.
    `boolean` | `supportsMixedCaseIdentifiers()` Checks if for CREATE TABLE Test(ID INT), getTables returns Test as the table name and identifiers are case sensitive.
    `boolean` | `supportsMixedCaseQuotedIdentifiers()` Checks if a table created with CREATE TABLE "Test"(ID INT) is a different table than a table created with CREATE TABLE "TEST"(ID INT).
    `boolean` | `supportsMultipleOpenResults()` Does the database support multiple open result sets returned from a `CallableStatement`.
    `boolean` | `supportsMultipleResultSets()` Returns whether multiple result sets are supported.
    `boolean` | `supportsMultipleTransactions()` Returns whether multiple transactions (on different connections) are supported.
    `boolean` | `supportsNamedParameters()` Does the database support named parameters.
    `boolean` | `supportsNonNullableColumns()` Returns whether columns with NOT NULL are supported.
    `boolean` | `supportsOpenCursorsAcrossCommit()` Returns whether open result sets across commits are supported.
    `boolean` | `supportsOpenCursorsAcrossRollback()` Returns whether open result sets across rollback are supported.
    `boolean` | `supportsOpenStatementsAcrossCommit()` Returns whether open statements across commit are supported.
    `boolean` | `supportsOpenStatementsAcrossRollback()` Returns whether open statements across rollback are supported.
    `boolean` | `supportsOrderByUnrelated()` Returns whether ORDER BY is supported if the column is not in the SELECT list.
    `boolean` | `supportsOuterJoins()` Returns whether outer joins are supported.
    `boolean` | `supportsPositionedDelete()` Returns whether positioned deletes are supported.
    `boolean` | `supportsPositionedUpdate()` Returns whether positioned updates are supported.
    `boolean` | `supportsResultSetConcurrency(int type, int concurrency)` Returns whether a specific result set concurrency is supported.
    `boolean` | `supportsResultSetHoldability(int holdability)` Does this database supports a result set holdability.
    `boolean` | `supportsResultSetType(int type)` Returns whether a specific result set type is supported.
    `boolean` | `supportsSavepoints()` Does the database support savepoints.
    `boolean` | `supportsSchemasInDataManipulation()` Returns whether the schema name in INSERT, UPDATE, DELETE is supported.
    `boolean` | `supportsSchemasInIndexDefinitions()` Returns whether the schema name in CREATE INDEX is supported.
    `boolean` | `supportsSchemasInPrivilegeDefinitions()` Returns whether the schema name in GRANT is supported.
    `boolean` | `supportsSchemasInProcedureCalls()` Returns whether the schema name in procedure calls is supported.
    `boolean` | `supportsSchemasInTableDefinitions()` Returns whether the schema name in CREATE TABLE is supported.
    `boolean` | `supportsSelectForUpdate()` Returns whether SELECT ...
    `boolean` | `supportsStatementPooling()` Does the database support statement pooling.
    `boolean` | `supportsStoredFunctionsUsingCallSyntax()` Returns whether the database supports calling functions using the call syntax.
    `boolean` | `supportsStoredProcedures()` Returns whether stored procedures are supported.
    `boolean` | `supportsSubqueriesInComparisons()` Returns whether subqueries (SELECT) in comparisons are supported.
    `boolean` | `supportsSubqueriesInExists()` Returns whether SELECT in EXISTS is supported.
    `boolean` | `supportsSubqueriesInIns()` Returns whether IN(SELECT...) is supported.
    `boolean` | `supportsSubqueriesInQuantifieds()` Returns whether subqueries in quantified expression are supported.
    `boolean` | `supportsTableCorrelationNames()` Returns whether table correlation names (table alias) are supported.
    `boolean` | `supportsTransactionIsolationLevel(int level)` Returns whether a specific transaction isolation level is supported.
    `boolean` | `supportsTransactions()` Returns whether transactions are supported.
    `boolean` | `supportsUnion()` Returns whether UNION SELECT is supported.
    `boolean` | `supportsUnionAll()` Returns whether UNION ALL SELECT is supported.
    `java.lang.String` | `toString()` INTERNAL
    `<T> T` | `unwrap(java.lang.Class<T> iface)` Return an object of this class if possible.
    `boolean` | `updatesAreDetected(int type)` Returns whether updates are detected.
    `boolean` | `usesLocalFilePerTable()` Checks if this database use one file per table.
    `boolean` | `usesLocalFiles()` Checks if this database store data in local files.

    - ### Methods inherited from class org.h2.message.TraceObject

      `debugCode, debugCodeAssign, debugCodeCall, debugCodeCall, debugCodeCall, getNextId, getTraceId, getTraceObjectName, isDebugEnabled, isInfoEnabled, logAndConvert, quote, quoteArray, quoteBigDecimal, quoteBytes, quoteDate, quoteIntArray, quoteMap, quoteTime, quoteTimestamp, setTrace, unsupported`

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

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

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

      `getMaxLogicalLobSize, supportsRefCursors`

- - ### Method Detail

    - #### getDriverMajorVersion

          public int getDriverMajorVersion()

      Returns the major version of this driver.
      Specified by:
        `getDriverMajorVersion` in interface `java.sql.DatabaseMetaData`
      Returns:
        the major version number

    - #### getDriverMinorVersion

          public int getDriverMinorVersion()

      Returns the minor version of this driver.
      Specified by:
        `getDriverMinorVersion` in interface `java.sql.DatabaseMetaData`
      Returns:
        the minor version number

    - #### getDatabaseProductName

          public java.lang.String getDatabaseProductName()

      Gets the database product name.
      Specified by:
        `getDatabaseProductName` in interface `java.sql.DatabaseMetaData`
      Returns:
        the product name ("H2")

    - #### getDatabaseProductVersion

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

      Gets the product version of the database.
      Specified by:
        `getDatabaseProductVersion` in interface `java.sql.DatabaseMetaData`
      Returns:
        the product version
      Throws:
        `java.sql.SQLException`

    - #### getDriverName

          public java.lang.String getDriverName()

      Gets the name of the JDBC driver.
      Specified by:
        `getDriverName` in interface `java.sql.DatabaseMetaData`
      Returns:
        the driver name ("H2 JDBC Driver")

    - #### getDriverVersion

          public java.lang.String getDriverVersion()

      Gets the version number of the driver. The format is [MajorVersion].[MinorVersion].
      Specified by:
        `getDriverVersion` in interface `java.sql.DatabaseMetaData`
      Returns:
        the version number

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

      Gets the list of tables in the database. The result set is sorted by TABLE_TYPE, TABLE_SCHEM, and TABLE_NAME.
      1. TABLE_CAT (String) table catalog
      2. TABLE_SCHEM (String) table schema
      3. TABLE_NAME (String) table name
      4. TABLE_TYPE (String) table type
      5. REMARKS (String) comment
      6. TYPE_CAT (String) always null
      7. TYPE_SCHEM (String) always null
      8. TYPE_NAME (String) always null
      9. SELF_REFERENCING_COL_NAME (String) always null
      10. REF_GENERATION (String) always null
      11. SQL (String) the create table statement or NULL for systems tables.
      Specified by:
        `getTables` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalog` - null (to get all objects) or the catalog name
        `schemaPattern` - null (to get all objects) or a schema name (uppercase for unquoted names)
        `tableNamePattern` - null (to get all objects) or a table name (uppercase for unquoted names)
        `types` - null or a list of table types
      Returns:
        the list of columns
      Throws:
        `java.sql.SQLException` - if the connection is closed

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

      Gets the list of columns. The result set is sorted by TABLE_SCHEM, TABLE_NAME, and ORDINAL_POSITION.
      1. TABLE_CAT (String) table catalog
      2. TABLE_SCHEM (String) table schema
      3. TABLE_NAME (String) table name
      4. COLUMN_NAME (String) column name
      5. DATA_TYPE (int) data type (see java.sql.Types)
      6. TYPE_NAME (String) data type name ("INTEGER", "VARCHAR",...)
      7. COLUMN_SIZE (int) precision (values larger than 2 GB are returned as 2 GB)
      8. BUFFER_LENGTH (int) unused
      9. DECIMAL_DIGITS (int) scale (0 for INTEGER and VARCHAR)
      10. NUM_PREC_RADIX (int) radix
      11. NULLABLE (int) columnNoNulls or columnNullable
      12. REMARKS (String) comment
      13. COLUMN_DEF (String) default value
      14. SQL_DATA_TYPE (int) unused
      15. SQL_DATETIME_SUB (int) unused
      16. CHAR_OCTET_LENGTH (int) unused
      17. ORDINAL_POSITION (int) the column index (1,2,...)
      18. IS_NULLABLE (String) "NO" or "YES"
      19. SCOPE_CATALOG (String) always null
      20. SCOPE_SCHEMA (String) always null
      21. SCOPE_TABLE (String) always null
      22. SOURCE_DATA_TYPE (short) null
      23. IS_AUTOINCREMENT (String) "NO" or "YES"
      24. IS_GENERATEDCOLUMN (String) "NO" or "YES"
      Specified by:
        `getColumns` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalog` - null (to get all objects) or the catalog name
        `schemaPattern` - null (to get all objects) or a schema name (uppercase for unquoted names)
        `tableNamePattern` - null (to get all objects) or a table name (uppercase for unquoted names)
        `columnNamePattern` - null (to get all objects) or a column name (uppercase for unquoted names)
      Returns:
        the list of columns
      Throws:
        `java.sql.SQLException` - if the connection is closed

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

      Gets the list of indexes for this database. The primary key index (if there is one) is also listed, with the name PRIMARY_KEY. The result set is sorted by NON_UNIQUE ('false' first), TYPE, TABLE_SCHEM, INDEX_NAME, and ORDINAL_POSITION.
      1. TABLE_CAT (String) table catalog
      2. TABLE_SCHEM (String) table schema
      3. TABLE_NAME (String) table name
      4. NON_UNIQUE (boolean) 'true' if non-unique
      5. INDEX_QUALIFIER (String) index catalog
      6. INDEX_NAME (String) index name
      7. TYPE (short) the index type (tableIndexOther or tableIndexHash for unique indexes on non-nullable columns, tableIndexStatistics for other indexes)
      8. ORDINAL_POSITION (short) column index (1, 2, ...)
      9. COLUMN_NAME (String) column name
      10. ASC_OR_DESC (String) ascending or descending (always 'A')
      11. CARDINALITY (long) number of rows or numbers of unique values for unique indexes on non-nullable columns
      12. PAGES (long) number of pages use
      13. FILTER_CONDITION (String) filter condition (always empty)
      Specified by:
        `getIndexInfo` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalog` - null or the catalog name
        `schema` - null (to get all objects) or a schema name (uppercase for unquoted names)
        `table` - table name (must be specified)
        `unique` - only unique indexes
        `approximate` - if true, return fast, but approximate CARDINALITY
      Returns:
        the list of indexes and columns
      Throws:
        `java.sql.SQLException` - if the connection is closed

    - #### getPrimaryKeys

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

      Gets the primary key columns for a table. The result set is sorted by TABLE_SCHEM, and COLUMN_NAME (and not by KEY_SEQ).
      1. TABLE_CAT (String) table catalog
      2. TABLE_SCHEM (String) table schema
      3. TABLE_NAME (String) table name
      4. COLUMN_NAME (String) column name
      5. KEY_SEQ (short) the column index of this column (1,2,...)
      6. PK_NAME (String) the name of the primary key index
      Specified by:
        `getPrimaryKeys` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalog` - null or the catalog name
        `schema` - null (to get all objects) or a schema name (uppercase for unquoted names)
        `table` - table name (must be specified)
      Returns:
        the list of primary key columns
      Throws:
        `java.sql.SQLException` - if the connection is closed

    - #### allProceduresAreCallable

          public boolean allProceduresAreCallable()

      Checks if all procedures callable.
      Specified by:
        `allProceduresAreCallable` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### allTablesAreSelectable

          public boolean allTablesAreSelectable()

      Checks if it possible to query all tables returned by getTables.
      Specified by:
        `allTablesAreSelectable` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### getURL

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

      Returns the database URL for this connection.
      Specified by:
        `getURL` in interface `java.sql.DatabaseMetaData`
      Returns:
        the url
      Throws:
        `java.sql.SQLException`

    - #### getUserName

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

      Returns the user name as passed to DriverManager.getConnection(url, user, password).
      Specified by:
        `getUserName` in interface `java.sql.DatabaseMetaData`
      Returns:
        the user name
      Throws:
        `java.sql.SQLException`

    - #### isReadOnly

          public boolean isReadOnly()
                             throws java.sql.SQLException

      Returns the same as Connection.isReadOnly().
      Specified by:
        `isReadOnly` in interface `java.sql.DatabaseMetaData`
      Returns:
        if read only optimization is switched on
      Throws:
        `java.sql.SQLException`

    - #### nullsAreSortedHigh

          public boolean nullsAreSortedHigh()
                                     throws java.sql.SQLException

      Checks if NULL values are sorted high (bigger than anything that is not null).
      Specified by:
        `nullsAreSortedHigh` in interface `java.sql.DatabaseMetaData`
      Returns:
        if NULL values are sorted high
      Throws:
        `java.sql.SQLException`

    - #### nullsAreSortedLow

          public boolean nullsAreSortedLow()
                                    throws java.sql.SQLException

      Checks if NULL values are sorted low (smaller than anything that is not null).
      Specified by:
        `nullsAreSortedLow` in interface `java.sql.DatabaseMetaData`
      Returns:
        if NULL values are sorted low
      Throws:
        `java.sql.SQLException`

    - #### nullsAreSortedAtStart

          public boolean nullsAreSortedAtStart()
                                        throws java.sql.SQLException

      Checks if NULL values are sorted at the beginning (no matter if ASC or DESC is used).
      Specified by:
        `nullsAreSortedAtStart` in interface `java.sql.DatabaseMetaData`
      Returns:
        if NULL values are sorted at the beginning
      Throws:
        `java.sql.SQLException`

    - #### nullsAreSortedAtEnd

          public boolean nullsAreSortedAtEnd()
                                      throws java.sql.SQLException

      Checks if NULL values are sorted at the end (no matter if ASC or DESC is used).
      Specified by:
        `nullsAreSortedAtEnd` in interface `java.sql.DatabaseMetaData`
      Returns:
        if NULL values are sorted at the end
      Throws:
        `java.sql.SQLException`

    - #### getConnection

          public java.sql.Connection getConnection()

      Returns the connection that created this object.
      Specified by:
        `getConnection` in interface `java.sql.DatabaseMetaData`
      Returns:
        the connection

    - #### getProcedures

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

      Gets the list of procedures. The result set is sorted by PROCEDURE_SCHEM, PROCEDURE_NAME, and NUM_INPUT_PARAMS. There are potentially multiple procedures with the same name, each with a different number of input parameters.
      1. PROCEDURE_CAT (String) catalog
      2. PROCEDURE_SCHEM (String) schema
      3. PROCEDURE_NAME (String) name
      4. reserved
      5. reserved
      6. reserved
      7. REMARKS (String) description
      8. PROCEDURE_TYPE (short) if this procedure returns a result (procedureNoResult or procedureReturnsResult)
      9. SPECIFIC_NAME (String) non-ambiguous name to distinguish overloads
      Specified by:
        `getProcedures` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalog` - null or the catalog name
        `schemaPattern` - null (to get all objects) or a schema name (uppercase for unquoted names)
        `procedureNamePattern` - the procedure name pattern
      Returns:
        the procedures
      Throws:
        `java.sql.SQLException` - if the connection is closed

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

      Gets the list of procedure columns. The result set is sorted by PROCEDURE_SCHEM, PROCEDURE_NAME, NUM_INPUT_PARAMS, and POS. There are potentially multiple procedures with the same name, each with a different number of input parameters.
      1. PROCEDURE_CAT (String) catalog
      2. PROCEDURE_SCHEM (String) schema
      3. PROCEDURE_NAME (String) name
      4. COLUMN_NAME (String) column name
      5. COLUMN_TYPE (short) column type (always DatabaseMetaData.procedureColumnIn)
      6. DATA_TYPE (short) sql type
      7. TYPE_NAME (String) type name
      8. PRECISION (int) precision
      9. LENGTH (int) length
      10. SCALE (short) scale
      11. RADIX (int)
      12. NULLABLE (short) nullable (DatabaseMetaData.columnNoNulls for primitive data types, DatabaseMetaData.columnNullable otherwise)
      13. REMARKS (String) description
      14. COLUMN_DEF (String) always null
      15. SQL_DATA_TYPE (int) for future use
      16. SQL_DATETIME_SUB (int) for future use
      17. CHAR_OCTET_LENGTH (int)
      18. ORDINAL_POSITION (int) the parameter index starting from 1 (0 is the return value)
      19. IS_NULLABLE (String) always "YES"
      20. SPECIFIC_NAME (String) non-ambiguous procedure name to distinguish overloads
      Specified by:
        `getProcedureColumns` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalog` - null or the catalog name
        `schemaPattern` - null (to get all objects) or a schema name (uppercase for unquoted names)
        `procedureNamePattern` - the procedure name pattern
        `columnNamePattern` - the procedure name pattern
      Returns:
        the procedure columns
      Throws:
        `java.sql.SQLException` - if the connection is closed

    - #### getSchemas

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

      Gets the list of schemas. The result set is sorted by TABLE_SCHEM.
      1. TABLE_SCHEM (String) schema name
      2. TABLE_CATALOG (String) catalog name
      Specified by:
        `getSchemas` in interface `java.sql.DatabaseMetaData`
      Returns:
        the schema list
      Throws:
        `java.sql.SQLException` - if the connection is closed

    - #### getCatalogs

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

      Gets the list of catalogs. The result set is sorted by TABLE_CAT.
      1. TABLE_CAT (String) catalog name
      Specified by:
        `getCatalogs` in interface `java.sql.DatabaseMetaData`
      Returns:
        the catalog list
      Throws:
        `java.sql.SQLException` - if the connection is closed

    - #### getTableTypes

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

      Gets the list of table types. This call returns a result set with five records: "SYSTEM TABLE", "TABLE", "VIEW", "TABLE LINK" and "EXTERNAL".
      1. TABLE_TYPE (String) table type
      Specified by:
        `getTableTypes` in interface `java.sql.DatabaseMetaData`
      Returns:
        the table types
      Throws:
        `java.sql.SQLException` - if the connection is closed

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

      Gets the list of column privileges. The result set is sorted by COLUMN_NAME and PRIVILEGE
      1. TABLE_CAT (String) table catalog
      2. TABLE_SCHEM (String) table schema
      3. TABLE_NAME (String) table name
      4. COLUMN_NAME (String) column name
      5. GRANTOR (String) grantor of access
      6. GRANTEE (String) grantee of access
      7. PRIVILEGE (String) SELECT, INSERT, UPDATE, DELETE or REFERENCES (only one per row)
      8. IS_GRANTABLE (String) YES means the grantee can grant access to others
      Specified by:
        `getColumnPrivileges` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalog` - null (to get all objects) or the catalog name
        `schema` - null (to get all objects) or a schema name (uppercase for unquoted names)
        `table` - a table name (uppercase for unquoted names)
        `columnNamePattern` - null (to get all objects) or a column name (uppercase for unquoted names)
      Returns:
        the list of privileges
      Throws:
        `java.sql.SQLException` - if the connection is closed

    - #### getTablePrivileges

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

      Gets the list of table privileges. The result set is sorted by TABLE_SCHEM, TABLE_NAME, and PRIVILEGE.
      1. TABLE_CAT (String) table catalog
      2. TABLE_SCHEM (String) table schema
      3. TABLE_NAME (String) table name
      4. GRANTOR (String) grantor of access
      5. GRANTEE (String) grantee of access
      6. PRIVILEGE (String) SELECT, INSERT, UPDATE, DELETE or REFERENCES (only one per row)
      7. IS_GRANTABLE (String) YES means the grantee can grant access to others
      Specified by:
        `getTablePrivileges` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalog` - null (to get all objects) or the catalog name
        `schemaPattern` - null (to get all objects) or a schema name (uppercase for unquoted names)
        `tableNamePattern` - null (to get all objects) or a table name (uppercase for unquoted names)
      Returns:
        the list of privileges
      Throws:
        `java.sql.SQLException` - if the connection is closed

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

      Gets the list of columns that best identifier a row in a table. The list is ordered by SCOPE.
      1. SCOPE (short) scope of result (always bestRowSession)
      2. COLUMN_NAME (String) column name
      3. DATA_TYPE (short) SQL data type, see also java.sql.Types
      4. TYPE_NAME (String) type name
      5. COLUMN_SIZE (int) precision (values larger than 2 GB are returned as 2 GB)
      6. BUFFER_LENGTH (int) unused
      7. DECIMAL_DIGITS (short) scale
      8. PSEUDO_COLUMN (short) (always bestRowNotPseudo)
      Specified by:
        `getBestRowIdentifier` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalog` - null (to get all objects) or the catalog name
        `schema` - null (to get all objects) or a schema name (uppercase for unquoted names)
        `table` - table name (must be specified)
        `scope` - ignored
        `nullable` - ignored
      Returns:
        the primary key index
      Throws:
        `java.sql.SQLException` - if the connection is closed

    - #### getVersionColumns

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

      Get the list of columns that are update when any value is updated. The result set is always empty.
      1. 1 SCOPE (int) not used
      2. 2 COLUMN_NAME (String) column name
      3. 3 DATA_TYPE (int) SQL data type - see also java.sql.Types
      4. 4 TYPE_NAME (String) data type name
      5. 5 COLUMN_SIZE (int) precision (values larger than 2 GB are returned as 2 GB)
      6. 6 BUFFER_LENGTH (int) length (bytes)
      7. 7 DECIMAL_DIGITS (int) scale
      8. 8 PSEUDO_COLUMN (int) is this column a pseudo column
      Specified by:
        `getVersionColumns` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalog` - null (to get all objects) or the catalog name
        `schema` - null (to get all objects) or a schema name
        `table` - table name (must be specified)
      Returns:
        an empty result set
      Throws:
        `java.sql.SQLException` - if the connection is closed

    - #### getImportedKeys

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

      Gets the list of primary key columns that are referenced by a table. The result set is sorted by PKTABLE_CAT, PKTABLE_SCHEM, PKTABLE_NAME, FK_NAME, KEY_SEQ.
      1. PKTABLE_CAT (String) primary catalog
      2. PKTABLE_SCHEM (String) primary schema
      3. PKTABLE_NAME (String) primary table
      4. PKCOLUMN_NAME (String) primary column
      5. FKTABLE_CAT (String) foreign catalog
      6. FKTABLE_SCHEM (String) foreign schema
      7. FKTABLE_NAME (String) foreign table
      8. FKCOLUMN_NAME (String) foreign column
      9. KEY_SEQ (short) sequence number (1, 2, ...)
      10. UPDATE_RULE (short) action on update (see DatabaseMetaData.importedKey...)
      11. DELETE_RULE (short) action on delete (see DatabaseMetaData.importedKey...)
      12. FK_NAME (String) foreign key name
      13. PK_NAME (String) primary key name
      14. DEFERRABILITY (short) deferrable or not (always importedKeyNotDeferrable)
      Specified by:
        `getImportedKeys` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalog` - null (to get all objects) or the catalog name
        `schema` - the schema name of the foreign table
        `table` - the name of the foreign table
      Returns:
        the result set
      Throws:
        `java.sql.SQLException` - if the connection is closed

    - #### getExportedKeys

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

      Gets the list of foreign key columns that reference a table. The result set is sorted by FKTABLE_CAT, FKTABLE_SCHEM, FKTABLE_NAME, FK_NAME, KEY_SEQ.
      1. PKTABLE_CAT (String) primary catalog
      2. PKTABLE_SCHEM (String) primary schema
      3. PKTABLE_NAME (String) primary table
      4. PKCOLUMN_NAME (String) primary column
      5. FKTABLE_CAT (String) foreign catalog
      6. FKTABLE_SCHEM (String) foreign schema
      7. FKTABLE_NAME (String) foreign table
      8. FKCOLUMN_NAME (String) foreign column
      9. KEY_SEQ (short) sequence number (1,2,...)
      10. UPDATE_RULE (short) action on update (see DatabaseMetaData.importedKey...)
      11. DELETE_RULE (short) action on delete (see DatabaseMetaData.importedKey...)
      12. FK_NAME (String) foreign key name
      13. PK_NAME (String) primary key name
      14. DEFERRABILITY (short) deferrable or not (always importedKeyNotDeferrable)
      Specified by:
        `getExportedKeys` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalog` - null or the catalog name
        `schema` - the schema name of the primary table
        `table` - the name of the primary table
      Returns:
        the result set
      Throws:
        `java.sql.SQLException` - if the connection is closed

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

      Gets the list of foreign key columns that references a table, as well as the list of primary key columns that are references by a table. The result set is sorted by FKTABLE_CAT, FKTABLE_SCHEM, FKTABLE_NAME, FK_NAME, KEY_SEQ.
      1. PKTABLE_CAT (String) primary catalog
      2. PKTABLE_SCHEM (String) primary schema
      3. PKTABLE_NAME (String) primary table
      4. PKCOLUMN_NAME (String) primary column
      5. FKTABLE_CAT (String) foreign catalog
      6. FKTABLE_SCHEM (String) foreign schema
      7. FKTABLE_NAME (String) foreign table
      8. FKCOLUMN_NAME (String) foreign column
      9. KEY_SEQ (short) sequence number (1,2,...)
      10. UPDATE_RULE (short) action on update (see DatabaseMetaData.importedKey...)
      11. DELETE_RULE (short) action on delete (see DatabaseMetaData.importedKey...)
      12. FK_NAME (String) foreign key name
      13. PK_NAME (String) primary key name
      14. DEFERRABILITY (short) deferrable or not (always importedKeyNotDeferrable)
      Specified by:
        `getCrossReference` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `primaryCatalog` - null or the catalog name
        `primarySchema` - the schema name of the primary table (optional)
        `primaryTable` - the name of the primary table (must be specified)
        `foreignCatalog` - null or the catalog name
        `foreignSchema` - the schema name of the foreign table (optional)
        `foreignTable` - the name of the foreign table (must be specified)
      Returns:
        the result set
      Throws:
        `java.sql.SQLException` - if the connection is closed

    - #### getUDTs

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

      Gets the list of user-defined data types. This call returns an empty result set.
      1. TYPE_CAT (String) catalog
      2. TYPE_SCHEM (String) schema
      3. TYPE_NAME (String) type name
      4. CLASS_NAME (String) Java class
      5. DATA_TYPE (short) SQL Type - see also java.sql.Types
      6. REMARKS (String) description
      7. BASE_TYPE (short) base type - see also java.sql.Types
      Specified by:
        `getUDTs` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalog` - ignored
        `schemaPattern` - ignored
        `typeNamePattern` - ignored
        `types` - ignored
      Returns:
        an empty result set
      Throws:
        `java.sql.SQLException` - if the connection is closed

    - #### getTypeInfo

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

      Gets the list of data types. The result set is sorted by DATA_TYPE and afterwards by how closely the data type maps to the corresponding JDBC SQL type (best match first).
      1. TYPE_NAME (String) type name
      2. DATA_TYPE (short) SQL data type - see also java.sql.Types
      3. PRECISION (int) maximum precision
      4. LITERAL_PREFIX (String) prefix used to quote a literal
      5. LITERAL_SUFFIX (String) suffix used to quote a literal
      6. CREATE_PARAMS (String) parameters used (may be null)
      7. NULLABLE (short) typeNoNulls (NULL not allowed) or typeNullable
      8. CASE_SENSITIVE (boolean) case sensitive
      9. SEARCHABLE (short) typeSearchable
      10. UNSIGNED_ATTRIBUTE (boolean) unsigned
      11. FIXED_PREC_SCALE (boolean) fixed precision
      12. AUTO_INCREMENT (boolean) auto increment
      13. LOCAL_TYPE_NAME (String) localized version of the data type
      14. MINIMUM_SCALE (short) minimum scale
      15. MAXIMUM_SCALE (short) maximum scale
      16. SQL_DATA_TYPE (int) unused
      17. SQL_DATETIME_SUB (int) unused
      18. NUM_PREC_RADIX (int) 2 for binary, 10 for decimal
      Specified by:
        `getTypeInfo` in interface `java.sql.DatabaseMetaData`
      Returns:
        the list of data types
      Throws:
        `java.sql.SQLException` - if the connection is closed

    - #### usesLocalFiles

          public boolean usesLocalFiles()

      Checks if this database store data in local files.
      Specified by:
        `usesLocalFiles` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### usesLocalFilePerTable

          public boolean usesLocalFilePerTable()

      Checks if this database use one file per table.
      Specified by:
        `usesLocalFilePerTable` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### getIdentifierQuoteString

          public java.lang.String getIdentifierQuoteString()

      Returns the string used to quote identifiers.
      Specified by:
        `getIdentifierQuoteString` in interface `java.sql.DatabaseMetaData`
      Returns:
        a double quote

    - #### getSQLKeywords

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

      Gets the comma-separated list of all SQL keywords that are not supported as unquoted identifiers, in addition to the SQL:2003 reserved words.

      List of keywords in H2 may depend on compatibility mode and other settings.

      Specified by:
        `getSQLKeywords` in interface `java.sql.DatabaseMetaData`
      Returns:
        a list of additional keywords
      Throws:
        `java.sql.SQLException`

    - #### getNumericFunctions

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

      Returns the list of numeric functions supported by this database.
      Specified by:
        `getNumericFunctions` in interface `java.sql.DatabaseMetaData`
      Returns:
        the list
      Throws:
        `java.sql.SQLException`

    - #### getStringFunctions

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

      Returns the list of string functions supported by this database.
      Specified by:
        `getStringFunctions` in interface `java.sql.DatabaseMetaData`
      Returns:
        the list
      Throws:
        `java.sql.SQLException`

    - #### getSystemFunctions

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

      Returns the list of system functions supported by this database.
      Specified by:
        `getSystemFunctions` in interface `java.sql.DatabaseMetaData`
      Returns:
        the list
      Throws:
        `java.sql.SQLException`

    - #### getTimeDateFunctions

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

      Returns the list of date and time functions supported by this database.
      Specified by:
        `getTimeDateFunctions` in interface `java.sql.DatabaseMetaData`
      Returns:
        the list
      Throws:
        `java.sql.SQLException`

    - #### getSearchStringEscape

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

      Returns the default escape character for DatabaseMetaData search patterns.
      Specified by:
        `getSearchStringEscape` in interface `java.sql.DatabaseMetaData`
      Returns:
        the default escape character (always '\', independent on the mode)
      Throws:
        `java.sql.SQLException`

    - #### getExtraNameCharacters

          public java.lang.String getExtraNameCharacters()

      Returns the characters that are allowed for identifiers in addiction to A-Z, a-z, 0-9 and '_'.
      Specified by:
        `getExtraNameCharacters` in interface `java.sql.DatabaseMetaData`
      Returns:
        an empty String ("")

    - #### supportsAlterTableWithAddColumn

          public boolean supportsAlterTableWithAddColumn()

      Returns whether alter table with add column is supported.
      Specified by:
        `supportsAlterTableWithAddColumn` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsAlterTableWithDropColumn

          public boolean supportsAlterTableWithDropColumn()

      Returns whether alter table with drop column is supported.
      Specified by:
        `supportsAlterTableWithDropColumn` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsColumnAliasing

          public boolean supportsColumnAliasing()

      Returns whether column aliasing is supported.
      Specified by:
        `supportsColumnAliasing` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### nullPlusNonNullIsNull

          public boolean nullPlusNonNullIsNull()

      Returns whether NULL+1 is NULL or not.
      Specified by:
        `nullPlusNonNullIsNull` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsConvert

          public boolean supportsConvert()

      Returns whether CONVERT is supported.
      Specified by:
        `supportsConvert` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsConvert

          public boolean supportsConvert(int fromType,
                                         int toType)

      Returns whether CONVERT is supported for one datatype to another.
      Specified by:
        `supportsConvert` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `fromType` - the source SQL type
        `toType` - the target SQL type
      Returns:
        true

    - #### supportsTableCorrelationNames

          public boolean supportsTableCorrelationNames()

      Returns whether table correlation names (table alias) are supported.
      Specified by:
        `supportsTableCorrelationNames` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsDifferentTableCorrelationNames

          public boolean supportsDifferentTableCorrelationNames()

      Returns whether table correlation names (table alias) are restricted to be different than table names.
      Specified by:
        `supportsDifferentTableCorrelationNames` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsExpressionsInOrderBy

          public boolean supportsExpressionsInOrderBy()

      Returns whether expression in ORDER BY are supported.
      Specified by:
        `supportsExpressionsInOrderBy` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsOrderByUnrelated

          public boolean supportsOrderByUnrelated()

      Returns whether ORDER BY is supported if the column is not in the SELECT list.
      Specified by:
        `supportsOrderByUnrelated` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsGroupBy

          public boolean supportsGroupBy()

      Returns whether GROUP BY is supported.
      Specified by:
        `supportsGroupBy` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsGroupByUnrelated

          public boolean supportsGroupByUnrelated()

      Returns whether GROUP BY is supported if the column is not in the SELECT list.
      Specified by:
        `supportsGroupByUnrelated` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsGroupByBeyondSelect

          public boolean supportsGroupByBeyondSelect()

      Checks whether a GROUP BY clause can use columns that are not in the SELECT clause, provided that it specifies all the columns in the SELECT clause.
      Specified by:
        `supportsGroupByBeyondSelect` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsLikeEscapeClause

          public boolean supportsLikeEscapeClause()

      Returns whether LIKE... ESCAPE is supported.
      Specified by:
        `supportsLikeEscapeClause` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsMultipleResultSets

          public boolean supportsMultipleResultSets()

      Returns whether multiple result sets are supported.
      Specified by:
        `supportsMultipleResultSets` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsMultipleTransactions

          public boolean supportsMultipleTransactions()

      Returns whether multiple transactions (on different connections) are supported.
      Specified by:
        `supportsMultipleTransactions` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsNonNullableColumns

          public boolean supportsNonNullableColumns()

      Returns whether columns with NOT NULL are supported.
      Specified by:
        `supportsNonNullableColumns` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsMinimumSQLGrammar

          public boolean supportsMinimumSQLGrammar()

      Returns whether ODBC Minimum SQL grammar is supported.
      Specified by:
        `supportsMinimumSQLGrammar` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsCoreSQLGrammar

          public boolean supportsCoreSQLGrammar()

      Returns whether ODBC Core SQL grammar is supported.
      Specified by:
        `supportsCoreSQLGrammar` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsExtendedSQLGrammar

          public boolean supportsExtendedSQLGrammar()

      Returns whether ODBC Extended SQL grammar is supported.
      Specified by:
        `supportsExtendedSQLGrammar` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsANSI92EntryLevelSQL

          public boolean supportsANSI92EntryLevelSQL()

      Returns whether SQL-92 entry level grammar is supported.
      Specified by:
        `supportsANSI92EntryLevelSQL` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsANSI92IntermediateSQL

          public boolean supportsANSI92IntermediateSQL()

      Returns whether SQL-92 intermediate level grammar is supported.
      Specified by:
        `supportsANSI92IntermediateSQL` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsANSI92FullSQL

          public boolean supportsANSI92FullSQL()

      Returns whether SQL-92 full level grammar is supported.
      Specified by:
        `supportsANSI92FullSQL` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsIntegrityEnhancementFacility

          public boolean supportsIntegrityEnhancementFacility()

      Returns whether referential integrity is supported.
      Specified by:
        `supportsIntegrityEnhancementFacility` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsOuterJoins

          public boolean supportsOuterJoins()

      Returns whether outer joins are supported.
      Specified by:
        `supportsOuterJoins` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsFullOuterJoins

          public boolean supportsFullOuterJoins()

      Returns whether full outer joins are supported.
      Specified by:
        `supportsFullOuterJoins` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsLimitedOuterJoins

          public boolean supportsLimitedOuterJoins()

      Returns whether limited outer joins are supported.
      Specified by:
        `supportsLimitedOuterJoins` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### getSchemaTerm

          public java.lang.String getSchemaTerm()

      Returns the term for "schema".
      Specified by:
        `getSchemaTerm` in interface `java.sql.DatabaseMetaData`
      Returns:
        "schema"

    - #### getProcedureTerm

          public java.lang.String getProcedureTerm()

      Returns the term for "procedure".
      Specified by:
        `getProcedureTerm` in interface `java.sql.DatabaseMetaData`
      Returns:
        "procedure"

    - #### getCatalogTerm

          public java.lang.String getCatalogTerm()

      Returns the term for "catalog".
      Specified by:
        `getCatalogTerm` in interface `java.sql.DatabaseMetaData`
      Returns:
        "catalog"

    - #### isCatalogAtStart

          public boolean isCatalogAtStart()

      Returns whether the catalog is at the beginning.
      Specified by:
        `isCatalogAtStart` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### getCatalogSeparator

          public java.lang.String getCatalogSeparator()

      Returns the catalog separator.
      Specified by:
        `getCatalogSeparator` in interface `java.sql.DatabaseMetaData`
      Returns:
        "."

    - #### supportsSchemasInDataManipulation

          public boolean supportsSchemasInDataManipulation()

      Returns whether the schema name in INSERT, UPDATE, DELETE is supported.
      Specified by:
        `supportsSchemasInDataManipulation` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsSchemasInProcedureCalls

          public boolean supportsSchemasInProcedureCalls()

      Returns whether the schema name in procedure calls is supported.
      Specified by:
        `supportsSchemasInProcedureCalls` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsSchemasInTableDefinitions

          public boolean supportsSchemasInTableDefinitions()

      Returns whether the schema name in CREATE TABLE is supported.
      Specified by:
        `supportsSchemasInTableDefinitions` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsSchemasInIndexDefinitions

          public boolean supportsSchemasInIndexDefinitions()

      Returns whether the schema name in CREATE INDEX is supported.
      Specified by:
        `supportsSchemasInIndexDefinitions` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsSchemasInPrivilegeDefinitions

          public boolean supportsSchemasInPrivilegeDefinitions()

      Returns whether the schema name in GRANT is supported.
      Specified by:
        `supportsSchemasInPrivilegeDefinitions` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsCatalogsInDataManipulation

          public boolean supportsCatalogsInDataManipulation()

      Returns whether the catalog name in INSERT, UPDATE, DELETE is supported.
      Specified by:
        `supportsCatalogsInDataManipulation` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsCatalogsInProcedureCalls

          public boolean supportsCatalogsInProcedureCalls()

      Returns whether the catalog name in procedure calls is supported.
      Specified by:
        `supportsCatalogsInProcedureCalls` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsCatalogsInTableDefinitions

          public boolean supportsCatalogsInTableDefinitions()

      Returns whether the catalog name in CREATE TABLE is supported.
      Specified by:
        `supportsCatalogsInTableDefinitions` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsCatalogsInIndexDefinitions

          public boolean supportsCatalogsInIndexDefinitions()

      Returns whether the catalog name in CREATE INDEX is supported.
      Specified by:
        `supportsCatalogsInIndexDefinitions` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsCatalogsInPrivilegeDefinitions

          public boolean supportsCatalogsInPrivilegeDefinitions()

      Returns whether the catalog name in GRANT is supported.
      Specified by:
        `supportsCatalogsInPrivilegeDefinitions` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsPositionedDelete

          public boolean supportsPositionedDelete()

      Returns whether positioned deletes are supported.
      Specified by:
        `supportsPositionedDelete` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsPositionedUpdate

          public boolean supportsPositionedUpdate()

      Returns whether positioned updates are supported.
      Specified by:
        `supportsPositionedUpdate` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsSelectForUpdate

          public boolean supportsSelectForUpdate()

      Returns whether SELECT ... FOR UPDATE is supported.
      Specified by:
        `supportsSelectForUpdate` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsStoredProcedures

          public boolean supportsStoredProcedures()

      Returns whether stored procedures are supported.
      Specified by:
        `supportsStoredProcedures` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsSubqueriesInComparisons

          public boolean supportsSubqueriesInComparisons()

      Returns whether subqueries (SELECT) in comparisons are supported.
      Specified by:
        `supportsSubqueriesInComparisons` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsSubqueriesInExists

          public boolean supportsSubqueriesInExists()

      Returns whether SELECT in EXISTS is supported.
      Specified by:
        `supportsSubqueriesInExists` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsSubqueriesInIns

          public boolean supportsSubqueriesInIns()

      Returns whether IN(SELECT...) is supported.
      Specified by:
        `supportsSubqueriesInIns` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsSubqueriesInQuantifieds

          public boolean supportsSubqueriesInQuantifieds()

      Returns whether subqueries in quantified expression are supported.
      Specified by:
        `supportsSubqueriesInQuantifieds` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsCorrelatedSubqueries

          public boolean supportsCorrelatedSubqueries()

      Returns whether correlated subqueries are supported.
      Specified by:
        `supportsCorrelatedSubqueries` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsUnion

          public boolean supportsUnion()

      Returns whether UNION SELECT is supported.
      Specified by:
        `supportsUnion` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsUnionAll

          public boolean supportsUnionAll()

      Returns whether UNION ALL SELECT is supported.
      Specified by:
        `supportsUnionAll` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsOpenCursorsAcrossCommit

          public boolean supportsOpenCursorsAcrossCommit()

      Returns whether open result sets across commits are supported.
      Specified by:
        `supportsOpenCursorsAcrossCommit` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsOpenCursorsAcrossRollback

          public boolean supportsOpenCursorsAcrossRollback()

      Returns whether open result sets across rollback are supported.
      Specified by:
        `supportsOpenCursorsAcrossRollback` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsOpenStatementsAcrossCommit

          public boolean supportsOpenStatementsAcrossCommit()

      Returns whether open statements across commit are supported.
      Specified by:
        `supportsOpenStatementsAcrossCommit` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsOpenStatementsAcrossRollback

          public boolean supportsOpenStatementsAcrossRollback()

      Returns whether open statements across rollback are supported.
      Specified by:
        `supportsOpenStatementsAcrossRollback` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsTransactions

          public boolean supportsTransactions()

      Returns whether transactions are supported.
      Specified by:
        `supportsTransactions` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsTransactionIsolationLevel

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

      Returns whether a specific transaction isolation level is supported.
      Specified by:
        `supportsTransactionIsolationLevel` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `level` - the transaction isolation level (Connection.TRANSACTION_*)
      Returns:
        true
      Throws:
        `java.sql.SQLException`

    - #### supportsDataDefinitionAndDataManipulationTransactions

          public boolean supportsDataDefinitionAndDataManipulationTransactions()

      Returns whether data manipulation and CREATE/DROP is supported in transactions.
      Specified by:
        `supportsDataDefinitionAndDataManipulationTransactions` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsDataManipulationTransactionsOnly

          public boolean supportsDataManipulationTransactionsOnly()

      Returns whether only data manipulations are supported in transactions.
      Specified by:
        `supportsDataManipulationTransactionsOnly` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### dataDefinitionCausesTransactionCommit

          public boolean dataDefinitionCausesTransactionCommit()

      Returns whether CREATE/DROP commit an open transaction.
      Specified by:
        `dataDefinitionCausesTransactionCommit` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### dataDefinitionIgnoredInTransactions

          public boolean dataDefinitionIgnoredInTransactions()

      Returns whether CREATE/DROP do not affect transactions.
      Specified by:
        `dataDefinitionIgnoredInTransactions` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsResultSetType

          public boolean supportsResultSetType(int type)

      Returns whether a specific result set type is supported. ResultSet.TYPE_SCROLL_SENSITIVE is not supported.
      Specified by:
        `supportsResultSetType` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `type` - the result set type
      Returns:
        true for all types except ResultSet.TYPE_SCROLL_SENSITIVE

    - #### supportsResultSetConcurrency

          public boolean supportsResultSetConcurrency(int type,
                                                      int concurrency)

      Returns whether a specific result set concurrency is supported. ResultSet.TYPE_SCROLL_SENSITIVE is not supported.
      Specified by:
        `supportsResultSetConcurrency` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `type` - the result set type
        `concurrency` - the result set concurrency
      Returns:
        true if the type is not ResultSet.TYPE_SCROLL_SENSITIVE

    - #### ownUpdatesAreVisible

          public boolean ownUpdatesAreVisible(int type)

      Returns whether own updates are visible.
      Specified by:
        `ownUpdatesAreVisible` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `type` - the result set type
      Returns:
        true

    - #### ownDeletesAreVisible

          public boolean ownDeletesAreVisible(int type)

      Returns whether own deletes are visible.
      Specified by:
        `ownDeletesAreVisible` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `type` - the result set type
      Returns:
        false

    - #### ownInsertsAreVisible

          public boolean ownInsertsAreVisible(int type)

      Returns whether own inserts are visible.
      Specified by:
        `ownInsertsAreVisible` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `type` - the result set type
      Returns:
        false

    - #### othersUpdatesAreVisible

          public boolean othersUpdatesAreVisible(int type)

      Returns whether other updates are visible.
      Specified by:
        `othersUpdatesAreVisible` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `type` - the result set type
      Returns:
        false

    - #### othersDeletesAreVisible

          public boolean othersDeletesAreVisible(int type)

      Returns whether other deletes are visible.
      Specified by:
        `othersDeletesAreVisible` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `type` - the result set type
      Returns:
        false

    - #### othersInsertsAreVisible

          public boolean othersInsertsAreVisible(int type)

      Returns whether other inserts are visible.
      Specified by:
        `othersInsertsAreVisible` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `type` - the result set type
      Returns:
        false

    - #### updatesAreDetected

          public boolean updatesAreDetected(int type)

      Returns whether updates are detected.
      Specified by:
        `updatesAreDetected` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `type` - the result set type
      Returns:
        false

    - #### deletesAreDetected

          public boolean deletesAreDetected(int type)

      Returns whether deletes are detected.
      Specified by:
        `deletesAreDetected` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `type` - the result set type
      Returns:
        false

    - #### insertsAreDetected

          public boolean insertsAreDetected(int type)

      Returns whether inserts are detected.
      Specified by:
        `insertsAreDetected` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `type` - the result set type
      Returns:
        false

    - #### supportsBatchUpdates

          public boolean supportsBatchUpdates()

      Returns whether batch updates are supported.
      Specified by:
        `supportsBatchUpdates` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### doesMaxRowSizeIncludeBlobs

          public boolean doesMaxRowSizeIncludeBlobs()

      Returns whether the maximum row size includes blobs.
      Specified by:
        `doesMaxRowSizeIncludeBlobs` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### getDefaultTransactionIsolation

          public int getDefaultTransactionIsolation()

      Returns the default transaction isolation level.
      Specified by:
        `getDefaultTransactionIsolation` in interface `java.sql.DatabaseMetaData`
      Returns:
        Connection.TRANSACTION_READ_COMMITTED

    - #### supportsMixedCaseIdentifiers

          public boolean supportsMixedCaseIdentifiers()
                                               throws java.sql.SQLException

      Checks if for CREATE TABLE Test(ID INT), getTables returns Test as the table name and identifiers are case sensitive.
      Specified by:
        `supportsMixedCaseIdentifiers` in interface `java.sql.DatabaseMetaData`
      Returns:
        true is so, false otherwise
      Throws:
        `java.sql.SQLException`

    - #### storesUpperCaseIdentifiers

          public boolean storesUpperCaseIdentifiers()
                                             throws java.sql.SQLException

      Checks if for CREATE TABLE Test(ID INT), getTables returns TEST as the table name.
      Specified by:
        `storesUpperCaseIdentifiers` in interface `java.sql.DatabaseMetaData`
      Returns:
        true is so, false otherwise
      Throws:
        `java.sql.SQLException`

    - #### storesLowerCaseIdentifiers

          public boolean storesLowerCaseIdentifiers()
                                             throws java.sql.SQLException

      Checks if for CREATE TABLE Test(ID INT), getTables returns test as the table name.
      Specified by:
        `storesLowerCaseIdentifiers` in interface `java.sql.DatabaseMetaData`
      Returns:
        true is so, false otherwise
      Throws:
        `java.sql.SQLException`

    - #### storesMixedCaseIdentifiers

          public boolean storesMixedCaseIdentifiers()
                                             throws java.sql.SQLException

      Checks if for CREATE TABLE Test(ID INT), getTables returns Test as the table name and identifiers are not case sensitive.
      Specified by:
        `storesMixedCaseIdentifiers` in interface `java.sql.DatabaseMetaData`
      Returns:
        true is so, false otherwise
      Throws:
        `java.sql.SQLException`

    - #### supportsMixedCaseQuotedIdentifiers

          public boolean supportsMixedCaseQuotedIdentifiers()
                                                     throws java.sql.SQLException

      Checks if a table created with CREATE TABLE "Test"(ID INT) is a different table than a table created with CREATE TABLE "TEST"(ID INT).
      Specified by:
        `supportsMixedCaseQuotedIdentifiers` in interface `java.sql.DatabaseMetaData`
      Returns:
        true is so, false otherwise
      Throws:
        `java.sql.SQLException`

    - #### storesUpperCaseQuotedIdentifiers

          public boolean storesUpperCaseQuotedIdentifiers()
                                                   throws java.sql.SQLException

      Checks if for CREATE TABLE "Test"(ID INT), getTables returns TEST as the table name.
      Specified by:
        `storesUpperCaseQuotedIdentifiers` in interface `java.sql.DatabaseMetaData`
      Returns:
        false
      Throws:
        `java.sql.SQLException`

    - #### storesLowerCaseQuotedIdentifiers

          public boolean storesLowerCaseQuotedIdentifiers()
                                                   throws java.sql.SQLException

      Checks if for CREATE TABLE "Test"(ID INT), getTables returns test as the table name.
      Specified by:
        `storesLowerCaseQuotedIdentifiers` in interface `java.sql.DatabaseMetaData`
      Returns:
        false
      Throws:
        `java.sql.SQLException`

    - #### storesMixedCaseQuotedIdentifiers

          public boolean storesMixedCaseQuotedIdentifiers()
                                                   throws java.sql.SQLException

      Checks if for CREATE TABLE "Test"(ID INT), getTables returns Test as the table name and identifiers are case insensitive.
      Specified by:
        `storesMixedCaseQuotedIdentifiers` in interface `java.sql.DatabaseMetaData`
      Returns:
        true is so, false otherwise
      Throws:
        `java.sql.SQLException`

    - #### getMaxBinaryLiteralLength

          public int getMaxBinaryLiteralLength()

      Returns the maximum length for hex values (characters).
      Specified by:
        `getMaxBinaryLiteralLength` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxCharLiteralLength

          public int getMaxCharLiteralLength()

      Returns the maximum length for literals.
      Specified by:
        `getMaxCharLiteralLength` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxColumnNameLength

          public int getMaxColumnNameLength()

      Returns the maximum length for column names.
      Specified by:
        `getMaxColumnNameLength` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxColumnsInGroupBy

          public int getMaxColumnsInGroupBy()

      Returns the maximum number of columns in GROUP BY.
      Specified by:
        `getMaxColumnsInGroupBy` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxColumnsInIndex

          public int getMaxColumnsInIndex()

      Returns the maximum number of columns in CREATE INDEX.
      Specified by:
        `getMaxColumnsInIndex` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxColumnsInOrderBy

          public int getMaxColumnsInOrderBy()

      Returns the maximum number of columns in ORDER BY.
      Specified by:
        `getMaxColumnsInOrderBy` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxColumnsInSelect

          public int getMaxColumnsInSelect()

      Returns the maximum number of columns in SELECT.
      Specified by:
        `getMaxColumnsInSelect` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxColumnsInTable

          public int getMaxColumnsInTable()

      Returns the maximum number of columns in CREATE TABLE.
      Specified by:
        `getMaxColumnsInTable` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxConnections

          public int getMaxConnections()

      Returns the maximum number of open connection.
      Specified by:
        `getMaxConnections` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxCursorNameLength

          public int getMaxCursorNameLength()

      Returns the maximum length for a cursor name.
      Specified by:
        `getMaxCursorNameLength` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxIndexLength

          public int getMaxIndexLength()

      Returns the maximum length for an index (in bytes).
      Specified by:
        `getMaxIndexLength` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxSchemaNameLength

          public int getMaxSchemaNameLength()

      Returns the maximum length for a schema name.
      Specified by:
        `getMaxSchemaNameLength` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxProcedureNameLength

          public int getMaxProcedureNameLength()

      Returns the maximum length for a procedure name.
      Specified by:
        `getMaxProcedureNameLength` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxCatalogNameLength

          public int getMaxCatalogNameLength()

      Returns the maximum length for a catalog name.
      Specified by:
        `getMaxCatalogNameLength` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxRowSize

          public int getMaxRowSize()

      Returns the maximum size of a row (in bytes).
      Specified by:
        `getMaxRowSize` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxStatementLength

          public int getMaxStatementLength()

      Returns the maximum length of a statement.
      Specified by:
        `getMaxStatementLength` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxStatements

          public int getMaxStatements()

      Returns the maximum number of open statements.
      Specified by:
        `getMaxStatements` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxTableNameLength

          public int getMaxTableNameLength()

      Returns the maximum length for a table name.
      Specified by:
        `getMaxTableNameLength` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxTablesInSelect

          public int getMaxTablesInSelect()

      Returns the maximum number of tables in a SELECT.
      Specified by:
        `getMaxTablesInSelect` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### getMaxUserNameLength

          public int getMaxUserNameLength()

      Returns the maximum length for a user name.
      Specified by:
        `getMaxUserNameLength` in interface `java.sql.DatabaseMetaData`
      Returns:
        0 for limit is unknown

    - #### supportsSavepoints

          public boolean supportsSavepoints()

      Does the database support savepoints.
      Specified by:
        `supportsSavepoints` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### supportsNamedParameters

          public boolean supportsNamedParameters()

      Does the database support named parameters.
      Specified by:
        `supportsNamedParameters` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsMultipleOpenResults

          public boolean supportsMultipleOpenResults()

      Does the database support multiple open result sets returned from a `CallableStatement`.
      Specified by:
        `supportsMultipleOpenResults` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsGetGeneratedKeys

          public boolean supportsGetGeneratedKeys()

      Does the database support getGeneratedKeys.
      Specified by:
        `supportsGetGeneratedKeys` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### getSuperTypes

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

      [Not supported]
      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

      Get the list of super tables of a table. This method currently returns an empty result set.
      1. TABLE_CAT (String) table catalog
      2. TABLE_SCHEM (String) table schema
      3. TABLE_NAME (String) table name
      4. SUPERTABLE_NAME (String) the name of the super table
      Specified by:
        `getSuperTables` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalog` - null (to get all objects) or the catalog name
        `schemaPattern` - null (to get all objects) or a schema name (uppercase for unquoted names)
        `tableNamePattern` - null (to get all objects) or a table name pattern (uppercase for unquoted names)
      Returns:
        an empty result set
      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

      [Not supported]
      Specified by:
        `getAttributes` in interface `java.sql.DatabaseMetaData`
      Throws:
        `java.sql.SQLException`

    - #### supportsResultSetHoldability

          public boolean supportsResultSetHoldability(int holdability)

      Does this database supports a result set holdability.
      Specified by:
        `supportsResultSetHoldability` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `holdability` - ResultSet.HOLD_CURSORS_OVER_COMMIT or CLOSE_CURSORS_AT_COMMIT
      Returns:
        true if the holdability is ResultSet.CLOSE_CURSORS_AT_COMMIT

    - #### getResultSetHoldability

          public int getResultSetHoldability()

      Gets the result set holdability.
      Specified by:
        `getResultSetHoldability` in interface `java.sql.DatabaseMetaData`
      Returns:
        ResultSet.CLOSE_CURSORS_AT_COMMIT

    - #### getDatabaseMajorVersion

          public int getDatabaseMajorVersion()
                                      throws java.sql.SQLException

      Gets the major version of the database.
      Specified by:
        `getDatabaseMajorVersion` in interface `java.sql.DatabaseMetaData`
      Returns:
        the major version
      Throws:
        `java.sql.SQLException`

    - #### getDatabaseMinorVersion

          public int getDatabaseMinorVersion()
                                      throws java.sql.SQLException

      Gets the minor version of the database.
      Specified by:
        `getDatabaseMinorVersion` in interface `java.sql.DatabaseMetaData`
      Returns:
        the minor version
      Throws:
        `java.sql.SQLException`

    - #### getJDBCMajorVersion

          public int getJDBCMajorVersion()

      Gets the major version of the supported JDBC API.
      Specified by:
        `getJDBCMajorVersion` in interface `java.sql.DatabaseMetaData`
      Returns:
        the major version (4)

    - #### getJDBCMinorVersion

          public int getJDBCMinorVersion()

      Gets the minor version of the supported JDBC API.
      Specified by:
        `getJDBCMinorVersion` in interface `java.sql.DatabaseMetaData`
      Returns:
        the minor version (2)

    - #### getSQLStateType

          public int getSQLStateType()

      Gets the SQL State type.
      Specified by:
        `getSQLStateType` in interface `java.sql.DatabaseMetaData`
      Returns:
        `DatabaseMetaData.sqlStateSQL`

    - #### locatorsUpdateCopy

          public boolean locatorsUpdateCopy()

      Does the database make a copy before updating.
      Specified by:
        `locatorsUpdateCopy` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### supportsStatementPooling

          public boolean supportsStatementPooling()

      Does the database support statement pooling.
      Specified by:
        `supportsStatementPooling` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### getRowIdLifetime

          public java.sql.RowIdLifetime getRowIdLifetime()

      Get the lifetime of a rowid.
      Specified by:
        `getRowIdLifetime` in interface `java.sql.DatabaseMetaData`
      Returns:
        ROWID_UNSUPPORTED

    - #### getSchemas

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

      Gets the list of schemas in the database. The result set is sorted by TABLE_SCHEM.
      1. TABLE_SCHEM (String) schema name
      2. TABLE_CATALOG (String) catalog name
      Specified by:
        `getSchemas` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalogPattern` - null (to get all objects) or the catalog name
        `schemaPattern` - null (to get all objects) or a schema name (uppercase for unquoted names)
      Returns:
        the schema list
      Throws:
        `java.sql.SQLException` - if the connection is closed

    - #### supportsStoredFunctionsUsingCallSyntax

          public boolean supportsStoredFunctionsUsingCallSyntax()

      Returns whether the database supports calling functions using the call syntax.
      Specified by:
        `supportsStoredFunctionsUsingCallSyntax` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

    - #### autoCommitFailureClosesAllResultSets

          public boolean autoCommitFailureClosesAllResultSets()

      Returns whether an exception while auto commit is on closes all result sets.
      Specified by:
        `autoCommitFailureClosesAllResultSets` in interface `java.sql.DatabaseMetaData`
      Returns:
        false

    - #### getClientInfoProperties

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

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

    - #### unwrap

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

      Return an object of this class if possible.
      Specified by:
        `unwrap` in interface `java.sql.Wrapper`
      Parameters:
        `iface` - the class
      Returns:
        this
      Throws:
        `java.sql.SQLException`

    - #### isWrapperFor

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

      Checks if unwrap can return an object of this class.
      Specified by:
        `isWrapperFor` in interface `java.sql.Wrapper`
      Parameters:
        `iface` - the class
      Returns:
        whether or not the interface is assignable from this class
      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

      [Not supported] Gets the list of function columns.
      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

      [Not supported] Gets the list of functions.
      Specified by:
        `getFunctions` in interface `java.sql.DatabaseMetaData`
      Throws:
        `java.sql.SQLException`

    - #### generatedKeyAlwaysReturned

          public boolean generatedKeyAlwaysReturned()

      Returns whether database always returns generated keys if valid names or indexes of columns were specified and command was completed successfully.
      Specified by:
        `generatedKeyAlwaysReturned` in interface `java.sql.DatabaseMetaData`
      Returns:
        true

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

      Gets the list of pseudo and invisible columns. The result set is sorted by TABLE_SCHEM, TABLE_NAME, and COLUMN_NAME.
      1. TABLE_CAT (String) table catalog
      2. TABLE_SCHEM (String) table schema
      3. TABLE_NAME (String) table name
      4. COLUMN_NAME (String) column name
      5. DATA_TYPE (int) data type (see java.sql.Types)
      6. COLUMN_SIZE (int) precision (values larger than 2 GB are returned as 2 GB)
      7. DECIMAL_DIGITS (int) scale (0 for INTEGER and VARCHAR)
      8. NUM_PREC_RADIX (int) radix
      9. COLUMN_USAGE (String) he allowed usage for the column, see `PseudoColumnUsage`
      10. REMARKS (String) comment
      11. CHAR_OCTET_LENGTH (int) for char types the maximum number of bytes in the column
      12. IS_NULLABLE (String) "NO" or "YES"
      Specified by:
        `getPseudoColumns` in interface `java.sql.DatabaseMetaData`
      Parameters:
        `catalog` - null (to get all objects) or the catalog name
        `schemaPattern` - null (to get all objects) or a schema name (uppercase for unquoted names)
        `tableNamePattern` - null (to get all objects) or a table name (uppercase for unquoted names)
        `columnNamePattern` - null (to get all objects) or a column name (uppercase for unquoted names)
      Returns:
        the list of pseudo and invisible columns
      Throws:
        `java.sql.SQLException`

    - #### toString

          public java.lang.String toString()

      INTERNAL
      Overrides:
        `toString` in class `java.lang.Object`