All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.esproc.jdbc.DatabaseMetaData Maven / Gradle / Ivy

Go to download

SPL(Structured Process Language) A programming language specially for structured data computing.

There is a newer version: 20241126
Show newest version
package com.esproc.jdbc;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.RowIdLifetime;
import java.sql.SQLException;

import com.scudata.app.common.AppConsts;
import com.scudata.common.Logger;
import com.scudata.common.StringUtils;

/**
 * Comprehensive information about the database as a whole. Implementation of
 * java.sql.DatabaseMetaData
 *
 */
public abstract class DatabaseMetaData implements java.sql.DatabaseMetaData {

	private final String PRODUCT_NAME = "esProc";
	/**
	 * The URL of the JDBC
	 */
	private String url;
	/**
	 * The user name
	 */
	private String userName;
	/**
	 * The driver of the JDBC
	 */
	private String driverName;
	/**
	 * JDBC driver major version
	 */
	private int driverMajorVersion;
	/**
	 * JDBC driver minor version
	 */
	private int driverMinorVersion;

	/**
	 * The constructor
	 */
	public DatabaseMetaData() {
		JDBCUtil.log("DatabaseMetaData-1");
	}

	/**
	 * The constructor
	 * 
	 * @param con                The connection
	 * @param url                The URL of the JDBC
	 * @param userName           The user name
	 * @param driverName         The driver of the JDBC
	 * @param driverMajorVersion The major version of the driver
	 * @param driverMinorVersion The minor version of the driver
	 * @throws SQLException
	 */
	public DatabaseMetaData(String url, String driverName,
			int driverMajorVersion, int driverMinorVersion) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-2");
		this.url = url;
		this.driverName = driverName;
		this.driverMajorVersion = driverMajorVersion;
		this.driverMinorVersion = driverMinorVersion;
	}

	public abstract InternalConnection getConnection();

	/**
	 * Retrieves whether the current user can call all the procedures returned by
	 * the method getProcedures.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean allProceduresAreCallable() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-3");
		return true;
	}

	/**
	 * 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
	 */
	public boolean allTablesAreSelectable() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-4");
		return true;
	}

	/**
	 * Retrieves the URL for this DBMS.
	 * 
	 * @return the URL for this DBMS or null if it cannot be generated
	 */
	public String getURL() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-5");
		return this.url;
	}

	/**
	 * Retrieves the user name as known to this database.
	 * 
	 * @return the database user name
	 */
	public String getUserName() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-6");
		return this.userName;
	}

	/**
	 * Retrieves whether this database is in read-only mode.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean isReadOnly() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-7");
		Logger.debug(JDBCMessage.get().getMessage("error.methodnotimpl",
				"isReadOnly()"));
		return false;
	}

	/**
	 * 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
	 */
	public boolean nullsAreSortedHigh() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-8");
		return true;
	}

	/**
	 * 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
	 */
	public boolean nullsAreSortedLow() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-9");
		return false;
	}

	/**
	 * Retrieves whether NULL values are sorted at the start regardless of sort
	 * order.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean nullsAreSortedAtStart() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-10");
		return true;
	}

	/**
	 * Retrieves whether NULL values are sorted at the end regardless of sort
	 * order. @return true if so; false otherwise
	 */
	public boolean nullsAreSortedAtEnd() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-11");
		return false;
	}

	/**
	 * Retrieves the name of this database product.
	 * 
	 * @return database product name
	 */
	public String getDatabaseProductName() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-12");
		return PRODUCT_NAME;
	}

	/**
	 * Retrieves the version number of this database product.
	 * 
	 * @return database version number
	 */
	public String getDatabaseProductVersion() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-13");
		return "1.0";
	}

	/**
	 * Retrieves the name of this JDBC driver.
	 * 
	 * @return JDBC driver name
	 */
	public String getDriverName() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-14");
		return this.driverName;
	}

	/**
	 * Retrieves the version number of this JDBC driver as a String.
	 * 
	 * @return JDBC driver version
	 */
	public String getDriverVersion() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-15");
		return getDriverMajorVersion() + "." + getDriverMinorVersion();
	}

	/**
	 * Retrieves this JDBC driver's major version number.
	 * 
	 * @return JDBC driver major version
	 */
	public int getDriverMajorVersion() {
		JDBCUtil.log("DatabaseMetaData-16");
		return this.driverMajorVersion;
	}

	/**
	 * Retrieves this JDBC driver's minor version number.
	 * 
	 * @return JDBC driver minor version number
	 */
	public int getDriverMinorVersion() {
		JDBCUtil.log("DatabaseMetaData-17");
		return this.driverMinorVersion;
	}

	/**
	 * Retrieves whether this database stores tables in a local file.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean usesLocalFiles() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-18");
		InternalConnection connt = getConnection();
		if (connt == null || connt.isClosed())
			throw new SQLException(JDBCMessage.get().getMessage(
					"error.conclosed"));
		return !connt.isOnlyServer();
	}

	/**
	 * Retrieves whether this database uses a file for each table.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean usesLocalFilePerTable() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-19");
		return true;
	}

	/**
	 * 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
	 */
	public boolean supportsMixedCaseIdentifiers() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-20");
		return true;
	}

	/**
	 * 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
	 */
	public boolean storesUpperCaseIdentifiers() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-21");
		return false;
	}

	/**
	 * 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
	 */
	public boolean storesLowerCaseIdentifiers() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-22");
		return false;
	}

	/**
	 * 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
	 */
	public boolean storesMixedCaseIdentifiers() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-23");
		return true;
	}

	/**
	 * 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
	 */
	public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-24");
		return true;
	}

	/**
	 * 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
	 */
	public boolean storesUpperCaseQuotedIdentifiers() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-25");
		return false;
	}

	/**
	 * 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
	 */
	public boolean storesLowerCaseQuotedIdentifiers() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-26");
		return false;
	}

	/**
	 * 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
	 */
	public boolean storesMixedCaseQuotedIdentifiers() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-27");
		return true;
	}

	/**
	 * 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
	 */
	public String getIdentifierQuoteString() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-28");
		return "'";
	}

	/**
	 * Retrieves a comma-separated list of all of this database's SQL keywords that
	 * are NOT also SQL:2003 keywords.
	 * 
	 * @return the list of this database's keywords that are not also SQL:2003
	 *         keywords
	 */
	public String getSQLKeywords() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-29");
		return null;
	}

	/**
	 * 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
	 */
	public String getNumericFunctions() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-30");
		return null;
	}

	/**
	 * 
	 * 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
	 */
	public String getStringFunctions() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-31");
		return null;
	}

	/**
	 * 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
	 */
	public String getSystemFunctions() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-32");
		return null;
	}

	/**
	 * 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
	 */
	public String getTimeDateFunctions() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-33");
		return null;
	}

	/**
	 * 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).
	 * 
	 * @return the string used to escape wildcard characters
	 */
	public String getSearchStringEscape() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-34");
		return "\\";
	}

	/**
	 * 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
	 */
	public String getExtraNameCharacters() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-35");
		return "";
	}

	/**
	 * Retrieves whether this database supports ALTER TABLE with add column.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsAlterTableWithAddColumn() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-36");
		return false;
	}

	/**
	 * Retrieves whether this database supports ALTER TABLE with drop column.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsAlterTableWithDropColumn() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-37");
		return false;
	}

	/**
	 * 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
	 */
	public boolean supportsColumnAliasing() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-38");
		return false;
	}

	/**
	 * Retrieves whether this database supports concatenations between NULL and
	 * non-NULL values being NULL.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean nullPlusNonNullIsNull() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-39");
		return true;
	}

	/**
	 * Retrieves whether this database supports the JDBC scalar function CONVERT for
	 * the conversion of one JDBC type to another. The JDBC types are the generic
	 * SQL data types defined in java.sql.Types.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsConvert() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-40");
		return false;
	}

	/**
	 * Retrieves whether this database supports the JDBC scalar function CONVERT for
	 * conversions between the JDBC types fromType and toType. The JDBC types are
	 * the generic SQL data types defined in java.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
	 */
	public boolean supportsConvert(int fromType, int toType)
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-41");
		return false;
	}

	/**
	 * Retrieves whether this database supports table correlation names.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsTableCorrelationNames() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-42");
		return false;
	}

	/**
	 * 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
	 */
	public boolean supportsDifferentTableCorrelationNames() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-43");
		return false;
	}

	/**
	 * Retrieves whether this database supports expressions in ORDER BY lists.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsExpressionsInOrderBy() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-44");
		return false;
	}

	/**
	 * 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
	 */
	public boolean supportsOrderByUnrelated() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-45");
		return false;
	}

	/**
	 * Retrieves whether this database supports some form of GROUP BY clause.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsGroupBy() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-46");
		return true;
	}

	/**
	 * 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
	 */
	public boolean supportsGroupByUnrelated() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-47");
		return false;
	}

	/**
	 * 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
	 */
	public boolean supportsGroupByBeyondSelect() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-48");
		return false;
	}

	/**
	 * Retrieves whether this database supports specifying a LIKE escape clause.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsLikeEscapeClause() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-49");
		return false;
	}

	/**
	 * Retrieves whether this database supports getting multiple ResultSet objects
	 * from a single call to the method execute.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsMultipleResultSets() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-50");
		return true;
	}

	/**
	 * Retrieves whether this database allows having multiple transactions open at
	 * once (on different connections).
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsMultipleTransactions() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-51");
		return false;
	}

	/**
	 * Retrieves whether columns in this database may be defined as non-nullable.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsNonNullableColumns() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-52");
		return false;
	}

	/**
	 * Retrieves whether this database supports the ODBC Minimum SQL grammar.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsMinimumSQLGrammar() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-53");
		return false;
	}

	/**
	 * Retrieves whether this database supports the ODBC Core SQL grammar.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsCoreSQLGrammar() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-54");
		return false;
	}

	/**
	 * Retrieves whether this database supports the ODBC Extended SQL grammar.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsExtendedSQLGrammar() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-55");
		return false;
	}

	/**
	 * Retrieves whether this database supports the ANSI92 entry level SQL grammar.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsANSI92EntryLevelSQL() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-56");
		return false;
	}

	/**
	 * Retrieves whether this database supports the ANSI92 intermediate SQL grammar
	 * supported.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsANSI92IntermediateSQL() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-57");
		return false;
	}

	/**
	 * Retrieves whether this database supports the ANSI92 full SQL grammar
	 * supported.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsANSI92FullSQL() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-58");
		return false;
	}

	/**
	 * Retrieves whether this database supports the SQL Integrity Enhancement
	 * Facility.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsIntegrityEnhancementFacility() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-59");
		return false;
	}

	/**
	 * Retrieves whether this database supports some form of outer join.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsOuterJoins() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-60");
		return false;
	}

	/**
	 * Retrieves whether this database supports full nested outer joins.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsFullOuterJoins() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-61");
		return false;
	}

	/**
	 * 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
	 */
	public boolean supportsLimitedOuterJoins() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-62");
		return false;
	}

	/**
	 * Retrieves the database vendor's preferred term for "schema".
	 * 
	 * @return the vendor term for "schema"
	 */
	public String getSchemaTerm() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-63");
		return null;
	}

	/**
	 * Retrieves the database vendor's preferred term for "procedure".
	 * 
	 * @return the vendor term for "procedure"
	 */
	public String getProcedureTerm() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-64");
		return null;
	}

	/**
	 * Retrieves the database vendor's preferred term for "catalog".
	 * 
	 * @return the vendor term for "catalog"
	 */
	public String getCatalogTerm() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-65");
		return null;
	}

	/**
	 * 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
	 */
	public boolean isCatalogAtStart() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-66");
		return false;
	}

	/**
	 * Retrieves the String that this database uses as the separator between a
	 * catalog and table name.
	 * 
	 * @return the separator string
	 */
	public String getCatalogSeparator() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-67");
		return ".";
	}

	/**
	 * Retrieves whether a schema name can be used in a data manipulation statement.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsSchemasInDataManipulation() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-68");
		return false;
	}

	/**
	 * Retrieves whether a schema name can be used in a procedure call statement.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsSchemasInProcedureCalls() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-69");
		return false;
	}

	/**
	 * Retrieves whether a schema name can be used in a table definition statement.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsSchemasInTableDefinitions() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-70");
		return false;
	}

	/**
	 * Retrieves whether a schema name can be used in an index definition statement.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsSchemasInIndexDefinitions() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-71");
		return false;
	}

	/**
	 * Retrieves whether a schema name can be used in a privilege definition
	 * statement.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsSchemasInPrivilegeDefinitions() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-72");
		return false;
	}

	/**
	 * Retrieves whether a catalog name can be used in a data manipulation
	 * statement.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsCatalogsInDataManipulation() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-73");
		return false;
	}

	/**
	 * Retrieves whether a catalog name can be used in a procedure call statement.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsCatalogsInProcedureCalls() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-74");
		return false;
	}

	/**
	 * Retrieves whether a catalog name can be used in a table definition statement.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsCatalogsInTableDefinitions() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-75");
		return false;
	}

	/**
	 * Retrieves whether a catalog name can be used in an index definition
	 * statement.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsCatalogsInIndexDefinitions() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-76");
		return false;
	}

	/**
	 * Retrieves whether a catalog name can be used in a privilege definition
	 * statement.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-77");
		return false;
	}

	/**
	 * Retrieves whether this database supports positioned DELETE statements.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsPositionedDelete() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-78");
		return false;
	}

	/**
	 * Retrieves whether this database supports positioned UPDATE statements.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsPositionedUpdate() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-79");
		return false;
	}

	/**
	 * Retrieves whether this database supports SELECT FOR UPDATE statements.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsSelectForUpdate() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-80");
		return false;
	}

	/**
	 * Retrieves whether this database supports stored procedure calls that use the
	 * stored procedure escape syntax.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsStoredProcedures() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-81");
		return true;
	}

	/**
	 * Retrieves whether this database supports subqueries in comparison
	 * expressions.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsSubqueriesInComparisons() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-82");
		return false;
	}

	/**
	 * Retrieves whether this database supports subqueries in EXISTS expressions.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsSubqueriesInExists() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-83");
		return false;
	}

	/**
	 * Retrieves whether this database supports subqueries in IN expressions.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsSubqueriesInIns() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-84");
		return false;
	}

	/**
	 * Retrieves whether this database supports subqueries in quantified
	 * expressions.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsSubqueriesInQuantifieds() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-85");
		return false;
	}

	/**
	 * Retrieves whether this database supports correlated subqueries.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsCorrelatedSubqueries() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-86");
		return false;
	}

	/**
	 * Retrieves whether this database supports SQL UNION.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsUnion() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-87");
		return false;
	}

	/**
	 * Retrieves whether this database supports SQL UNION ALL.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsUnionAll() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-88");
		return false;
	}

	/**
	 * Retrieves whether this database supports keeping cursors open across commits.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsOpenCursorsAcrossCommit() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-89");
		return false;
	}

	/**
	 * Retrieves whether this database supports keeping cursors open across
	 * rollbacks.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsOpenCursorsAcrossRollback() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-90");
		return false;
	}

	/**
	 * Retrieves whether this database supports keeping statements open across
	 * commits.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsOpenStatementsAcrossCommit() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-91");
		return false;
	}

	/**
	 * Retrieves whether this database supports keeping statements open across
	 * rollbacks.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsOpenStatementsAcrossRollback() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-92");
		return false;
	}

	/**
	 * 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
	 */
	public int getMaxBinaryLiteralLength() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-93");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxCharLiteralLength() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-94");
		return 0;
	}

	/**
	 * Retrieves the maximum number of characters this database allows for a
	 * character literal.
	 * 
	 * @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
	 */
	public int getMaxColumnNameLength() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-95");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxColumnsInGroupBy() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-96");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxColumnsInIndex() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-97");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxColumnsInOrderBy() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-98");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxColumnsInSelect() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-99");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxColumnsInTable() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-100");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxConnections() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-101");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxCursorNameLength() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-102");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxIndexLength() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-103");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxSchemaNameLength() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-104");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxProcedureNameLength() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-105");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxCatalogNameLength() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-106");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxRowSize() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-107");
		return 0;
	}

	/**
	 * Retrieves whether the return value for the method getMaxRowSize includes the
	 * SQL data types LONGVARCHAR and LONGVARBINARY.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean doesMaxRowSizeIncludeBlobs() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-108");
		return false;
	}

	/**
	 * 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
	 */
	public int getMaxStatementLength() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-109");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxStatements() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-110");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxTableNameLength() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-111");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxTablesInSelect() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-112");
		return 0;
	}

	/**
	 * 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
	 */
	public int getMaxUserNameLength() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-113");
		return 0;
	}

	/**
	 * Retrieves this database's default transaction isolation level. The possible
	 * values are defined in java.sql.Connection.
	 * 
	 * @return the default isolation level
	 */
	public int getDefaultTransactionIsolation() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-114");
		return Connection.TRANSACTION_NONE;
	}

	/**
	 * 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
	 */
	public boolean supportsTransactions() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-115");
		return false;
	}

	/**
	 * Retrieves whether this database supports the given transaction isolation
	 * level.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsTransactionIsolationLevel(int level)
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-116");
		return false;
	}

	/**
	 * Retrieves whether this database supports both data definition and data
	 * manipulation statements within a transaction.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsDataDefinitionAndDataManipulationTransactions()
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-117");
		return false;
	}

	/**
	 * Retrieves whether this database supports only data manipulation statements
	 * within a transaction.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsDataManipulationTransactionsOnly()
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-118");
		return false;
	}

	/**
	 * Retrieves whether a data definition statement within a transaction forces the
	 * transaction to commit.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean dataDefinitionCausesTransactionCommit() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-119");
		return false;
	}

	/**
	 * Retrieves whether this database ignores a data definition statement within a
	 * transaction.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean dataDefinitionIgnoredInTransactions() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-120");
		return false;
	}

	/**
	 * Retrieves a description of the stored procedures available in the given
	 * catalog.
	 * 
	 * @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 each row is a procedure description
	 */
	public ResultSet getProcedures(String catalog, String schemaPattern,
			String procedureNamePattern) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-121-" + procedureNamePattern);
		InternalConnection connt = getConnection();
		if (connt == null || connt.isClosed()) {
			throw new SQLException(JDBCMessage.get().getMessage(
					"error.conclosed"));
		}
		procedureNamePattern = getRealPattern(schemaPattern,
				procedureNamePattern);
		return connt.getProcedures(procedureNamePattern);
	}

	/**
	 * Retrieves a description of the given catalog's stored procedure parameter and
	 * result columns.
	 * 
	 * @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 each row describes a stored procedure parameter or column
	 */
	public ResultSet getProcedureColumns(String catalog, String schemaPattern,
			String procedureNamePattern, String columnNamePattern)
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-122-" + procedureNamePattern + "-"
				+ columnNamePattern);
		InternalConnection connt = getConnection();
		if (connt == null || connt.isClosed()) {
			throw new SQLException(JDBCMessage.get().getMessage(
					"error.conclosed"));
		}
		procedureNamePattern = getRealPattern(schemaPattern,
				procedureNamePattern);
		return connt.getProcedureColumns(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_CAT, TABLE_SCHEM and
	 * TABLE_NAME.
	 * 
	 * @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, which must be from the list of
	 *                         table types returned from getTableTypes(),to include;
	 *                         null returns all types
	 * @return each row is a table description
	 */
	public ResultSet getTables(String catalog, String schemaPattern,
			String tableNamePattern, String[] types) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-123-" + tableNamePattern);
		InternalConnection connt = getConnection();
		if (connt == null || connt.isClosed()) {
			throw new SQLException(JDBCMessage.get().getMessage(
					"error.conclosed"));
		}
		tableNamePattern = getRealPattern(schemaPattern, tableNamePattern);
		return connt.getTables(tableNamePattern);
	}

	/**
	 * Retrieves the schema names available in this database. The results are
	 * ordered by TABLE_CATALOG and TABLE_SCHEM.
	 * 
	 * @return a ResultSet object in which each row is a schema description
	 */
	public ResultSet getSchemas() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-124");
		return new com.esproc.jdbc.ResultSet(
				com.esproc.jdbc.ResultSet.GET_SCHEMAS);
	}

	/**
	 * Retrieves the catalog names available in this database. The results are
	 * ordered by catalog name.
	 * 
	 * @return a ResultSet object in which each row has a single String column that
	 *         is a catalog name
	 */
	public ResultSet getCatalogs() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-125");
		return new com.esproc.jdbc.ResultSet(
				com.esproc.jdbc.ResultSet.GET_CATALOGS);
	}

	/**
	 * Retrieves the table types available in this database. The results are ordered
	 * by table type.
	 * 
	 * @return a ResultSet object in which each row has a single String column that
	 *         is a table type
	 */
	public ResultSet getTableTypes() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-126");
		return new com.esproc.jdbc.ResultSet(
				com.esproc.jdbc.ResultSet.GET_TABLE_TYPES);
	}

	/**
	 * ?еĹ??߰?a.btx????schema=a, table=btx????????????֧??????д????
	 * 
	 * @param schemaPattern
	 * @param tableNamePattern
	 * @return
	 */
	private String getRealPattern(String schemaPattern, String tableNamePattern) {
		if (StringUtils.isValidString(schemaPattern)
				&& StringUtils.isValidString(tableNamePattern)) {
			String str = JDBCConsts.DATA_FILE_EXTS + ","
					+ AppConsts.SPL_FILE_EXTS;
			String[] exts = str.split(",");
			for (String ext : exts) {
				if (ext.equals(tableNamePattern.toLowerCase())) {
					tableNamePattern = schemaPattern + "." + tableNamePattern;
					break;
				}
			}
		}
		return tableNamePattern;
	}

	/**
	 * Retrieves a description of table columns available in the specified catalog.
	 * 
	 * @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 each row is a column description
	 */
	public ResultSet getColumns(String catalog, String schemaPattern,
			String tableNamePattern, String columnNamePattern)
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-127-" + tableNamePattern + "-"
				+ columnNamePattern);
		InternalConnection connt = getConnection();
		if (connt == null || connt.isClosed()) {
			throw new SQLException(JDBCMessage.get().getMessage(
					"error.conclosed"));
		}
		tableNamePattern = getRealPattern(schemaPattern, tableNamePattern);
		return connt.getColumns(tableNamePattern, columnNamePattern);
	}

	/**
	 * Retrieves a description of the access rights for a table's columns.
	 * 
	 * @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 each row is a column privilege description
	 */
	public ResultSet getColumnPrivileges(String catalog, String schemaPattern,
			String tableNamePattern, String columnNamePattern)
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-128");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * 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.)
	 * 
	 * @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 each row is a table privilege description
	 */
	public ResultSet getTablePrivileges(String catalog, String schemaPattern,
			String tableNamePattern) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-129");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * Retrieves a description of a table's optimal set of columns that uniquely
	 * identifies a row. They are ordered by SCOPE.
	 * 
	 * @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 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 table    a table name pattern; 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 each row is a column description
	 */
	public ResultSet getBestRowIdentifier(String catalog, String schema,
			String table, int scope, boolean nullable) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-130");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * Retrieves a description of a table's columns that are automatically updated
	 * when any value in a row is updated. They are unordered.
	 * 
	 * @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 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 table   a table name pattern; must match the table name as it is
	 *                stored in the database
	 * @return a ResultSet object in which each row is a column description
	 */
	public ResultSet getVersionColumns(String catalog, String schema,
			String table) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-131");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * Retrieves a description of the given table's primary key columns. They are
	 * ordered by COLUMN_NAME.
	 * 
	 * @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 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 table   a table name pattern; must match the table name as it is
	 *                stored in the database
	 * @return each row is a primary key column description
	 */
	public ResultSet getPrimaryKeys(String catalog, String schema, String table)
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-132");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * Retrieves a description of the primary key columns that are referenced by the
	 * given 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.
	 * 
	 * @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 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 table   a table name pattern; must match the table name as it is
	 *                stored in the database
	 * @return each row is a primary key column description
	 */
	public ResultSet getImportedKeys(String catalog, String schema, String table)
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-133");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * 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.
	 * 
	 * @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 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 table   a table name pattern; must match the table name as it is
	 *                stored in the database
	 * @return a ResultSet object in which each row is a foreign key column
	 *         description
	 */
	public ResultSet getExportedKeys(String catalog, String schema, String table)
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-134");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * Retrieves a description of the foreign key columns in the given foreign key
	 * table that reference the primary key or the columns representing a unique
	 * constraint of the parent table (could be the same or a different table). The
	 * number of columns returned from the parent table must match the number of
	 * columns that make up the foreign key. They are ordered by FKTABLE_CAT,
	 * FKTABLE_SCHEM, FKTABLE_NAME, and KEY_SEQ.
	 * 
	 * @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 each row is a foreign key column description
	 */
	public ResultSet getCrossReference(String primaryCatalog,
			String primarySchema, String primaryTable, String foreignCatalog,
			String foreignSchema, String foreignTable) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-135");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * Retrieves a description of all the data 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.
	 * 
	 * @return a ResultSet object in which each row is an SQL type description
	 */
	public ResultSet getTypeInfo() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-136");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * Retrieves a description of the given table's indices and statistics. They are
	 * ordered by NON_UNIQUE, TYPE, INDEX_NAME, and ORDINAL_POSITION.
	 * 
	 * @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 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 table       a table name pattern; must match the table name as it is
	 *                    stored in the 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 each row is an index column description
	 */
	public ResultSet getIndexInfo(String catalog, String schema, String table,
			boolean unique, boolean approximate) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-137");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * Retrieves whether this database supports the given result set type.
	 * 
	 * @param type defined in java.sql.ResultSet
	 * @return true if so; false otherwise
	 */
	public boolean supportsResultSetType(int type) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-138");
		return type == ResultSet.TYPE_FORWARD_ONLY;
	}

	/**
	 * 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
	 */
	public boolean supportsResultSetConcurrency(int type, int concurrency)
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-139");
		return type == ResultSet.TYPE_FORWARD_ONLY
				&& ResultSet.CONCUR_READ_ONLY == 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
	 */
	public boolean ownUpdatesAreVisible(int type) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-140");
		return false;
	}

	/**
	 * 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
	 */
	public boolean ownDeletesAreVisible(int type) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-141");
		return false;
	}

	/**
	 * 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
	 */
	public boolean ownInsertsAreVisible(int type) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-142");
		return false;
	}

	/**
	 * 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
	 */
	public boolean othersUpdatesAreVisible(int type) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-143");
		return false;
	}

	/**
	 * 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
	 */
	public boolean othersDeletesAreVisible(int type) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-144");
		return false;
	}

	/**
	 * 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
	 */
	public boolean othersInsertsAreVisible(int type) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-145");
		return false;
	}

	/**
	 * 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
	 */
	public boolean updatesAreDetected(int type) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-146");
		return false;
	}

	/**
	 * 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
	 */
	public boolean deletesAreDetected(int type) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-147");
		return false;
	}

	/**
	 * 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
	 */
	public boolean insertsAreDetected(int type) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-148");
		return false;
	}

	/**
	 * Retrieves whether this database supports batch updates.
	 * 
	 * @return true if this database supports batch updates; false otherwise
	 */
	public boolean supportsBatchUpdates() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-149");
		return false;
	}

	/**
	 * 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.
	 * 
	 * @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 user-defined types (JAVA_OBJECT, STRUCT, or
	 *                         DISTINCT) to include; null returns all types
	 * @return ResultSet object in which each row describes a UDT
	 */
	public ResultSet getUDTs(String catalog, String schemaPattern,
			String tableNamePattern, int[] types) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-150");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * Retrieves whether this database supports savepoints.
	 * 
	 * @return true if savepoints are supported; false otherwise
	 */
	public boolean supportsSavepoints() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-152");
		return false;
	}

	/**
	 * Retrieves whether this database supports named parameters to callable
	 * statements.
	 * 
	 * @return true if named parameters are supported; false otherwise
	 */
	public boolean supportsNamedParameters() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-153");
		return false;
	}

	/**
	 * 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
	 */
	public boolean supportsMultipleOpenResults() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-154");
		return true;
	}

	/**
	 * 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 If true is returned, the JDBC driver must
	 *         support the returning of auto-generated keys for at least SQL INSERT
	 *         statements
	 */
	public boolean supportsGetGeneratedKeys() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-155");
		return false;
	}

	/**
	 * 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.
	 * 
	 * @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
	 */
	public ResultSet getSuperTypes(String catalog, String schemaPattern,
			String typeNamePattern) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-156");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * Retrieves a description of the table hierarchies defined in a particular
	 * schema in this database.
	 * 
	 * @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
	 */
	public ResultSet getSuperTables(String catalog, String schemaPattern,
			String tableNamePattern) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-157");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * 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.
	 * 
	 * @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
	 * @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
	 */
	public ResultSet getAttributes(String catalog, String schemaPattern,
			String typeNamePattern, String attributeNamePattern)
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-158");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * 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
	 */
	public boolean supportsResultSetHoldability(int holdability)
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-159");
		return false;
	}

	/**
	 * Retrieves this database's default holdability for ResultSet objects.
	 * 
	 * @return the default holdability; either ResultSet.HOLD_CURSORS_OVER_COMMIT or
	 *         ResultSet.CLOSE_CURSORS_AT_COMMIT
	 */
	public int getResultSetHoldability() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-160");
		return ResultSet.CLOSE_CURSORS_AT_COMMIT;
	}

	/**
	 * Retrieves the major version number of the underlying database.
	 * 
	 * @return the underlying database's major version
	 */
	public int getDatabaseMajorVersion() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-161");
		return 1;
	}

	/**
	 * Retrieves the minor version number of the underlying database.
	 * 
	 * @return underlying database's minor version
	 */
	public int getDatabaseMinorVersion() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-162");
		return 0;
	}

	/**
	 * Retrieves the major JDBC version number for this driver.
	 * 
	 * @return JDBC version major number
	 */
	public int getJDBCMajorVersion() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-163");
		return 8;
	}

	/**
	 * Retrieves the minor JDBC version number for this driver.
	 * 
	 * @return JDBC version minor number
	 */
	public int getJDBCMinorVersion() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-164");
		return 0;
	}

	/**
	 * Indicates whether the SQLSTATE returned by SQLException.getSQLState is X/Open
	 * (now known as Open Group) SQL CLI or SQL:2003.
	 * 
	 * @return the type of SQLSTATE; one of: sqlStateXOpen or sqlStateSQL
	 */
	public int getSQLStateType() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-165");
		return sqlStateSQL;
	}

	/**
	 * 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
	 */
	public boolean locatorsUpdateCopy() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-166");
		return false;
	}

	/**
	 * Retrieves whether this database supports statement pooling.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsStatementPooling() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-167");
		return false;
	}

	/**
	 * Retrieves whether a SQLException while autoCommit is true indicates that all
	 * open ResultSets are closed, even ones that are holdable. When a SQLException
	 * occurs while autocommit is true, it is vendor specific whether the JDBC
	 * driver responds with a commit operation, a rollback operation, or by doing
	 * neither a commit nor a rollback. A potential result of this difference is in
	 * whether or not holdable ResultSets are closed.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean autoCommitFailureClosesAllResultSets() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-180");
		return false;
	}

	/**
	 * Retrieves a list of the client info properties that the driver supports. The
	 * result set contains the following columns
	 * 
	 * @return A ResultSet object; each row is a supported client info property
	 */
	public ResultSet getClientInfoProperties() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-181");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * Retrieves a description of the system and user functions available in the
	 * given catalog.
	 * 
	 * @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 functionNamePattern a function name pattern; must match the function
	 *                            name as it is stored in the database
	 * @return each row is a function description
	 */
	public ResultSet getFunctions(String catalog, String schemaPattern,
			String functionNamePattern) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-183");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * Retrieves a description of the given catalog's system or user function
	 * parameters and return type.
	 * 
	 * @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 functionNamePattern a function name pattern; must match the function
	 *                            name as it is stored in the database
	 * @param columnNamePattern   a parameter name pattern; must match the parameter
	 *                            or column name as it is stored in the database
	 * @return each row describes a user function parameter, column or return type
	 */
	public ResultSet getFunctionColumns(String catalog, String schemaPattern,
			String functionNamePattern, String columnNamePattern)
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-182");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * Indicates whether or not this data source supports the SQL ROWID type, and if
	 * so the lifetime for which a RowId object remains valid.
	 * 
	 * @return the status indicating the lifetime of a RowId
	 */
	public RowIdLifetime getRowIdLifetime() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-184");
		Logger.debug(JDBCMessage.get().getMessage("error.methodnotimpl",
				"getRowIdLifetime()"));
		return null;
	}

	/**
	 * Retrieves the schema names available in this database. The results are
	 * ordered by TABLE_CATALOG and TABLE_SCHEM.
	 * 
	 * @param catalog       a catalog name; must match the catalog name as it is
	 *                      stored in the database;"" retrieves those without a
	 *                      catalog; null means catalog name should not be used to
	 *                      narrow down the search.
	 * @param schemaPattern a schema name; must match the schema name as it is
	 *                      stored in the database; null means schema name should
	 *                      not be used to narrow down the search.
	 * @return a ResultSet object in which each row is a schema description
	 */
	public ResultSet getSchemas(String catalog, String schemaPattern)
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-185");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * Retrieves whether this database supports invoking user-defined or vendor
	 * functions using the stored procedure escape syntax.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean supportsStoredFunctionsUsingCallSyntax() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-186");
		return false;
	}

	/**
	 * Returns true if this either implements the interface argument or is directly
	 * or indirectly a wrapper for an object that does. Returns false otherwise. If
	 * this implements the interface then return true, else if this is a wrapper
	 * then return the result of recursively calling isWrapperFor on the wrapped
	 * object. If this does not implement the interface and is not a wrapper, return
	 * false. This method should be implemented as a low-cost operation compared to
	 * unwrap so that callers can use this method to avoid expensive unwrap calls
	 * that may fail. If this method returns true then calling unwrap with the same
	 * argument should succeed.
	 * 
	 * @param iface a Class defining an interface.
	 * @return true if this implements the interface or directly or indirectly wraps
	 *         an object that does.
	 */
	public boolean isWrapperFor(Class iface) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-187");
		Logger.debug(JDBCMessage.get().getMessage("error.methodnotimpl",
				"isWrapperFor(Class iface)"));
		return false;
	}

	/**
	 * Returns an object that implements the given interface to allow access to
	 * non-standard methods, or standard methods not exposed by the proxy. If the
	 * receiver implements the interface then the result is the receiver or a proxy
	 * for the receiver. If the receiver is a wrapper and the wrapped object
	 * implements the interface then the result is the wrapped object or a proxy for
	 * the wrapped object. Otherwise return the the result of calling unwrap
	 * recursively on the wrapped object or a proxy for that result. If the receiver
	 * is not a wrapper and does not implement the interface, then an SQLException
	 * is thrown.
	 * 
	 * 
	 * @param iface a Class defining an interface.
	 * @return true if this implements the interface or directly or indirectly wraps
	 *         an object that does.
	 */
	public  T unwrap(Class iface) throws SQLException {
		JDBCUtil.log("DatabaseMetaData-188");
		Logger.debug(JDBCMessage.get().getMessage("error.methodnotimpl",
				"unwrap(Class iface)"));
		return null;
	}

	/**
	 * Retrieves a description of the pseudo or hidden columns available in a given
	 * table within the specified catalog and schema. Pseudo or hidden columns may
	 * not always be stored within a table and are not visible in a ResultSet unless
	 * they are specified in the query's outermost SELECT list. Pseudo or hidden
	 * columns may not necessarily be able to be modified. If there are no pseudo or
	 * hidden columns, an empty ResultSet 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 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 parameter name pattern; must match the parameter
	 *                          or column name as it is stored in the database
	 * @return each row is a column description
	 */
	public ResultSet getPseudoColumns(String catalog, String schemaPattern,
			String tableNamePattern, String columnNamePattern)
			throws SQLException {
		JDBCUtil.log("DatabaseMetaData-189");
		return JDBCUtil.getEmptyResultSet();
	}

	/**
	 * Retrieves whether a generated key will always be returned if the column
	 * name(s) or index(es) specified for the auto generated key column(s) are valid
	 * and the statement succeeds. The key that is returned may or may not be based
	 * on the column(s) for the auto generated key. Consult your JDBC driver
	 * documentation for additional details.
	 * 
	 * @return true if so; false otherwise
	 */
	public boolean generatedKeyAlwaysReturned() throws SQLException {
		JDBCUtil.log("DatabaseMetaData-190");
		return false;
	}

	/**
	 * Get URL
	 * 
	 * @return String
	 */
	public String getUrl() {
		JDBCUtil.log("DatabaseMetaData-174");
		return url;
	}

	/**
	 * Set URL
	 * 
	 * @param url
	 */
	public void setUrl(String url) {
		JDBCUtil.log("DatabaseMetaData-175");
		this.url = url;
	}

	/**
	 * Set JDBC driver major version
	 * 
	 * @param driverMajorVersion
	 */
	public void setDriverMajorVersion(int driverMajorVersion) {
		JDBCUtil.log("DatabaseMetaData-176");
		this.driverMajorVersion = driverMajorVersion;
	}

	/**
	 * JDBC driver minor version
	 * 
	 * @param driverMinorVersion
	 */
	public void setDriverMinorVersion(int driverMinorVersion) {
		JDBCUtil.log("DatabaseMetaData-177");
		this.driverMinorVersion = driverMinorVersion;
	}

	/**
	 * Set the driver name
	 * 
	 * @param driverName
	 */
	public void setDriverName(String driverName) {
		JDBCUtil.log("DatabaseMetaData-178");
		this.driverName = driverName;
	}

	/**
	 * Set the user name
	 * 
	 * @param userName
	 */
	public void setUserName(String userName) {
		JDBCUtil.log("DatabaseMetaData-179");
		this.userName = userName;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy