/* * COMSAT * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved. * * This program and the accompanying materials are dual-licensed under * either the terms of the Eclipse Public License v1.0 as published by * the Eclipse Foundation * * or (per the licensee's choosing) * * under the terms of the GNU Lesser General Public License version 3.0 * as published by the Free Software Foundation. */ package co.paralleluniverse.fibers.jdbc; import co.paralleluniverse.common.util.CheckedCallable; import co.paralleluniverse.fibers.Suspendable; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.RowIdLifetime; import java.sql.SQLException; import java.util.concurrent.ExecutorService; /** * @author crclespainter */ public class FiberDatabaseMetaData implements DatabaseMetaData { private final DatabaseMetaData dbMeta; private final ExecutorService executor; public FiberDatabaseMetaData(final DatabaseMetaData dbMeta, final ExecutorService executor) { this.dbMeta = dbMeta; this.executor = executor; } @Override @Suspendable public boolean allProceduresAreCallable() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.allProceduresAreCallable(); } }); } @Override @Suspendable public boolean allTablesAreSelectable() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.allTablesAreSelectable(); } }); } @Override @Suspendable public String getURL() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getURL(); } }); } @Override @Suspendable public String getUserName() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getUserName(); } }); } @Override @Suspendable public boolean isReadOnly() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.isReadOnly(); } }); } @Override @Suspendable public boolean nullsAreSortedHigh() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.nullsAreSortedHigh(); } }); } @Override @Suspendable public boolean nullsAreSortedLow() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.nullsAreSortedLow(); } }); } @Override @Suspendable public boolean nullsAreSortedAtStart() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.nullsAreSortedAtStart(); } }); } @Override @Suspendable public boolean nullsAreSortedAtEnd() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.nullsAreSortedAtEnd(); } }); } @Override @Suspendable public String getDatabaseProductName() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getDatabaseProductName(); } }); } @Override @Suspendable public String getDatabaseProductVersion() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getDatabaseProductVersion(); } }); } @Override @Suspendable public String getDriverName() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getDriverName(); } }); } @Override @Suspendable public String getDriverVersion() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getDriverVersion(); } }); } @Override public int getDriverMajorVersion() { return dbMeta.getDriverMajorVersion(); } @Override public int getDriverMinorVersion() { return dbMeta.getDriverMinorVersion(); } @Override @Suspendable public boolean usesLocalFiles() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.usesLocalFiles(); } }); } @Override @Suspendable public boolean usesLocalFilePerTable() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.usesLocalFilePerTable(); } }); } @Override @Suspendable public boolean supportsMixedCaseIdentifiers() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsMixedCaseIdentifiers(); } }); } @Override @Suspendable public boolean storesUpperCaseIdentifiers() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.storesUpperCaseIdentifiers(); } }); } @Override @Suspendable public boolean storesLowerCaseIdentifiers() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.storesLowerCaseIdentifiers(); } }); } @Override @Suspendable public boolean storesMixedCaseIdentifiers() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.storesMixedCaseIdentifiers(); } }); } @Override @Suspendable public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsMixedCaseQuotedIdentifiers(); } }); } @Override @Suspendable public boolean storesUpperCaseQuotedIdentifiers() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.storesUpperCaseQuotedIdentifiers(); } }); } @Override @Suspendable public boolean storesLowerCaseQuotedIdentifiers() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.storesLowerCaseQuotedIdentifiers(); } }); } @Override @Suspendable public boolean storesMixedCaseQuotedIdentifiers() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.storesMixedCaseQuotedIdentifiers(); } }); } @Override @Suspendable public String getIdentifierQuoteString() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getIdentifierQuoteString(); } }); } @Override @Suspendable public String getSQLKeywords() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getSQLKeywords(); } }); } @Override @Suspendable public String getNumericFunctions() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getNumericFunctions(); } }); } @Override @Suspendable public String getStringFunctions() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getStringFunctions(); } }); } @Override @Suspendable public String getSystemFunctions() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getSystemFunctions(); } }); } @Override @Suspendable public String getTimeDateFunctions() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getTimeDateFunctions(); } }); } @Override @Suspendable public String getSearchStringEscape() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getSearchStringEscape(); } }); } @Override @Suspendable public String getExtraNameCharacters() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getExtraNameCharacters(); } }); } @Override @Suspendable public boolean supportsAlterTableWithAddColumn() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsAlterTableWithAddColumn(); } }); } @Override @Suspendable public boolean supportsAlterTableWithDropColumn() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsAlterTableWithDropColumn(); } }); } @Override @Suspendable public boolean supportsColumnAliasing() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsColumnAliasing(); } }); } @Override @Suspendable public boolean nullPlusNonNullIsNull() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.nullPlusNonNullIsNull(); } }); } @Override @Suspendable public boolean supportsConvert() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsConvert(); } }); } @Override @Suspendable public boolean supportsConvert(final int fromType, final int toType) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsConvert(fromType, toType); } }); } @Override @Suspendable public boolean supportsTableCorrelationNames() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsTableCorrelationNames(); } }); } @Override @Suspendable public boolean supportsDifferentTableCorrelationNames() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsDifferentTableCorrelationNames(); } }); } @Override @Suspendable public boolean supportsExpressionsInOrderBy() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsExpressionsInOrderBy(); } }); } @Override @Suspendable public boolean supportsOrderByUnrelated() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsOrderByUnrelated(); } }); } @Override @Suspendable public boolean supportsGroupBy() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsGroupBy(); } }); } @Override @Suspendable public boolean supportsGroupByUnrelated() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsGroupByUnrelated(); } }); } @Override @Suspendable public boolean supportsGroupByBeyondSelect() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsGroupByBeyondSelect(); } }); } @Override @Suspendable public boolean supportsLikeEscapeClause() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsLikeEscapeClause(); } }); } @Override @Suspendable public boolean supportsMultipleResultSets() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsMultipleResultSets(); } }); } @Override @Suspendable public boolean supportsMultipleTransactions() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsMultipleTransactions(); } }); } @Override @Suspendable public boolean supportsNonNullableColumns() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsNonNullableColumns(); } }); } @Override @Suspendable public boolean supportsMinimumSQLGrammar() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsMinimumSQLGrammar(); } }); } @Override @Suspendable public boolean supportsCoreSQLGrammar() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsCoreSQLGrammar(); } }); } @Override @Suspendable public boolean supportsExtendedSQLGrammar() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsExtendedSQLGrammar(); } }); } @Override @Suspendable public boolean supportsANSI92EntryLevelSQL() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsANSI92EntryLevelSQL(); } }); } @Override @Suspendable public boolean supportsANSI92IntermediateSQL() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsANSI92IntermediateSQL(); } }); } @Override @Suspendable public boolean supportsANSI92FullSQL() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsANSI92FullSQL(); } }); } @Override @Suspendable public boolean supportsIntegrityEnhancementFacility() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsIntegrityEnhancementFacility(); } }); } @Override @Suspendable public boolean supportsOuterJoins() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsOuterJoins(); } }); } @Override @Suspendable public boolean supportsFullOuterJoins() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsFullOuterJoins(); } }); } @Override @Suspendable public boolean supportsLimitedOuterJoins() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsFullOuterJoins(); } }); } @Override @Suspendable public String getSchemaTerm() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getSchemaTerm(); } }); } @Override @Suspendable public String getProcedureTerm() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getProcedureTerm(); } }); } @Override @Suspendable public String getCatalogTerm() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getCatalogTerm(); } }); } @Override @Suspendable public boolean isCatalogAtStart() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.isCatalogAtStart(); } }); } @Override @Suspendable public String getCatalogSeparator() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return dbMeta.getCatalogSeparator(); } }); } @Override @Suspendable public boolean supportsSchemasInDataManipulation() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsSchemasInDataManipulation(); } }); } @Override @Suspendable public boolean supportsSchemasInProcedureCalls() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsSchemasInProcedureCalls(); } }); } @Override @Suspendable public boolean supportsSchemasInTableDefinitions() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsSchemasInTableDefinitions(); } }); } @Override @Suspendable public boolean supportsSchemasInIndexDefinitions() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsSchemasInIndexDefinitions(); } }); } @Override @Suspendable public boolean supportsSchemasInPrivilegeDefinitions() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsSchemasInPrivilegeDefinitions(); } }); } @Override @Suspendable public boolean supportsCatalogsInDataManipulation() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsCatalogsInDataManipulation(); } }); } @Override @Suspendable public boolean supportsCatalogsInProcedureCalls() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsCatalogsInProcedureCalls(); } }); } @Override @Suspendable public boolean supportsCatalogsInTableDefinitions() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsCatalogsInTableDefinitions(); } }); } @Override @Suspendable public boolean supportsCatalogsInIndexDefinitions() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsCatalogsInIndexDefinitions(); } }); } @Override @Suspendable public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsCatalogsInPrivilegeDefinitions(); } }); } @Override @Suspendable public boolean supportsPositionedDelete() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsPositionedDelete(); } }); } @Override @Suspendable public boolean supportsPositionedUpdate() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsPositionedUpdate(); } }); } @Override @Suspendable public boolean supportsSelectForUpdate() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsSelectForUpdate(); } }); } @Override @Suspendable public boolean supportsStoredProcedures() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsStoredProcedures(); } }); } @Override @Suspendable public boolean supportsSubqueriesInComparisons() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsSubqueriesInComparisons(); } }); } @Override @Suspendable public boolean supportsSubqueriesInExists() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsSubqueriesInExists(); } }); } @Override @Suspendable public boolean supportsSubqueriesInIns() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsSubqueriesInIns(); } }); } @Override @Suspendable public boolean supportsSubqueriesInQuantifieds() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsSubqueriesInQuantifieds(); } }); } @Override @Suspendable public boolean supportsCorrelatedSubqueries() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsCorrelatedSubqueries(); } }); } @Override @Suspendable public boolean supportsUnion() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsUnion(); } }); } @Override @Suspendable public boolean supportsUnionAll() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsUnionAll(); } }); } @Override @Suspendable public boolean supportsOpenCursorsAcrossCommit() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsOpenCursorsAcrossCommit(); } }); } @Override @Suspendable public boolean supportsOpenCursorsAcrossRollback() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsOpenCursorsAcrossRollback(); } }); } @Override @Suspendable public boolean supportsOpenStatementsAcrossCommit() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsOpenStatementsAcrossCommit(); } }); } @Override @Suspendable public boolean supportsOpenStatementsAcrossRollback() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsOpenStatementsAcrossRollback(); } }); } @Override @Suspendable public int getMaxBinaryLiteralLength() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxBinaryLiteralLength(); } }); } @Override @Suspendable public int getMaxCharLiteralLength() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxCharLiteralLength(); } }); } @Override @Suspendable public int getMaxColumnNameLength() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxColumnNameLength(); } }); } @Override @Suspendable public int getMaxColumnsInGroupBy() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxColumnsInGroupBy(); } }); } @Override @Suspendable public int getMaxColumnsInIndex() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxColumnsInIndex(); } }); } @Override @Suspendable public int getMaxColumnsInOrderBy() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxColumnsInOrderBy(); } }); } @Override @Suspendable public int getMaxColumnsInSelect() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxColumnsInSelect(); } }); } @Override @Suspendable public int getMaxColumnsInTable() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxColumnsInTable(); } }); } @Override @Suspendable public int getMaxConnections() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxConnections(); } }); } @Override @Suspendable public int getMaxCursorNameLength() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxCursorNameLength(); } }); } @Override @Suspendable public int getMaxIndexLength() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxIndexLength(); } }); } @Override @Suspendable public int getMaxSchemaNameLength() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxSchemaNameLength(); } }); } @Override @Suspendable public int getMaxProcedureNameLength() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxProcedureNameLength(); } }); } @Override @Suspendable public int getMaxCatalogNameLength() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxCatalogNameLength(); } }); } @Override @Suspendable public int getMaxRowSize() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxRowSize(); } }); } @Override @Suspendable public boolean doesMaxRowSizeIncludeBlobs() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.doesMaxRowSizeIncludeBlobs(); } }); } @Override @Suspendable public int getMaxStatementLength() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxStatementLength(); } }); } @Override @Suspendable public int getMaxStatements() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxStatements(); } }); } @Override @Suspendable public int getMaxTableNameLength() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxTableNameLength(); } }); } @Override @Suspendable public int getMaxTablesInSelect() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxTablesInSelect(); } }); } @Override @Suspendable public int getMaxUserNameLength() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getMaxUserNameLength(); } }); } @Override @Suspendable public int getDefaultTransactionIsolation() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getDefaultTransactionIsolation(); } }); } @Override @Suspendable public boolean supportsTransactions() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsTransactions(); } }); } @Override @Suspendable public boolean supportsTransactionIsolationLevel(final int level) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsTransactionIsolationLevel(level); } }); } @Override @Suspendable public boolean supportsDataDefinitionAndDataManipulationTransactions() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsDataDefinitionAndDataManipulationTransactions(); } }); } @Override @Suspendable public boolean supportsDataManipulationTransactionsOnly() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsDataManipulationTransactionsOnly(); } }); } @Override @Suspendable public boolean dataDefinitionCausesTransactionCommit() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.dataDefinitionCausesTransactionCommit(); } }); } @Override @Suspendable public boolean dataDefinitionIgnoredInTransactions() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.dataDefinitionIgnoredInTransactions(); } }); } @Override @Suspendable public FiberResultSet getProcedures(final String catalog, final String schemaPattern, final String procedureNamePattern) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getProcedures(catalog, schemaPattern, procedureNamePattern); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getProcedureColumns(final String catalog, final String schemaPattern, final String procedureNamePattern, final String columnNamePattern) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getProcedureColumns(catalog, schemaPattern, procedureNamePattern, columnNamePattern); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getTables(final String catalog, final String schemaPattern, final String tableNamePattern, final String[] types) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getTables(catalog, schemaPattern, tableNamePattern, types); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getSchemas() throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getSchemas(); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getCatalogs() throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getCatalogs(); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getTableTypes() throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getTableTypes(); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getColumns(final String catalog, final String schemaPattern, final String tableNamePattern, final String columnNamePattern) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getColumns(catalog, schemaPattern, tableNamePattern, columnNamePattern); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getColumnPrivileges(final String catalog, final String schema, final String table, final String columnNamePattern) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getColumnPrivileges(catalog, schema, table, columnNamePattern); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getTablePrivileges(final String catalog, final String schemaPattern, final String tableNamePattern) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getTablePrivileges(catalog, schemaPattern, tableNamePattern); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getBestRowIdentifier(final String catalog, final String schema, final String table, final int scope, final boolean nullable) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getBestRowIdentifier(catalog, schema, table, scope, nullable); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getVersionColumns(final String catalog, final String schema, final String table) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getVersionColumns(catalog, schema, table); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getPrimaryKeys(final String catalog, final String schema, final String table) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getPrimaryKeys(catalog, schema, table); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getImportedKeys(final String catalog, final String schema, final String table) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getImportedKeys(catalog, schema, table); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getExportedKeys(final String catalog, final String schema, final String table) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getExportedKeys(catalog, schema, table); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getCrossReference(final String parentCatalog, final String parentSchema, final String parentTable, final String foreignCatalog, final String foreignSchema, final String foreignTable) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getCrossReference(parentCatalog, parentSchema, parentTable, foreignCatalog, foreignSchema, foreignTable); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getTypeInfo() throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getTypeInfo(); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getIndexInfo(final String catalog, final String schema, final String table, final boolean unique, final boolean approximate) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getIndexInfo(catalog, schema, table, unique, approximate); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public boolean supportsResultSetType(final int type) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsResultSetType(type); } }); } @Override @Suspendable public boolean supportsResultSetConcurrency(final int type, final int concurrency) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsResultSetConcurrency(type, concurrency); } }); } @Override @Suspendable public boolean ownUpdatesAreVisible(final int type) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.ownUpdatesAreVisible(type); } }); } @Override @Suspendable public boolean ownDeletesAreVisible(final int type) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.ownDeletesAreVisible(type); } }); } @Override @Suspendable public boolean ownInsertsAreVisible(final int type) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.ownInsertsAreVisible(type); } }); } @Override @Suspendable public boolean othersUpdatesAreVisible(final int type) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.othersUpdatesAreVisible(type); } }); } @Override @Suspendable public boolean othersDeletesAreVisible(final int type) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.othersDeletesAreVisible(type); } }); } @Override @Suspendable public boolean othersInsertsAreVisible(final int type) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.othersInsertsAreVisible(type); } }); } @Override @Suspendable public boolean updatesAreDetected(final int type) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.updatesAreDetected(type); } }); } @Override @Suspendable public boolean deletesAreDetected(final int type) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.deletesAreDetected(type); } }); } @Override @Suspendable public boolean insertsAreDetected(final int type) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.insertsAreDetected(type); } }); } @Override @Suspendable public boolean supportsBatchUpdates() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsBatchUpdates(); } }); } @Override @Suspendable public FiberResultSet getUDTs(final String catalog, final String schemaPattern, final String typeNamePattern, final int[] types) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getUDTs(catalog, schemaPattern, typeNamePattern, types); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberConnection getConnection() throws SQLException { final Connection conn = JDBCFiberAsync.exec(executor, new CheckedCallable<Connection, SQLException>() { @Override public Connection call() throws SQLException { return dbMeta.getConnection(); } }); return new FiberConnection(conn, executor); } @Override @Suspendable public boolean supportsSavepoints() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsSavepoints(); } }); } @Override @Suspendable public boolean supportsNamedParameters() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsNamedParameters(); } }); } @Override @Suspendable public boolean supportsMultipleOpenResults() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsMultipleOpenResults(); } }); } @Override @Suspendable public boolean supportsGetGeneratedKeys() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsGetGeneratedKeys(); } }); } @Override @Suspendable public FiberResultSet getSuperTypes(final String catalog, final String schemaPattern, final String typeNamePattern) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getSuperTypes(catalog, schemaPattern, typeNamePattern); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getSuperTables(final String catalog, final String schemaPattern, final String tableNamePattern) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getSuperTables(catalog, schemaPattern, tableNamePattern); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getAttributes(final String catalog, final String schemaPattern, final String typeNamePattern, final String attributeNamePattern) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getAttributes(catalog, schemaPattern, typeNamePattern, attributeNamePattern); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public boolean supportsResultSetHoldability(final int holdability) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsResultSetHoldability(holdability); } }); } @Override @Suspendable public int getResultSetHoldability() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getResultSetHoldability(); } }); } @Override @Suspendable public int getDatabaseMajorVersion() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getDatabaseMajorVersion(); } }); } @Override @Suspendable public int getDatabaseMinorVersion() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getDatabaseMinorVersion(); } }); } @Override @Suspendable public int getJDBCMajorVersion() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getJDBCMajorVersion(); } }); } @Override @Suspendable public int getJDBCMinorVersion() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getJDBCMinorVersion(); } }); } @Override @Suspendable public int getSQLStateType() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return dbMeta.getSQLStateType(); } }); } @Override @Suspendable public boolean locatorsUpdateCopy() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.locatorsUpdateCopy(); } }); } @Override @Suspendable public boolean supportsStatementPooling() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsStatementPooling(); } }); } @Override @Suspendable public RowIdLifetime getRowIdLifetime() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<RowIdLifetime, SQLException>() { @Override public RowIdLifetime call() throws SQLException { return dbMeta.getRowIdLifetime(); } }); } @Override @Suspendable public FiberResultSet getSchemas(final String catalog, final String schemaPattern) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getSchemas(catalog, schemaPattern); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public boolean supportsStoredFunctionsUsingCallSyntax() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.supportsStoredFunctionsUsingCallSyntax(); } }); } @Override @Suspendable public boolean autoCommitFailureClosesAllResultSets() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.autoCommitFailureClosesAllResultSets(); } }); } @Override @Suspendable public FiberResultSet getClientInfoProperties() throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getClientInfoProperties(); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getFunctions(final String catalog, final String schemaPattern, final String functionNamePattern) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getFunctions(catalog, schemaPattern, functionNamePattern); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getFunctionColumns(final String catalog, final String schemaPattern, final String functionNamePattern, final String columnNamePattern) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getFunctionColumns(catalog, schemaPattern, functionNamePattern, columnNamePattern); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public FiberResultSet getPseudoColumns(final String catalog, final String schemaPattern, final String tableNamePattern, final String columnNamePattern) throws SQLException { final ResultSet result = JDBCFiberAsync.exec(executor, new CheckedCallable<ResultSet, SQLException>() { @Override public ResultSet call() throws SQLException { return dbMeta.getPseudoColumns(catalog, schemaPattern, tableNamePattern, columnNamePattern); } }); return new FiberResultSet(result, executor); } @Override @Suspendable public boolean generatedKeyAlwaysReturned() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return dbMeta.generatedKeyAlwaysReturned(); } }); } @Override public <T> T unwrap(final Class<T> iface) throws SQLException { return dbMeta.unwrap(iface); } @Override public boolean isWrapperFor(final Class<?> iface) throws SQLException { return dbMeta.isWrapperFor(iface); } @Override public int hashCode() { return dbMeta.hashCode(); } @SuppressWarnings("EqualsWhichDoesntCheckParameterClass") @Override public boolean equals(Object obj) { return dbMeta.equals(obj); } @Override public String toString() { return dbMeta.toString(); } }