You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pc...@apache.org on 2006/06/28 21:34:40 UTC

svn commit: r417856 [6/22] - in /incubator/openjpa/trunk/openjpa-lib: java/ main/ main/java/ main/java/org/apache/openjpa/lib/ant/ main/java/org/apache/openjpa/lib/conf/ main/java/org/apache/openjpa/lib/jdbc/ main/java/org/apache/openjpa/lib/log/ main/...

Modified: incubator/openjpa/trunk/openjpa-lib/main/java/org/apache/openjpa/lib/jdbc/DelegatingDatabaseMetaData.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-lib/main/java/org/apache/openjpa/lib/jdbc/DelegatingDatabaseMetaData.java?rev=417856&r1=415364&r2=417856&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-lib/main/java/org/apache/openjpa/lib/jdbc/DelegatingDatabaseMetaData.java (original)
+++ incubator/openjpa/trunk/openjpa-lib/main/java/org/apache/openjpa/lib/jdbc/DelegatingDatabaseMetaData.java Wed Jun 28 12:34:33 2006
@@ -15,1249 +15,770 @@
  */
 package org.apache.openjpa.lib.jdbc;
 
+import java.io.*;
 
 import java.sql.*;
 
+import java.util.*;
+
 
 /**
- *	<p>Wrapper around a DatabaseMetadata instance.</p>
+ *  <p>Wrapper around a DatabaseMetadata instance.</p>
  *
- *	@author		Marc Prud'hommeaux
+ *  @author Marc Prud'hommeaux
  */
-public class DelegatingDatabaseMetaData
-	implements DatabaseMetaData
-{
-	private final DatabaseMetaData 	_metaData;
-	private final Connection	 	_conn;
-
-
-	public DelegatingDatabaseMetaData (DatabaseMetaData metaData,
-		Connection conn)
-	{
-		_conn = conn;
-		_metaData = metaData;
-	}
-
-
-	/**
-	 *	Return the base underlying database metadata.
-	 */
-	public DatabaseMetaData getInnermostDelegate ()
-	{
-		return _metaData instanceof DelegatingDatabaseMetaData ?
-			((DelegatingDatabaseMetaData)_metaData).getInnermostDelegate ()
-			: _metaData;
-	}
-
-
-	public int hashCode ()
-	{
-		return getInnermostDelegate ().hashCode ();
-	}
-
-
-	public boolean equals (Object other)
-	{
-		if (other == this)
-			return true;
-		if (other instanceof DelegatingDatabaseMetaData)
-			other = ((DelegatingDatabaseMetaData) other)
-			.getInnermostDelegate ();
-		return getInnermostDelegate ().equals (other);
-	}
-
-
-	public String toString ()
-	{
-		StringBuffer buf = new StringBuffer ("metadata ").append (hashCode ());
-		buf.append ("[").append (_metaData.toString ()).append ("]");
-		return buf.toString ();
-	}
-
-
-	public boolean allProceduresAreCallable ()
-		throws SQLException
-	{
-		return _metaData.allProceduresAreCallable ();
-	}
-
-
-	public boolean allTablesAreSelectable ()
-		throws SQLException
-	{
-		return _metaData.allTablesAreSelectable ();
-	}
-
-
-	public boolean dataDefinitionCausesTransactionCommit ()
-		throws SQLException
-	{
-		return _metaData.dataDefinitionCausesTransactionCommit ();
-	}
-
-
-	public boolean dataDefinitionIgnoredInTransactions ()
-		throws SQLException
-	{
-		return _metaData.dataDefinitionIgnoredInTransactions ();
-	}
-
-
-	public boolean deletesAreDetected (int type)
-		throws SQLException
-	{
-		return _metaData.deletesAreDetected (type);
-	}
-
-
-	public boolean doesMaxRowSizeIncludeBlobs ()
-		throws SQLException
-	{
-		return _metaData.doesMaxRowSizeIncludeBlobs ();
-	}
-
-
-	public ResultSet getBestRowIdentifier (String catalog,
-		String schema, String table, int scope, boolean nullable)
-		throws SQLException
-	{
-		return _metaData.getBestRowIdentifier (catalog, schema,
-			table, scope, nullable);
-	}
-
-
-	public ResultSet getCatalogs ()
-		throws SQLException
-	{
-		return _metaData.getCatalogs ();
-	}
-
-
-	public String getCatalogSeparator ()
-		throws SQLException
-	{
-		return _metaData.getCatalogSeparator ();
-	}
-
-
-	public String getCatalogTerm ()
-		throws SQLException
-	{
-		return _metaData.getCatalogTerm ();
-	}
-
-
-	public ResultSet getColumnPrivileges (String catalog, String schema,
-		String table, String columnNamePattern)
-		throws SQLException
-	{
-		return _metaData.getColumnPrivileges (catalog, schema,
-			table, columnNamePattern);
-	}
-
-
-	public ResultSet getColumns (String catalog, String schemaPattern,
-		String tableNamePattern, String columnNamePattern)
-		throws SQLException
-	{
-		return _metaData.getColumns (catalog, schemaPattern,
-			tableNamePattern, columnNamePattern);
-	}
-
-
-	public Connection getConnection ()
-		throws SQLException
-	{
-		return _conn;
-	}
-
-
-	public ResultSet getCrossReference (String primaryCatalog,
-		String primarySchema, String primaryTable, String foreignCatalog,
-		String foreignSchema, String foreignTable)
-		throws SQLException
-	{
-		return _metaData.getCrossReference (primaryCatalog, primarySchema,
-			primaryTable, foreignCatalog, foreignSchema, foreignTable);
-	}
-
-
-	public String getDatabaseProductName ()
-		throws SQLException
-	{
-		return _metaData.getDatabaseProductName ();
-	}
-
-
-	public String getDatabaseProductVersion ()
-		throws SQLException
-	{
-		return _metaData.getDatabaseProductVersion ();
-	}
-
-
-	public int getDefaultTransactionIsolation ()
-		throws SQLException
-	{
-		return _metaData.getDefaultTransactionIsolation ();
-	}
-
-
-	public int getDriverMajorVersion ()
-	{
-		return _metaData.getDriverMajorVersion ();
-	}
-
-
-	public int getDriverMinorVersion ()
-	{
-		return _metaData.getDriverMinorVersion ();
-	}
-
-
-	public String getDriverName ()
-		throws SQLException
-	{
-		return _metaData.getDriverName ();
-	}
-
-
-	public String getDriverVersion ()
-		throws SQLException
-	{
-		return _metaData.getDriverVersion ();
-	}
-
-
-	public ResultSet getExportedKeys (String catalog, String schema,
-		String table)
-		throws SQLException
-	{
-		return _metaData.getExportedKeys (catalog, schema, table);
-	}
-
-
-	public String getExtraNameCharacters ()
-		throws SQLException
-	{
-		return _metaData.getExtraNameCharacters ();
-	}
-
-
-	public String getIdentifierQuoteString ()
-		throws SQLException
-	{
-		return _metaData.getIdentifierQuoteString ();
-	}
-
-
-	public ResultSet getImportedKeys (String catalog, String schema,
-		String table)
-		throws SQLException
-	{
-		return _metaData.getImportedKeys (catalog, schema, table);
-	}
-
-
-	public ResultSet getIndexInfo (String catalog, String schema,
-		String table, boolean unique, boolean approximate)
-		throws SQLException
-	{
-		return _metaData.getIndexInfo (catalog, schema, table, unique,
-			approximate);
-	}
-
-
-	public int getMaxBinaryLiteralLength ()
-		throws SQLException
-	{
-		return _metaData.getMaxBinaryLiteralLength ();
-	}
-
-
-	public int getMaxCatalogNameLength ()
-		throws SQLException
-	{
-		return _metaData.getMaxCatalogNameLength ();
-	}
-
-
-	public int getMaxCharLiteralLength ()
-		throws SQLException
-	{
-		return _metaData.getMaxCharLiteralLength ();
-	}
-
-
-	public int getMaxColumnNameLength ()
-		throws SQLException
-	{
-		return _metaData.getMaxColumnNameLength ();
-	}
-
-
-	public int getMaxColumnsInGroupBy ()
-		throws SQLException
-	{
-		return _metaData.getMaxColumnsInGroupBy ();
-	}
-
-
-	public int getMaxColumnsInIndex ()
-		throws SQLException
-	{
-		return _metaData.getMaxColumnsInIndex ();
-	}
-
-
-	public int getMaxColumnsInOrderBy ()
-		throws SQLException
-	{
-		return _metaData.getMaxColumnsInOrderBy ();
-	}
-
-
-	public int getMaxColumnsInSelect ()
-		throws SQLException
-	{
-		return _metaData.getMaxColumnsInSelect ();
-	}
-
-
-	public int getMaxColumnsInTable ()
-		throws SQLException
-	{
-		return _metaData.getMaxColumnsInTable ();
-	}
-
-
-	public int getMaxConnections ()
-		throws SQLException
-	{
-		return _metaData.getMaxConnections ();
-	}
-
-
-	public int getMaxCursorNameLength ()
-		throws SQLException
-	{
-		return _metaData.getMaxCursorNameLength ();
-	}
-
-
-	public int getMaxIndexLength ()
-		throws SQLException
-	{
-		return _metaData.getMaxIndexLength ();
-	}
-
-
-	public int getMaxProcedureNameLength ()
-		throws SQLException
-	{
-		return _metaData.getMaxProcedureNameLength ();
-	}
-
-
-	public int getMaxRowSize ()
-		throws SQLException
-	{
-		return _metaData.getMaxRowSize ();
-	}
-
-
-	public int getMaxSchemaNameLength ()
-		throws SQLException
-	{
-		return _metaData.getMaxSchemaNameLength ();
-	}
-
-
-	public int getMaxStatementLength ()
-		throws SQLException
-	{
-		return _metaData.getMaxStatementLength ();
-	}
-
-
-	public int getMaxStatements ()
-		throws SQLException
-	{
-		return _metaData.getMaxStatements ();
-	}
-
-
-	public int getMaxTableNameLength ()
-		throws SQLException
-	{
-		return _metaData.getMaxTableNameLength ();
-	}
-
-
-	public int getMaxTablesInSelect ()
-		throws SQLException
-	{
-		return _metaData.getMaxTablesInSelect ();
-	}
-
-
-	public int getMaxUserNameLength ()
-		throws SQLException
-	{
-		return _metaData.getMaxUserNameLength ();
-	}
-
-
-	public String getNumericFunctions ()
-		throws SQLException
-	{
-		return _metaData.getNumericFunctions ();
-	}
-
-
-	public ResultSet getPrimaryKeys (String catalog, String schema,
-		String table)
-		throws SQLException
-	{
-		return _metaData.getPrimaryKeys (catalog, schema, table);
-	}
-
-
-	public ResultSet getProcedureColumns (String catalog, String schemaPattern,
-		String procedureNamePattern, String columnNamePattern)
-		throws SQLException
-	{
-		return _metaData.getProcedureColumns (catalog, schemaPattern,
-			procedureNamePattern, columnNamePattern);
-	}
-
-
-	public ResultSet getProcedures (String catalog, String schemaPattern,
-		String procedureNamePattern)
-		throws SQLException
-	{
-		return _metaData.getProcedures (catalog, schemaPattern,
-			procedureNamePattern);
-	}
-
-
-	public String getProcedureTerm ()
-		throws SQLException
-	{
-		return _metaData.getProcedureTerm ();
-	}
-
-
-	public ResultSet getSchemas ()
-		throws SQLException
-	{
-		return _metaData.getSchemas ();
-	}
-
-
-	public String getSchemaTerm ()
-		throws SQLException
-	{
-		return _metaData.getSchemaTerm ();
-	}
-
-
-	public String getSearchStringEscape ()
-		throws SQLException
-	{
-		return _metaData.getSearchStringEscape ();
-	}
-
-
-	public String getSQLKeywords ()
-		throws SQLException
-	{
-		return _metaData.getSQLKeywords ();
-	}
-
-
-	public String getStringFunctions ()
-		throws SQLException
-	{
-		return _metaData.getStringFunctions ();
-	}
-
-
-	public String getSystemFunctions ()
-		throws SQLException
-	{
-		return _metaData.getSystemFunctions ();
-	}
-
-
-	public ResultSet getTablePrivileges (String catalog,
-		String schemaPattern, String tableNamePattern)
-		throws SQLException
-	{
-		return _metaData.getTablePrivileges (catalog, schemaPattern,
-			tableNamePattern);
-	}
-
-
-	public ResultSet getTables (String catalog, String schemaPattern,
-		String tableNamePattern, String[] types)
-		throws SQLException
-	{
-		return _metaData.getTables (catalog, schemaPattern,
-			tableNamePattern, types);
-	}
-
-
-	public ResultSet getTableTypes ()
-		throws SQLException
-	{
-		return _metaData.getTableTypes ();
-	}
-
-
-	public String getTimeDateFunctions ()
-		throws SQLException
-	{
-		return _metaData.getTimeDateFunctions ();
-	}
-
-
-	public ResultSet getTypeInfo ()
-		throws SQLException
-	{
-		return _metaData.getTypeInfo ();
-	}
-
-
-	public ResultSet getUDTs (String catalog, String schemaPattern,
-		String typeNamePattern, int[] types)
-		throws SQLException
-	{
-		return _metaData.getUDTs (catalog, schemaPattern,
-			typeNamePattern, types);
-	}
-
-
-	public String getURL ()
-		throws SQLException
-	{
-		return _metaData.getURL ();
-	}
-
-
-	public String getUserName ()
-		throws SQLException
-	{
-		return _metaData.getUserName ();
-	}
-
-
-	public ResultSet getVersionColumns (String catalog,
-		String schema, String table)
-		throws SQLException
-	{
-		return _metaData.getVersionColumns (catalog, schema, table);
-	}
-
-
-	public boolean insertsAreDetected (int type)
-		throws SQLException
-	{
-		return _metaData.insertsAreDetected (type);
-	}
-
-
-	public boolean isCatalogAtStart ()
-		throws SQLException
-	{
-		return _metaData.isCatalogAtStart ();
-	}
-
-
-	public boolean isReadOnly ()
-		throws SQLException
-	{
-		return _metaData.isReadOnly ();
-	}
-
-
-	public boolean nullPlusNonNullIsNull ()
-		throws SQLException
-	{
-		return _metaData.nullPlusNonNullIsNull ();
-	}
-
-
-	public boolean nullsAreSortedAtEnd ()
-		throws SQLException
-	{
-		return _metaData.nullsAreSortedAtEnd ();
-	}
-
-
-	public boolean nullsAreSortedAtStart ()
-		throws SQLException
-	{
-		return _metaData.nullsAreSortedAtStart ();
-	}
-
-
-	public boolean nullsAreSortedHigh ()
-		throws SQLException
-	{
-		return _metaData.nullsAreSortedHigh ();
-	}
-
-
-	public boolean nullsAreSortedLow ()
-		throws SQLException
-	{
-		return _metaData.nullsAreSortedLow ();
-	}
-
-
-	public boolean othersDeletesAreVisible (int type)
-		throws SQLException
-	{
-		return _metaData.othersDeletesAreVisible (type);
-	}
-
-
-	public boolean othersInsertsAreVisible (int type)
-		throws SQLException
-	{
-		return _metaData.othersInsertsAreVisible (type);
-	}
-
-
-	public boolean othersUpdatesAreVisible (int type)
-		throws SQLException
-	{
-		return _metaData.othersUpdatesAreVisible (type);
-	}
-
-
-	public boolean ownDeletesAreVisible (int type)
-		throws SQLException
-	{
-		return _metaData.ownDeletesAreVisible (type);
-	}
-
-
-	public boolean ownInsertsAreVisible (int type)
-		throws SQLException
-	{
-		return _metaData.ownInsertsAreVisible (type);
-	}
-
-
-	public boolean ownUpdatesAreVisible (int type)
-		throws SQLException
-	{
-		return _metaData.ownUpdatesAreVisible (type);
-	}
-
-
-	public boolean storesLowerCaseIdentifiers ()
-		throws SQLException
-	{
-		return _metaData.storesLowerCaseIdentifiers ();
-	}
-
-
-	public boolean storesLowerCaseQuotedIdentifiers ()
-		throws SQLException
-	{
-		return _metaData.storesLowerCaseQuotedIdentifiers ();
-	}
-
-
-	public boolean storesMixedCaseIdentifiers ()
-		throws SQLException
-	{
-		return _metaData.storesMixedCaseIdentifiers ();
-	}
-
-
-	public boolean storesMixedCaseQuotedIdentifiers ()
-		throws SQLException
-	{
-		return _metaData.storesMixedCaseQuotedIdentifiers ();
-	}
-
-
-	public boolean storesUpperCaseIdentifiers ()
-		throws SQLException
-	{
-		return _metaData.storesUpperCaseIdentifiers ();
-	}
-
-
-	public boolean storesUpperCaseQuotedIdentifiers ()
-		throws SQLException
-	{
-		return _metaData.storesUpperCaseQuotedIdentifiers ();
-	}
-
-
-	public boolean supportsAlterTableWithAddColumn ()
-		throws SQLException
-	{
-		return _metaData.supportsAlterTableWithAddColumn ();
-	}
-
-
-	public boolean supportsAlterTableWithDropColumn ()
-		throws SQLException
-	{
-		return _metaData.supportsAlterTableWithDropColumn ();
-	}
-
-
-	public boolean supportsANSI92EntryLevelSQL ()
-		throws SQLException
-	{
-		return _metaData.supportsANSI92EntryLevelSQL ();
-	}
-
-
-	public boolean supportsANSI92FullSQL ()
-		throws SQLException
-	{
-		return _metaData.supportsANSI92FullSQL ();
-	}
-
-
-	public boolean supportsANSI92IntermediateSQL ()
-		throws SQLException
-	{
-		return _metaData.supportsANSI92IntermediateSQL ();
-	}
-
-
-	public boolean supportsBatchUpdates ()
-		throws SQLException
-	{
-		return _metaData.supportsBatchUpdates ();
-	}
-
-
-	public boolean supportsCatalogsInDataManipulation ()
-		throws SQLException
-	{
-		return _metaData.supportsCatalogsInDataManipulation ();
-	}
-
-
-	public boolean supportsCatalogsInIndexDefinitions ()
-		throws SQLException
-	{
-		return _metaData.supportsCatalogsInIndexDefinitions ();
-	}
-
-
-	public boolean supportsCatalogsInPrivilegeDefinitions ()
-		throws SQLException
-	{
-		return _metaData.supportsCatalogsInPrivilegeDefinitions ();
-	}
-
-
-	public boolean supportsCatalogsInProcedureCalls ()
-		throws SQLException
-	{
-		return _metaData.supportsCatalogsInProcedureCalls ();
-	}
-
-
-	public boolean supportsCatalogsInTableDefinitions ()
-		throws SQLException
-	{
-		return _metaData.supportsCatalogsInTableDefinitions ();
-	}
-
-
-	public boolean supportsColumnAliasing ()
-		throws SQLException
-	{
-		return _metaData.supportsColumnAliasing ();
-	}
-
-
-	public boolean supportsConvert ()
-		throws SQLException
-	{
-		return _metaData.supportsConvert ();
-	}
-
-
-	public boolean supportsConvert (int fromType, int toType)
-		throws SQLException
-	{
-		return _metaData.supportsConvert (fromType, toType);
-	}
-
-
-	public boolean supportsCoreSQLGrammar ()
-		throws SQLException
-	{
-		return _metaData.supportsCoreSQLGrammar ();
-	}
-
-
-	public boolean supportsCorrelatedSubqueries ()
-		throws SQLException
-	{
-		return _metaData.supportsCorrelatedSubqueries ();
-	}
-
-
-	public boolean supportsDataDefinitionAndDataManipulationTransactions ()
-		throws SQLException
-	{
-		return _metaData
-			.supportsDataDefinitionAndDataManipulationTransactions ();
-	}
-
-
-	public boolean supportsDataManipulationTransactionsOnly ()
-		throws SQLException
-	{
-		return _metaData.supportsDataManipulationTransactionsOnly ();
-	}
-
-
-	public boolean supportsDifferentTableCorrelationNames ()
-		throws SQLException
-	{
-		return _metaData.supportsDifferentTableCorrelationNames ();
-	}
-
-
-	public boolean supportsExpressionsInOrderBy ()
-		throws SQLException
-	{
-		return _metaData.supportsExpressionsInOrderBy ();
-	}
-
-
-	public boolean supportsExtendedSQLGrammar ()
-		throws SQLException
-	{
-		return _metaData.supportsExtendedSQLGrammar ();
-	}
-
-
-	public boolean supportsFullOuterJoins ()
-		throws SQLException
-	{
-		return _metaData.supportsFullOuterJoins ();
-	}
-
-
-	public boolean supportsGroupBy ()
-		throws SQLException
-	{
-		return _metaData.supportsGroupBy ();
-	}
-
-
-	public boolean supportsGroupByBeyondSelect ()
-		throws SQLException
-	{
-		return _metaData.supportsGroupByBeyondSelect ();
-	}
-
-
-	public boolean supportsGroupByUnrelated ()
-		throws SQLException
-	{
-		return _metaData.supportsGroupByUnrelated ();
-	}
-
-
-	public boolean supportsIntegrityEnhancementFacility ()
-		throws SQLException
-	{
-		return _metaData.supportsIntegrityEnhancementFacility ();
-	}
-
-
-	public boolean supportsLikeEscapeClause ()
-		throws SQLException
-	{
-		return _metaData.supportsLikeEscapeClause ();
-	}
-
-
-	public boolean supportsLimitedOuterJoins ()
-		throws SQLException
-	{
-		return _metaData.supportsLimitedOuterJoins ();
-	}
-
-
-	public boolean supportsMinimumSQLGrammar ()
-		throws SQLException
-	{
-		return _metaData.supportsMinimumSQLGrammar ();
-	}
-
-
-	public boolean supportsMixedCaseIdentifiers ()
-		throws SQLException
-	{
-		return _metaData.supportsMixedCaseIdentifiers ();
-	}
-
-
-	public boolean supportsMixedCaseQuotedIdentifiers ()
-		throws SQLException
-	{
-		return _metaData.supportsMixedCaseQuotedIdentifiers ();
-	}
-
-
-	public boolean supportsMultipleResultSets ()
-		throws SQLException
-	{
-		return _metaData.supportsMultipleResultSets ();
-	}
-
-
-	public boolean supportsMultipleTransactions ()
-		throws SQLException
-	{
-		return _metaData.supportsMultipleTransactions ();
-	}
-
-
-	public boolean supportsNonNullableColumns ()
-		throws SQLException
-	{
-		return _metaData.supportsNonNullableColumns ();
-	}
-
-
-	public boolean supportsOpenCursorsAcrossCommit ()
-		throws SQLException
-	{
-		return _metaData.supportsOpenCursorsAcrossCommit ();
-	}
-
-
-	public boolean supportsOpenCursorsAcrossRollback ()
-		throws SQLException
-	{
-		return _metaData.supportsOpenCursorsAcrossRollback ();
-	}
-
-
-	public boolean supportsOpenStatementsAcrossCommit ()
-		throws SQLException
-	{
-		return _metaData.supportsOpenStatementsAcrossCommit ();
-	}
-
-
-	public boolean supportsOpenStatementsAcrossRollback ()
-		throws SQLException
-	{
-		return _metaData.supportsOpenStatementsAcrossRollback ();
-	}
-
-
-	public boolean supportsOrderByUnrelated ()
-		throws SQLException
-	{
-		return _metaData.supportsOrderByUnrelated ();
-	}
-
-
-	public boolean supportsOuterJoins ()
-		throws SQLException
-	{
-		return _metaData.supportsOuterJoins ();
-	}
-
-
-	public boolean supportsPositionedDelete ()
-		throws SQLException
-	{
-		return _metaData.supportsPositionedDelete ();
-	}
-
-
-	public boolean supportsPositionedUpdate ()
-		throws SQLException
-	{
-		return _metaData.supportsPositionedUpdate ();
-	}
-
-
-	public boolean supportsResultSetConcurrency (int type, int concurrency)
-		throws SQLException
-	{
-		return _metaData.supportsResultSetConcurrency (type, concurrency);
-	}
-
-
-	public boolean supportsResultSetType (int type)
-		throws SQLException
-	{
-		return _metaData.supportsResultSetType (type);
-	}
-
-
-	public boolean supportsSchemasInDataManipulation ()
-		throws SQLException
-	{
-		return _metaData.supportsSchemasInDataManipulation ();
-	}
-
-
-	public boolean supportsSchemasInIndexDefinitions ()
-		throws SQLException
-	{
-		return _metaData.supportsSchemasInIndexDefinitions ();
-	}
-
-
-	public boolean supportsSchemasInPrivilegeDefinitions ()
-		throws SQLException
-	{
-		return _metaData.supportsSchemasInPrivilegeDefinitions ();
-	}
-
-
-	public boolean supportsSchemasInProcedureCalls ()
-		throws SQLException
-	{
-		return _metaData.supportsSchemasInProcedureCalls ();
-	}
-
-
-	public boolean supportsSchemasInTableDefinitions ()
-		throws SQLException
-	{
-		return _metaData.supportsSchemasInTableDefinitions ();
-	}
-
-
-	public boolean supportsSelectForUpdate ()
-		throws SQLException
-	{
-		return _metaData.supportsSelectForUpdate ();
-	}
-
-
-	public boolean supportsStoredProcedures ()
-		throws SQLException
-	{
-		return _metaData.supportsStoredProcedures ();
-	}
-
-
-	public boolean supportsSubqueriesInComparisons ()
-		throws SQLException
-	{
-		return _metaData.supportsSubqueriesInComparisons ();
-	}
-
-
-	public boolean supportsSubqueriesInExists ()
-		throws SQLException
-	{
-		return _metaData.supportsSubqueriesInExists ();
-	}
-
-
-	public boolean supportsSubqueriesInIns ()
-		throws SQLException
-	{
-		return _metaData.supportsSubqueriesInIns ();
-	}
-
-
-	public boolean supportsSubqueriesInQuantifieds ()
-		throws SQLException
-	{
-		return _metaData.supportsSubqueriesInQuantifieds ();
-	}
-
-
-	public boolean supportsTableCorrelationNames ()
-		throws SQLException
-	{
-		return _metaData.supportsTableCorrelationNames ();
-	}
-
-
-	public boolean supportsTransactionIsolationLevel (int level)
-		throws SQLException
-	{
-		return _metaData.supportsTransactionIsolationLevel (level);
-	}
-
-
-	public boolean supportsTransactions ()
-		throws SQLException
-	{
-		return _metaData.supportsTransactions ();
-	}
-
-
-	public boolean supportsUnion ()
-		throws SQLException
-	{
-		return _metaData.supportsUnion ();
-	}
-
-
-	public boolean supportsUnionAll ()
-		throws SQLException
-	{
-		return _metaData.supportsUnionAll ();
-	}
-
-
-	public boolean updatesAreDetected (int type)
-		throws SQLException
-	{
-		return _metaData.updatesAreDetected (type);
-	}
-
-
-	public boolean usesLocalFilePerTable ()
-		throws SQLException
-	{
-		return _metaData.usesLocalFilePerTable ();
-	}
-
-
-	public boolean usesLocalFiles ()
-		throws SQLException
-	{
-		return _metaData.usesLocalFiles ();
-	}
-
-
-	// JDBC 3.0 methods (unsupported) follow; these are required to be able to 
-	// compile against JDK 1.4
-
-
-	public boolean supportsSavepoints ()
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public boolean supportsNamedParameters ()
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public boolean supportsMultipleOpenResults ()
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public boolean supportsGetGeneratedKeys ()
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public ResultSet getSuperTypes (String catalog, String schemaPatter,
-		String typeNamePattern)
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public ResultSet getSuperTables (String catalog, String schemaPatter,
-		String tableNamePattern)
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public ResultSet getAttributes (String catalog, String schemaPatter,
-		String typeNamePattern, String attributeNamePattern)
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public boolean supportsResultSetHoldability (int holdability)
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public int getResultSetHoldability ()
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public int getDatabaseMajorVersion ()
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public int getDatabaseMinorVersion ()
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public int getJDBCMajorVersion ()
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public int getJDBCMinorVersion ()
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public int getSQLStateType ()
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public boolean locatorsUpdateCopy ()
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public boolean supportsStatementPooling ()
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
+public class DelegatingDatabaseMetaData implements DatabaseMetaData {
+    private final DatabaseMetaData _metaData;
+    private final Connection _conn;
+
+    public DelegatingDatabaseMetaData(DatabaseMetaData metaData, Connection conn) {
+        _conn = conn;
+        _metaData = metaData;
+    }
+
+    /**
+     *  Return the base underlying database metadata.
+     */
+    public DatabaseMetaData getInnermostDelegate() {
+        return (_metaData instanceof DelegatingDatabaseMetaData)
+        ? ((DelegatingDatabaseMetaData) _metaData).getInnermostDelegate()
+        : _metaData;
+    }
+
+    public int hashCode() {
+        return getInnermostDelegate().hashCode();
+    }
+
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+
+        if (other instanceof DelegatingDatabaseMetaData) {
+            other = ((DelegatingDatabaseMetaData) other).getInnermostDelegate();
+        }
+
+        return getInnermostDelegate().equals(other);
+    }
+
+    public String toString() {
+        StringBuffer buf = new StringBuffer("metadata ").append(hashCode());
+        buf.append("[").append(_metaData.toString()).append("]");
+
+        return buf.toString();
+    }
+
+    public boolean allProceduresAreCallable() throws SQLException {
+        return _metaData.allProceduresAreCallable();
+    }
+
+    public boolean allTablesAreSelectable() throws SQLException {
+        return _metaData.allTablesAreSelectable();
+    }
+
+    public boolean dataDefinitionCausesTransactionCommit()
+        throws SQLException {
+        return _metaData.dataDefinitionCausesTransactionCommit();
+    }
+
+    public boolean dataDefinitionIgnoredInTransactions()
+        throws SQLException {
+        return _metaData.dataDefinitionIgnoredInTransactions();
+    }
+
+    public boolean deletesAreDetected(int type) throws SQLException {
+        return _metaData.deletesAreDetected(type);
+    }
+
+    public boolean doesMaxRowSizeIncludeBlobs() throws SQLException {
+        return _metaData.doesMaxRowSizeIncludeBlobs();
+    }
+
+    public ResultSet getBestRowIdentifier(String catalog, String schema,
+        String table, int scope, boolean nullable) throws SQLException {
+        return _metaData.getBestRowIdentifier(catalog, schema, table, scope,
+            nullable);
+    }
+
+    public ResultSet getCatalogs() throws SQLException {
+        return _metaData.getCatalogs();
+    }
+
+    public String getCatalogSeparator() throws SQLException {
+        return _metaData.getCatalogSeparator();
+    }
+
+    public String getCatalogTerm() throws SQLException {
+        return _metaData.getCatalogTerm();
+    }
+
+    public ResultSet getColumnPrivileges(String catalog, String schema,
+        String table, String columnNamePattern) throws SQLException {
+        return _metaData.getColumnPrivileges(catalog, schema, table,
+            columnNamePattern);
+    }
+
+    public ResultSet getColumns(String catalog, String schemaPattern,
+        String tableNamePattern, String columnNamePattern)
+        throws SQLException {
+        return _metaData.getColumns(catalog, schemaPattern, tableNamePattern,
+            columnNamePattern);
+    }
+
+    public Connection getConnection() throws SQLException {
+        return _conn;
+    }
+
+    public ResultSet getCrossReference(String primaryCatalog,
+        String primarySchema, String primaryTable, String foreignCatalog,
+        String foreignSchema, String foreignTable) throws SQLException {
+        return _metaData.getCrossReference(primaryCatalog, primarySchema,
+            primaryTable, foreignCatalog, foreignSchema, foreignTable);
+    }
+
+    public String getDatabaseProductName() throws SQLException {
+        return _metaData.getDatabaseProductName();
+    }
+
+    public String getDatabaseProductVersion() throws SQLException {
+        return _metaData.getDatabaseProductVersion();
+    }
+
+    public int getDefaultTransactionIsolation() throws SQLException {
+        return _metaData.getDefaultTransactionIsolation();
+    }
+
+    public int getDriverMajorVersion() {
+        return _metaData.getDriverMajorVersion();
+    }
+
+    public int getDriverMinorVersion() {
+        return _metaData.getDriverMinorVersion();
+    }
+
+    public String getDriverName() throws SQLException {
+        return _metaData.getDriverName();
+    }
+
+    public String getDriverVersion() throws SQLException {
+        return _metaData.getDriverVersion();
+    }
+
+    public ResultSet getExportedKeys(String catalog, String schema, String table)
+        throws SQLException {
+        return _metaData.getExportedKeys(catalog, schema, table);
+    }
+
+    public String getExtraNameCharacters() throws SQLException {
+        return _metaData.getExtraNameCharacters();
+    }
+
+    public String getIdentifierQuoteString() throws SQLException {
+        return _metaData.getIdentifierQuoteString();
+    }
+
+    public ResultSet getImportedKeys(String catalog, String schema, String table)
+        throws SQLException {
+        return _metaData.getImportedKeys(catalog, schema, table);
+    }
+
+    public ResultSet getIndexInfo(String catalog, String schema, String table,
+        boolean unique, boolean approximate) throws SQLException {
+        return _metaData.getIndexInfo(catalog, schema, table, unique,
+            approximate);
+    }
+
+    public int getMaxBinaryLiteralLength() throws SQLException {
+        return _metaData.getMaxBinaryLiteralLength();
+    }
+
+    public int getMaxCatalogNameLength() throws SQLException {
+        return _metaData.getMaxCatalogNameLength();
+    }
+
+    public int getMaxCharLiteralLength() throws SQLException {
+        return _metaData.getMaxCharLiteralLength();
+    }
+
+    public int getMaxColumnNameLength() throws SQLException {
+        return _metaData.getMaxColumnNameLength();
+    }
+
+    public int getMaxColumnsInGroupBy() throws SQLException {
+        return _metaData.getMaxColumnsInGroupBy();
+    }
+
+    public int getMaxColumnsInIndex() throws SQLException {
+        return _metaData.getMaxColumnsInIndex();
+    }
+
+    public int getMaxColumnsInOrderBy() throws SQLException {
+        return _metaData.getMaxColumnsInOrderBy();
+    }
+
+    public int getMaxColumnsInSelect() throws SQLException {
+        return _metaData.getMaxColumnsInSelect();
+    }
+
+    public int getMaxColumnsInTable() throws SQLException {
+        return _metaData.getMaxColumnsInTable();
+    }
+
+    public int getMaxConnections() throws SQLException {
+        return _metaData.getMaxConnections();
+    }
+
+    public int getMaxCursorNameLength() throws SQLException {
+        return _metaData.getMaxCursorNameLength();
+    }
+
+    public int getMaxIndexLength() throws SQLException {
+        return _metaData.getMaxIndexLength();
+    }
+
+    public int getMaxProcedureNameLength() throws SQLException {
+        return _metaData.getMaxProcedureNameLength();
+    }
+
+    public int getMaxRowSize() throws SQLException {
+        return _metaData.getMaxRowSize();
+    }
+
+    public int getMaxSchemaNameLength() throws SQLException {
+        return _metaData.getMaxSchemaNameLength();
+    }
+
+    public int getMaxStatementLength() throws SQLException {
+        return _metaData.getMaxStatementLength();
+    }
+
+    public int getMaxStatements() throws SQLException {
+        return _metaData.getMaxStatements();
+    }
+
+    public int getMaxTableNameLength() throws SQLException {
+        return _metaData.getMaxTableNameLength();
+    }
+
+    public int getMaxTablesInSelect() throws SQLException {
+        return _metaData.getMaxTablesInSelect();
+    }
+
+    public int getMaxUserNameLength() throws SQLException {
+        return _metaData.getMaxUserNameLength();
+    }
+
+    public String getNumericFunctions() throws SQLException {
+        return _metaData.getNumericFunctions();
+    }
+
+    public ResultSet getPrimaryKeys(String catalog, String schema, String table)
+        throws SQLException {
+        return _metaData.getPrimaryKeys(catalog, schema, table);
+    }
+
+    public ResultSet getProcedureColumns(String catalog, String schemaPattern,
+        String procedureNamePattern, String columnNamePattern)
+        throws SQLException {
+        return _metaData.getProcedureColumns(catalog, schemaPattern,
+            procedureNamePattern, columnNamePattern);
+    }
+
+    public ResultSet getProcedures(String catalog, String schemaPattern,
+        String procedureNamePattern) throws SQLException {
+        return _metaData.getProcedures(catalog, schemaPattern,
+            procedureNamePattern);
+    }
+
+    public String getProcedureTerm() throws SQLException {
+        return _metaData.getProcedureTerm();
+    }
+
+    public ResultSet getSchemas() throws SQLException {
+        return _metaData.getSchemas();
+    }
+
+    public String getSchemaTerm() throws SQLException {
+        return _metaData.getSchemaTerm();
+    }
+
+    public String getSearchStringEscape() throws SQLException {
+        return _metaData.getSearchStringEscape();
+    }
+
+    public String getSQLKeywords() throws SQLException {
+        return _metaData.getSQLKeywords();
+    }
+
+    public String getStringFunctions() throws SQLException {
+        return _metaData.getStringFunctions();
+    }
+
+    public String getSystemFunctions() throws SQLException {
+        return _metaData.getSystemFunctions();
+    }
+
+    public ResultSet getTablePrivileges(String catalog, String schemaPattern,
+        String tableNamePattern) throws SQLException {
+        return _metaData.getTablePrivileges(catalog, schemaPattern,
+            tableNamePattern);
+    }
+
+    public ResultSet getTables(String catalog, String schemaPattern,
+        String tableNamePattern, String[] types) throws SQLException {
+        return _metaData.getTables(catalog, schemaPattern, tableNamePattern,
+            types);
+    }
+
+    public ResultSet getTableTypes() throws SQLException {
+        return _metaData.getTableTypes();
+    }
+
+    public String getTimeDateFunctions() throws SQLException {
+        return _metaData.getTimeDateFunctions();
+    }
+
+    public ResultSet getTypeInfo() throws SQLException {
+        return _metaData.getTypeInfo();
+    }
+
+    public ResultSet getUDTs(String catalog, String schemaPattern,
+        String typeNamePattern, int[] types) throws SQLException {
+        return _metaData.getUDTs(catalog, schemaPattern, typeNamePattern, types);
+    }
+
+    public String getURL() throws SQLException {
+        return _metaData.getURL();
+    }
+
+    public String getUserName() throws SQLException {
+        return _metaData.getUserName();
+    }
+
+    public ResultSet getVersionColumns(String catalog, String schema,
+        String table) throws SQLException {
+        return _metaData.getVersionColumns(catalog, schema, table);
+    }
+
+    public boolean insertsAreDetected(int type) throws SQLException {
+        return _metaData.insertsAreDetected(type);
+    }
+
+    public boolean isCatalogAtStart() throws SQLException {
+        return _metaData.isCatalogAtStart();
+    }
+
+    public boolean isReadOnly() throws SQLException {
+        return _metaData.isReadOnly();
+    }
+
+    public boolean nullPlusNonNullIsNull() throws SQLException {
+        return _metaData.nullPlusNonNullIsNull();
+    }
+
+    public boolean nullsAreSortedAtEnd() throws SQLException {
+        return _metaData.nullsAreSortedAtEnd();
+    }
+
+    public boolean nullsAreSortedAtStart() throws SQLException {
+        return _metaData.nullsAreSortedAtStart();
+    }
+
+    public boolean nullsAreSortedHigh() throws SQLException {
+        return _metaData.nullsAreSortedHigh();
+    }
+
+    public boolean nullsAreSortedLow() throws SQLException {
+        return _metaData.nullsAreSortedLow();
+    }
+
+    public boolean othersDeletesAreVisible(int type) throws SQLException {
+        return _metaData.othersDeletesAreVisible(type);
+    }
+
+    public boolean othersInsertsAreVisible(int type) throws SQLException {
+        return _metaData.othersInsertsAreVisible(type);
+    }
+
+    public boolean othersUpdatesAreVisible(int type) throws SQLException {
+        return _metaData.othersUpdatesAreVisible(type);
+    }
+
+    public boolean ownDeletesAreVisible(int type) throws SQLException {
+        return _metaData.ownDeletesAreVisible(type);
+    }
+
+    public boolean ownInsertsAreVisible(int type) throws SQLException {
+        return _metaData.ownInsertsAreVisible(type);
+    }
+
+    public boolean ownUpdatesAreVisible(int type) throws SQLException {
+        return _metaData.ownUpdatesAreVisible(type);
+    }
+
+    public boolean storesLowerCaseIdentifiers() throws SQLException {
+        return _metaData.storesLowerCaseIdentifiers();
+    }
+
+    public boolean storesLowerCaseQuotedIdentifiers() throws SQLException {
+        return _metaData.storesLowerCaseQuotedIdentifiers();
+    }
+
+    public boolean storesMixedCaseIdentifiers() throws SQLException {
+        return _metaData.storesMixedCaseIdentifiers();
+    }
+
+    public boolean storesMixedCaseQuotedIdentifiers() throws SQLException {
+        return _metaData.storesMixedCaseQuotedIdentifiers();
+    }
+
+    public boolean storesUpperCaseIdentifiers() throws SQLException {
+        return _metaData.storesUpperCaseIdentifiers();
+    }
+
+    public boolean storesUpperCaseQuotedIdentifiers() throws SQLException {
+        return _metaData.storesUpperCaseQuotedIdentifiers();
+    }
+
+    public boolean supportsAlterTableWithAddColumn() throws SQLException {
+        return _metaData.supportsAlterTableWithAddColumn();
+    }
+
+    public boolean supportsAlterTableWithDropColumn() throws SQLException {
+        return _metaData.supportsAlterTableWithDropColumn();
+    }
+
+    public boolean supportsANSI92EntryLevelSQL() throws SQLException {
+        return _metaData.supportsANSI92EntryLevelSQL();
+    }
+
+    public boolean supportsANSI92FullSQL() throws SQLException {
+        return _metaData.supportsANSI92FullSQL();
+    }
+
+    public boolean supportsANSI92IntermediateSQL() throws SQLException {
+        return _metaData.supportsANSI92IntermediateSQL();
+    }
+
+    public boolean supportsBatchUpdates() throws SQLException {
+        return _metaData.supportsBatchUpdates();
+    }
+
+    public boolean supportsCatalogsInDataManipulation()
+        throws SQLException {
+        return _metaData.supportsCatalogsInDataManipulation();
+    }
+
+    public boolean supportsCatalogsInIndexDefinitions()
+        throws SQLException {
+        return _metaData.supportsCatalogsInIndexDefinitions();
+    }
+
+    public boolean supportsCatalogsInPrivilegeDefinitions()
+        throws SQLException {
+        return _metaData.supportsCatalogsInPrivilegeDefinitions();
+    }
+
+    public boolean supportsCatalogsInProcedureCalls() throws SQLException {
+        return _metaData.supportsCatalogsInProcedureCalls();
+    }
+
+    public boolean supportsCatalogsInTableDefinitions()
+        throws SQLException {
+        return _metaData.supportsCatalogsInTableDefinitions();
+    }
+
+    public boolean supportsColumnAliasing() throws SQLException {
+        return _metaData.supportsColumnAliasing();
+    }
+
+    public boolean supportsConvert() throws SQLException {
+        return _metaData.supportsConvert();
+    }
+
+    public boolean supportsConvert(int fromType, int toType)
+        throws SQLException {
+        return _metaData.supportsConvert(fromType, toType);
+    }
+
+    public boolean supportsCoreSQLGrammar() throws SQLException {
+        return _metaData.supportsCoreSQLGrammar();
+    }
+
+    public boolean supportsCorrelatedSubqueries() throws SQLException {
+        return _metaData.supportsCorrelatedSubqueries();
+    }
+
+    public boolean supportsDataDefinitionAndDataManipulationTransactions()
+        throws SQLException {
+        return _metaData.supportsDataDefinitionAndDataManipulationTransactions();
+    }
+
+    public boolean supportsDataManipulationTransactionsOnly()
+        throws SQLException {
+        return _metaData.supportsDataManipulationTransactionsOnly();
+    }
+
+    public boolean supportsDifferentTableCorrelationNames()
+        throws SQLException {
+        return _metaData.supportsDifferentTableCorrelationNames();
+    }
+
+    public boolean supportsExpressionsInOrderBy() throws SQLException {
+        return _metaData.supportsExpressionsInOrderBy();
+    }
+
+    public boolean supportsExtendedSQLGrammar() throws SQLException {
+        return _metaData.supportsExtendedSQLGrammar();
+    }
+
+    public boolean supportsFullOuterJoins() throws SQLException {
+        return _metaData.supportsFullOuterJoins();
+    }
+
+    public boolean supportsGroupBy() throws SQLException {
+        return _metaData.supportsGroupBy();
+    }
+
+    public boolean supportsGroupByBeyondSelect() throws SQLException {
+        return _metaData.supportsGroupByBeyondSelect();
+    }
+
+    public boolean supportsGroupByUnrelated() throws SQLException {
+        return _metaData.supportsGroupByUnrelated();
+    }
+
+    public boolean supportsIntegrityEnhancementFacility()
+        throws SQLException {
+        return _metaData.supportsIntegrityEnhancementFacility();
+    }
+
+    public boolean supportsLikeEscapeClause() throws SQLException {
+        return _metaData.supportsLikeEscapeClause();
+    }
+
+    public boolean supportsLimitedOuterJoins() throws SQLException {
+        return _metaData.supportsLimitedOuterJoins();
+    }
+
+    public boolean supportsMinimumSQLGrammar() throws SQLException {
+        return _metaData.supportsMinimumSQLGrammar();
+    }
+
+    public boolean supportsMixedCaseIdentifiers() throws SQLException {
+        return _metaData.supportsMixedCaseIdentifiers();
+    }
+
+    public boolean supportsMixedCaseQuotedIdentifiers()
+        throws SQLException {
+        return _metaData.supportsMixedCaseQuotedIdentifiers();
+    }
+
+    public boolean supportsMultipleResultSets() throws SQLException {
+        return _metaData.supportsMultipleResultSets();
+    }
+
+    public boolean supportsMultipleTransactions() throws SQLException {
+        return _metaData.supportsMultipleTransactions();
+    }
+
+    public boolean supportsNonNullableColumns() throws SQLException {
+        return _metaData.supportsNonNullableColumns();
+    }
+
+    public boolean supportsOpenCursorsAcrossCommit() throws SQLException {
+        return _metaData.supportsOpenCursorsAcrossCommit();
+    }
+
+    public boolean supportsOpenCursorsAcrossRollback()
+        throws SQLException {
+        return _metaData.supportsOpenCursorsAcrossRollback();
+    }
+
+    public boolean supportsOpenStatementsAcrossCommit()
+        throws SQLException {
+        return _metaData.supportsOpenStatementsAcrossCommit();
+    }
+
+    public boolean supportsOpenStatementsAcrossRollback()
+        throws SQLException {
+        return _metaData.supportsOpenStatementsAcrossRollback();
+    }
+
+    public boolean supportsOrderByUnrelated() throws SQLException {
+        return _metaData.supportsOrderByUnrelated();
+    }
+
+    public boolean supportsOuterJoins() throws SQLException {
+        return _metaData.supportsOuterJoins();
+    }
+
+    public boolean supportsPositionedDelete() throws SQLException {
+        return _metaData.supportsPositionedDelete();
+    }
+
+    public boolean supportsPositionedUpdate() throws SQLException {
+        return _metaData.supportsPositionedUpdate();
+    }
+
+    public boolean supportsResultSetConcurrency(int type, int concurrency)
+        throws SQLException {
+        return _metaData.supportsResultSetConcurrency(type, concurrency);
+    }
+
+    public boolean supportsResultSetType(int type) throws SQLException {
+        return _metaData.supportsResultSetType(type);
+    }
+
+    public boolean supportsSchemasInDataManipulation()
+        throws SQLException {
+        return _metaData.supportsSchemasInDataManipulation();
+    }
+
+    public boolean supportsSchemasInIndexDefinitions()
+        throws SQLException {
+        return _metaData.supportsSchemasInIndexDefinitions();
+    }
+
+    public boolean supportsSchemasInPrivilegeDefinitions()
+        throws SQLException {
+        return _metaData.supportsSchemasInPrivilegeDefinitions();
+    }
+
+    public boolean supportsSchemasInProcedureCalls() throws SQLException {
+        return _metaData.supportsSchemasInProcedureCalls();
+    }
+
+    public boolean supportsSchemasInTableDefinitions()
+        throws SQLException {
+        return _metaData.supportsSchemasInTableDefinitions();
+    }
+
+    public boolean supportsSelectForUpdate() throws SQLException {
+        return _metaData.supportsSelectForUpdate();
+    }
+
+    public boolean supportsStoredProcedures() throws SQLException {
+        return _metaData.supportsStoredProcedures();
+    }
+
+    public boolean supportsSubqueriesInComparisons() throws SQLException {
+        return _metaData.supportsSubqueriesInComparisons();
+    }
+
+    public boolean supportsSubqueriesInExists() throws SQLException {
+        return _metaData.supportsSubqueriesInExists();
+    }
+
+    public boolean supportsSubqueriesInIns() throws SQLException {
+        return _metaData.supportsSubqueriesInIns();
+    }
+
+    public boolean supportsSubqueriesInQuantifieds() throws SQLException {
+        return _metaData.supportsSubqueriesInQuantifieds();
+    }
+
+    public boolean supportsTableCorrelationNames() throws SQLException {
+        return _metaData.supportsTableCorrelationNames();
+    }
+
+    public boolean supportsTransactionIsolationLevel(int level)
+        throws SQLException {
+        return _metaData.supportsTransactionIsolationLevel(level);
+    }
+
+    public boolean supportsTransactions() throws SQLException {
+        return _metaData.supportsTransactions();
+    }
+
+    public boolean supportsUnion() throws SQLException {
+        return _metaData.supportsUnion();
+    }
+
+    public boolean supportsUnionAll() throws SQLException {
+        return _metaData.supportsUnionAll();
+    }
+
+    public boolean updatesAreDetected(int type) throws SQLException {
+        return _metaData.updatesAreDetected(type);
+    }
+
+    public boolean usesLocalFilePerTable() throws SQLException {
+        return _metaData.usesLocalFilePerTable();
+    }
+
+    public boolean usesLocalFiles() throws SQLException {
+        return _metaData.usesLocalFiles();
+    }
+
+    // JDBC 3.0 methods (unsupported) follow; these are required to be able to 
+    // compile against JDK 1.4
+    public boolean supportsSavepoints() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean supportsNamedParameters() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean supportsMultipleOpenResults() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean supportsGetGeneratedKeys() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public ResultSet getSuperTypes(String catalog, String schemaPatter,
+        String typeNamePattern) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public ResultSet getSuperTables(String catalog, String schemaPatter,
+        String tableNamePattern) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public ResultSet getAttributes(String catalog, String schemaPatter,
+        String typeNamePattern, String attributeNamePattern)
+        throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean supportsResultSetHoldability(int holdability)
+        throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public int getResultSetHoldability() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public int getDatabaseMajorVersion() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public int getDatabaseMinorVersion() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public int getJDBCMajorVersion() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public int getJDBCMinorVersion() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public int getSQLStateType() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean locatorsUpdateCopy() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean supportsStatementPooling() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
 }
-

Modified: incubator/openjpa/trunk/openjpa-lib/main/java/org/apache/openjpa/lib/jdbc/DelegatingPreparedStatement.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-lib/main/java/org/apache/openjpa/lib/jdbc/DelegatingPreparedStatement.java?rev=417856&r1=415364&r2=417856&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-lib/main/java/org/apache/openjpa/lib/jdbc/DelegatingPreparedStatement.java (original)
+++ incubator/openjpa/trunk/openjpa-lib/main/java/org/apache/openjpa/lib/jdbc/DelegatingPreparedStatement.java Wed Jun 28 12:34:33 2006
@@ -15,669 +15,447 @@
  */
 package org.apache.openjpa.lib.jdbc;
 
+import org.apache.openjpa.lib.util.*;
+import org.apache.openjpa.lib.util.Closeable;
 
 import java.io.*;
+
 import java.math.*;
+
 import java.net.*;
+
 import java.sql.*;
 import java.sql.Date;
-import java.util.*;
 
-import org.apache.openjpa.lib.util.Closeable;
+import java.util.*;
 
 
 /**
- *	<p>Wrapper around an existing statement.  Subclasses can override the
- *	methods whose behavior they mean to change.  The <code>equals</code> and 
- *	<code>hashCode</code> methods pass through to the base underlying data 
- *	store statement.</p>
+ *  <p>Wrapper around an existing statement.  Subclasses can override the
+ *  methods whose behavior they mean to change.  The <code>equals</code> and
+ *  <code>hashCode</code> methods pass through to the base underlying data
+ *  store statement.</p>
  *
- *	@author		Abe White
+ *  @author Abe White
  */
-public class DelegatingPreparedStatement
-	implements PreparedStatement, Closeable
-{
-	private final PreparedStatement 			_stmnt;
-	private final DelegatingPreparedStatement	_del;
-	private final Connection					_conn;
-
-
-	public DelegatingPreparedStatement (PreparedStatement stmnt, 
-		Connection conn)
-	{
-		_conn = conn;
-		_stmnt = stmnt;
-		if (_stmnt instanceof DelegatingPreparedStatement)
-			_del = (DelegatingPreparedStatement) _stmnt;
-		else
-			_del = null;
-	}
-
-
-	protected ResultSet wrapResult (ResultSet rs, boolean wrap)
-	{
-		if (!wrap || rs == null)
-			return rs;
-		return new DelegatingResultSet (rs, this);
-	}
-
-
-	/**
-	 *	Return the wrapped statement.
-	 */
-	public PreparedStatement getDelegate ()
-	{
-		return _stmnt;
-	}
-
-
-	/**
-	 *	Return the base underlying data store statement.
-	 */
-	public PreparedStatement getInnermostDelegate ()
-	{
-		return (_del == null) ? _stmnt : _del.getInnermostDelegate ();
-	}
-
-
-	public int hashCode ()
-	{
-		return getInnermostDelegate ().hashCode ();
-	}
-
-
-	public boolean equals (Object other)
-	{
-		if (other == this)
-			return true;
-		if (other instanceof DelegatingPreparedStatement)
-			other = ((DelegatingPreparedStatement) other).
-				getInnermostDelegate ();
-		return getInnermostDelegate ().equals (other);
-	}
-
-
-	public String toString ()
-	{
-		StringBuffer buf = new StringBuffer ("prepstmnt ").append (hashCode ());
-		appendInfo (buf);
-		return buf.toString ();
-	}
-
-
-	protected void appendInfo (StringBuffer buf)
-	{
-		if (_del != null)
-			_del.appendInfo (buf);
-	}
-
-
-    public ResultSet executeQuery (String str) 
-		throws SQLException
-	{
-		return executeQuery (str, true);
-	}
-
-
-	/**
- 	 *	Execute the query, with the option of not wrapping it in a
-	 *	{@link DelegatingResultSet}, which is the default.
-	 */
-	protected ResultSet executeQuery (String sql, boolean wrap)
-		throws SQLException
-	{
-		ResultSet rs;
-		if (_del != null)
-			rs = _del.executeQuery (sql, false);
-		else
-			rs = _stmnt.executeQuery (sql);
-		return wrapResult (rs, wrap);
-	}
-
-
-    public int executeUpdate (String str) 
-		throws SQLException
-	{
-		return _stmnt.executeUpdate (str);
-	}
-
-
-    public boolean execute (String str) 
-		throws SQLException
-	{
-		return _stmnt.execute (str);
-	}
-
-
-    public void close () 
-		throws SQLException
-	{
-		_stmnt.close ();
-	}
-
-
-    public int getMaxFieldSize () 
-		throws SQLException
-	{
-		return _stmnt.getMaxFieldSize ();
-	}
-
-
-    public void setMaxFieldSize (int i) 
-		throws SQLException
-	{
-		_stmnt.setMaxFieldSize (i);
-	}
-
-
-    public int getMaxRows () 
-		throws SQLException
-	{
-		return _stmnt.getMaxRows ();
-	}
-
-
-    public void setMaxRows (int i) 
-		throws SQLException
-	{
-		_stmnt.setMaxRows (i);
-	}
-
-
-    public void setEscapeProcessing (boolean bool) 
-		throws SQLException
-	{
-		_stmnt.setEscapeProcessing (bool);
-	}
-
-
-    public int getQueryTimeout () 
-		throws SQLException
-	{
-		return _stmnt.getQueryTimeout ();
-	}
-
-
-    public void setQueryTimeout (int i) 
-		throws SQLException
-	{
-		_stmnt.setQueryTimeout (i);
-	}
-
-
-    public void cancel () 
-		throws SQLException
-	{
-		_stmnt.cancel ();
-	}
-
-
-    public SQLWarning getWarnings () 
-		throws SQLException
-	{
-		return _stmnt.getWarnings ();
-	}
-
-
-    public void clearWarnings () 
-		throws SQLException
-	{
-		_stmnt.clearWarnings ();
-	}
-
-
-    public void setCursorName (String str) 
-		throws SQLException
-	{
-		_stmnt.setCursorName (str);
-	}
-
-
-    public ResultSet getResultSet () 
-		throws SQLException
-	{
-		return getResultSet (true);
-	}
-
-
-	/**
- 	 *	Get the last result set, with the option of not wrapping it in a
-	 *	{@link DelegatingResultSet}, which is the default.
-	 */
-	protected ResultSet getResultSet (boolean wrap)
-		throws SQLException
-	{
-		ResultSet rs;
-		if (_del != null)
-			rs = _del.getResultSet (false);
-		else
-			rs = _stmnt.getResultSet ();
-		return wrapResult (rs, wrap);
-	}
-
-
-    public int getUpdateCount () 
-		throws SQLException
-	{
-		return _stmnt.getUpdateCount ();
-	}
-
-
-    public boolean getMoreResults () 
-		throws SQLException
-	{
-		return _stmnt.getMoreResults ();
-	}
-
-
-    public void setFetchDirection (int i) 
-		throws SQLException
-	{
-		_stmnt.setFetchDirection (i);
-	}
-
-
-    public int getFetchDirection () 
-		throws SQLException
-	{
-		return _stmnt.getFetchDirection ();
-	}
-
-
-    public void setFetchSize (int i) 
-		throws SQLException
-	{
-		_stmnt.setFetchSize (i);
-	}
-
-
-    public int getFetchSize () 
-		throws SQLException
-	{
-		return _stmnt.getFetchSize ();
-	}
-
-
-    public int getResultSetConcurrency () 
-		throws SQLException
-	{
-		return _stmnt.getResultSetConcurrency ();
-	}
-
-
-    public int getResultSetType () 
-		throws SQLException
-	{
-		return _stmnt.getResultSetType ();
-	}
-
-
-    public void addBatch (String str) 
-		throws SQLException
-	{
-		_stmnt.addBatch (str);
-	}
-
-
-    public void clearBatch () 
-		throws SQLException
-	{
-		_stmnt.clearBatch ();
-	}
-
-
-    public int[] executeBatch ()
-		throws SQLException
-	{
-		return _stmnt.executeBatch ();
-	}
-
-
-    public Connection getConnection () 
-		throws SQLException
-	{
-		return _conn;
-	}
-
-
-	public ResultSet executeQuery () 
-		throws SQLException
-	{
-		return executeQuery (true);
-	}
-
-
-	/**
- 	 *	Execute the query, with the option of not wrapping it in a
-	 *	{@link DelegatingResultSet}, which is the default.
-	 */
-	protected ResultSet executeQuery (boolean wrap)
-		throws SQLException
-	{
-		ResultSet rs;
-		if (_del != null)
-			rs = _del.executeQuery (false);
-		else
-			rs = _stmnt.executeQuery ();
-		return wrapResult (rs, wrap);
-	}
-
-
-	public int executeUpdate  () 
-		throws SQLException
-	{
-		return _stmnt.executeUpdate ();
-	}
-
-
-	public void setNull (int i1, int i2) 
-		throws SQLException
-	{
-		_stmnt.setNull (i1, i2);
-	}
-
-
-	public void setBoolean (int i, boolean b) 
-		throws SQLException
-	{
-		_stmnt.setBoolean (i, b);
-	}
-
-
-	public void setByte (int i, byte b) 
-		throws SQLException
-	{
-		_stmnt.setByte (i, b);
-	}
-
-
-	public void setShort (int i, short s) 
-		throws SQLException
-	{
-		_stmnt.setShort (i, s);
-	}
-
-
-	public void setInt (int i1, int i2) 
-		throws SQLException
-	{
-		_stmnt.setInt (i1, i2);
-	}
-
-
-	public void setLong (int i, long l) 
-		throws SQLException
-	{
-		_stmnt.setLong (i, l);
-	}
-
-
-	public void setFloat (int i, float f) 
-		throws SQLException
-	{
-		_stmnt.setFloat (i, f);
-	}
-
-
-	public void setDouble (int i, double d) 
-		throws SQLException
-	{
-		_stmnt.setDouble (i, d);
-	}
-
-
-	public void setBigDecimal (int i, BigDecimal bd) 
-		throws SQLException
-	{
-		_stmnt.setBigDecimal (i, bd);
-	}
-
-
-	public void setString (int i, String s) 
-		throws SQLException
-	{
-		_stmnt.setString (i, s);
-	}
-
-
-	public void setBytes (int i, byte[] b) 
-		throws SQLException
-	{
-		_stmnt.setBytes (i, b);
-	}
-
-
-	public void setDate (int i, Date d) 
-		throws SQLException
-	{
-		_stmnt.setDate (i, d);
-	}
-
-
-	public void setTime (int i, Time t) 
-		throws SQLException
-	{
-		_stmnt.setTime (i, t);
-	}
-
-
-	public void setTimestamp (int i, Timestamp t) 
-		throws SQLException
-	{
-		_stmnt.setTimestamp (i, t);
-	}
-
-
-	public void setAsciiStream (int i1, InputStream is, int i2) 
-		throws SQLException
-	{
-		_stmnt.setAsciiStream (i1, is, i2);
-	}
-
-
-	public void setUnicodeStream (int i1, InputStream is, int i2) 
-		throws SQLException
-	{
-		_stmnt.setUnicodeStream (i1, is, i2);
-	}
-
-
-	public void setBinaryStream (int i1, InputStream is, int i2) 
-		throws SQLException
-	{
-		_stmnt.setBinaryStream (i1, is, i2);
-	}
-
-
-    public void clearParameters () 
-		throws SQLException
-	{
-		_stmnt.clearParameters ();
-	}
-
-
-	public void setObject (int i1, Object o, int i2, int i3) 
-		throws SQLException
-	{
-		_stmnt.setObject (i1, o, i2, i3);
-	}
-
-
-	public void setObject (int i1, Object o, int i2)
-		throws SQLException
-	{
-		_stmnt.setObject (i1, o, i2);
-	}
-
-
-	public void setObject (int i, Object o) 
-		throws SQLException
-	{
-		_stmnt.setObject (i, o);
-	}
-
-
-    public boolean execute () 
-		throws SQLException
-	{
-		return _stmnt.execute ();
-	}
-
-
-    public void addBatch () 
-		throws SQLException
-	{
-		_stmnt.addBatch ();
-	}
-
-
-	public void setCharacterStream (int i1, Reader r, int i2)
-		throws SQLException
-	{
-		_stmnt.setCharacterStream (i1, r, i2);
-	}
-
-
-	public void setRef (int i, Ref r) 
-		throws SQLException
-	{
-		_stmnt.setRef (i, r);
-	}
-
-
-	public void setBlob (int i, Blob b) 
-		throws SQLException
-	{
-		_stmnt.setBlob (i, b);
-	}
-
-
-	public void setClob (int i, Clob c) 
-		throws SQLException
-	{
-		_stmnt.setClob (i, c);
-	}
-
-
-	public void setArray (int i, Array a) 
-		throws SQLException
-	{
-		_stmnt.setArray (i, a);
-	}
-
-
-    public ResultSetMetaData getMetaData () 
-		throws SQLException
-	{
-		return _stmnt.getMetaData ();
-	}
-
-
-	public void setDate (int i, Date d, Calendar c) 
-		throws SQLException
-	{
-		_stmnt.setDate (i, d, c);
-	}
-
-
-	public void setTime (int i, Time t, Calendar c) 
-		throws SQLException
-	{
-		_stmnt.setTime (i, t, c);
-	}
-
-
-	public void setTimestamp (int i, Timestamp t, Calendar c) 
-		throws SQLException
-	{
-		_stmnt.setTimestamp (i, t, c);
-	}
-
-
-	public void setNull (int i1, int i2, String s) 
-		throws SQLException
-	{
-		_stmnt.setNull (i1, i2, s);
-	}
-
-
-	// JDBC 3.0 (unsupported) method follow; these are required to be able 
-	// to compile against JDK 1.4
-
-
-	public boolean getMoreResults (int i)
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public ResultSet getGeneratedKeys ()
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public int executeUpdate (String s, int i) 
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public int executeUpdate (String s, int[] ia)
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public int executeUpdate (String s, String[] sa)
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public boolean execute (String s, int i)
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public boolean execute (String s, int[] ia)
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public boolean execute (String s, String[] sa)
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public int getResultSetHoldability ()
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public void setURL (int i, URL url)
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
-
-
-	public ParameterMetaData getParameterMetaData ()
-		throws SQLException
-	{
-		throw new UnsupportedOperationException ();
-	}
+public class DelegatingPreparedStatement implements PreparedStatement,
+    Closeable {
+    private final PreparedStatement _stmnt;
+    private final DelegatingPreparedStatement _del;
+    private final Connection _conn;
+
+    public DelegatingPreparedStatement(PreparedStatement stmnt, Connection conn) {
+        _conn = conn;
+        _stmnt = stmnt;
+
+        if (_stmnt instanceof DelegatingPreparedStatement) {
+            _del = (DelegatingPreparedStatement) _stmnt;
+        } else {
+            _del = null;
+        }
+    }
+
+    protected ResultSet wrapResult(ResultSet rs, boolean wrap) {
+        if (!wrap || (rs == null)) {
+            return rs;
+        }
+
+        return new DelegatingResultSet(rs, this);
+    }
+
+    /**
+     *  Return the wrapped statement.
+     */
+    public PreparedStatement getDelegate() {
+        return _stmnt;
+    }
+
+    /**
+     *  Return the base underlying data store statement.
+     */
+    public PreparedStatement getInnermostDelegate() {
+        return (_del == null) ? _stmnt : _del.getInnermostDelegate();
+    }
+
+    public int hashCode() {
+        return getInnermostDelegate().hashCode();
+    }
+
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+
+        if (other instanceof DelegatingPreparedStatement) {
+            other = ((DelegatingPreparedStatement) other).getInnermostDelegate();
+        }
+
+        return getInnermostDelegate().equals(other);
+    }
+
+    public String toString() {
+        StringBuffer buf = new StringBuffer("prepstmnt ").append(hashCode());
+        appendInfo(buf);
+
+        return buf.toString();
+    }
+
+    protected void appendInfo(StringBuffer buf) {
+        if (_del != null) {
+            _del.appendInfo(buf);
+        }
+    }
+
+    public ResultSet executeQuery(String str) throws SQLException {
+        return executeQuery(str, true);
+    }
+
+    /**
+      *  Execute the query, with the option of not wrapping it in a
+     *  {@link DelegatingResultSet}, which is the default.
+     */
+    protected ResultSet executeQuery(String sql, boolean wrap)
+        throws SQLException {
+        ResultSet rs;
+
+        if (_del != null) {
+            rs = _del.executeQuery(sql, false);
+        } else {
+            rs = _stmnt.executeQuery(sql);
+        }
+
+        return wrapResult(rs, wrap);
+    }
+
+    public int executeUpdate(String str) throws SQLException {
+        return _stmnt.executeUpdate(str);
+    }
+
+    public boolean execute(String str) throws SQLException {
+        return _stmnt.execute(str);
+    }
+
+    public void close() throws SQLException {
+        _stmnt.close();
+    }
+
+    public int getMaxFieldSize() throws SQLException {
+        return _stmnt.getMaxFieldSize();
+    }
+
+    public void setMaxFieldSize(int i) throws SQLException {
+        _stmnt.setMaxFieldSize(i);
+    }
+
+    public int getMaxRows() throws SQLException {
+        return _stmnt.getMaxRows();
+    }
+
+    public void setMaxRows(int i) throws SQLException {
+        _stmnt.setMaxRows(i);
+    }
+
+    public void setEscapeProcessing(boolean bool) throws SQLException {
+        _stmnt.setEscapeProcessing(bool);
+    }
+
+    public int getQueryTimeout() throws SQLException {
+        return _stmnt.getQueryTimeout();
+    }
+
+    public void setQueryTimeout(int i) throws SQLException {
+        _stmnt.setQueryTimeout(i);
+    }
+
+    public void cancel() throws SQLException {
+        _stmnt.cancel();
+    }
+
+    public SQLWarning getWarnings() throws SQLException {
+        return _stmnt.getWarnings();
+    }
+
+    public void clearWarnings() throws SQLException {
+        _stmnt.clearWarnings();
+    }
+
+    public void setCursorName(String str) throws SQLException {
+        _stmnt.setCursorName(str);
+    }
+
+    public ResultSet getResultSet() throws SQLException {
+        return getResultSet(true);
+    }
+
+    /**
+      *  Get the last result set, with the option of not wrapping it in a
+     *  {@link DelegatingResultSet}, which is the default.
+     */
+    protected ResultSet getResultSet(boolean wrap) throws SQLException {
+        ResultSet rs;
+
+        if (_del != null) {
+            rs = _del.getResultSet(false);
+        } else {
+            rs = _stmnt.getResultSet();
+        }
+
+        return wrapResult(rs, wrap);
+    }
+
+    public int getUpdateCount() throws SQLException {
+        return _stmnt.getUpdateCount();
+    }
+
+    public boolean getMoreResults() throws SQLException {
+        return _stmnt.getMoreResults();
+    }
+
+    public void setFetchDirection(int i) throws SQLException {
+        _stmnt.setFetchDirection(i);
+    }
+
+    public int getFetchDirection() throws SQLException {
+        return _stmnt.getFetchDirection();
+    }
+
+    public void setFetchSize(int i) throws SQLException {
+        _stmnt.setFetchSize(i);
+    }
+
+    public int getFetchSize() throws SQLException {
+        return _stmnt.getFetchSize();
+    }
+
+    public int getResultSetConcurrency() throws SQLException {
+        return _stmnt.getResultSetConcurrency();
+    }
+
+    public int getResultSetType() throws SQLException {
+        return _stmnt.getResultSetType();
+    }
+
+    public void addBatch(String str) throws SQLException {
+        _stmnt.addBatch(str);
+    }
+
+    public void clearBatch() throws SQLException {
+        _stmnt.clearBatch();
+    }
+
+    public int[] executeBatch() throws SQLException {
+        return _stmnt.executeBatch();
+    }
+
+    public Connection getConnection() throws SQLException {
+        return _conn;
+    }
+
+    public ResultSet executeQuery() throws SQLException {
+        return executeQuery(true);
+    }
+
+    /**
+      *  Execute the query, with the option of not wrapping it in a
+     *  {@link DelegatingResultSet}, which is the default.
+     */
+    protected ResultSet executeQuery(boolean wrap) throws SQLException {
+        ResultSet rs;
+
+        if (_del != null) {
+            rs = _del.executeQuery(false);
+        } else {
+            rs = _stmnt.executeQuery();
+        }
+
+        return wrapResult(rs, wrap);
+    }
+
+    public int executeUpdate() throws SQLException {
+        return _stmnt.executeUpdate();
+    }
+
+    public void setNull(int i1, int i2) throws SQLException {
+        _stmnt.setNull(i1, i2);
+    }
+
+    public void setBoolean(int i, boolean b) throws SQLException {
+        _stmnt.setBoolean(i, b);
+    }
+
+    public void setByte(int i, byte b) throws SQLException {
+        _stmnt.setByte(i, b);
+    }
+
+    public void setShort(int i, short s) throws SQLException {
+        _stmnt.setShort(i, s);
+    }
+
+    public void setInt(int i1, int i2) throws SQLException {
+        _stmnt.setInt(i1, i2);
+    }
+
+    public void setLong(int i, long l) throws SQLException {
+        _stmnt.setLong(i, l);
+    }
+
+    public void setFloat(int i, float f) throws SQLException {
+        _stmnt.setFloat(i, f);
+    }
+
+    public void setDouble(int i, double d) throws SQLException {
+        _stmnt.setDouble(i, d);
+    }
+
+    public void setBigDecimal(int i, BigDecimal bd) throws SQLException {
+        _stmnt.setBigDecimal(i, bd);
+    }
+
+    public void setString(int i, String s) throws SQLException {
+        _stmnt.setString(i, s);
+    }
+
+    public void setBytes(int i, byte[] b) throws SQLException {
+        _stmnt.setBytes(i, b);
+    }
+
+    public void setDate(int i, Date d) throws SQLException {
+        _stmnt.setDate(i, d);
+    }
+
+    public void setTime(int i, Time t) throws SQLException {
+        _stmnt.setTime(i, t);
+    }
+
+    public void setTimestamp(int i, Timestamp t) throws SQLException {
+        _stmnt.setTimestamp(i, t);
+    }
+
+    public void setAsciiStream(int i1, InputStream is, int i2)
+        throws SQLException {
+        _stmnt.setAsciiStream(i1, is, i2);
+    }
+
+    public void setUnicodeStream(int i1, InputStream is, int i2)
+        throws SQLException {
+        _stmnt.setUnicodeStream(i1, is, i2);
+    }
+
+    public void setBinaryStream(int i1, InputStream is, int i2)
+        throws SQLException {
+        _stmnt.setBinaryStream(i1, is, i2);
+    }
+
+    public void clearParameters() throws SQLException {
+        _stmnt.clearParameters();
+    }
+
+    public void setObject(int i1, Object o, int i2, int i3)
+        throws SQLException {
+        _stmnt.setObject(i1, o, i2, i3);
+    }
+
+    public void setObject(int i1, Object o, int i2) throws SQLException {
+        _stmnt.setObject(i1, o, i2);
+    }
+
+    public void setObject(int i, Object o) throws SQLException {
+        _stmnt.setObject(i, o);
+    }
+
+    public boolean execute() throws SQLException {
+        return _stmnt.execute();
+    }
+
+    public void addBatch() throws SQLException {
+        _stmnt.addBatch();
+    }
+
+    public void setCharacterStream(int i1, Reader r, int i2)
+        throws SQLException {
+        _stmnt.setCharacterStream(i1, r, i2);
+    }
+
+    public void setRef(int i, Ref r) throws SQLException {
+        _stmnt.setRef(i, r);
+    }
+
+    public void setBlob(int i, Blob b) throws SQLException {
+        _stmnt.setBlob(i, b);
+    }
+
+    public void setClob(int i, Clob c) throws SQLException {
+        _stmnt.setClob(i, c);
+    }
+
+    public void setArray(int i, Array a) throws SQLException {
+        _stmnt.setArray(i, a);
+    }
+
+    public ResultSetMetaData getMetaData() throws SQLException {
+        return _stmnt.getMetaData();
+    }
+
+    public void setDate(int i, Date d, Calendar c) throws SQLException {
+        _stmnt.setDate(i, d, c);
+    }
+
+    public void setTime(int i, Time t, Calendar c) throws SQLException {
+        _stmnt.setTime(i, t, c);
+    }
+
+    public void setTimestamp(int i, Timestamp t, Calendar c)
+        throws SQLException {
+        _stmnt.setTimestamp(i, t, c);
+    }
+
+    public void setNull(int i1, int i2, String s) throws SQLException {
+        _stmnt.setNull(i1, i2, s);
+    }
+
+    // JDBC 3.0 (unsupported) method follow; these are required to be able 
+    // to compile against JDK 1.4
+    public boolean getMoreResults(int i) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public ResultSet getGeneratedKeys() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public int executeUpdate(String s, int i) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public int executeUpdate(String s, int[] ia) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public int executeUpdate(String s, String[] sa) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean execute(String s, int i) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean execute(String s, int[] ia) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean execute(String s, String[] sa) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public int getResultSetHoldability() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public void setURL(int i, URL url) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public ParameterMetaData getParameterMetaData() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
 }