- /*
- * @(#)DatabaseMetaData.java 1.52 03/01/23
- *
- * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
- package java.sql;
- /**
- * Comprehensive information about the database as a whole.
- * <P>
- * This interface is implemented by driver vendors to let users know the capabilities
- * of a Database Management System (DBMS) in combination with
- * the driver based on JDBC<sup><font size=-2>TM</font></sup> technology
- * ("JDBC driver") that is used with it. Different relational DBMSs often support
- * different features, implement features in different ways, and use different
- * data types. In addition, a driver may implement a feature on top of what the
- * DBMS offers. Information returned by methods in this interface applies
- * to the capabilities of a particular driver and a particular DBMS working
- * together. Note that as used in this documentation, the term "database" is
- * used generically to refer to both the driver and DBMS.
- * <P>
- * A user for this interface is commonly a tool that needs to discover how to
- * deal with the underlying DBMS. This is especially true for applications
- * that are intended to be used with more than one DBMS. For example, a tool might use the method
- * <code>getTypeInfo</code> to find out what data types can be used in a
- * <code>CREATE TABLE</code> statement. Or a user might call the method
- * <code>supportsCorrelatedSubqueries</code> to see if it is possible to use
- * a correlated subquery or <code>supportsBatchUpdates</code> to see if it is
- * possible to use batch updates.
- * <P>
- * Some <code>DatabaseMetaData</code> methods return lists of information
- * in the form of <code>ResultSet</code> objects.
- * Regular <code>ResultSet</code> methods, such as
- * <code>getString</code> and <code>getInt</code>, can be used
- * to retrieve the data from these <code>ResultSet</code> objects. If
- * a given form of metadata is not available, the <code>ResultSet</code>
- * getter methods throw an <code>SQLException</code>.
- * <P>
- * Some <code>DatabaseMetaData</code> methods take arguments that are
- * String patterns. These arguments all have names such as fooPattern.
- * Within a pattern String, "%" means match any substring of 0 or more
- * characters, and "_" means match any one character. Only metadata
- * entries matching the search pattern are returned. If a search pattern
- * argument is set to <code>null</code>, that argument's criterion will
- * be dropped from the search.
- * <P>
- * A method that gets information about a feature that the driver does not
- * support will throw an <code>SQLException</code>.
- * In the case of methods that return a <code>ResultSet</code>
- * object, either a <code>ResultSet</code> object (which may be empty) is
- * returned or an <code>SQLException</code> is thrown.
- */
- public interface DatabaseMetaData {
- //----------------------------------------------------------------------
- // First, a variety of minor information about the target database.
- /**
- * Retrieves whether the current user can call all the procedures
- * returned by the method <code>getProcedures</code>.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean allProceduresAreCallable() throws SQLException;
- /**
- * Retrieves whether the current user can use all the tables returned
- * by the method <code>getTables</code> in a <code>SELECT</code>
- * statement.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean allTablesAreSelectable() throws SQLException;
- /**
- * Retrieves the URL for this DBMS.
- *
- * @return the URL for this DBMS or <code>null</code> if it cannot be
- * generated
- * @exception SQLException if a database access error occurs
- */
- String getURL() throws SQLException;
- /**
- * Retrieves the user name as known to this database.
- *
- * @return the database user name
- * @exception SQLException if a database access error occurs
- */
- String getUserName() throws SQLException;
- /**
- * Retrieves whether this database is in read-only mode.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean isReadOnly() throws SQLException;
- /**
- * Retrieves whether <code>NULL</code> values are sorted high.
- * Sorted high means that <code>NULL</code> values
- * sort higher than any other value in a domain. In an ascending order,
- * if this method returns <code>true</code>, <code>NULL</code> values
- * will appear at the end. By contrast, the method
- * <code>nullsAreSortedAtEnd</code> indicates whether <code>NULL</code> values
- * are sorted at the end regardless of sort order.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean nullsAreSortedHigh() throws SQLException;
- /**
- * Retrieves whether <code>NULL</code> values are sorted low.
- * Sorted low means that <code>NULL</code> values
- * sort lower than any other value in a domain. In an ascending order,
- * if this method returns <code>true</code>, <code>NULL</code> values
- * will appear at the beginning. By contrast, the method
- * <code>nullsAreSortedAtStart</code> indicates whether <code>NULL</code> values
- * are sorted at the beginning regardless of sort order.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean nullsAreSortedLow() throws SQLException;
- /**
- * Retrieves whether <code>NULL</code> values are sorted at the start regardless
- * of sort order.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean nullsAreSortedAtStart() throws SQLException;
- /**
- * Retrieves whether <code>NULL</code> values are sorted at the end regardless of
- * sort order.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean nullsAreSortedAtEnd() throws SQLException;
- /**
- * Retrieves the name of this database product.
- *
- * @return database product name
- * @exception SQLException if a database access error occurs
- */
- String getDatabaseProductName() throws SQLException;
- /**
- * Retrieves the version number of this database product.
- *
- * @return database version number
- * @exception SQLException if a database access error occurs
- */
- String getDatabaseProductVersion() throws SQLException;
- /**
- * Retrieves the name of this JDBC driver.
- *
- * @return JDBC driver name
- * @exception SQLException if a database access error occurs
- */
- String getDriverName() throws SQLException;
- /**
- * Retrieves the version number of this JDBC driver as a <code>String</code>.
- *
- * @return JDBC driver version
- * @exception SQLException if a database access error occurs
- */
- String getDriverVersion() throws SQLException;
- /**
- * Retrieves this JDBC driver's major version number.
- *
- * @return JDBC driver major version
- */
- int getDriverMajorVersion();
- /**
- * Retrieves this JDBC driver's minor version number.
- *
- * @return JDBC driver minor version number
- */
- int getDriverMinorVersion();
- /**
- * Retrieves whether this database stores tables in a local file.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean usesLocalFiles() throws SQLException;
- /**
- * Retrieves whether this database uses a file for each table.
- *
- * @return <code>true</code> if this database uses a local file for each table;
- * <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean usesLocalFilePerTable() throws SQLException;
- /**
- * Retrieves whether this database treats mixed case unquoted SQL identifiers as
- * case sensitive and as a result stores them in mixed case.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsMixedCaseIdentifiers() throws SQLException;
- /**
- * Retrieves whether this database treats mixed case unquoted SQL identifiers as
- * case insensitive and stores them in upper case.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean storesUpperCaseIdentifiers() throws SQLException;
- /**
- * Retrieves whether this database treats mixed case unquoted SQL identifiers as
- * case insensitive and stores them in lower case.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean storesLowerCaseIdentifiers() throws SQLException;
- /**
- * Retrieves whether this database treats mixed case unquoted SQL identifiers as
- * case insensitive and stores them in mixed case.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean storesMixedCaseIdentifiers() throws SQLException;
- /**
- * Retrieves whether this database treats mixed case quoted SQL identifiers as
- * case sensitive and as a result stores them in mixed case.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsMixedCaseQuotedIdentifiers() throws SQLException;
- /**
- * Retrieves whether this database treats mixed case quoted SQL identifiers as
- * case insensitive and stores them in upper case.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean storesUpperCaseQuotedIdentifiers() throws SQLException;
- /**
- * Retrieves whether this database treats mixed case quoted SQL identifiers as
- * case insensitive and stores them in lower case.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean storesLowerCaseQuotedIdentifiers() throws SQLException;
- /**
- * Retrieves whether this database treats mixed case quoted SQL identifiers as
- * case insensitive and stores them in mixed case.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean storesMixedCaseQuotedIdentifiers() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- String getIdentifierQuoteString() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- String getSQLKeywords() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- String getNumericFunctions() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- String getStringFunctions() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- String getSystemFunctions() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- String getTimeDateFunctions() throws SQLException;
- /**
- * 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).
- *
- * <P>The '_' character represents any single character;
- * the '%' character represents any sequence of zero or
- * more characters.
- *
- * @return the string used to escape wildcard characters
- * @exception SQLException if a database access error occurs
- */
- String getSearchStringEscape() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- String getExtraNameCharacters() throws SQLException;
- //--------------------------------------------------------------------
- // Functions describing which features are supported.
- /**
- * Retrieves whether this database supports <code>ALTER TABLE</code>
- * with add column.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsAlterTableWithAddColumn() throws SQLException;
- /**
- * Retrieves whether this database supports <code>ALTER TABLE</code>
- * with drop column.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsAlterTableWithDropColumn() throws SQLException;
- /**
- * Retrieves whether this database supports column aliasing.
- *
- * <P>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 <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsColumnAliasing() throws SQLException;
- /**
- * Retrieves whether this database supports concatenations between
- * <code>NULL</code> and non-<code>NULL</code> values being
- * <code>NULL</code>.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean nullPlusNonNullIsNull() throws SQLException;
- /**
- * Retrieves whether this database supports the <code>CONVERT</code>
- * function between SQL types.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsConvert() throws SQLException;
- /**
- * Retrieves whether this database supports the <code>CONVERT</code>
- * for two given SQL types.
- *
- * @param fromType the type to convert from; one of the type codes from
- * the class <code>java.sql.Types</code>
- * @param toType the type to convert to; one of the type codes from
- * the class <code>java.sql.Types</code>
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- * @see Types
- */
- boolean supportsConvert(int fromType, int toType) throws SQLException;
- /**
- * Retrieves whether this database supports table correlation names.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsTableCorrelationNames() throws SQLException;
- /**
- * Retrieves whether, when table correlation names are supported, they
- * are restricted to being different from the names of the tables.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsDifferentTableCorrelationNames() throws SQLException;
- /**
- * Retrieves whether this database supports expressions in
- * <code>ORDER BY</code> lists.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsExpressionsInOrderBy() throws SQLException;
- /**
- * Retrieves whether this database supports using a column that is
- * not in the <code>SELECT</code> statement in an
- * <code>ORDER BY</code> clause.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsOrderByUnrelated() throws SQLException;
- /**
- * Retrieves whether this database supports some form of
- * <code>GROUP BY</code> clause.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsGroupBy() throws SQLException;
- /**
- * Retrieves whether this database supports using a column that is
- * not in the <code>SELECT</code> statement in a
- * <code>GROUP BY</code> clause.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsGroupByUnrelated() throws SQLException;
- /**
- * Retrieves whether this database supports using columns not included in
- * the <code>SELECT</code> statement in a <code>GROUP BY</code> clause
- * provided that all of the columns in the <code>SELECT</code> statement
- * are included in the <code>GROUP BY</code> clause.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsGroupByBeyondSelect() throws SQLException;
- /**
- * Retrieves whether this database supports specifying a
- * <code>LIKE</code> escape clause.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsLikeEscapeClause() throws SQLException;
- /**
- * Retrieves whether this database supports getting multiple
- * <code>ResultSet</code> objects from a single call to the
- * method <code>execute</code>.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsMultipleResultSets() throws SQLException;
- /**
- * Retrieves whether this database allows having multiple
- * transactions open at once (on different connections).
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsMultipleTransactions() throws SQLException;
- /**
- * Retrieves whether columns in this database may be defined as non-nullable.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsNonNullableColumns() throws SQLException;
- /**
- * Retrieves whether this database supports the ODBC Minimum SQL grammar.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsMinimumSQLGrammar() throws SQLException;
- /**
- * Retrieves whether this database supports the ODBC Core SQL grammar.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsCoreSQLGrammar() throws SQLException;
- /**
- * Retrieves whether this database supports the ODBC Extended SQL grammar.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsExtendedSQLGrammar() throws SQLException;
- /**
- * Retrieves whether this database supports the ANSI92 entry level SQL
- * grammar.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsANSI92EntryLevelSQL() throws SQLException;
- /**
- * Retrieves whether this database supports the ANSI92 intermediate SQL grammar supported.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsANSI92IntermediateSQL() throws SQLException;
- /**
- * Retrieves whether this database supports the ANSI92 full SQL grammar supported.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsANSI92FullSQL() throws SQLException;
- /**
- * Retrieves whether this database supports the SQL Integrity
- * Enhancement Facility.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsIntegrityEnhancementFacility() throws SQLException;
- /**
- * Retrieves whether this database supports some form of outer join.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsOuterJoins() throws SQLException;
- /**
- * Retrieves whether this database supports full nested outer joins.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsFullOuterJoins() throws SQLException;
- /**
- * Retrieves whether this database provides limited support for outer
- * joins. (This will be <code>true</code> if the method
- * <code>supportsFullOuterJoins</code> returns <code>true</code>).
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsLimitedOuterJoins() throws SQLException;
- /**
- * Retrieves the database vendor's preferred term for "schema".
- *
- * @return the vendor term for "schema"
- * @exception SQLException if a database access error occurs
- */
- String getSchemaTerm() throws SQLException;
- /**
- * Retrieves the database vendor's preferred term for "procedure".
- *
- * @return the vendor term for "procedure"
- * @exception SQLException if a database access error occurs
- */
- String getProcedureTerm() throws SQLException;
- /**
- * Retrieves the database vendor's preferred term for "catalog".
- *
- * @return the vendor term for "catalog"
- * @exception SQLException if a database access error occurs
- */
- String getCatalogTerm() throws SQLException;
- /**
- * Retrieves whether a catalog appears at the start of a fully qualified
- * table name. If not, the catalog appears at the end.
- *
- * @return <code>true</code> if the catalog name appears at the beginning
- * of a fully qualified table name; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean isCatalogAtStart() throws SQLException;
- /**
- * Retrieves the <code>String</code> that this database uses as the
- * separator between a catalog and table name.
- *
- * @return the separator string
- * @exception SQLException if a database access error occurs
- */
- String getCatalogSeparator() throws SQLException;
- /**
- * Retrieves whether a schema name can be used in a data manipulation statement.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsSchemasInDataManipulation() throws SQLException;
- /**
- * Retrieves whether a schema name can be used in a procedure call statement.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsSchemasInProcedureCalls() throws SQLException;
- /**
- * Retrieves whether a schema name can be used in a table definition statement.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsSchemasInTableDefinitions() throws SQLException;
- /**
- * Retrieves whether a schema name can be used in an index definition statement.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsSchemasInIndexDefinitions() throws SQLException;
- /**
- * Retrieves whether a schema name can be used in a privilege definition statement.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsSchemasInPrivilegeDefinitions() throws SQLException;
- /**
- * Retrieves whether a catalog name can be used in a data manipulation statement.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsCatalogsInDataManipulation() throws SQLException;
- /**
- * Retrieves whether a catalog name can be used in a procedure call statement.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsCatalogsInProcedureCalls() throws SQLException;
- /**
- * Retrieves whether a catalog name can be used in a table definition statement.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsCatalogsInTableDefinitions() throws SQLException;
- /**
- * Retrieves whether a catalog name can be used in an index definition statement.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsCatalogsInIndexDefinitions() throws SQLException;
- /**
- * Retrieves whether a catalog name can be used in a privilege definition statement.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException;
- /**
- * Retrieves whether this database supports positioned <code>DELETE</code>
- * statements.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsPositionedDelete() throws SQLException;
- /**
- * Retrieves whether this database supports positioned <code>UPDATE</code>
- * statements.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsPositionedUpdate() throws SQLException;
- /**
- * Retrieves whether this database supports <code>SELECT FOR UPDATE</code>
- * statements.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsSelectForUpdate() throws SQLException;
- /**
- * Retrieves whether this database supports stored procedure calls
- * that use the stored procedure escape syntax.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsStoredProcedures() throws SQLException;
- /**
- * Retrieves whether this database supports subqueries in comparison
- * expressions.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsSubqueriesInComparisons() throws SQLException;
- /**
- * Retrieves whether this database supports subqueries in
- * <code>EXISTS</code> expressions.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsSubqueriesInExists() throws SQLException;
- /**
- * Retrieves whether this database supports subqueries in
- * <code>IN</code> statements.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsSubqueriesInIns() throws SQLException;
- /**
- * Retrieves whether this database supports subqueries in quantified
- * expressions.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsSubqueriesInQuantifieds() throws SQLException;
- /**
- * Retrieves whether this database supports correlated subqueries.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsCorrelatedSubqueries() throws SQLException;
- /**
- * Retrieves whether this database supports SQL <code>UNION</code>.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsUnion() throws SQLException;
- /**
- * Retrieves whether this database supports SQL <code>UNION ALL</code>.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsUnionAll() throws SQLException;
- /**
- * Retrieves whether this database supports keeping cursors open
- * across commits.
- *
- * @return <code>true</code> if cursors always remain open;
- * <code>false</code> if they might not remain open
- * @exception SQLException if a database access error occurs
- */
- boolean supportsOpenCursorsAcrossCommit() throws SQLException;
- /**
- * Retrieves whether this database supports keeping cursors open
- * across rollbacks.
- *
- * @return <code>true</code> if cursors always remain open;
- * <code>false</code> if they might not remain open
- * @exception SQLException if a database access error occurs
- */
- boolean supportsOpenCursorsAcrossRollback() throws SQLException;
- /**
- * Retrieves whether this database supports keeping statements open
- * across commits.
- *
- * @return <code>true</code> if statements always remain open;
- * <code>false</code> if they might not remain open
- * @exception SQLException if a database access error occurs
- */
- boolean supportsOpenStatementsAcrossCommit() throws SQLException;
- /**
- * Retrieves whether this database supports keeping statements open
- * across rollbacks.
- *
- * @return <code>true</code> if statements always remain open;
- * <code>false</code> if they might not remain open
- * @exception SQLException if a database access error occurs
- */
- boolean supportsOpenStatementsAcrossRollback() throws SQLException;
- //----------------------------------------------------------------------
- // The following group of methods exposes various limitations
- // based on the target database with the current driver.
- // Unless otherwise specified, a result of zero means there is no
- // limit, or the limit is not known.
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxBinaryLiteralLength() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxCharLiteralLength() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxColumnNameLength() throws SQLException;
- /**
- * Retrieves the maximum number of columns this database allows in a
- * <code>GROUP BY</code> clause.
- *
- * @return the maximum number of columns allowed;
- * a result of zero means that there is no limit or the limit
- * is not known
- * @exception SQLException if a database access error occurs
- */
- int getMaxColumnsInGroupBy() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxColumnsInIndex() throws SQLException;
- /**
- * Retrieves the maximum number of columns this database allows in an
- * <code>ORDER BY</code> clause.
- *
- * @return the maximum number of columns allowed;
- * a result of zero means that there is no limit or the limit
- * is not known
- * @exception SQLException if a database access error occurs
- */
- int getMaxColumnsInOrderBy() throws SQLException;
- /**
- * Retrieves the maximum number of columns this database allows in a
- * <code>SELECT</code> list.
- *
- * @return the maximum number of columns allowed;
- * a result of zero means that there is no limit or the limit
- * is not known
- * @exception SQLException if a database access error occurs
- */
- int getMaxColumnsInSelect() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxColumnsInTable() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxConnections() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxCursorNameLength() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxIndexLength() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxSchemaNameLength() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxProcedureNameLength() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxCatalogNameLength() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxRowSize() throws SQLException;
- /**
- * Retrieves whether the return value for the method
- * <code>getMaxRowSize</code> includes the SQL data types
- * <code>LONGVARCHAR</code> and <code>LONGVARBINARY</code>.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean doesMaxRowSizeIncludeBlobs() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxStatementLength() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxStatements() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxTableNameLength() throws SQLException;
- /**
- * Retrieves the maximum number of tables this database allows in a
- * <code>SELECT</code> statement.
- *
- * @return the maximum number of tables allowed in a <code>SELECT</code>
- * statement; a result of zero means that there is no limit or
- * the limit is not known
- * @exception SQLException if a database access error occurs
- */
- int getMaxTablesInSelect() throws SQLException;
- /**
- * 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
- * @exception SQLException if a database access error occurs
- */
- int getMaxUserNameLength() throws SQLException;
- //----------------------------------------------------------------------
- /**
- * Retrieves this database's default transaction isolation level. The
- * possible values are defined in <code>java.sql.Connection</code>.
- *
- * @return the default isolation level
- * @exception SQLException if a database access error occurs
- * @see Connection
- */
- int getDefaultTransactionIsolation() throws SQLException;
- /**
- * Retrieves whether this database supports transactions. If not, invoking the
- * method <code>commit</code> is a noop, and the isolation level is
- * <code>TRANSACTION_NONE</code>.
- *
- * @return <code>true</code> if transactions are supported;
- * <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsTransactions() throws SQLException;
- /**
- * Retrieves whether this database supports the given transaction isolation level.
- *
- * @param level one of the transaction isolation levels defined in
- * <code>java.sql.Connection</code>
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- * @see Connection
- */
- boolean supportsTransactionIsolationLevel(int level)
- throws SQLException;
- /**
- * Retrieves whether this database supports both data definition and
- * data manipulation statements within a transaction.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsDataDefinitionAndDataManipulationTransactions()
- throws SQLException;
- /**
- * Retrieves whether this database supports only data manipulation
- * statements within a transaction.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean supportsDataManipulationTransactionsOnly()
- throws SQLException;
- /**
- * Retrieves whether a data definition statement within a transaction forces
- * the transaction to commit.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean dataDefinitionCausesTransactionCommit()
- throws SQLException;
- /**
- * Retrieves whether this database ignores a data definition statement
- * within a transaction.
- *
- * @return <code>true</code> if so; <code>false</code> otherwise
- * @exception SQLException if a database access error occurs
- */
- boolean dataDefinitionIgnoredInTransactions()
- throws SQLException;
- /**
- * Retrieves a description of the stored procedures available in the given
- * catalog.
- * <P>
- * Only procedure descriptions matching the schema and
- * procedure name criteria are returned. They are ordered by
- * <code>PROCEDURE_SCHEM</code> and <code>PROCEDURE_NAME</code>.
- *
- * <P>Each procedure description has the the following columns:
- * <OL>
- * <LI><B>PROCEDURE_CAT</B> String => procedure catalog (may be <code>null</code>)
- * <LI><B>PROCEDURE_SCHEM</B> String => procedure schema (may be <code>null</code>)
- * <LI><B>PROCEDURE_NAME</B> String => procedure name
- * <LI> reserved for future use
- * <LI> reserved for future use
- * <LI> reserved for future use
- * <LI><B>REMARKS</B> String => explanatory comment on the procedure
- * <LI><B>PROCEDURE_TYPE</B> short => kind of procedure:
- * <UL>
- * <LI> procedureResultUnknown - May return a result
- * <LI> procedureNoResult - Does not return a result
- * <LI> procedureReturnsResult - Returns a result
- * </UL>
- * </OL>
- *
- * @param catalog a catalog name; must match the catalog name as it
- * is stored in the database; "" retrieves those without a catalog;
- * <code>null</code> 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;
- * <code>null</code> 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 <code>ResultSet</code> - each row is a procedure description
- * @exception SQLException if a database access error occurs
- * @see #getSearchStringEscape
- */
- ResultSet getProcedures(String catalog, String schemaPattern,
- String procedureNamePattern) throws SQLException;
- /**
- * Indicates that it is not known whether the procedure returns
- * a result.
- * <P>
- * A possible value for column <code>PROCEDURE_TYPE</code> in the
- * <code>ResultSet</code> object returned by the method
- * <code>getProcedures</code>.
- */
- int procedureResultUnknown = 0;
- /**
- * Indicates that the procedure does not return a result.
- * <P>
- * A possible value for column <code>PROCEDURE_TYPE</code> in the
- * <code>ResultSet</code> object returned by the method
- * <code>getProcedures</code>.
- */
- int procedureNoResult = 1;
- /**
- * Indicates that the procedure returns a result.
- * <P>
- * A possible value for column <code>PROCEDURE_TYPE</code> in the
- * <code>ResultSet</code> object returned by the method
- * <code>getProcedures</code>.
- */
- int procedureReturnsResult = 2;
- /**
- * Retrieves a description of the given catalog's stored procedure parameter
- * and result columns.
- *
- * <P>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.
- *
- * <P>Each row in the <code>ResultSet</code> is a parameter description or
- * column description with the following fields:
- * <OL>
- * <LI><B>PROCEDURE_CAT</B> String => procedure catalog (may be <code>null</code>)
- * <LI><B>PROCEDURE_SCHEM</B> String => procedure schema (may be <code>null</code>)
- * <LI><B>PROCEDURE_NAME</B> String => procedure name
- * <LI><B>COLUMN_NAME</B> String => column/parameter name
- * <LI><B>COLUMN_TYPE</B> Short => kind of column/parameter:
- * <UL>
- * <LI> procedureColumnUnknown - nobody knows
- * <LI> procedureColumnIn - IN parameter
- * <LI> procedureColumnInOut - INOUT parameter
- * <LI> procedureColumnOut - OUT parameter
- * <LI> procedureColumnReturn - procedure return value
- * <LI> procedureColumnResult - result column in <code>ResultSet</code>
- * </UL>
- * <LI><B>DATA_TYPE</B> int => SQL type from java.sql.Types
- * <LI><B>TYPE_NAME</B> String => SQL type name, for a UDT type the
- * type name is fully qualified
- * <LI><B>PRECISION</B> int => precision
- * <LI><B>LENGTH</B> int => length in bytes of data
- * <LI><B>SCALE</B> short => scale
- * <LI><B>RADIX</B> short => radix
- * <LI><B>NULLABLE</B> short => can it contain NULL.
- * <UL>
- * <LI> procedureNoNulls - does not allow NULL values
- * <LI> procedureNullable - allows NULL values
- * <LI> procedureNullableUnknown - nullability unknown
- * </UL>
- * <LI><B>REMARKS</B> String => comment describing parameter/column
- * </OL>
- *
- * <P><B>Note:</B> 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;
- * <code>null</code> 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;
- * <code>null</code> 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 <code>ResultSet</code> - each row describes a stored procedure parameter or
- * column
- * @exception SQLException if a database access error occurs
- * @see #getSearchStringEscape
- */
- ResultSet getProcedureColumns(String catalog,
- String schemaPattern,
- String procedureNamePattern,
- String columnNamePattern) throws SQLException;
- /**
- * Indicates that type of the column is unknown.
- * <P>
- * A possible value for the column
- * <code>COLUMN_TYPE</code>
- * in the <code>ResultSet</code>
- * returned by the method <code>getProcedureColumns</code>.
- */
- int procedureColumnUnknown = 0;
- /**
- * Indicates that the column stores IN parameters.
- * <P>
- * A possible value for the column
- * <code>COLUMN_TYPE</code>
- * in the <code>ResultSet</code>
- * returned by the method <code>getProcedureColumns</code>.
- */
- int procedureColumnIn = 1;
- /**
- * Indicates that the column stores INOUT parameters.
- * <P>
- * A possible value for the column
- * <code>COLUMN_TYPE</code>
- * in the <code>ResultSet</code>
- * returned by the method <code>getProcedureColumns</code>.
- */
- int procedureColumnInOut = 2;
- /**
- * Indicates that the column stores OUT parameters.
- * <P>
- * A possible value for the column
- * <code>COLUMN_TYPE</code>
- * in the <code>ResultSet</code>
- * returned by the method <code>getProcedureColumns</code>.
- */
- int procedureColumnOut = 4;
- /**
- * Indicates that the column stores return values.
- * <P>
- * A possible value for the column
- * <code>COLUMN_TYPE</code>
- * in the <code>ResultSet</code>
- * returned by the method <code>getProcedureColumns</code>.
- */
- int procedureColumnReturn = 5;
- /**
- * Indicates that the column stores results.
- * <P>
- * A possible value for the column
- * <code>COLUMN_TYPE</code>
- * in the <code>ResultSet</code>
- * returned by the method <code>getProcedureColumns</code>.
- */
- int procedureColumnResult = 3;
- /**
- * Indicates that <code>NULL</code> values are not allowed.
- * <P>
- * A possible value for the column
- * <code>NULLABLE</code>
- * in the <code>ResultSet</code> object
- * returned by the method <code>getProcedureColumns</code>.
- */
- int procedureNoNulls = 0;
- /**
- * Indicates that <code>NULL</code> values are allowed.
- * <P>
- * A possible value for the column
- * <code>NULLABLE</code>
- * in the <code>ResultSet</code> object
- * returned by the method <code>getProcedureColumns</code>.
- */
- int procedureNullable = 1;
- /**
- * Indicates that whether <code>NULL</code> values are allowed
- * is unknown.
- * <P>
- * A possible value for the column
- * <code>NULLABLE</code>
- * in the <code>ResultSet</code> object
- * returned by the method <code>getProcedureColumns</code>.
- */
- int procedureNullableUnknown = 2;
- /**
- * 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.
- * <P>
- * Each table description has the following columns:
- * <OL>
- * <LI><B>TABLE_CAT</B> String => table catalog (may be <code>null</code>)
- * <LI><B>TABLE_SCHEM</B> String => table schema (may be <code>null</code>)
- * <LI><B>TABLE_NAME</B> String => table name
- * <LI><B>TABLE_TYPE</B> String => table type. Typical types are "TABLE",
- * "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY",
- * "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
- * <LI><B>REMARKS</B> String => explanatory comment on the table
- * <LI><B>TYPE_CAT</B> String => the types catalog (may be <code>null</code>)
- * <LI><B>TYPE_SCHEM</B> String => the types schema (may be <code>null</code>)
- * <LI><B>TYPE_NAME</B> String => type name (may be <code>null</code>)
- * <LI><B>SELF_REFERENCING_COL_NAME</B> String => name of the designated
- * "identifier" column of a typed table (may be <code>null</code>)
- * <LI><B>REF_GENERATION</B> String => specifies how values in
- * SELF_REFERENCING_COL_NAME are created. Values are
- * "SYSTEM", "USER", "DERIVED". (may be <code>null</code>)
- * </OL>
- *
- * <P><B>Note:</B> Some databases may not return information for
- * all tables.
- *