com.sun.gjc.spi.base.DatabaseMetaDataWrapper Maven / Gradle / Ivy
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can
* obtain a copy of the License at
* https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/
// Portions Copyright [2018] Payara Foundation and/or affiliates
package com.sun.gjc.spi.base;
import com.sun.gjc.util.MethodExecutor;
import com.sun.logging.LogDomains;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Logger;
/**
* Abstract class for wrapping DatabaseMetaData
*/
public abstract class DatabaseMetaDataWrapper implements DatabaseMetaData {
protected DatabaseMetaData databaseMetaData = null;
protected Connection connection = null;
private MethodExecutor executor = null;
protected final static Logger _logger;
static {
_logger = LogDomains.getLogger(MethodExecutor.class, LogDomains.RSR_LOGGER);
}
/**
* Abstract class for wrapping DatabaseMetaData
*
* @param con Connection that is wrapped.
* @param metaData DatabaseMetaData that is wrapped
*/
public DatabaseMetaDataWrapper(Connection con, DatabaseMetaData metaData) {
connection = con;
databaseMetaData = metaData;
executor = new MethodExecutor();
}
/**
* Retrieves whether the current user can call all the procedures
* returned by the method getProcedures
.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean allProceduresAreCallable() throws SQLException {
return databaseMetaData.allProceduresAreCallable();
}
/**
* Retrieves whether the current user can use all the tables returned
* by the method getTables
in a SELECT
* statement.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean allTablesAreSelectable() throws SQLException {
return databaseMetaData.allTablesAreSelectable();
}
/**
* Retrieves the URL for this DBMS.
*
* @return the URL for this DBMS or null
if it cannot be
* generated
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getURL() throws SQLException {
return databaseMetaData.getURL();
}
/**
* Retrieves the user name as known to this database.
*
* @return the database user name
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getUserName() throws SQLException {
return databaseMetaData.getUserName();
}
/**
* Retrieves whether this database is in read-only mode.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean isReadOnly() throws SQLException {
return databaseMetaData.isReadOnly();
}
/**
* Retrieves whether NULL
values are sorted high.
* Sorted high means that NULL
values
* sort higher than any other value in a domain. In an ascending order,
* if this method returns true
, NULL
values
* will appear at the end. By contrast, the method
* nullsAreSortedAtEnd
indicates whether NULL
values
* are sorted at the end regardless of sort order.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean nullsAreSortedHigh() throws SQLException {
return databaseMetaData.nullsAreSortedHigh();
}
/**
* Retrieves whether NULL
values are sorted low.
* Sorted low means that NULL
values
* sort lower than any other value in a domain. In an ascending order,
* if this method returns true
, NULL
values
* will appear at the beginning. By contrast, the method
* nullsAreSortedAtStart
indicates whether NULL
values
* are sorted at the beginning regardless of sort order.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean nullsAreSortedLow() throws SQLException {
return databaseMetaData.nullsAreSortedLow();
}
/**
* Retrieves whether NULL
values are sorted at the start regardless
* of sort order.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean nullsAreSortedAtStart() throws SQLException {
return databaseMetaData.nullsAreSortedAtStart();
}
/**
* Retrieves whether NULL
values are sorted at the end regardless of
* sort order.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean nullsAreSortedAtEnd() throws SQLException {
return databaseMetaData.nullsAreSortedAtEnd();
}
/**
* Retrieves the name of this database product.
*
* @return database product name
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getDatabaseProductName() throws SQLException {
return databaseMetaData.getDatabaseProductName();
}
/**
* Retrieves the version number of this database product.
*
* @return database version number
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getDatabaseProductVersion() throws SQLException {
return databaseMetaData.getDatabaseProductVersion();
}
/**
* Retrieves the name of this JDBC driver.
*
* @return JDBC driver name
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getDriverName() throws SQLException {
return databaseMetaData.getDriverName();
}
/**
* Retrieves the version number of this JDBC driver as a String
.
*
* @return JDBC driver version
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getDriverVersion() throws SQLException {
return databaseMetaData.getDriverVersion();
}
/**
* Retrieves this JDBC driver's major version number.
*
* @return JDBC driver major version
*/
@Override
public int getDriverMajorVersion() {
return databaseMetaData.getDriverMajorVersion();
}
/**
* Retrieves this JDBC driver's minor version number.
*
* @return JDBC driver minor version number
*/
@Override
public int getDriverMinorVersion() {
return databaseMetaData.getDriverMinorVersion();
}
/**
* Retrieves whether this database stores tables in a local file.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean usesLocalFiles() throws SQLException {
return databaseMetaData.usesLocalFiles();
}
/**
* Retrieves whether this database uses a file for each table.
*
* @return true
if this database uses a local file for each table;
* false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean usesLocalFilePerTable() throws SQLException {
return databaseMetaData.usesLocalFilePerTable();
}
/**
* Retrieves whether this database treats mixed case unquoted SQL identifiers as
* case sensitive and as a result stores them in mixed case.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsMixedCaseIdentifiers() throws SQLException {
return databaseMetaData.supportsMixedCaseIdentifiers();
}
/**
* Retrieves whether this database treats mixed case unquoted SQL identifiers as
* case insensitive and stores them in upper case.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean storesUpperCaseIdentifiers() throws SQLException {
return databaseMetaData.storesUpperCaseIdentifiers();
}
/**
* Retrieves whether this database treats mixed case unquoted SQL identifiers as
* case insensitive and stores them in lower case.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean storesLowerCaseIdentifiers() throws SQLException {
return databaseMetaData.storesLowerCaseIdentifiers();
}
/**
* Retrieves whether this database treats mixed case unquoted SQL identifiers as
* case insensitive and stores them in mixed case.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean storesMixedCaseIdentifiers() throws SQLException {
return databaseMetaData.storesMixedCaseIdentifiers();
}
/**
* Retrieves whether this database treats mixed case quoted SQL identifiers as
* case sensitive and as a result stores them in mixed case.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException {
return databaseMetaData.supportsMixedCaseQuotedIdentifiers();
}
/**
* Retrieves whether this database treats mixed case quoted SQL identifiers as
* case insensitive and stores them in upper case.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean storesUpperCaseQuotedIdentifiers() throws SQLException {
return databaseMetaData.storesUpperCaseQuotedIdentifiers();
}
/**
* Retrieves whether this database treats mixed case quoted SQL identifiers as
* case insensitive and stores them in lower case.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean storesLowerCaseQuotedIdentifiers() throws SQLException {
return databaseMetaData.storesLowerCaseQuotedIdentifiers();
}
/**
* Retrieves whether this database treats mixed case quoted SQL identifiers as
* case insensitive and stores them in mixed case.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean storesMixedCaseQuotedIdentifiers() throws SQLException {
return databaseMetaData.storesMixedCaseQuotedIdentifiers();
}
/**
* Retrieves the string used to quote SQL identifiers.
* This method returns a space " " if identifier quoting is not supported.
*
* @return the quoting string or a space if quoting is not supported
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getIdentifierQuoteString() throws SQLException {
return databaseMetaData.getIdentifierQuoteString();
}
/**
* Retrieves a comma-separated list of all of this database's SQL keywords
* that are NOT also SQL92 keywords.
*
* @return the list of this database's keywords that are not also
* SQL92 keywords
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getSQLKeywords() throws SQLException {
return databaseMetaData.getSQLKeywords();
}
/**
* Retrieves a comma-separated list of math functions available with
* this database. These are the Open /Open CLI math function names used in
* the JDBC function escape clause.
*
* @return the list of math functions supported by this database
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getNumericFunctions() throws SQLException {
return databaseMetaData.getNumericFunctions();
}
/**
* Retrieves a comma-separated list of string functions available with
* this database. These are the Open Group CLI string function names used
* in the JDBC function escape clause.
*
* @return the list of string functions supported by this database
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getStringFunctions() throws SQLException {
return databaseMetaData.getStringFunctions();
}
/**
* Retrieves a comma-separated list of system functions available with
* this database. These are the Open Group CLI system function names used
* in the JDBC function escape clause.
*
* @return a list of system functions supported by this database
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getSystemFunctions() throws SQLException {
return databaseMetaData.getSystemFunctions();
}
/**
* Retrieves a comma-separated list of the time and date functions available
* with this database.
*
* @return the list of time and date functions supported by this database
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getTimeDateFunctions() throws SQLException {
return databaseMetaData.getTimeDateFunctions();
}
/**
* Retrieves the string that can be used to escape wildcard characters.
* This is the string that can be used to escape '_' or '%' in
* the catalog search parameters that are a pattern (and therefore use one
* of the wildcard characters).
* The '_' character represents any single character;
* the '%' character represents any sequence of zero or
* more characters.
*
* @return the string used to escape wildcard characters
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getSearchStringEscape() throws SQLException {
return databaseMetaData.getSearchStringEscape();
}
/**
* Retrieves all the "extra" characters that can be used in unquoted
* identifier names (those beyond a-z, A-Z, 0-9 and _).
*
* @return the string containing the extra characters
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getExtraNameCharacters() throws SQLException {
return databaseMetaData.getExtraNameCharacters();
}
/**
* Retrieves whether this database supports ALTER TABLE
* with add column.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsAlterTableWithAddColumn() throws SQLException {
return databaseMetaData.supportsAlterTableWithAddColumn();
}
/**
* Retrieves whether this database supports ALTER TABLE
* with drop column.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsAlterTableWithDropColumn() throws SQLException {
return databaseMetaData.supportsAlterTableWithDropColumn();
}
/**
* Retrieves whether this database supports column aliasing.
* If so, the SQL AS clause can be used to provide names for
* computed columns or to provide alias names for columns as
* required.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsColumnAliasing() throws SQLException {
return databaseMetaData.supportsColumnAliasing();
}
/**
* Retrieves whether this database supports concatenations between
* NULL
and non-NULL
values being
* NULL
.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean nullPlusNonNullIsNull() throws SQLException {
return databaseMetaData.nullPlusNonNullIsNull();
}
/**
* Retrieves whether this database supports the CONVERT
* function between SQL types.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsConvert() throws SQLException {
return databaseMetaData.supportsConvert();
}
/**
* Retrieves whether this database supports the CONVERT
* for two given SQL types.
*
* @param fromType the type to convert from; one of the type codes from
* the class java.sql.Types
* @param toType the type to convert to; one of the type codes from
* the class java.sql.Types
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @see java.sql.Types
*/
@Override
public boolean supportsConvert(int fromType, int toType) throws SQLException {
return databaseMetaData.supportsConvert(fromType, toType);
}
/**
* Retrieves whether this database supports table correlation names.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsTableCorrelationNames() throws SQLException {
return databaseMetaData.supportsTableCorrelationNames();
}
/**
* Retrieves whether, when table correlation names are supported, they
* are restricted to being different from the names of the tables.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsDifferentTableCorrelationNames() throws SQLException {
return databaseMetaData.supportsDifferentTableCorrelationNames();
}
/**
* Retrieves whether this database supports expressions in
* ORDER BY
lists.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsExpressionsInOrderBy() throws SQLException {
return databaseMetaData.supportsExpressionsInOrderBy();
}
/**
* Retrieves whether this database supports using a column that is
* not in the SELECT
statement in an
* ORDER BY
clause.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsOrderByUnrelated() throws SQLException {
return databaseMetaData.supportsOrderByUnrelated();
}
/**
* Retrieves whether this database supports some form of
* GROUP BY
clause.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsGroupBy() throws SQLException {
return databaseMetaData.supportsGroupBy();
}
/**
* Retrieves whether this database supports using a column that is
* not in the SELECT
statement in a
* GROUP BY
clause.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsGroupByUnrelated() throws SQLException {
return databaseMetaData.supportsGroupByUnrelated();
}
/**
* Retrieves whether this database supports using columns not included in
* the SELECT
statement in a GROUP BY
clause
* provided that all of the columns in the SELECT
statement
* are included in the GROUP BY
clause.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsGroupByBeyondSelect() throws SQLException {
return databaseMetaData.supportsGroupByBeyondSelect();
}
/**
* Retrieves whether this database supports specifying a
* LIKE
escape clause.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsLikeEscapeClause() throws SQLException {
return databaseMetaData.supportsLikeEscapeClause();
}
/**
* Retrieves whether this database supports getting multiple
* ResultSet
objects from a single call to the
* method execute
.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsMultipleResultSets() throws SQLException {
return databaseMetaData.supportsMultipleResultSets();
}
/**
* Retrieves whether this database allows having multiple
* transactions open at once (on different connections).
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsMultipleTransactions() throws SQLException {
return databaseMetaData.supportsMultipleTransactions();
}
/**
* Retrieves whether columns in this database may be defined as non-nullable.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsNonNullableColumns() throws SQLException {
return databaseMetaData.supportsNonNullableColumns();
}
/**
* Retrieves whether this database supports the ODBC Minimum SQL grammar.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsMinimumSQLGrammar() throws SQLException {
return databaseMetaData.supportsMinimumSQLGrammar();
}
/**
* Retrieves whether this database supports the ODBC Core SQL grammar.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsCoreSQLGrammar() throws SQLException {
return databaseMetaData.supportsCoreSQLGrammar();
}
/**
* Retrieves whether this database supports the ODBC Extended SQL grammar.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsExtendedSQLGrammar() throws SQLException {
return databaseMetaData.supportsExtendedSQLGrammar();
}
/**
* Retrieves whether this database supports the ANSI92 entry level SQL
* grammar.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsANSI92EntryLevelSQL() throws SQLException {
return databaseMetaData.supportsANSI92EntryLevelSQL();
}
/**
* Retrieves whether this database supports the ANSI92 intermediate SQL grammar supported.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsANSI92IntermediateSQL() throws SQLException {
return databaseMetaData.supportsANSI92IntermediateSQL();
}
/**
* Retrieves whether this database supports the ANSI92 full SQL grammar supported.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsANSI92FullSQL() throws SQLException {
return databaseMetaData.supportsANSI92FullSQL();
}
/**
* Retrieves whether this database supports the SQL Integrity
* Enhancement Facility.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsIntegrityEnhancementFacility() throws SQLException {
return databaseMetaData.supportsIntegrityEnhancementFacility();
}
/**
* Retrieves whether this database supports some form of outer join.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsOuterJoins() throws SQLException {
return databaseMetaData.supportsOuterJoins();
}
/**
* Retrieves whether this database supports full nested outer joins.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsFullOuterJoins() throws SQLException {
return databaseMetaData.supportsFullOuterJoins();
}
/**
* Retrieves whether this database provides limited support for outer
* joins. (This will be true
if the method
* supportsFullOuterJoins
returns true
).
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsLimitedOuterJoins() throws SQLException {
return databaseMetaData.supportsLimitedOuterJoins();
}
/**
* Retrieves the database vendor's preferred term for "schema".
*
* @return the vendor term for "schema"
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getSchemaTerm() throws SQLException {
return databaseMetaData.getSchemaTerm();
}
/**
* Retrieves the database vendor's preferred term for "procedure".
*
* @return the vendor term for "procedure"
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getProcedureTerm() throws SQLException {
return databaseMetaData.getProcedureTerm();
}
/**
* Retrieves the database vendor's preferred term for "catalog".
*
* @return the vendor term for "catalog"
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getCatalogTerm() throws SQLException {
return databaseMetaData.getCatalogTerm();
}
/**
* Retrieves whether a catalog appears at the start of a fully qualified
* table name. If not, the catalog appears at the end.
*
* @return true
if the catalog name appears at the beginning
* of a fully qualified table name; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean isCatalogAtStart() throws SQLException {
return databaseMetaData.isCatalogAtStart();
}
/**
* Retrieves the String
that this database uses as the
* separator between a catalog and table name.
*
* @return the separator string
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public String getCatalogSeparator() throws SQLException {
return databaseMetaData.getCatalogSeparator();
}
/**
* Retrieves whether a schema name can be used in a data manipulation statement.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsSchemasInDataManipulation() throws SQLException {
return databaseMetaData.supportsSchemasInDataManipulation();
}
/**
* Retrieves whether a schema name can be used in a procedure call statement.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsSchemasInProcedureCalls() throws SQLException {
return databaseMetaData.supportsSchemasInProcedureCalls();
}
/**
* Retrieves whether a schema name can be used in a table definition statement.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsSchemasInTableDefinitions() throws SQLException {
return databaseMetaData.supportsSchemasInTableDefinitions();
}
/**
* Retrieves whether a schema name can be used in an index definition statement.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsSchemasInIndexDefinitions() throws SQLException {
return databaseMetaData.supportsSchemasInIndexDefinitions();
}
/**
* Retrieves whether a schema name can be used in a privilege definition statement.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsSchemasInPrivilegeDefinitions() throws SQLException {
return databaseMetaData.supportsSchemasInPrivilegeDefinitions();
}
/**
* Retrieves whether a catalog name can be used in a data manipulation statement.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsCatalogsInDataManipulation() throws SQLException {
return databaseMetaData.supportsCatalogsInDataManipulation();
}
/**
* Retrieves whether a catalog name can be used in a procedure call statement.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsCatalogsInProcedureCalls() throws SQLException {
return databaseMetaData.supportsCatalogsInProcedureCalls();
}
/**
* Retrieves whether a catalog name can be used in a table definition statement.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsCatalogsInTableDefinitions() throws SQLException {
return databaseMetaData.supportsCatalogsInTableDefinitions();
}
/**
* Retrieves whether a catalog name can be used in an index definition statement.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsCatalogsInIndexDefinitions() throws SQLException {
return databaseMetaData.supportsCatalogsInIndexDefinitions();
}
/**
* Retrieves whether a catalog name can be used in a privilege definition statement.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException {
return databaseMetaData.supportsCatalogsInPrivilegeDefinitions();
}
/**
* Retrieves whether this database supports positioned DELETE
* statements.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsPositionedDelete() throws SQLException {
return databaseMetaData.supportsPositionedDelete();
}
/**
* Retrieves whether this database supports positioned UPDATE
* statements.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsPositionedUpdate() throws SQLException {
return databaseMetaData.supportsPositionedUpdate();
}
/**
* Retrieves whether this database supports SELECT FOR UPDATE
* statements.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsSelectForUpdate() throws SQLException {
return databaseMetaData.supportsSelectForUpdate();
}
/**
* Retrieves whether this database supports stored procedure calls
* that use the stored procedure escape syntax.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsStoredProcedures() throws SQLException {
return databaseMetaData.supportsStoredProcedures();
}
/**
* Retrieves whether this database supports subqueries in comparison
* expressions.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsSubqueriesInComparisons() throws SQLException {
return databaseMetaData.supportsSubqueriesInComparisons();
}
/**
* Retrieves whether this database supports subqueries in
* EXISTS
expressions.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsSubqueriesInExists() throws SQLException {
return databaseMetaData.supportsSubqueriesInExists();
}
/**
* Retrieves whether this database supports subqueries in
* IN
statements.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsSubqueriesInIns() throws SQLException {
return databaseMetaData.supportsSubqueriesInIns();
}
/**
* Retrieves whether this database supports subqueries in quantified
* expressions.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsSubqueriesInQuantifieds() throws SQLException {
return databaseMetaData.supportsSubqueriesInQuantifieds();
}
/**
* Retrieves whether this database supports correlated subqueries.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsCorrelatedSubqueries() throws SQLException {
return databaseMetaData.supportsCorrelatedSubqueries();
}
/**
* Retrieves whether this database supports SQL UNION
.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsUnion() throws SQLException {
return databaseMetaData.supportsUnion();
}
/**
* Retrieves whether this database supports SQL UNION ALL
.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsUnionAll() throws SQLException {
return databaseMetaData.supportsUnionAll();
}
/**
* Retrieves whether this database supports keeping cursors open
* across commits.
*
* @return true
if cursors always remain open;
* false
if they might not remain open
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsOpenCursorsAcrossCommit() throws SQLException {
return databaseMetaData.supportsOpenCursorsAcrossCommit();
}
/**
* Retrieves whether this database supports keeping cursors open
* across rollbacks.
*
* @return true
if cursors always remain open;
* false
if they might not remain open
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsOpenCursorsAcrossRollback() throws SQLException {
return databaseMetaData.supportsOpenCursorsAcrossRollback();
}
/**
* Retrieves whether this database supports keeping statements open
* across commits.
*
* @return true
if statements always remain open;
* false
if they might not remain open
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsOpenStatementsAcrossCommit() throws SQLException {
return databaseMetaData.supportsOpenStatementsAcrossCommit();
}
/**
* Retrieves whether this database supports keeping statements open
* across rollbacks.
*
* @return true
if statements always remain open;
* false
if they might not remain open
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsOpenStatementsAcrossRollback() throws SQLException {
return databaseMetaData.supportsOpenStatementsAcrossRollback();
}
/**
* Retrieves the maximum number of hex characters this database allows in an
* inline binary literal.
*
* @return max the maximum length (in hex characters) for a binary literal;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxBinaryLiteralLength() throws SQLException {
return databaseMetaData.getMaxBinaryLiteralLength();
}
/**
* Retrieves the maximum number of characters this database allows
* for a character literal.
*
* @return the maximum number of characters allowed for a character literal;
* a result of zero means that there is no limit or the limit is
* not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxCharLiteralLength() throws SQLException {
return databaseMetaData.getMaxCharLiteralLength();
}
/**
* Retrieves the maximum number of characters this database allows
* for a column name.
*
* @return the maximum number of characters allowed for a column name;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxColumnNameLength() throws SQLException {
return databaseMetaData.getMaxColumnNameLength();
}
/**
* Retrieves the maximum number of columns this database allows in a
* GROUP BY
clause.
*
* @return the maximum number of columns allowed;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxColumnsInGroupBy() throws SQLException {
return databaseMetaData.getMaxColumnsInGroupBy();
}
/**
* Retrieves the maximum number of columns this database allows in an index.
*
* @return the maximum number of columns allowed;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxColumnsInIndex() throws SQLException {
return databaseMetaData.getMaxColumnsInIndex();
}
/**
* Retrieves the maximum number of columns this database allows in an
* ORDER BY
clause.
*
* @return the maximum number of columns allowed;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxColumnsInOrderBy() throws SQLException {
return databaseMetaData.getMaxColumnsInOrderBy();
}
/**
* Retrieves the maximum number of columns this database allows in a
* SELECT
list.
*
* @return the maximum number of columns allowed;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxColumnsInSelect() throws SQLException {
return databaseMetaData.getMaxColumnsInSelect();
}
/**
* Retrieves the maximum number of columns this database allows in a table.
*
* @return the maximum number of columns allowed;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxColumnsInTable() throws SQLException {
return databaseMetaData.getMaxColumnsInTable();
}
/**
* Retrieves the maximum number of concurrent connections to this
* database that are possible.
*
* @return the maximum number of active connections possible at one time;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxConnections() throws SQLException {
return databaseMetaData.getMaxConnections();
}
/**
* Retrieves the maximum number of characters that this database allows in a
* cursor name.
*
* @return the maximum number of characters allowed in a cursor name;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxCursorNameLength() throws SQLException {
return databaseMetaData.getMaxCursorNameLength();
}
/**
* Retrieves the maximum number of bytes this database allows for an
* index, including all of the parts of the index.
*
* @return the maximum number of bytes allowed; this limit includes the
* composite of all the constituent parts of the index;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxIndexLength() throws SQLException {
return databaseMetaData.getMaxIndexLength();
}
/**
* Retrieves the maximum number of characters that this database allows in a
* schema name.
*
* @return the maximum number of characters allowed in a schema name;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxSchemaNameLength() throws SQLException {
return databaseMetaData.getMaxSchemaNameLength();
}
/**
* Retrieves the maximum number of characters that this database allows in a
* procedure name.
*
* @return the maximum number of characters allowed in a procedure name;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxProcedureNameLength() throws SQLException {
return databaseMetaData.getMaxProcedureNameLength();
}
/**
* Retrieves the maximum number of characters that this database allows in a
* catalog name.
*
* @return the maximum number of characters allowed in a catalog name;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxCatalogNameLength() throws SQLException {
return databaseMetaData.getMaxCatalogNameLength();
}
/**
* Retrieves the maximum number of bytes this database allows in
* a single row.
*
* @return the maximum number of bytes allowed for a row; a result of
* zero means that there is no limit or the limit is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxRowSize() throws SQLException {
return databaseMetaData.getMaxRowSize();
}
/**
* Retrieves whether the return value for the method
* getMaxRowSize
includes the SQL data types
* LONGVARCHAR
and LONGVARBINARY
.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean doesMaxRowSizeIncludeBlobs() throws SQLException {
return databaseMetaData.doesMaxRowSizeIncludeBlobs();
}
/**
* Retrieves the maximum number of characters this database allows in
* an SQL statement.
*
* @return the maximum number of characters allowed for an SQL statement;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxStatementLength() throws SQLException {
return databaseMetaData.getMaxStatementLength();
}
/**
* Retrieves the maximum number of active statements to this database
* that can be open at the same time.
*
* @return the maximum number of statements that can be open at one time;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxStatements() throws SQLException {
return databaseMetaData.getMaxStatements();
}
/**
* Retrieves the maximum number of characters this database allows in
* a table name.
*
* @return the maximum number of characters allowed for a table name;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxTableNameLength() throws SQLException {
return databaseMetaData.getMaxTableNameLength();
}
/**
* Retrieves the maximum number of tables this database allows in a
* SELECT
statement.
*
* @return the maximum number of tables allowed in a SELECT
* statement; a result of zero means that there is no limit or
* the limit is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxTablesInSelect() throws SQLException {
return databaseMetaData.getMaxTablesInSelect();
}
/**
* Retrieves the maximum number of characters this database allows in
* a user name.
*
* @return the maximum number of characters allowed for a user name;
* a result of zero means that there is no limit or the limit
* is not known
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public int getMaxUserNameLength() throws SQLException {
return databaseMetaData.getMaxUserNameLength();
}
/**
* Retrieves this database's default transaction isolation level. The
* possible values are defined in java.sql.Connection
.
*
* @return the default isolation level
* @throws java.sql.SQLException if a database access error occurs
* @see java.sql.Connection
*/
@Override
public int getDefaultTransactionIsolation() throws SQLException {
return databaseMetaData.getDefaultTransactionIsolation();
}
/**
* Retrieves whether this database supports transactions. If not, invoking the
* method commit
is a noop, and the isolation level is
* TRANSACTION_NONE
.
*
* @return true
if transactions are supported;
* false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsTransactions() throws SQLException {
return databaseMetaData.supportsTransactions();
}
/**
* Retrieves whether this database supports the given transaction isolation level.
*
* @param level one of the transaction isolation levels defined in
* java.sql.Connection
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @see java.sql.Connection
*/
@Override
public boolean supportsTransactionIsolationLevel(int level) throws SQLException {
return databaseMetaData.supportsTransactionIsolationLevel(level);
}
/**
* Retrieves whether this database supports both data definition and
* data manipulation statements within a transaction.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsDataDefinitionAndDataManipulationTransactions() throws SQLException {
return databaseMetaData.supportsDataDefinitionAndDataManipulationTransactions();
}
/**
* Retrieves whether this database supports only data manipulation
* statements within a transaction.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean supportsDataManipulationTransactionsOnly() throws SQLException {
return databaseMetaData.supportsDataManipulationTransactionsOnly();
}
/**
* Retrieves whether a data definition statement within a transaction forces
* the transaction to commit.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean dataDefinitionCausesTransactionCommit() throws SQLException {
return databaseMetaData.dataDefinitionCausesTransactionCommit();
}
/**
* Retrieves whether this database ignores a data definition statement
* within a transaction.
*
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public boolean dataDefinitionIgnoredInTransactions() throws SQLException {
return databaseMetaData.dataDefinitionIgnoredInTransactions();
}
/**
* Retrieves a description of the stored procedures available in the given
* catalog.
*
* Only procedure descriptions matching the schema and
* procedure name criteria are returned. They are ordered by
* PROCEDURE_SCHEM
and PROCEDURE_NAME
.
*
* Each procedure description has the the following columns:
*
* - PROCEDURE_CAT String => procedure catalog (may be
null
)
* - PROCEDURE_SCHEM String => procedure schema (may be
null
)
* - PROCEDURE_NAME String => procedure name
*
- reserved for future use
*
- reserved for future use
*
- reserved for future use
*
- REMARKS String => explanatory comment on the procedure
*
- PROCEDURE_TYPE short => kind of procedure:
*
* - procedureResultUnknown - May return a result
*
- procedureNoResult - Does not return a result
*
- procedureReturnsResult - Returns a result
*
*
*
* @param catalog a catalog name; must match the catalog name as it
* is stored in the database; "" retrieves those without a catalog;
* null
means that the catalog name should not be used to narrow
* the search
* @param schemaPattern a schema name pattern; must match the schema name
* as it is stored in the database; "" retrieves those without a schema;
* null
means that the schema name should not be used to narrow
* the search
* @param procedureNamePattern a procedure name pattern; must match the
* procedure name as it is stored in the database
* @return ResultSet
- each row is a procedure description
* @throws java.sql.SQLException if a database access error occurs
* @see #getSearchStringEscape
*/
@Override
public ResultSet getProcedures(String catalog, String schemaPattern,
String procedureNamePattern) throws SQLException {
return databaseMetaData.getProcedures(catalog, schemaPattern, procedureNamePattern);
}
/**
* Retrieves a description of the given catalog's stored procedure parameter
* and result columns.
*
* Only descriptions matching the schema, procedure and
* parameter name criteria are returned. They are ordered by
* PROCEDURE_SCHEM and PROCEDURE_NAME. Within this, the return value,
* if any, is first. Next are the parameter descriptions in call
* order. The column descriptions follow in column number order.
*
* Each row in the ResultSet
is a parameter description or
* column description with the following fields:
*
* - PROCEDURE_CAT String => procedure catalog (may be
null
)
* - PROCEDURE_SCHEM String => procedure schema (may be
null
)
* - PROCEDURE_NAME String => procedure name
*
- COLUMN_NAME String => column/parameter name
*
- COLUMN_TYPE Short => kind of column/parameter:
*
* - procedureColumnUnknown - nobody knows
*
- procedureColumnIn - IN parameter
*
- procedureColumnInOut - INOUT parameter
*
- procedureColumnOut - OUT parameter
*
- procedureColumnReturn - procedure return value
*
- procedureColumnResult - result column in
ResultSet
*
* - DATA_TYPE int => SQL type from java.sql.Types
*
- TYPE_NAME String => SQL type name, for a UDT type the
* type name is fully qualified
*
- PRECISION int => precision
*
- LENGTH int => length in bytes of data
*
- SCALE short => scale
*
- RADIX short => radix
*
- NULLABLE short => can it contain NULL.
*
* - procedureNoNulls - does not allow NULL values
*
- procedureNullable - allows NULL values
*
- procedureNullableUnknown - nullability unknown
*
* - REMARKS String => comment describing parameter/column
*
*
* Note: Some databases may not return the column
* descriptions for a procedure. Additional columns beyond
* REMARKS can be defined by the database.
*
* @param catalog a catalog name; must match the catalog name as it
* is stored in the database; "" retrieves those without a catalog;
* null
means that the catalog name should not be used to narrow
* the search
* @param schemaPattern a schema name pattern; must match the schema name
* as it is stored in the database; "" retrieves those without a schema;
* null
means that the schema name should not be used to narrow
* the search
* @param procedureNamePattern a procedure name pattern; must match the
* procedure name as it is stored in the database
* @param columnNamePattern a column name pattern; must match the column name
* as it is stored in the database
* @return ResultSet
- each row describes a stored procedure parameter or
* column
* @throws java.sql.SQLException if a database access error occurs
* @see #getSearchStringEscape
*/
@Override
public ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern,
String columnNamePattern) throws SQLException {
return databaseMetaData.getProcedureColumns(catalog, schemaPattern, procedureNamePattern, columnNamePattern);
}
/**
* Retrieves a description of the tables available in the given catalog.
* Only table descriptions matching the catalog, schema, table
* name and type criteria are returned. They are ordered by
* TABLE_TYPE, TABLE_SCHEM and TABLE_NAME.
*
* Each table description has the following columns:
*
* - TABLE_CAT String => table catalog (may be
null
)
* - TABLE_SCHEM String => table schema (may be
null
)
* - TABLE_NAME String => table name
*
- TABLE_TYPE String => table type. Typical types are "TABLE",
* "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY",
* "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
*
- REMARKS String => explanatory comment on the table
*
- TYPE_CAT String => the types catalog (may be
null
)
* - TYPE_SCHEM String => the types schema (may be
null
)
* - TYPE_NAME String => type name (may be
null
)
* - SELF_REFERENCING_COL_NAME String => name of the designated
* "identifier" column of a typed table (may be
null
)
* - REF_GENERATION String => specifies how values in
* SELF_REFERENCING_COL_NAME are created. Values are
* "SYSTEM", "USER", "DERIVED". (may be
null
)
*
*
* Note: Some databases may not return information for
* all tables.
*
* @param catalog a catalog name; must match the catalog name as it
* is stored in the database; "" retrieves those without a catalog;
* null
means that the catalog name should not be used to narrow
* the search
* @param schemaPattern a schema name pattern; must match the schema name
* as it is stored in the database; "" retrieves those without a schema;
* null
means that the schema name should not be used to narrow
* the search
* @param tableNamePattern a table name pattern; must match the
* table name as it is stored in the database
* @param types a list of table types to include; null
returns all types
* @return ResultSet
- each row is a table description
* @throws java.sql.SQLException if a database access error occurs
* @see #getSearchStringEscape
*/
@Override
public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern,
String types[]) throws SQLException {
return databaseMetaData.getTables(catalog, schemaPattern, tableNamePattern, types);
}
/**
* Retrieves the schema names available in this database. The results
* are ordered by schema name.
*
* The schema column is:
*
* - TABLE_SCHEM String => schema name
*
- TABLE_CATALOG String => catalog name (may be
null
)
*
*
* @return a ResultSet
object in which each row is a
* schema decription
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public ResultSet getSchemas() throws SQLException {
return databaseMetaData.getSchemas();
}
/**
* Retrieves the catalog names available in this database. The results
* are ordered by catalog name.
*
* The catalog column is:
*
* - TABLE_CAT String => catalog name
*
*
* @return a ResultSet
object in which each row has a
* single String
column that is a catalog name
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public ResultSet getCatalogs() throws SQLException {
return databaseMetaData.getCatalogs();
}
/**
* Retrieves the table types available in this database. The results
* are ordered by table type.
*
* The table type is:
*
* - TABLE_TYPE String => table type. Typical types are "TABLE",
* "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY",
* "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
*
*
* @return a ResultSet
object in which each row has a
* single String
column that is a table type
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public ResultSet getTableTypes() throws SQLException {
return databaseMetaData.getTableTypes();
}
/**
* Retrieves a description of table columns available in
* the specified catalog.
*
* Only column descriptions matching the catalog, schema, table
* and column name criteria are returned. They are ordered by
* TABLE_SCHEM
, TABLE_NAME
, and
* ORDINAL_POSITION
.
*
* Each column description has the following columns:
*
* - TABLE_CAT String => table catalog (may be
null
)
* - TABLE_SCHEM String => table schema (may be
null
)
* - TABLE_NAME String => table name
*
- COLUMN_NAME String => column name
*
- DATA_TYPE int => SQL type from java.sql.Types
*
- TYPE_NAME String => Data source dependent type name,
* for a UDT the type name is fully qualified
*
- COLUMN_SIZE int => column size. For char or date
* types this is the maximum number of characters, for numeric or
* decimal types this is precision.
*
- BUFFER_LENGTH is not used.
*
- DECIMAL_DIGITS int => the number of fractional digits
*
- NUM_PREC_RADIX int => Radix (typically either 10 or 2)
*
- NULLABLE int => is NULL allowed.
*
* - columnNoNulls - might not allow
NULL
values
* - columnNullable - definitely allows
NULL
values
* - columnNullableUnknown - nullability unknown
*
* - REMARKS String => comment describing column (may be
null
)
* - COLUMN_DEF String => default value (may be
null
)
* - SQL_DATA_TYPE int => unused
*
- SQL_DATETIME_SUB int => unused
*
- CHAR_OCTET_LENGTH int => for char types the
* maximum number of bytes in the column
*
- ORDINAL_POSITION int => index of column in table
* (starting at 1)
*
- IS_NULLABLE String => "NO" means column definitely
* does not allow NULL values; "YES" means the column might
* allow NULL values. An empty string means nobody knows.
*
- SCOPE_CATLOG String => catalog of table that is the scope
* of a reference attribute (
null
if DATA_TYPE isn't REF)
* - SCOPE_SCHEMA String => schema of table that is the scope
* of a reference attribute (
null
if the DATA_TYPE isn't REF)
* - SCOPE_TABLE String => table name that this the scope
* of a reference attribure (
null
if the DATA_TYPE isn't REF)
* - SOURCE_DATA_TYPE short => source type of a distinct type or user-generated
* Ref type, SQL type from java.sql.Types (
null
if DATA_TYPE
* isn't DISTINCT or user-generated REF)
*
*
* @param catalog a catalog name; must match the catalog name as it
* is stored in the database; "" retrieves those without a catalog;
* null
means that the catalog name should not be used to narrow
* the search
* @param schemaPattern a schema name pattern; must match the schema name
* as it is stored in the database; "" retrieves those without a schema;
* null
means that the schema name should not be used to narrow
* the search
* @param tableNamePattern a table name pattern; must match the
* table name as it is stored in the database
* @param columnNamePattern a column name pattern; must match the column
* name as it is stored in the database
* @return ResultSet
- each row is a column description
* @throws java.sql.SQLException if a database access error occurs
* @see #getSearchStringEscape
*/
@Override
public ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern,
String columnNamePattern) throws SQLException {
return databaseMetaData.getColumns(catalog, schemaPattern, tableNamePattern, columnNamePattern);
}
/**
* Retrieves a description of the access rights for a table's columns.
*
* Only privileges matching the column name criteria are
* returned. They are ordered by COLUMN_NAME and PRIVILEGE.
*
* Each privilige description has the following columns:
*
* - TABLE_CAT String => table catalog (may be
null
)
* - TABLE_SCHEM String => table schema (may be
null
)
* - TABLE_NAME String => table name
*
- COLUMN_NAME String => column name
*
- GRANTOR => grantor of access (may be
null
)
* - GRANTEE String => grantee of access
*
- PRIVILEGE String => name of access (SELECT,
* INSERT, UPDATE, REFRENCES, ...)
*
- IS_GRANTABLE String => "YES" if grantee is permitted
* to grant to others; "NO" if not;
null
if unknown
*
*
* @param catalog a catalog name; must match the catalog name as it
* is stored in the database; "" retrieves those without a catalog;
* null
means that the catalog name should not be used to narrow
* the search
* @param schema a schema name; must match the schema name as it is
* stored in the database; "" retrieves those without a schema;
* null
means that the schema name should not be used to narrow
* the search
* @param table a table name; must match the table name as it is
* stored in the database
* @param columnNamePattern a column name pattern; must match the column
* name as it is stored in the database
* @return ResultSet
- each row is a column privilege description
* @throws java.sql.SQLException if a database access error occurs
* @see #getSearchStringEscape
*/
@Override
public ResultSet getColumnPrivileges(String catalog, String schema, String table,
String columnNamePattern) throws SQLException {
return databaseMetaData.getColumnPrivileges(catalog, schema, table, columnNamePattern);
}
/**
* Retrieves a description of the access rights for each table available
* in a catalog. Note that a table privilege applies to one or
* more columns in the table. It would be wrong to assume that
* this privilege applies to all columns (this may be true for
* some systems but is not true for all.)
*
* Only privileges matching the schema and table name
* criteria are returned. They are ordered by TABLE_SCHEM,
* TABLE_NAME, and PRIVILEGE.
*
* Each privilige description has the following columns:
*
* - TABLE_CAT String => table catalog (may be
null
)
* - TABLE_SCHEM String => table schema (may be
null
)
* - TABLE_NAME String => table name
*
- GRANTOR => grantor of access (may be
null
)
* - GRANTEE String => grantee of access
*
- PRIVILEGE String => name of access (SELECT,
* INSERT, UPDATE, REFRENCES, ...)
*
- IS_GRANTABLE String => "YES" if grantee is permitted
* to grant to others; "NO" if not;
null
if unknown
*
*
* @param catalog a catalog name; must match the catalog name as it
* is stored in the database; "" retrieves those without a catalog;
* null
means that the catalog name should not be used to narrow
* the search
* @param schemaPattern a schema name pattern; must match the schema name
* as it is stored in the database; "" retrieves those without a schema;
* null
means that the schema name should not be used to narrow
* the search
* @param tableNamePattern a table name pattern; must match the
* table name as it is stored in the database
* @return ResultSet
- each row is a table privilege description
* @throws java.sql.SQLException if a database access error occurs
* @see #getSearchStringEscape
*/
@Override
public ResultSet getTablePrivileges(String catalog, String schemaPattern,
String tableNamePattern) throws SQLException {
return databaseMetaData.getTablePrivileges(catalog, schemaPattern, tableNamePattern);
}
/**
* Retrieves a description of a table's optimal set of columns that
* uniquely identifies a row. They are ordered by SCOPE.
*
* Each column description has the following columns:
*
* - SCOPE short => actual scope of result
*
* - bestRowTemporary - very temporary, while using row
*
- bestRowTransaction - valid for remainder of current transaction
*
- bestRowSession - valid for remainder of current session
*
* - COLUMN_NAME String => column name
*
- DATA_TYPE int => SQL data type from java.sql.Types
*
- TYPE_NAME String => Data source dependent type name,
* for a UDT the type name is fully qualified
*
- COLUMN_SIZE int => precision
*
- BUFFER_LENGTH int => not used
*
- DECIMAL_DIGITS short => scale
*
- PSEUDO_COLUMN short => is this a pseudo column
* like an Oracle ROWID
*
* - bestRowUnknown - may or may not be pseudo column
*
- bestRowNotPseudo - is NOT a pseudo column
*
- bestRowPseudo - is a pseudo column
*
*
*
* @param catalog a catalog name; must match the catalog name as it
* is stored in the database; "" retrieves those without a catalog;
* null
means that the catalog name should not be used to narrow
* the search
* @param schema a schema name; must match the schema name
* as it is stored in the database; "" retrieves those without a schema;
* null
means that the schema name should not be used to narrow
* the search
* @param table a table name; must match the table name as it is stored
* in the database
* @param scope the scope of interest; use same values as SCOPE
* @param nullable include columns that are nullable.
* @return ResultSet
- each row is a column description
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public ResultSet getBestRowIdentifier(String catalog, String schema, String table, int scope,
boolean nullable) throws SQLException {
return databaseMetaData.getBestRowIdentifier(catalog, schema, table, scope, nullable);
}
/**
* Retrieves a description of a table's columns that are automatically
* updated when any value in a row is updated. They are
* unordered.
*
* Each column description has the following columns:
*
* - SCOPE short => is not used
*
- COLUMN_NAME String => column name
*
- DATA_TYPE int => SQL data type from
java.sql.Types
* - TYPE_NAME String => Data source-dependent type name
*
- COLUMN_SIZE int => precision
*
- BUFFER_LENGTH int => length of column value in bytes
*
- DECIMAL_DIGITS short => scale
*
- PSEUDO_COLUMN short => whether this is pseudo column
* like an Oracle ROWID
*
* - versionColumnUnknown - may or may not be pseudo column
*
- versionColumnNotPseudo - is NOT a pseudo column
*
- versionColumnPseudo - is a pseudo column
*
*
*
* @param catalog a catalog name; must match the catalog name as it
* is stored in the database; "" retrieves those without a catalog;
* null
means that the catalog name should not be used to narrow
* the search
* @param schema a schema name; must match the schema name
* as it is stored in the database; "" retrieves those without a schema;
* null
means that the schema name should not be used to narrow
* the search
* @param table a table name; must match the table name as it is stored
* in the database
* @return a ResultSet
object in which each row is a
* column description
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public ResultSet getVersionColumns(String catalog, String schema, String table) throws SQLException {
return databaseMetaData.getVersionColumns(catalog, schema, table);
}
/**
* Retrieves a description of the given table's primary key columns. They
* are ordered by COLUMN_NAME.
*
* Each primary key column description has the following columns:
*
* - TABLE_CAT String => table catalog (may be
null
)
* - TABLE_SCHEM String => table schema (may be
null
)
* - TABLE_NAME String => table name
*
- COLUMN_NAME String => column name
*
- KEY_SEQ short => sequence number within primary key
*
- PK_NAME String => primary key name (may be
null
)
*
*
* @param catalog a catalog name; must match the catalog name as it
* is stored in the database; "" retrieves those without a catalog;
* null
means that the catalog name should not be used to narrow
* the search
* @param schema a schema name; must match the schema name
* as it is stored in the database; "" retrieves those without a schema;
* null
means that the schema name should not be used to narrow
* the search
* @param table a table name; must match the table name as it is stored
* in the database
* @return ResultSet
- each row is a primary key column description
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public ResultSet getPrimaryKeys(String catalog, String schema, String table) throws SQLException {
return databaseMetaData.getPrimaryKeys(catalog, schema, table);
}
/**
* Retrieves a description of the primary key columns that are
* referenced by a table's foreign key columns (the primary keys
* imported by a table). They are ordered by PKTABLE_CAT,
* PKTABLE_SCHEM, PKTABLE_NAME, and KEY_SEQ.
*
* Each primary key column description has the following columns:
*
* - PKTABLE_CAT String => primary key table catalog
* being imported (may be
null
)
* - PKTABLE_SCHEM String => primary key table schema
* being imported (may be
null
)
* - PKTABLE_NAME String => primary key table name
* being imported
*
- PKCOLUMN_NAME String => primary key column name
* being imported
*
- FKTABLE_CAT String => foreign key table catalog (may be
null
)
* - FKTABLE_SCHEM String => foreign key table schema (may be
null
)
* - FKTABLE_NAME String => foreign key table name
*
- FKCOLUMN_NAME String => foreign key column name
*
- KEY_SEQ short => sequence number within a foreign key
*
- UPDATE_RULE short => What happens to a
* foreign key when the primary key is updated:
*
* - importedNoAction - do not allow update of primary
* key if it has been imported
*
- importedKeyCascade - change imported key to agree
* with primary key update
*
- importedKeySetNull - change imported key to
NULL
* if its primary key has been updated
* - importedKeySetDefault - change imported key to default values
* if its primary key has been updated
*
- importedKeyRestrict - same as importedKeyNoAction
* (for ODBC 2.x compatibility)
*
* - DELETE_RULE short => What happens to
* the foreign key when primary is deleted.
*
* - importedKeyNoAction - do not allow delete of primary
* key if it has been imported
*
- importedKeyCascade - delete rows that import a deleted key
*
- importedKeySetNull - change imported key to NULL if
* its primary key has been deleted
*
- importedKeyRestrict - same as importedKeyNoAction
* (for ODBC 2.x compatibility)
*
- importedKeySetDefault - change imported key to default if
* its primary key has been deleted
*
* - FK_NAME String => foreign key name (may be
null
)
* - PK_NAME String => primary key name (may be
null
)
* - DEFERRABILITY short => can the evaluation of foreign key
* constraints be deferred until commit
*
* - importedKeyInitiallyDeferred - see SQL92 for definition
*
- importedKeyInitiallyImmediate - see SQL92 for definition
*
- importedKeyNotDeferrable - see SQL92 for definition
*
*
*
* @param catalog a catalog name; must match the catalog name as it
* is stored in the database; "" retrieves those without a catalog;
* null
means that the catalog name should not be used to narrow
* the search
* @param schema a schema name; must match the schema name
* as it is stored in the database; "" retrieves those without a schema;
* null
means that the schema name should not be used to narrow
* the search
* @param table a table name; must match the table name as it is stored
* in the database
* @return ResultSet
- each row is a primary key column description
* @throws java.sql.SQLException if a database access error occurs
* @see #getExportedKeys
*/
@Override
public ResultSet getImportedKeys(String catalog, String schema, String table) throws SQLException {
return databaseMetaData.getImportedKeys(catalog, schema, table);
}
/**
* Retrieves a description of the foreign key columns that reference the
* given table's primary key columns (the foreign keys exported by a
* table). They are ordered by FKTABLE_CAT, FKTABLE_SCHEM,
* FKTABLE_NAME, and KEY_SEQ.
*
* Each foreign key column description has the following columns:
*
* - PKTABLE_CAT String => primary key table catalog (may be
null
)
* - PKTABLE_SCHEM String => primary key table schema (may be
null
)
* - PKTABLE_NAME String => primary key table name
*
- PKCOLUMN_NAME String => primary key column name
*
- FKTABLE_CAT String => foreign key table catalog (may be
null
)
* being exported (may be null
)
* - FKTABLE_SCHEM String => foreign key table schema (may be
null
)
* being exported (may be null
)
* - FKTABLE_NAME String => foreign key table name
* being exported
*
- FKCOLUMN_NAME String => foreign key column name
* being exported
*
- KEY_SEQ short => sequence number within foreign key
*
- UPDATE_RULE short => What happens to
* foreign key when primary is updated:
*
* - importedNoAction - do not allow update of primary
* key if it has been imported
*
- importedKeyCascade - change imported key to agree
* with primary key update
*
- importedKeySetNull - change imported key to
NULL
if
* its primary key has been updated
* - importedKeySetDefault - change imported key to default values
* if its primary key has been updated
*
- importedKeyRestrict - same as importedKeyNoAction
* (for ODBC 2.x compatibility)
*
* - DELETE_RULE short => What happens to
* the foreign key when primary is deleted.
*
* - importedKeyNoAction - do not allow delete of primary
* key if it has been imported
*
- importedKeyCascade - delete rows that import a deleted key
*
- importedKeySetNull - change imported key to
NULL
if
* its primary key has been deleted
* - importedKeyRestrict - same as importedKeyNoAction
* (for ODBC 2.x compatibility)
*
- importedKeySetDefault - change imported key to default if
* its primary key has been deleted
*
* - FK_NAME String => foreign key name (may be
null
)
* - PK_NAME String => primary key name (may be
null
)
* - DEFERRABILITY short => can the evaluation of foreign key
* constraints be deferred until commit
*
* - importedKeyInitiallyDeferred - see SQL92 for definition
*
- importedKeyInitiallyImmediate - see SQL92 for definition
*
- importedKeyNotDeferrable - see SQL92 for definition
*
*
*
* @param catalog a catalog name; must match the catalog name as it
* is stored in this database; "" retrieves those without a catalog;
* null
means that the catalog name should not be used to narrow
* the search
* @param schema a schema name; must match the schema name
* as it is stored in the database; "" retrieves those without a schema;
* null
means that the schema name should not be used to narrow
* the search
* @param table a table name; must match the table name as it is stored
* in this database
* @return a ResultSet
object in which each row is a
* foreign key column description
* @throws java.sql.SQLException if a database access error occurs
* @see #getImportedKeys
*/
@Override
public ResultSet getExportedKeys(String catalog, String schema, String table) throws SQLException {
return databaseMetaData.getExportedKeys(catalog, schema, table);
}
/**
* Retrieves a description of the foreign key columns in the given foreign key
* table that reference the primary key columns of the given primary key
* table (describe how one table imports another's key). This
* should normally return a single foreign key/primary key pair because
* most tables import a foreign key from a table only once. They
* are ordered by FKTABLE_CAT, FKTABLE_SCHEM, FKTABLE_NAME, and
* KEY_SEQ.
*
* Each foreign key column description has the following columns:
*
* - PKTABLE_CAT String => primary key table catalog (may be
null
)
* - PKTABLE_SCHEM String => primary key table schema (may be
null
)
* - PKTABLE_NAME String => primary key table name
*
- PKCOLUMN_NAME String => primary key column name
*
- FKTABLE_CAT String => foreign key table catalog (may be
null
)
* being exported (may be null
)
* - FKTABLE_SCHEM String => foreign key table schema (may be
null
)
* being exported (may be null
)
* - FKTABLE_NAME String => foreign key table name
* being exported
*
- FKCOLUMN_NAME String => foreign key column name
* being exported
*
- KEY_SEQ short => sequence number within foreign key
*
- UPDATE_RULE short => What happens to
* foreign key when primary is updated:
*
* - importedNoAction - do not allow update of primary
* key if it has been imported
*
- importedKeyCascade - change imported key to agree
* with primary key update
*
- importedKeySetNull - change imported key to
NULL
if
* its primary key has been updated
* - importedKeySetDefault - change imported key to default values
* if its primary key has been updated
*
- importedKeyRestrict - same as importedKeyNoAction
* (for ODBC 2.x compatibility)
*
* - DELETE_RULE short => What happens to
* the foreign key when primary is deleted.
*
* - importedKeyNoAction - do not allow delete of primary
* key if it has been imported
*
- importedKeyCascade - delete rows that import a deleted key
*
- importedKeySetNull - change imported key to
NULL
if
* its primary key has been deleted
* - importedKeyRestrict - same as importedKeyNoAction
* (for ODBC 2.x compatibility)
*
- importedKeySetDefault - change imported key to default if
* its primary key has been deleted
*
* - FK_NAME String => foreign key name (may be
null
)
* - PK_NAME String => primary key name (may be
null
)
* - DEFERRABILITY short => can the evaluation of foreign key
* constraints be deferred until commit
*
* - importedKeyInitiallyDeferred - see SQL92 for definition
*
- importedKeyInitiallyImmediate - see SQL92 for definition
*
- importedKeyNotDeferrable - see SQL92 for definition
*
*
*
* @param primaryCatalog a catalog name; must match the catalog name
* as it is stored in the database; "" retrieves those without a
* catalog; null
means drop catalog name from the selection criteria
* @param primarySchema a schema name; must match the schema name as
* it is stored in the database; "" retrieves those without a schema;
* null
means drop schema name from the selection criteria
* @param primaryTable the name of the table that exports the key; must match
* the table name as it is stored in the database
* @param foreignCatalog a catalog name; must match the catalog name as
* it is stored in the database; "" retrieves those without a
* catalog; null
means drop catalog name from the selection criteria
* @param foreignSchema a schema name; must match the schema name as it
* is stored in the database; "" retrieves those without a schema;
* null
means drop schema name from the selection criteria
* @param foreignTable the name of the table that imports the key; must match
* the table name as it is stored in the database
* @return ResultSet
- each row is a foreign key column description
* @throws java.sql.SQLException if a database access error occurs
* @see #getImportedKeys
*/
@Override
public ResultSet getCrossReference(String primaryCatalog, String primarySchema, String primaryTable,
String foreignCatalog, String foreignSchema, String foreignTable)
throws SQLException {
return databaseMetaData.getCrossReference(primaryCatalog, primarySchema, primaryTable,
foreignCatalog, foreignSchema, foreignTable);
}
/**
* Retrieves a description of all the standard SQL types supported by
* this database. They are ordered by DATA_TYPE and then by how
* closely the data type maps to the corresponding JDBC SQL type.
*
* Each type description has the following columns:
*
* - TYPE_NAME String => Type name
*
- DATA_TYPE int => SQL data type from java.sql.Types
*
- PRECISION int => maximum precision
*
- LITERAL_PREFIX String => prefix used to quote a literal
* (may be
null
)
* - LITERAL_SUFFIX String => suffix used to quote a literal
* (may be
null
)
* - CREATE_PARAMS String => parameters used in creating
* the type (may be
null
)
* - NULLABLE short => can you use NULL for this type.
*
* - typeNoNulls - does not allow NULL values
*
- typeNullable - allows NULL values
*
- typeNullableUnknown - nullability unknown
*
* - CASE_SENSITIVE boolean=> is it case sensitive.
*
- SEARCHABLE short => can you use "WHERE" based on this type:
*
* - typePredNone - No support
*
- typePredChar - Only supported with WHERE .. LIKE
*
- typePredBasic - Supported except for WHERE .. LIKE
*
- typeSearchable - Supported for all WHERE ..
*
* - UNSIGNED_ATTRIBUTE boolean => is it unsigned.
*
- FIXED_PREC_SCALE boolean => can it be a money value.
*
- AUTO_INCREMENT boolean => can it be used for an
* auto-increment value.
*
- LOCAL_TYPE_NAME String => localized version of type name
* (may be
null
)
* - MINIMUM_SCALE short => minimum scale supported
*
- MAXIMUM_SCALE short => maximum scale supported
*
- SQL_DATA_TYPE int => unused
*
- SQL_DATETIME_SUB int => unused
*
- NUM_PREC_RADIX int => usually 2 or 10
*
*
* @return a ResultSet
object in which each row is an SQL
* type description
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public ResultSet getTypeInfo() throws SQLException {
return databaseMetaData.getTypeInfo();
}
/**
* Retrieves a description of the given table's indices and statistics. They are
* ordered by NON_UNIQUE, TYPE, INDEX_NAME, and ORDINAL_POSITION.
*
* Each index column description has the following columns:
*
* - TABLE_CAT String => table catalog (may be
null
)
* - TABLE_SCHEM String => table schema (may be
null
)
* - TABLE_NAME String => table name
*
- NON_UNIQUE boolean => Can index values be non-unique.
* false when TYPE is tableIndexStatistic
*
- INDEX_QUALIFIER String => index catalog (may be
null
);
* null
when TYPE is tableIndexStatistic
* - INDEX_NAME String => index name;
null
when TYPE is
* tableIndexStatistic
* - TYPE short => index type:
*
* - tableIndexStatistic - this identifies table statistics that are
* returned in conjuction with a table's index descriptions
*
- tableIndexClustered - this is a clustered index
*
- tableIndexHashed - this is a hashed index
*
- tableIndexOther - this is some other style of index
*
* - ORDINAL_POSITION short => column sequence number
* within index; zero when TYPE is tableIndexStatistic
*
- COLUMN_NAME String => column name;
null
when TYPE is
* tableIndexStatistic
* - ASC_OR_DESC String => column sort sequence, "A" => ascending,
* "D" => descending, may be
null
if sort sequence is not supported;
* null
when TYPE is tableIndexStatistic
* - CARDINALITY int => When TYPE is tableIndexStatistic, then
* this is the number of rows in the table; otherwise, it is the
* number of unique values in the index.
*
- PAGES int => When TYPE is tableIndexStatisic then
* this is the number of pages used for the table, otherwise it
* is the number of pages used for the current index.
*
- FILTER_CONDITION String => Filter condition, if any.
* (may be
null
)
*
*
* @param catalog a catalog name; must match the catalog name as it
* is stored in this database; "" retrieves those without a catalog;
* null
means that the catalog name should not be used to narrow
* the search
* @param schema a schema name; must match the schema name
* as it is stored in this database; "" retrieves those without a schema;
* null
means that the schema name should not be used to narrow
* the search
* @param table a table name; must match the table name as it is stored
* in this database
* @param unique when true, return only indices for unique values;
* when false, return indices regardless of whether unique or not
* @param approximate when true, result is allowed to reflect approximate
* or out of data values; when false, results are requested to be
* accurate
* @return ResultSet
- each row is an index column description
* @throws java.sql.SQLException if a database access error occurs
*/
@Override
public ResultSet getIndexInfo(String catalog, String schema, String table, boolean unique,
boolean approximate) throws SQLException {
return databaseMetaData.getIndexInfo(catalog, schema, table, unique, approximate);
}
/**
* Retrieves whether this database supports the given result set type.
*
* @param type defined in java.sql.ResultSet
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @see java.sql.Connection
* @since 1.2
*/
@Override
public boolean supportsResultSetType(int type) throws SQLException {
return databaseMetaData.supportsResultSetType(type);
}
/**
* Retrieves whether this database supports the given concurrency type
* in combination with the given result set type.
*
* @param type defined in java.sql.ResultSet
* @param concurrency type defined in java.sql.ResultSet
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @see java.sql.Connection
* @since 1.2
*/
@Override
public boolean supportsResultSetConcurrency(int type, int concurrency) throws SQLException {
return databaseMetaData.supportsResultSetConcurrency(type, concurrency);
}
/**
* Retrieves whether for the given type of ResultSet
object,
* the result set's own updates are visible.
*
* @param type the ResultSet
type; one of
* ResultSet.TYPE_FORWARD_ONLY
,
* ResultSet.TYPE_SCROLL_INSENSITIVE
, or
* ResultSet.TYPE_SCROLL_SENSITIVE
* @return true
if updates are visible for the given result set type;
* false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @since 1.2
*/
@Override
public boolean ownUpdatesAreVisible(int type) throws SQLException {
return databaseMetaData.ownUpdatesAreVisible(type);
}
/**
* Retrieves whether a result set's own deletes are visible.
*
* @param type the ResultSet
type; one of
* ResultSet.TYPE_FORWARD_ONLY
,
* ResultSet.TYPE_SCROLL_INSENSITIVE
, or
* ResultSet.TYPE_SCROLL_SENSITIVE
* @return true
if deletes are visible for the given result set type;
* false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @since 1.2
*/
@Override
public boolean ownDeletesAreVisible(int type) throws SQLException {
return databaseMetaData.ownDeletesAreVisible(type);
}
/**
* Retrieves whether a result set's own inserts are visible.
*
* @param type the ResultSet
type; one of
* ResultSet.TYPE_FORWARD_ONLY
,
* ResultSet.TYPE_SCROLL_INSENSITIVE
, or
* ResultSet.TYPE_SCROLL_SENSITIVE
* @return true
if inserts are visible for the given result set type;
* false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @since 1.2
*/
@Override
public boolean ownInsertsAreVisible(int type) throws SQLException {
return databaseMetaData.ownInsertsAreVisible(type);
}
/**
* Retrieves whether updates made by others are visible.
*
* @param type the ResultSet
type; one of
* ResultSet.TYPE_FORWARD_ONLY
,
* ResultSet.TYPE_SCROLL_INSENSITIVE
, or
* ResultSet.TYPE_SCROLL_SENSITIVE
* @return true
if updates made by others
* are visible for the given result set type;
* false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @since 1.2
*/
@Override
public boolean othersUpdatesAreVisible(int type) throws SQLException {
return databaseMetaData.othersUpdatesAreVisible(type);
}
/**
* Retrieves whether deletes made by others are visible.
*
* @param type the ResultSet
type; one of
* ResultSet.TYPE_FORWARD_ONLY
,
* ResultSet.TYPE_SCROLL_INSENSITIVE
, or
* ResultSet.TYPE_SCROLL_SENSITIVE
* @return true
if deletes made by others
* are visible for the given result set type;
* false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @since 1.2
*/
@Override
public boolean othersDeletesAreVisible(int type) throws SQLException {
return databaseMetaData.othersDeletesAreVisible(type);
}
/**
* Retrieves whether inserts made by others are visible.
*
* @param type the ResultSet
type; one of
* ResultSet.TYPE_FORWARD_ONLY
,
* ResultSet.TYPE_SCROLL_INSENSITIVE
, or
* ResultSet.TYPE_SCROLL_SENSITIVE
* @return true
if inserts made by others
* are visible for the given result set type;
* false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @since 1.2
*/
@Override
public boolean othersInsertsAreVisible(int type) throws SQLException {
return databaseMetaData.othersInsertsAreVisible(type);
}
/**
* Retrieves whether or not a visible row update can be detected by
* calling the method ResultSet.rowUpdated
.
*
* @param type the ResultSet
type; one of
* ResultSet.TYPE_FORWARD_ONLY
,
* ResultSet.TYPE_SCROLL_INSENSITIVE
, or
* ResultSet.TYPE_SCROLL_SENSITIVE
* @return true
if changes are detected by the result set type;
* false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @since 1.2
*/
@Override
public boolean updatesAreDetected(int type) throws SQLException {
return databaseMetaData.updatesAreDetected(type);
}
/**
* Retrieves whether or not a visible row delete can be detected by
* calling the method ResultSet.rowDeleted
. If the method
* deletesAreDetected
returns false
, it means that
* deleted rows are removed from the result set.
*
* @param type the ResultSet
type; one of
* ResultSet.TYPE_FORWARD_ONLY
,
* ResultSet.TYPE_SCROLL_INSENSITIVE
, or
* ResultSet.TYPE_SCROLL_SENSITIVE
* @return true
if deletes are detected by the given result set type;
* false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @since 1.2
*/
@Override
public boolean deletesAreDetected(int type) throws SQLException {
return databaseMetaData.deletesAreDetected(type);
}
/**
* Retrieves whether or not a visible row insert can be detected
* by calling the method ResultSet.rowInserted
.
*
* @param type the ResultSet
type; one of
* ResultSet.TYPE_FORWARD_ONLY
,
* ResultSet.TYPE_SCROLL_INSENSITIVE
, or
* ResultSet.TYPE_SCROLL_SENSITIVE
* @return true
if changes are detected by the specified result
* set type; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @since 1.2
*/
@Override
public boolean insertsAreDetected(int type) throws SQLException {
return databaseMetaData.insertsAreDetected(type);
}
/**
* Retrieves whether this database supports batch updates.
*
* @return true
if this database supports batch upcates;
* false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @since 1.2
*/
@Override
public boolean supportsBatchUpdates() throws SQLException {
return databaseMetaData.supportsBatchUpdates();
}
/**
* Retrieves a description of the user-defined types (UDTs) defined
* in a particular schema. Schema-specific UDTs may have type
* JAVA_OBJECT
, STRUCT
,
* or DISTINCT
.
*
* Only types matching the catalog, schema, type name and type
* criteria are returned. They are ordered by DATA_TYPE, TYPE_SCHEM
* and TYPE_NAME. The type name parameter may be a fully-qualified
* name. In this case, the catalog and schemaPattern parameters are
* ignored.
*
* Each type description has the following columns:
*
* - TYPE_CAT String => the type's catalog (may be
null
)
* - TYPE_SCHEM String => type's schema (may be
null
)
* - TYPE_NAME String => type name
*
- CLASS_NAME String => Java class name
*
- DATA_TYPE int => type value defined in java.sql.Types.
* One of JAVA_OBJECT, STRUCT, or DISTINCT
*
- REMARKS String => explanatory comment on the type
*
- BASE_TYPE short => type code of the source type of a
* DISTINCT type or the type that implements the user-generated
* reference type of the SELF_REFERENCING_COLUMN of a structured
* type as defined in java.sql.Types (
null
if DATA_TYPE is not
* DISTINCT or not STRUCT with REFERENCE_GENERATION = USER_DEFINED)
*
*
* Note: If the driver does not support UDTs, an empty
* result set is returned.
*
* @param catalog a catalog name; must match the catalog name as it
* is stored in the database; "" retrieves those without a catalog;
* null
means that the catalog name should not be used to narrow
* the search
* @param schemaPattern a schema pattern name; must match the schema name
* as it is stored in the database; "" retrieves those without a schema;
* null
means that the schema name should not be used to narrow
* the search
* @param typeNamePattern a type name pattern; must match the type name
* as it is stored in the database; may be a fully qualified name
* @param types a list of user-defined types (JAVA_OBJECT,
* STRUCT, or DISTINCT) to include; null
returns all types
* @return ResultSet
object in which each row describes a UDT
* @throws java.sql.SQLException if a database access error occurs
* @since 1.2
*/
@Override
public ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) throws SQLException {
return databaseMetaData.getUDTs(catalog, schemaPattern, typeNamePattern, types);
}
/**
* Retrieves the connection that produced this metadata object.
*
*
* @return the connection that produced this metadata object
* @throws java.sql.SQLException if a database access error occurs
* @since 1.2
*/
@Override
public Connection getConnection() throws SQLException {
return connection;
}
/**
* Returns the actual connection that produced this metadata object
*
* @return Connection
* @throws SQLException
*/
public Connection getActualConnection() throws SQLException {
return databaseMetaData.getConnection();
}
/**
* Retrieves whether this database supports savepoints.
*
* @return true
if savepoints are supported;
* false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @since 1.4
*/
@Override
public boolean supportsSavepoints() throws SQLException {
return databaseMetaData.supportsSavepoints();
}
/**
* Retrieves whether this database supports named parameters to callable
* statements.
*
* @return true
if named parameters are supported;
* false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @since 1.4
*/
@Override
public boolean supportsNamedParameters() throws SQLException {
return databaseMetaData.supportsNamedParameters();
}
/**
* Retrieves whether it is possible to have multiple ResultSet
objects
* returned from a CallableStatement
object
* simultaneously.
*
* @return true
if a CallableStatement
object
* can return multiple ResultSet
objects
* simultaneously; false
otherwise
* @throws java.sql.SQLException if a datanase access error occurs
* @since 1.4
*/
@Override
public boolean supportsMultipleOpenResults() throws SQLException {
return databaseMetaData.supportsMultipleOpenResults();
}
/**
* Retrieves whether auto-generated keys can be retrieved after
* a statement has been executed.
*
* @return true
if auto-generated keys can be retrieved
* after a statement has executed; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @since 1.4
*/
@Override
public boolean supportsGetGeneratedKeys() throws SQLException {
return databaseMetaData.supportsGetGeneratedKeys();
}
/**
* Retrieves a description of the user-defined type (UDT) hierarchies defined in a
* particular schema in this database. Only the immediate super type/
* sub type relationship is modeled.
*
* Only supertype information for UDTs matching the catalog,
* schema, and type name is returned. The type name parameter
* may be a fully-qualified name. When the UDT name supplied is a
* fully-qualified name, the catalog and schemaPattern parameters are
* ignored.
*
* If a UDT does not have a direct super type, it is not listed here.
* A row of the ResultSet
object returned by this method
* describes the designated UDT and a direct supertype. A row has the following
* columns:
*
* - TYPE_CAT String => the UDT's catalog (may be
null
)
* - TYPE_SCHEM String => UDT's schema (may be
null
)
* - TYPE_NAME String => type name of the UDT
*
- SUPERTYPE_CAT String => the direct super type's catalog
* (may be
null
)
* - SUPERTYPE_SCHEM String => the direct super type's schema
* (may be
null
)
* - SUPERTYPE_NAME String => the direct super type's name
*
*
* Note: If the driver does not support type hierarchies, an
* empty result set is returned.
*
* @param catalog a catalog name; "" retrieves those without a catalog;
* null
means drop catalog name from the selection criteria
* @param schemaPattern a schema name pattern; "" retrieves those
* without a schema
* @param typeNamePattern a UDT name pattern; may be a fully-qualified
* name
* @return a ResultSet
object in which a row gives information
* about the designated UDT
* @throws java.sql.SQLException if a database access error occurs
* @since 1.4
*/
@Override
public ResultSet getSuperTypes(String catalog, String schemaPattern, String typeNamePattern) throws SQLException {
return databaseMetaData.getSuperTypes(catalog, schemaPattern, typeNamePattern);
}
/**
* Retrieves a description of the table hierarchies defined in a particular
* schema in this database.
*
Only supertable information for tables matching the catalog, schema
* and table name are returned. The table name parameter may be a fully-
* qualified name, in which case, the catalog and schemaPattern parameters
* are ignored. If a table does not have a super table, it is not listed here.
* Supertables have to be defined in the same catalog and schema as the
* sub tables. Therefore, the type description does not need to include
* this information for the supertable.
*
* Each type description has the following columns:
*
* - TABLE_CAT String => the type's catalog (may be
null
)
* - TABLE_SCHEM String => type's schema (may be
null
)
* - TABLE_NAME String => type name
*
- SUPERTABLE_NAME String => the direct super type's name
*
*
* Note: If the driver does not support type hierarchies, an
* empty result set is returned.
*
* @param catalog a catalog name; "" retrieves those without a catalog;
* null
means drop catalog name from the selection criteria
* @param schemaPattern a schema name pattern; "" retrieves those
* without a schema
* @param tableNamePattern a table name pattern; may be a fully-qualified
* name
* @return a ResultSet
object in which each row is a type description
* @throws java.sql.SQLException if a database access error occurs
* @since 1.4
*/
@Override
public ResultSet getSuperTables(String catalog, String schemaPattern, String tableNamePattern) throws SQLException {
return databaseMetaData.getSuperTables(catalog, schemaPattern, tableNamePattern);
}
/**
* Retrieves a description of the given attribute of the given type
* for a user-defined type (UDT) that is available in the given schema
* and catalog.
*
* Descriptions are returned only for attributes of UDTs matching the
* catalog, schema, type, and attribute name criteria. They are ordered by
* TYPE_SCHEM, TYPE_NAME and ORDINAL_POSITION. This description
* does not contain inherited attributes.
*
* The ResultSet
object that is returned has the following
* columns:
*
* - TYPE_CAT String => type catalog (may be
null
)
* - TYPE_SCHEM String => type schema (may be
null
)
* - TYPE_NAME String => type name
*
- ATTR_NAME String => attribute name
*
- DATA_TYPE int => attribute type SQL type from java.sql.Types
*
- ATTR_TYPE_NAME String => Data source dependent type name.
* For a UDT, the type name is fully qualified. For a REF, the type name is
* fully qualified and represents the target type of the reference type.
*
- ATTR_SIZE int => column size. For char or date
* types this is the maximum number of characters; for numeric or
* decimal types this is precision.
*
- DECIMAL_DIGITS int => the number of fractional digits
*
- NUM_PREC_RADIX int => Radix (typically either 10 or 2)
*
- NULLABLE int => whether NULL is allowed
*
* - attributeNoNulls - might not allow NULL values
*
- attributeNullable - definitely allows NULL values
*
- attributeNullableUnknown - nullability unknown
*
* - REMARKS String => comment describing column (may be
null
)
* - ATTR_DEF String => default value (may be
null
)
* - SQL_DATA_TYPE int => unused
*
- SQL_DATETIME_SUB int => unused
*
- CHAR_OCTET_LENGTH int => for char types the
* maximum number of bytes in the column
*
- ORDINAL_POSITION int => index of column in table
* (starting at 1)
*
- IS_NULLABLE String => "NO" means column definitely
* does not allow NULL values; "YES" means the column might
* allow NULL values. An empty string means unknown.
*
- SCOPE_CATALOG String => catalog of table that is the
* scope of a reference attribute (
null
if DATA_TYPE isn't REF)
* - SCOPE_SCHEMA String => schema of table that is the
* scope of a reference attribute (
null
if DATA_TYPE isn't REF)
* - SCOPE_TABLE String => table name that is the scope of a
* reference attribute (
null
if the DATA_TYPE isn't REF)
* - SOURCE_DATA_TYPE short => source type of a distinct type or user-generated
* Ref type,SQL type from java.sql.Types (
null
if DATA_TYPE
* isn't DISTINCT or user-generated REF)
*
*
* @param catalog a catalog name; must match the catalog name as it
* is stored in the database; "" retrieves those without a catalog;
* null
means that the catalog name should not be used to narrow
* the search
* @param schemaPattern a schema name pattern; must match the schema name
* as it is stored in the database; "" retrieves those without a schema;
* null
means that the schema name should not be used to narrow
* the search
* @param typeNamePattern a type name pattern; must match the
* type name as it is stored in the database
* @param attributeNamePattern an attribute name pattern; must match the attribute
* name as it is declared in the database
* @return a ResultSet
object in which each row is an
* attribute description
* @throws java.sql.SQLException if a database access error occurs
* @since 1.4
*/
@Override
public ResultSet getAttributes(String catalog, String schemaPattern, String typeNamePattern,
String attributeNamePattern) throws SQLException {
return databaseMetaData.getAttributes(catalog, schemaPattern, typeNamePattern, attributeNamePattern);
}
/**
* Retrieves whether this database supports the given result set holdability.
*
* @param holdability one of the following constants:
* ResultSet.HOLD_CURSORS_OVER_COMMIT
or
* ResultSet.CLOSE_CURSORS_AT_COMMIT
* @return true
if so; false
otherwise
* @throws java.sql.SQLException if a database access error occurs
* @see java.sql.Connection
* @since 1.4
*/
@Override
public boolean supportsResultSetHoldability(int holdability) throws SQLException {
return databaseMetaData.supportsResultSetHoldability(holdability);
}
/**
* Retrieves the default holdability of this ResultSet
* object.
*
* @return the default holdability; either
* ResultSet.HOLD_CURSORS_OVER_COMMIT
or
* ResultSet.CLOSE_CURSORS_AT_COMMIT
* @throws java.sql.SQLException if a database access error occurs
* @since 1.4
*/
@Override
public int getResultSetHoldability() throws SQLException {
return databaseMetaData.getResultSetHoldability();
}
/**
* Retrieves the major version number of the underlying database.
*
* @return the underlying database's major version
* @throws java.sql.SQLException if a database access error occurs
* @since 1.4
*/
@Override
public int getDatabaseMajorVersion() throws SQLException {
return databaseMetaData.getDatabaseMajorVersion();
}
/**
* Retrieves the minor version number of the underlying database.
*
* @return underlying database's minor version
* @throws java.sql.SQLException if a database access error occurs
* @since 1.4
*/
@Override
public int getDatabaseMinorVersion() throws SQLException {
return databaseMetaData.getDatabaseMinorVersion();
}
/**
* Retrieves the major JDBC version number for this
* driver.
*
* @return JDBC version major number
* @throws java.sql.SQLException if a database access error occurs
* @since 1.4
*/
@Override
public int getJDBCMajorVersion() throws SQLException {
return databaseMetaData.getJDBCMajorVersion();
}
/**
* Retrieves the minor JDBC version number for this
* driver.
*
* @return JDBC version minor number
* @throws java.sql.SQLException if a database access error occurs
* @since 1.4
*/
@Override
public int getJDBCMinorVersion() throws SQLException {
return databaseMetaData.getJDBCMinorVersion();
}
/**
* Indicates whether the SQLSTATE returned by SQLException.getSQLState
* is X/Open (now known as Open Group) SQL CLI or SQL99.
*
* @return the type of SQLSTATE; one of:
* sqlStateXOpen or
* sqlStateSQL99
* @throws java.sql.SQLException if a database access error occurs
* @since 1.4
*/
@Override
public int getSQLStateType() throws SQLException {
return databaseMetaData.getSQLStateType();
}
/**
* Indicates whether updates made to a LOB are made on a copy or directly
* to the LOB.
*
* @return true
if updates are made to a copy of the LOB;
* false
if updates are made directly to the LOB
* @throws java.sql.SQLException if a database access error occurs
* @since 1.4
*/
@Override
public boolean locatorsUpdateCopy() throws SQLException {
return databaseMetaData.locatorsUpdateCopy();
}
/**
* Retrieves whether this database supports statement pooling.
*
* @return true
if so; false
otherwise
* @throws SQLException if a database access error occurs
* @since 1.4
*/
@Override
public boolean supportsStatementPooling() throws SQLException {
return databaseMetaData.supportsStatementPooling();
}
protected MethodExecutor getMethodExecutor() {
return executor;
}
}