abstractjdbc1databasemetadata.java

来自「PostgreSQL7.4.6 for Linux」· Java 代码 · 共 2,128 行 · 第 1/5 页

JAVA
2,128
字号
	}	/*	 * Do we support open cursors across multiple transactions?	 *	 * @return true if so	 * @exception SQLException if a database access error occurs	 */	public boolean supportsOpenCursorsAcrossRollback() throws SQLException	{		return false;	}	/*	 * Can statements remain open across commits?  They may, but	 * this driver cannot guarentee that.  In further reflection.	 * we are talking a Statement object here, so the answer is	 * yes, since the Statement is only a vehicle to ExecSQL()	 *	 * @return true if they always remain open; false otherwise	 * @exception SQLException if a database access error occurs	 */	public boolean supportsOpenStatementsAcrossCommit() throws SQLException	{		return true;	}	/*	 * Can statements remain open across rollbacks?  They may, but	 * this driver cannot guarentee that.  In further contemplation,	 * we are talking a Statement object here, so the answer is yes,	 * since the Statement is only a vehicle to ExecSQL() in Connection	 *	 * @return true if they always remain open; false otherwise	 * @exception SQLException if a database access error occurs	 */	public boolean supportsOpenStatementsAcrossRollback() throws SQLException	{		return true;	}	/*	 * How many hex characters can you have in an inline binary literal	 *	 * @return the max literal length	 * @exception SQLException if a database access error occurs	 */	public int getMaxBinaryLiteralLength() throws SQLException	{		return 0; // no limit	}	/*	 * What is the maximum length for a character literal	 * I suppose it is 8190 (8192 - 2 for the quotes)	 *	 * @return the max literal length	 * @exception SQLException if a database access error occurs	 */	public int getMaxCharLiteralLength() throws SQLException	{		return 0; // no limit	}	/*	 * Whats the limit on column name length.	 *	 * @return the maximum column name length	 * @exception SQLException if a database access error occurs	 */	public int getMaxColumnNameLength() throws SQLException	{		return getMaxNameLength();	}	/*	 * What is the maximum number of columns in a "GROUP BY" clause?	 *	 * @return the max number of columns	 * @exception SQLException if a database access error occurs	 */	public int getMaxColumnsInGroupBy() throws SQLException	{		return 0; // no limit	}	/*	 * What's the maximum number of columns allowed in an index?	 *	 * @return max number of columns	 * @exception SQLException if a database access error occurs	 */	public int getMaxColumnsInIndex() throws SQLException	{		return getMaxIndexKeys();	}	/*	 * What's the maximum number of columns in an "ORDER BY clause?	 *	 * @return the max columns	 * @exception SQLException if a database access error occurs	 */	public int getMaxColumnsInOrderBy() throws SQLException	{		return 0; // no limit	}	/*	 * What is the maximum number of columns in a "SELECT" list?	 *	 * @return the max columns	 * @exception SQLException if a database access error occurs	 */	public int getMaxColumnsInSelect() throws SQLException	{		return 0; // no limit	}	/*	 * What is the maximum number of columns in a table? From the	 * CREATE TABLE reference page...	 *	 * <p>"The new class is created as a heap with no initial data.  A	 * class can have no more than 1600 attributes (realistically,	 * this is limited by the fact that tuple sizes must be less than	 * 8192 bytes)..."	 *	 * @return the max columns	 * @exception SQLException if a database access error occurs	 */	public int getMaxColumnsInTable() throws SQLException	{		return 1600;	}	/*	 * How many active connection can we have at a time to this	 * database?  Well, since it depends on postmaster, which just	 * does a listen() followed by an accept() and fork(), its	 * basically very high.  Unless the system runs out of processes,	 * it can be 65535 (the number of aux. ports on a TCP/IP system).	 * I will return 8192 since that is what even the largest system	 * can realistically handle,	 *	 * @return the maximum number of connections	 * @exception SQLException if a database access error occurs	 */	public int getMaxConnections() throws SQLException	{		return 8192;	}	/*	 * What is the maximum cursor name length	 *	 * @return max cursor name length in bytes	 * @exception SQLException if a database access error occurs	 */	public int getMaxCursorNameLength() throws SQLException	{		return getMaxNameLength();	}	/*	 * Retrieves the maximum number of bytes for an index, including all	 * of the parts of the index.	 *	 * @return max index length in bytes, which 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	 */	public int getMaxIndexLength() throws SQLException	{		return 0; // no limit (larger than an int anyway)	}	public int getMaxSchemaNameLength() throws SQLException	{		return getMaxNameLength();	}	/*	 * What is the maximum length of a procedure name	 *	 * @return the max name length in bytes	 * @exception SQLException if a database access error occurs	 */	public int getMaxProcedureNameLength() throws SQLException	{		return getMaxNameLength();	}	public int getMaxCatalogNameLength() throws SQLException	{		return getMaxNameLength();	}	/*	 * What is the maximum length of a single row?	 *	 * @return max row size in bytes	 * @exception SQLException if a database access error occurs	 */	public int getMaxRowSize() throws SQLException	{		if (connection.haveMinimumServerVersion("7.1"))			return 1073741824;	// 1 GB		else			return 8192;		// XXX could be altered	}	/*	 * Did getMaxRowSize() include LONGVARCHAR and LONGVARBINARY	 * blobs?  We don't handle blobs yet	 *	 * @return true if so	 * @exception SQLException if a database access error occurs	 */	public boolean doesMaxRowSizeIncludeBlobs() throws SQLException	{		return false;	}	/*	 * What is the maximum length of a SQL statement?	 *	 * @return max length in bytes	 * @exception SQLException if a database access error occurs	 */	public int getMaxStatementLength() throws SQLException	{		if (connection.haveMinimumServerVersion("7.0"))			return 0;		// actually whatever fits in size_t		else			return 16384;	}	/*	 * How many active statements can we have open at one time to	 * this database?  Basically, since each Statement downloads	 * the results as the query is executed, we can have many.	However,	 * we can only really have one statement per connection going	 * at once (since they are executed serially) - so we return	 * one.	 *	 * @return the maximum	 * @exception SQLException if a database access error occurs	 */	public int getMaxStatements() throws SQLException	{		return 1;	}	/*	 * What is the maximum length of a table name	 *	 * @return max name length in bytes	 * @exception SQLException if a database access error occurs	 */	public int getMaxTableNameLength() throws SQLException	{		return getMaxNameLength();	}	/*	 * What is the maximum number of tables that can be specified	 * in a SELECT?	 *	 * @return the maximum	 * @exception SQLException if a database access error occurs	 */	public int getMaxTablesInSelect() throws SQLException	{		return 0; // no limit	}	/*	 * What is the maximum length of a user name	 *	 * @return the max name length in bytes	 * @exception SQLException if a database access error occurs	 */	public int getMaxUserNameLength() throws SQLException	{		return getMaxNameLength();	}	/*	 * What is the database's default transaction isolation level?  We	 * do not support this, so all transactions are SERIALIZABLE.	 *	 * @return the default isolation level	 * @exception SQLException if a database access error occurs	 * @see Connection	 */	public int getDefaultTransactionIsolation() throws SQLException	{		return Connection.TRANSACTION_READ_COMMITTED;	}	/*	 * Are transactions supported?	If not, commit and rollback are noops	 * and the isolation level is TRANSACTION_NONE.  We do support	 * transactions.	 *	 * @return true if transactions are supported	 * @exception SQLException if a database access error occurs	 */	public boolean supportsTransactions() throws SQLException	{		return true;	}	/*	 * Does the database support the given transaction isolation level?	 * We only support TRANSACTION_SERIALIZABLE and TRANSACTION_READ_COMMITTED	 *	 * @param level the values are defined in java.sql.Connection	 * @return true if so	 * @exception SQLException if a database access error occurs	 * @see Connection	 */	public boolean supportsTransactionIsolationLevel(int level) throws SQLException	{		if (level == Connection.TRANSACTION_SERIALIZABLE ||				level == Connection.TRANSACTION_READ_COMMITTED)			return true;		else			return false;	}	/*	 * Are both data definition and data manipulation transactions	 * supported?	 *	 * @return true if so	 * @exception SQLException if a database access error occurs	 */	public boolean supportsDataDefinitionAndDataManipulationTransactions() throws SQLException	{		return true;	}	/*	 * Are only data manipulation statements withing a transaction	 * supported?	 *	 * @return true if so	 * @exception SQLException if a database access error occurs	 */	public boolean supportsDataManipulationTransactionsOnly() throws SQLException	{		return false;	}	/*	 * Does a data definition statement within a transaction force	 * the transaction to commit?  I think this means something like:	 *	 * <p><pre>	 * CREATE TABLE T (A INT);	 * INSERT INTO T (A) VALUES (2);	 * BEGIN;	 * UPDATE T SET A = A + 1;	 * CREATE TABLE X (A INT);	 * SELECT A FROM T INTO X;	 * COMMIT;	 * </pre><p>	 *	 * does the CREATE TABLE call cause a commit?  The answer is no.	 *	 * @return true if so	 * @exception SQLException if a database access error occurs	 */	public boolean dataDefinitionCausesTransactionCommit() throws SQLException	{		return false;	}	/*	 * Is a data definition statement within a transaction ignored?	 *	 * @return true if so	 * @exception SQLException if a database access error occurs	 */	public boolean dataDefinitionIgnoredInTransactions() throws SQLException	{		return false;	}	/**	 * Escape single quotes with another single quote.	 */	protected static String escapeQuotes(String s) {		StringBuffer sb = new StringBuffer();		int length = s.length();		char prevChar = ' ';		char prevPrevChar = ' ';		for (int i=0; i<length; i++) {			char c = s.charAt(i);			sb.append(c);			if (c == '\'' && (prevChar != '\\' || (prevChar == '\\' && prevPrevChar == '\\'))) {				sb.append("'");			}			prevPrevChar = prevChar;			prevChar = c;		}		return sb.toString();	}	/*	 * Get a description of stored procedures available in a catalog	 *	 * <p>Only procedure descriptions matching the schema and procedure	 * name criteria are returned.	They are ordered by PROCEDURE_SCHEM	 * and PROCEDURE_NAME	 *	 * <p>Each procedure description has the following columns:	 * <ol>	 * <li><b>PROCEDURE_CAT</b> String => procedure catalog (may be null)	 * <li><b>PROCEDURE_SCHEM</b> String => procedure schema (may be null)	 * <li><b>PROCEDURE_NAME</b> String => procedure name	 * <li><b>Field 4</b> reserved (make it null)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?