You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by el...@apache.org on 2016/03/07 19:27:53 UTC
[15/59] [partial] calcite git commit: [CALCITE-1078] Detach avatica
from the core calcite Maven project
http://git-wip-us.apache.org/repos/asf/calcite/blob/5cee486f/avatica/src/main/java/org/apache/calcite/avatica/AvaticaDatabaseMetaData.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaDatabaseMetaData.java b/avatica/src/main/java/org/apache/calcite/avatica/AvaticaDatabaseMetaData.java
deleted file mode 100644
index b57f36c..0000000
--- a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaDatabaseMetaData.java
+++ /dev/null
@@ -1,1416 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.calcite.avatica;
-
-import org.apache.calcite.avatica.AvaticaConnection.CallableWithoutException;
-import org.apache.calcite.avatica.remote.MetaDataOperation;
-import org.apache.calcite.avatica.util.Casing;
-import org.apache.calcite.avatica.util.Quoting;
-
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.ResultSet;
-import java.sql.RowIdLifetime;
-import java.sql.SQLException;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-import static org.apache.calcite.avatica.InternalProperty.CASE_SENSITIVE;
-import static org.apache.calcite.avatica.InternalProperty.NULL_SORTING;
-import static org.apache.calcite.avatica.InternalProperty.NullSorting;
-import static org.apache.calcite.avatica.InternalProperty.QUOTED_CASING;
-import static org.apache.calcite.avatica.InternalProperty.QUOTING;
-import static org.apache.calcite.avatica.InternalProperty.UNQUOTED_CASING;
-
-/**
- * Implementation of {@link java.sql.DatabaseMetaData}
- * for the Avatica engine.
- *
- * <p>This class has sub-classes which implement JDBC 3.0 and JDBC 4.0 APIs;
- * it is instantiated using {@link AvaticaFactory#newDatabaseMetaData}.</p>
- */
-public class AvaticaDatabaseMetaData implements DatabaseMetaData {
- private final AvaticaConnection connection;
-
- protected AvaticaDatabaseMetaData(AvaticaConnection connection) {
- this.connection = connection;
- }
-
- // Helper methods
-
- private NullSorting nullSorting() {
- return NULL_SORTING.getEnum(getProperties(), NullSorting.class);
- }
-
- private Quoting quoting() {
- return QUOTING.getEnum(getProperties(), Quoting.class);
- }
-
- private Casing unquotedCasing() {
- return UNQUOTED_CASING.getEnum(getProperties(), Casing.class);
- }
-
- private Casing quotedCasing() {
- return QUOTED_CASING.getEnum(getProperties(), Casing.class);
- }
-
- private boolean caseSensitive() {
- return CASE_SENSITIVE.getBoolean(getProperties());
- }
-
- // JDBC methods
-
- public boolean allProceduresAreCallable() throws SQLException {
- return true;
- }
-
- public boolean allTablesAreSelectable() throws SQLException {
- return true;
- }
-
- public String getURL() throws SQLException {
- return connection.url;
- }
-
- public String getUserName() throws SQLException {
- return connection.info.getProperty("user");
- }
-
- public boolean isReadOnly() throws SQLException {
- return true;
- }
-
- public boolean nullsAreSortedHigh() throws SQLException {
- return nullSorting() == NullSorting.HIGH;
- }
-
- public boolean nullsAreSortedLow() throws SQLException {
- return nullSorting() == NullSorting.LOW;
- }
-
- public boolean nullsAreSortedAtStart() throws SQLException {
- return nullSorting() == NullSorting.START;
- }
-
- public boolean nullsAreSortedAtEnd() throws SQLException {
- return nullSorting() == NullSorting.END;
- }
-
- public String getDatabaseProductName() throws SQLException {
- return connection.driver.version.productName;
- }
-
- public String getDatabaseProductVersion() throws SQLException {
- return connection.driver.version.productVersion;
- }
-
- public String getDriverName() throws SQLException {
- return connection.driver.version.name;
- }
-
- public String getDriverVersion() throws SQLException {
- return connection.driver.version.versionString;
- }
-
- public int getDriverMajorVersion() {
- return connection.driver.getMajorVersion();
- }
-
- public int getDriverMinorVersion() {
- return connection.driver.getMinorVersion();
- }
-
- public boolean usesLocalFiles() throws SQLException {
- return false;
- }
-
- public boolean usesLocalFilePerTable() throws SQLException {
- return false;
- }
-
- public boolean storesMixedCaseIdentifiers() throws SQLException {
- return !caseSensitive() && unquotedCasing() == Casing.UNCHANGED;
- }
-
- public boolean supportsMixedCaseIdentifiers() throws SQLException {
- return caseSensitive() && unquotedCasing() == Casing.UNCHANGED;
- }
-
- public boolean storesUpperCaseIdentifiers() throws SQLException {
- return unquotedCasing() == Casing.TO_UPPER;
- }
-
- public boolean storesLowerCaseIdentifiers() throws SQLException {
- return unquotedCasing() == Casing.TO_LOWER;
- }
-
- public boolean storesMixedCaseQuotedIdentifiers() throws SQLException {
- return !caseSensitive() && quotedCasing() == Casing.UNCHANGED;
- }
-
- public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException {
- return caseSensitive() && quotedCasing() == Casing.UNCHANGED;
- }
-
- public boolean storesUpperCaseQuotedIdentifiers() throws SQLException {
- return quotedCasing() == Casing.TO_UPPER;
- }
-
- public boolean storesLowerCaseQuotedIdentifiers() throws SQLException {
- return quotedCasing() == Casing.TO_LOWER;
- }
-
- public String getIdentifierQuoteString() throws SQLException {
- return quoting().string;
- }
-
- private Map<InternalProperty, Object> getProperties() {
- return connection.properties;
- }
-
- public String getSQLKeywords() throws SQLException {
- return connection.invokeWithRetries(
- new CallableWithoutException<String>() {
- public String call() {
- return Meta.DatabaseProperty.GET_S_Q_L_KEYWORDS
- .getProp(connection.meta, connection.handle, String.class);
- }
- });
- }
-
- public String getNumericFunctions() throws SQLException {
- return connection.invokeWithRetries(
- new CallableWithoutException<String>() {
- public String call() {
- return Meta.DatabaseProperty.GET_NUMERIC_FUNCTIONS
- .getProp(connection.meta, connection.handle, String.class);
- }
- });
- }
-
- public String getStringFunctions() throws SQLException {
- return connection.invokeWithRetries(
- new CallableWithoutException<String>() {
- public String call() {
- return Meta.DatabaseProperty.GET_STRING_FUNCTIONS
- .getProp(connection.meta, connection.handle, String.class);
- }
- });
- }
-
- public String getSystemFunctions() throws SQLException {
- return connection.invokeWithRetries(
- new CallableWithoutException<String>() {
- public String call() {
- return Meta.DatabaseProperty.GET_SYSTEM_FUNCTIONS
- .getProp(connection.meta, connection.handle, String.class);
- }
- });
- }
-
- public String getTimeDateFunctions() throws SQLException {
- return connection.invokeWithRetries(
- new CallableWithoutException<String>() {
- public String call() {
- return Meta.DatabaseProperty.GET_TIME_DATE_FUNCTIONS
- .getProp(connection.meta, connection.handle, String.class);
- }
- });
- }
-
- public String getSearchStringEscape() throws SQLException {
- return "\\";
- }
-
- public String getExtraNameCharacters() throws SQLException {
- return "";
- }
-
- public boolean supportsAlterTableWithAddColumn() throws SQLException {
- return false;
- }
-
- public boolean supportsAlterTableWithDropColumn() throws SQLException {
- return false;
- }
-
- public boolean supportsColumnAliasing() throws SQLException {
- return true;
- }
-
- public boolean nullPlusNonNullIsNull() throws SQLException {
- return true;
- }
-
- public boolean supportsConvert() throws SQLException {
- return true;
- }
-
- public boolean supportsConvert(int fromType, int toType) throws SQLException {
- return false; // TODO: more detail
- }
-
- public boolean supportsTableCorrelationNames() throws SQLException {
- return true;
- }
-
- public boolean supportsDifferentTableCorrelationNames() throws SQLException {
- return true;
- }
-
- public boolean supportsExpressionsInOrderBy() throws SQLException {
- return true;
- }
-
- public boolean supportsOrderByUnrelated() throws SQLException {
- return true;
- }
-
- public boolean supportsGroupBy() throws SQLException {
- return true;
- }
-
- public boolean supportsGroupByUnrelated() throws SQLException {
- return true;
- }
-
- public boolean supportsGroupByBeyondSelect() throws SQLException {
- return true;
- }
-
- public boolean supportsLikeEscapeClause() throws SQLException {
- return true;
- }
-
- public boolean supportsMultipleResultSets() throws SQLException {
- return false;
- }
-
- public boolean supportsMultipleTransactions() throws SQLException {
- return false;
- }
-
- public boolean supportsNonNullableColumns() throws SQLException {
- return true;
- }
-
- public boolean supportsMinimumSQLGrammar() throws SQLException {
- return true;
- }
-
- public boolean supportsCoreSQLGrammar() throws SQLException {
- return true;
- }
-
- public boolean supportsExtendedSQLGrammar() throws SQLException {
- return true;
- }
-
- public boolean supportsANSI92EntryLevelSQL() throws SQLException {
- return true;
- }
-
- public boolean supportsANSI92IntermediateSQL() throws SQLException {
- return true;
- }
-
- public boolean supportsANSI92FullSQL() throws SQLException {
- return true;
- }
-
- public boolean supportsIntegrityEnhancementFacility() throws SQLException {
- return false;
- }
-
- public boolean supportsOuterJoins() throws SQLException {
- return true;
- }
-
- public boolean supportsFullOuterJoins() throws SQLException {
- return true;
- }
-
- public boolean supportsLimitedOuterJoins() throws SQLException {
- return true;
- }
-
- public String getSchemaTerm() throws SQLException {
- return "schema";
- }
-
- public String getProcedureTerm() throws SQLException {
- return "procedure";
- }
-
- public String getCatalogTerm() throws SQLException {
- return "catalog";
- }
-
- public boolean isCatalogAtStart() throws SQLException {
- return true;
- }
-
- public String getCatalogSeparator() throws SQLException {
- return ".";
- }
-
- public boolean supportsSchemasInDataManipulation() throws SQLException {
- return true;
- }
-
- public boolean supportsSchemasInProcedureCalls() throws SQLException {
- return true;
- }
-
- public boolean supportsSchemasInTableDefinitions() throws SQLException {
- return true;
- }
-
- public boolean supportsSchemasInIndexDefinitions() throws SQLException {
- return true; // except that we don't support index definitions
- }
-
- public boolean supportsSchemasInPrivilegeDefinitions() throws SQLException {
- return true; // except that we don't support privilege definitions
- }
-
- public boolean supportsCatalogsInDataManipulation() throws SQLException {
- return true;
- }
-
- public boolean supportsCatalogsInProcedureCalls() throws SQLException {
- return true;
- }
-
- public boolean supportsCatalogsInTableDefinitions() throws SQLException {
- return true;
- }
-
- public boolean supportsCatalogsInIndexDefinitions() throws SQLException {
- return true; // except that we don't support index definitions
- }
-
- public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException {
- return true; // except that we don't support privilege definitions
- }
-
- public boolean supportsPositionedDelete() throws SQLException {
- return false;
- }
-
- public boolean supportsPositionedUpdate() throws SQLException {
- return false;
- }
-
- public boolean supportsSelectForUpdate() throws SQLException {
- return false;
- }
-
- public boolean supportsStoredProcedures() throws SQLException {
- return false;
- }
-
- public boolean supportsSubqueriesInComparisons() throws SQLException {
- return true;
- }
-
- public boolean supportsSubqueriesInExists() throws SQLException {
- return true;
- }
-
- public boolean supportsSubqueriesInIns() throws SQLException {
- return true;
- }
-
- public boolean supportsSubqueriesInQuantifieds() throws SQLException {
- return false;
- }
-
- public boolean supportsCorrelatedSubqueries() throws SQLException {
- return true;
- }
-
- public boolean supportsUnion() throws SQLException {
- return true;
- }
-
- public boolean supportsUnionAll() throws SQLException {
- return true;
- }
-
- public boolean supportsOpenCursorsAcrossCommit() throws SQLException {
- return false;
- }
-
- public boolean supportsOpenCursorsAcrossRollback() throws SQLException {
- return false;
- }
-
- public boolean supportsOpenStatementsAcrossCommit() throws SQLException {
- return false;
- }
-
- public boolean supportsOpenStatementsAcrossRollback() throws SQLException {
- return false;
- }
-
- public int getMaxBinaryLiteralLength() throws SQLException {
- return 0;
- }
-
- public int getMaxCharLiteralLength() throws SQLException {
- return 0;
- }
-
- public int getMaxColumnNameLength() throws SQLException {
- return 0;
- }
-
- public int getMaxColumnsInGroupBy() throws SQLException {
- return 0;
- }
-
- public int getMaxColumnsInIndex() throws SQLException {
- return 0;
- }
-
- public int getMaxColumnsInOrderBy() throws SQLException {
- return 0;
- }
-
- public int getMaxColumnsInSelect() throws SQLException {
- return 0;
- }
-
- public int getMaxColumnsInTable() throws SQLException {
- return 0;
- }
-
- public int getMaxConnections() throws SQLException {
- return 0;
- }
-
- public int getMaxCursorNameLength() throws SQLException {
- return 0;
- }
-
- public int getMaxIndexLength() throws SQLException {
- return 0;
- }
-
- public int getMaxSchemaNameLength() throws SQLException {
- return 0;
- }
-
- public int getMaxProcedureNameLength() throws SQLException {
- return 0;
- }
-
- public int getMaxCatalogNameLength() throws SQLException {
- return 0;
- }
-
- public int getMaxRowSize() throws SQLException {
- return 0;
- }
-
- public boolean doesMaxRowSizeIncludeBlobs() throws SQLException {
- return false;
- }
-
- public int getMaxStatementLength() throws SQLException {
- return 0;
- }
-
- public int getMaxStatements() throws SQLException {
- return 0;
- }
-
- public int getMaxTableNameLength() throws SQLException {
- return 0;
- }
-
- public int getMaxTablesInSelect() throws SQLException {
- return 0;
- }
-
- public int getMaxUserNameLength() throws SQLException {
- return 0;
- }
-
- public int getDefaultTransactionIsolation() throws SQLException {
- return connection.invokeWithRetries(
- new CallableWithoutException<Integer>() {
- public Integer call() {
- return Meta.DatabaseProperty.GET_DEFAULT_TRANSACTION_ISOLATION
- .getProp(connection.meta, connection.handle, Integer.class);
- }
- });
- }
-
- public boolean supportsTransactions() throws SQLException {
- return false;
- }
-
- public boolean supportsTransactionIsolationLevel(int level)
- throws SQLException {
- return level == Connection.TRANSACTION_NONE;
- }
-
- public boolean supportsDataDefinitionAndDataManipulationTransactions()
- throws SQLException {
- return false;
- }
-
- public boolean supportsDataManipulationTransactionsOnly()
- throws SQLException {
- return true;
- }
-
- public boolean dataDefinitionCausesTransactionCommit() throws SQLException {
- return true;
- }
-
- public boolean dataDefinitionIgnoredInTransactions() throws SQLException {
- return false;
- }
-
- public ResultSet getProcedures(
- final String catalog,
- final String schemaPattern,
- final String procedureNamePattern) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getProcedures(connection.handle, catalog, pat(schemaPattern),
- pat(procedureNamePattern)),
- new QueryState(MetaDataOperation.GET_PROCEDURES, catalog, schemaPattern,
- procedureNamePattern));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getProcedureColumns(
- final String catalog,
- final String schemaPattern,
- final String procedureNamePattern,
- final String columnNamePattern) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getProcedureColumns(connection.handle, catalog,
- pat(schemaPattern), pat(procedureNamePattern), pat(columnNamePattern)),
- new QueryState(MetaDataOperation.GET_PROCEDURE_COLUMNS, catalog, schemaPattern,
- procedureNamePattern, columnNamePattern));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getTables(
- final String catalog,
- final String schemaPattern,
- final String tableNamePattern,
- final String[] types) throws SQLException {
- final List<String> typeList = types == null ? null : Arrays.asList(types);
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getTables(connection.handle, catalog, pat(schemaPattern),
- pat(tableNamePattern), typeList),
- new QueryState(MetaDataOperation.GET_TABLES, catalog, schemaPattern,
- tableNamePattern, types));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- private static Meta.Pat pat(String schemaPattern) {
- return Meta.Pat.of(schemaPattern);
- }
-
- public ResultSet getSchemas(
- final String catalog, final String schemaPattern) throws SQLException {
- // TODO: add a 'catch ... throw new SQLException' logic to this and other
- // getXxx methods. Right now any error will throw a RuntimeException
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getSchemas(connection.handle, catalog, pat(schemaPattern)),
- new QueryState(MetaDataOperation.GET_SCHEMAS_WITH_ARGS, catalog,
- schemaPattern));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getSchemas() throws SQLException {
- return getSchemas(null, null);
- }
-
- public ResultSet getCatalogs() throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(connection.meta.getCatalogs(connection.handle),
- new QueryState(MetaDataOperation.GET_CATALOGS));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getTableTypes() throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(connection.meta.getTableTypes(connection.handle),
- new QueryState(MetaDataOperation.GET_TABLE_TYPES));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getColumns(
- final String catalog,
- final String schemaPattern,
- final String tableNamePattern,
- final String columnNamePattern) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getColumns(connection.handle, catalog, pat(schemaPattern),
- pat(tableNamePattern), pat(columnNamePattern)),
- new QueryState(MetaDataOperation.GET_COLUMNS, catalog, schemaPattern,
- tableNamePattern, columnNamePattern));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getColumnPrivileges(
- final String catalog,
- final String schema,
- final String table,
- final String columnNamePattern) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getColumnPrivileges(connection.handle, catalog, schema, table,
- pat(columnNamePattern)),
- new QueryState(MetaDataOperation.GET_COLUMN_PRIVILEGES, catalog, schema, table,
- columnNamePattern));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getTablePrivileges(
- final String catalog,
- final String schemaPattern,
- final String tableNamePattern) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getTablePrivileges(connection.handle, catalog,
- pat(schemaPattern), pat(tableNamePattern)),
- new QueryState(MetaDataOperation.GET_TABLE_PRIVILEGES, catalog, schemaPattern,
- tableNamePattern));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getBestRowIdentifier(
- final String catalog,
- final String schema,
- final String table,
- final int scope,
- final boolean nullable) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getBestRowIdentifier(connection.handle, catalog, schema, table,
- scope, nullable),
- new QueryState(MetaDataOperation.GET_BEST_ROW_IDENTIFIER, catalog, table, scope,
- nullable));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getVersionColumns(
- final String catalog, final String schema, final String table) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getVersionColumns(connection.handle, catalog, schema, table),
- new QueryState(MetaDataOperation.GET_VERSION_COLUMNS, catalog, schema, table));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getPrimaryKeys(
- final String catalog, final String schema, final String table) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getPrimaryKeys(connection.handle, catalog, schema, table),
- new QueryState(MetaDataOperation.GET_PRIMARY_KEYS, catalog, schema, table));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getImportedKeys(
- final String catalog, final String schema, final String table) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getImportedKeys(connection.handle, catalog, schema, table),
- new QueryState(MetaDataOperation.GET_IMPORTED_KEYS, catalog, schema, table));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getExportedKeys(
- final String catalog, final String schema, final String table) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getExportedKeys(connection.handle, catalog, schema, table),
- new QueryState(MetaDataOperation.GET_EXPORTED_KEYS, catalog, schema, table));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getCrossReference(
- final String parentCatalog,
- final String parentSchema,
- final String parentTable,
- final String foreignCatalog,
- final String foreignSchema,
- final String foreignTable) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getCrossReference(connection.handle, parentCatalog,
- parentSchema, parentTable, foreignCatalog, foreignSchema, foreignTable),
- new QueryState(MetaDataOperation.GET_CROSS_REFERENCE, parentCatalog,
- parentSchema, parentTable, foreignCatalog, foreignSchema, foreignTable));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getTypeInfo() throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(connection.meta.getTypeInfo(connection.handle),
- new QueryState(MetaDataOperation.GET_TYPE_INFO));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getIndexInfo(
- final String catalog,
- final String schema,
- final String table,
- final boolean unique,
- final boolean approximate) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getIndexInfo(connection.handle, catalog, schema, table, unique,
- approximate),
- new QueryState(MetaDataOperation.GET_INDEX_INFO, catalog, schema, table, unique,
- approximate));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public boolean supportsResultSetType(int type) throws SQLException {
- return type == ResultSet.TYPE_FORWARD_ONLY;
- }
-
- public boolean supportsResultSetConcurrency(
- int type, int concurrency) throws SQLException {
- return type == ResultSet.TYPE_FORWARD_ONLY
- && concurrency == ResultSet.CONCUR_READ_ONLY;
- }
-
- public boolean ownUpdatesAreVisible(int type) throws SQLException {
- throw connection.helper.todo();
- }
-
- public boolean ownDeletesAreVisible(int type) throws SQLException {
- throw connection.helper.todo();
- }
-
- public boolean ownInsertsAreVisible(int type) throws SQLException {
- throw connection.helper.todo();
- }
-
- public boolean othersUpdatesAreVisible(int type) throws SQLException {
- throw connection.helper.todo();
- }
-
- public boolean othersDeletesAreVisible(int type) throws SQLException {
- throw connection.helper.todo();
- }
-
- public boolean othersInsertsAreVisible(int type) throws SQLException {
- throw connection.helper.todo();
- }
-
- public boolean updatesAreDetected(int type) throws SQLException {
- throw connection.helper.todo();
- }
-
- public boolean deletesAreDetected(int type) throws SQLException {
- throw connection.helper.todo();
- }
-
- public boolean insertsAreDetected(int type) throws SQLException {
- throw connection.helper.todo();
- }
-
- public boolean supportsBatchUpdates() throws SQLException {
- return false;
- }
-
- public ResultSet getUDTs(
- final String catalog,
- final String schemaPattern,
- final String typeNamePattern,
- final int[] types) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getUDTs(connection.handle, catalog, pat(schemaPattern),
- pat(typeNamePattern), types),
- new QueryState(MetaDataOperation.GET_UDTS, catalog, schemaPattern,
- typeNamePattern, types));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public Connection getConnection() throws SQLException {
- return connection;
- }
-
- public boolean supportsSavepoints() throws SQLException {
- return false;
- }
-
- public boolean supportsNamedParameters() throws SQLException {
- return false;
- }
-
- public boolean supportsMultipleOpenResults() throws SQLException {
- return false;
- }
-
- public boolean supportsGetGeneratedKeys() throws SQLException {
- return false;
- }
-
- public ResultSet getSuperTypes(
- final String catalog,
- final String schemaPattern,
- final String typeNamePattern) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getSuperTypes(connection.handle, catalog, pat(schemaPattern),
- pat(typeNamePattern)),
- new QueryState(MetaDataOperation.GET_SUPER_TYPES, catalog, schemaPattern,
- typeNamePattern));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getSuperTables(
- final String catalog,
- final String schemaPattern,
- final String tableNamePattern) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getSuperTables(connection.handle, catalog, pat(schemaPattern),
- pat(tableNamePattern)),
- new QueryState(MetaDataOperation.GET_SUPER_TABLES, catalog, schemaPattern,
- tableNamePattern));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getAttributes(
- final String catalog,
- final String schemaPattern,
- final String typeNamePattern,
- final String attributeNamePattern) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getAttributes(connection.handle, catalog, pat(schemaPattern),
- pat(typeNamePattern), pat(attributeNamePattern)),
- new QueryState(MetaDataOperation.GET_ATTRIBUTES, catalog, schemaPattern,
- typeNamePattern, attributeNamePattern));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public boolean supportsResultSetHoldability(int holdability)
- throws SQLException {
- throw connection.helper.todo();
- }
-
- public int getResultSetHoldability() {
- return ResultSet.HOLD_CURSORS_OVER_COMMIT;
- }
-
- public int getDatabaseMajorVersion() throws SQLException {
- return connection.driver.version.databaseMajorVersion;
- }
-
- public int getDatabaseMinorVersion() throws SQLException {
- return connection.driver.version.databaseMinorVersion;
- }
-
- public int getJDBCMajorVersion() throws SQLException {
- return connection.factory.getJdbcMajorVersion();
- }
-
- public int getJDBCMinorVersion() throws SQLException {
- return connection.factory.getJdbcMinorVersion();
- }
-
- public int getSQLStateType() throws SQLException {
- return sqlStateSQL;
- }
-
- public boolean locatorsUpdateCopy() throws SQLException {
- return true;
- }
-
- public boolean supportsStatementPooling() throws SQLException {
- return false;
- }
-
- public RowIdLifetime getRowIdLifetime() throws SQLException {
- return RowIdLifetime.ROWID_UNSUPPORTED;
- }
-
- public boolean supportsStoredFunctionsUsingCallSyntax()
- throws SQLException {
- return true;
- }
-
- public boolean autoCommitFailureClosesAllResultSets() throws SQLException {
- return false;
- }
-
- public ResultSet getClientInfoProperties() throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getClientInfoProperties(connection.handle),
- new QueryState(MetaDataOperation.GET_CLIENT_INFO_PROPERTIES));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getFunctions(
- final String catalog,
- final String schemaPattern,
- final String functionNamePattern) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getFunctions(connection.handle, catalog, pat(schemaPattern),
- pat(functionNamePattern)),
- new QueryState(MetaDataOperation.GET_FUNCTIONS, catalog, schemaPattern,
- functionNamePattern));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getFunctionColumns(
- final String catalog,
- final String schemaPattern,
- final String functionNamePattern,
- final String columnNamePattern) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getFunctionColumns(connection.handle, catalog,
- pat(schemaPattern), pat(functionNamePattern), pat(columnNamePattern)),
- new QueryState(MetaDataOperation.GET_FUNCTION_COLUMNS, catalog,
- schemaPattern, functionNamePattern, columnNamePattern));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public ResultSet getPseudoColumns(
- final String catalog,
- final String schemaPattern,
- final String tableNamePattern,
- final String columnNamePattern) throws SQLException {
- try {
- return connection.invokeWithRetries(
- new CallableWithoutException<ResultSet>() {
- public ResultSet call() {
- try {
- return connection.createResultSet(
- connection.meta.getPseudoColumns(connection.handle, catalog, pat(schemaPattern),
- pat(tableNamePattern), pat(columnNamePattern)),
- new QueryState(MetaDataOperation.GET_PSEUDO_COLUMNS, catalog, schemaPattern,
- tableNamePattern, columnNamePattern));
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- });
- } catch (RuntimeException e) {
- Throwable cause = e.getCause();
- if (cause instanceof SQLException) {
- throw (SQLException) cause;
- }
- throw e;
- }
- }
-
- public boolean generatedKeyAlwaysReturned() throws SQLException {
- return false;
- }
-
- // implement Wrapper
-
- public <T> T unwrap(Class<T> iface) throws SQLException {
- if (iface.isInstance(this)) {
- return iface.cast(this);
- }
- throw connection.helper.createException(
- "does not implement '" + iface + "'");
- }
-
- public boolean isWrapperFor(Class<?> iface) throws SQLException {
- return iface.isInstance(this);
- }
-}
-
-// End AvaticaDatabaseMetaData.java
http://git-wip-us.apache.org/repos/asf/calcite/blob/5cee486f/avatica/src/main/java/org/apache/calcite/avatica/AvaticaFactory.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaFactory.java b/avatica/src/main/java/org/apache/calcite/avatica/AvaticaFactory.java
deleted file mode 100644
index 1a2a97f..0000000
--- a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaFactory.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.calcite.avatica;
-
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.util.Properties;
-import java.util.TimeZone;
-
-/**
- * Factory for JDBC objects.
- *
- * <p>There is an implementation for each supported JDBC version.</p>
- */
-public interface AvaticaFactory {
- int getJdbcMajorVersion();
-
- int getJdbcMinorVersion();
-
- AvaticaConnection newConnection(
- UnregisteredDriver driver,
- AvaticaFactory factory,
- String url,
- Properties info) throws SQLException;
-
- AvaticaStatement newStatement(AvaticaConnection connection,
- /*@Nullable*/ Meta.StatementHandle h, int resultSetType,
- int resultSetConcurrency, int resultSetHoldability) throws SQLException;
-
- AvaticaPreparedStatement newPreparedStatement(AvaticaConnection connection,
- /*@Nullable*/ Meta.StatementHandle h, Meta.Signature signature,
- int resultSetType, int resultSetConcurrency, int resultSetHoldability)
- throws SQLException;
-
- /**
- * Creates a result set. You will then need to call
- * {@link AvaticaResultSet#execute()} on it.
- *
- * @param statement Statement
- * @param state The state used to create this result set
- * @param signature Prepared statement
- * @param timeZone Time zone
- * @param firstFrame Frame containing the first (or perhaps only) rows in the
- * result, or null if an execute/fetch is required
- * @return Result set
- */
- AvaticaResultSet newResultSet(AvaticaStatement statement, QueryState state,
- Meta.Signature signature, TimeZone timeZone, Meta.Frame firstFrame)
- throws SQLException;
-
- /**
- * Creates meta data for the database.
- *
- * @return Database meta data
- */
- AvaticaDatabaseMetaData newDatabaseMetaData(AvaticaConnection connection);
-
- /**
- * Creates meta data for a result set.
- *
- * @param statement Statement
- * @param signature Prepared statement
- * @return Result set meta data
- */
- ResultSetMetaData newResultSetMetaData(AvaticaStatement statement,
- Meta.Signature signature) throws SQLException;
-}
-
-// End AvaticaFactory.java
http://git-wip-us.apache.org/repos/asf/calcite/blob/5cee486f/avatica/src/main/java/org/apache/calcite/avatica/AvaticaJdbc41Factory.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaJdbc41Factory.java b/avatica/src/main/java/org/apache/calcite/avatica/AvaticaJdbc41Factory.java
deleted file mode 100644
index f410dc8..0000000
--- a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaJdbc41Factory.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.calcite.avatica;
-
-import java.io.InputStream;
-import java.io.Reader;
-import java.sql.NClob;
-import java.sql.ResultSetMetaData;
-import java.sql.RowId;
-import java.sql.SQLException;
-import java.sql.SQLXML;
-import java.util.Properties;
-import java.util.TimeZone;
-
-/**
- * Implementation of {@link AvaticaFactory} for JDBC 4.1 (corresponds to JDK
- * 1.7).
- */
-@SuppressWarnings("UnusedDeclaration")
-class AvaticaJdbc41Factory implements AvaticaFactory {
- private final int major;
- private final int minor;
-
- /** Creates a JDBC factory. */
- public AvaticaJdbc41Factory() {
- this(4, 1);
- }
-
- /** Creates a JDBC factory with given major/minor version number. */
- protected AvaticaJdbc41Factory(int major, int minor) {
- this.major = major;
- this.minor = minor;
- }
-
- public int getJdbcMajorVersion() {
- return major;
- }
-
- public int getJdbcMinorVersion() {
- return minor;
- }
-
- public AvaticaConnection newConnection(
- UnregisteredDriver driver,
- AvaticaFactory factory,
- String url,
- Properties info) {
- return new AvaticaJdbc41Connection(driver, factory, url, info);
- }
-
- public AvaticaDatabaseMetaData newDatabaseMetaData(
- AvaticaConnection connection) {
- return new AvaticaJdbc41DatabaseMetaData(connection);
- }
-
- public AvaticaStatement newStatement(AvaticaConnection connection,
- Meta.StatementHandle h, int resultSetType, int resultSetConcurrency,
- int resultSetHoldability) {
- return new AvaticaJdbc41Statement(connection, h, resultSetType,
- resultSetConcurrency, resultSetHoldability);
- }
-
- public AvaticaPreparedStatement newPreparedStatement(
- AvaticaConnection connection, Meta.StatementHandle h,
- Meta.Signature signature, int resultSetType, int resultSetConcurrency,
- int resultSetHoldability)
- throws SQLException {
- return new AvaticaJdbc41PreparedStatement(connection, h, signature,
- resultSetType, resultSetConcurrency, resultSetHoldability);
- }
-
- public AvaticaResultSet newResultSet(AvaticaStatement statement,
- QueryState state, Meta.Signature signature, TimeZone timeZone, Meta.Frame firstFrame) {
- final ResultSetMetaData metaData =
- newResultSetMetaData(statement, signature);
- return new AvaticaResultSet(statement, state, signature, metaData, timeZone,
- firstFrame);
- }
-
- public AvaticaResultSetMetaData newResultSetMetaData(
- AvaticaStatement statement, Meta.Signature signature) {
- return new AvaticaResultSetMetaData(statement, null, signature);
- }
-
- /** Implementation of Connection for JDBC 4.1. */
- private static class AvaticaJdbc41Connection extends AvaticaConnection {
- AvaticaJdbc41Connection(UnregisteredDriver driver,
- AvaticaFactory factory,
- String url,
- Properties info) {
- super(driver, factory, url, info);
- }
- }
-
- /** Implementation of Statement for JDBC 4.1. */
- private static class AvaticaJdbc41Statement extends AvaticaStatement {
- public AvaticaJdbc41Statement(AvaticaConnection connection,
- Meta.StatementHandle h, int resultSetType, int resultSetConcurrency,
- int resultSetHoldability) {
- super(connection, h, resultSetType, resultSetConcurrency,
- resultSetHoldability);
- }
- }
-
- /** Implementation of PreparedStatement for JDBC 4.1. */
- private static class AvaticaJdbc41PreparedStatement
- extends AvaticaPreparedStatement {
- AvaticaJdbc41PreparedStatement(AvaticaConnection connection,
- Meta.StatementHandle h, Meta.Signature signature, int resultSetType,
- int resultSetConcurrency, int resultSetHoldability)
- throws SQLException {
- super(connection, h, signature, resultSetType, resultSetConcurrency,
- resultSetHoldability);
- }
-
- public void setRowId(
- int parameterIndex,
- RowId x) throws SQLException {
- getSite(parameterIndex).setRowId(x);
- }
-
- public void setNString(
- int parameterIndex, String value) throws SQLException {
- getSite(parameterIndex).setNString(value);
- }
-
- public void setNCharacterStream(
- int parameterIndex,
- Reader value,
- long length) throws SQLException {
- getSite(parameterIndex)
- .setNCharacterStream(value, length);
- }
-
- public void setNClob(
- int parameterIndex,
- NClob value) throws SQLException {
- getSite(parameterIndex).setNClob(value);
- }
-
- public void setClob(
- int parameterIndex,
- Reader reader,
- long length) throws SQLException {
- getSite(parameterIndex)
- .setClob(reader, length);
- }
-
- public void setBlob(
- int parameterIndex,
- InputStream inputStream,
- long length) throws SQLException {
- getSite(parameterIndex)
- .setBlob(inputStream, length);
- }
-
- public void setNClob(
- int parameterIndex,
- Reader reader,
- long length) throws SQLException {
- getSite(parameterIndex)
- .setNClob(reader, length);
- }
-
- public void setSQLXML(
- int parameterIndex, SQLXML xmlObject) throws SQLException {
- getSite(parameterIndex).setSQLXML(xmlObject);
- }
-
- public void setAsciiStream(
- int parameterIndex,
- InputStream x,
- long length) throws SQLException {
- getSite(parameterIndex)
- .setAsciiStream(x, length);
- }
-
- public void setBinaryStream(
- int parameterIndex,
- InputStream x,
- long length) throws SQLException {
- getSite(parameterIndex)
- .setBinaryStream(x, length);
- }
-
- public void setCharacterStream(
- int parameterIndex,
- Reader reader,
- long length) throws SQLException {
- getSite(parameterIndex)
- .setCharacterStream(reader, length);
- }
-
- public void setAsciiStream(
- int parameterIndex, InputStream x) throws SQLException {
- getSite(parameterIndex).setAsciiStream(x);
- }
-
- public void setBinaryStream(
- int parameterIndex, InputStream x) throws SQLException {
- getSite(parameterIndex).setBinaryStream(x);
- }
-
- public void setCharacterStream(
- int parameterIndex, Reader reader) throws SQLException {
- getSite(parameterIndex)
- .setCharacterStream(reader);
- }
-
- public void setNCharacterStream(
- int parameterIndex, Reader value) throws SQLException {
- getSite(parameterIndex)
- .setNCharacterStream(value);
- }
-
- public void setClob(
- int parameterIndex,
- Reader reader) throws SQLException {
- getSite(parameterIndex).setClob(reader);
- }
-
- public void setBlob(
- int parameterIndex, InputStream inputStream) throws SQLException {
- getSite(parameterIndex).setBlob(inputStream);
- }
-
- public void setNClob(
- int parameterIndex, Reader reader) throws SQLException {
- getSite(parameterIndex).setNClob(reader);
- }
- }
-
- /** Implementation of DatabaseMetaData for JDBC 4.1. */
- private static class AvaticaJdbc41DatabaseMetaData
- extends AvaticaDatabaseMetaData {
- AvaticaJdbc41DatabaseMetaData(AvaticaConnection connection) {
- super(connection);
- }
- }
-}
-
-// End AvaticaJdbc41Factory.java
http://git-wip-us.apache.org/repos/asf/calcite/blob/5cee486f/avatica/src/main/java/org/apache/calcite/avatica/AvaticaParameter.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaParameter.java b/avatica/src/main/java/org/apache/calcite/avatica/AvaticaParameter.java
deleted file mode 100644
index 3c5a9ab..0000000
--- a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaParameter.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.calcite.avatica;
-
-import org.apache.calcite.avatica.proto.Common;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-import java.util.Objects;
-
-/**
- * Metadata for a parameter.
- */
-public class AvaticaParameter {
- public final boolean signed;
- public final int precision;
- public final int scale;
- public final int parameterType;
- public final String typeName;
- public final String className;
- public final String name;
-
- @JsonCreator
- public AvaticaParameter(
- @JsonProperty("signed") boolean signed,
- @JsonProperty("precision") int precision,
- @JsonProperty("scale") int scale,
- @JsonProperty("parameterType") int parameterType,
- @JsonProperty("typeName") String typeName,
- @JsonProperty("className") String className,
- @JsonProperty("name") String name) {
- this.signed = signed;
- this.precision = precision;
- this.scale = scale;
- this.parameterType = parameterType;
- this.typeName = typeName;
- this.className = className;
- this.name = name;
- }
-
- public Common.AvaticaParameter toProto() {
- Common.AvaticaParameter.Builder builder = Common.AvaticaParameter.newBuilder();
-
- builder.setSigned(signed);
- builder.setPrecision(precision);
- builder.setScale(scale);
- builder.setParameterType(parameterType);
- builder.setTypeName(typeName);
- builder.setClassName(className);
- builder.setName(name);
-
- return builder.build();
- }
-
- public static AvaticaParameter fromProto(Common.AvaticaParameter proto) {
- return new AvaticaParameter(proto.getSigned(), proto.getPrecision(),
- proto.getScale(), proto.getParameterType(), proto.getTypeName(),
- proto.getClassName(), proto.getName());
- }
-
- @Override public int hashCode() {
- return Objects.hash(className, name, parameterType, precision, scale,
- signed, typeName);
- }
-
- @Override public boolean equals(Object obj) {
- if (obj == this) {
- return true;
- }
- if (obj instanceof AvaticaParameter) {
- AvaticaParameter other = (AvaticaParameter) obj;
-
- if (null == className) {
- if (null != other.className) {
- return false;
- }
- } else if (!className.equals(other.className)) {
- return false;
- }
-
- if (null == name) {
- if (null != other.name) {
- return false;
- }
- } else if (!name.equals(other.name)) {
- return false;
- }
-
- if (parameterType != other.parameterType) {
- return false;
- }
-
- if (precision != other.precision) {
- return false;
- }
-
- if (scale != other.scale) {
- return false;
- }
-
- if (signed != other.signed) {
- return false;
- }
-
- if (null == typeName) {
- if (null != other.typeName) {
- return false;
- }
- } else if (!typeName.equals(other.typeName)) {
- return false;
- }
-
- return true;
- }
-
- return false;
- }
-}
-
-// End AvaticaParameter.java
http://git-wip-us.apache.org/repos/asf/calcite/blob/5cee486f/avatica/src/main/java/org/apache/calcite/avatica/AvaticaPreparedStatement.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaPreparedStatement.java b/avatica/src/main/java/org/apache/calcite/avatica/AvaticaPreparedStatement.java
deleted file mode 100644
index f3a950a..0000000
--- a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaPreparedStatement.java
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.calcite.avatica;
-
-import org.apache.calcite.avatica.Meta.Signature;
-import org.apache.calcite.avatica.remote.TypedValue;
-
-import java.io.InputStream;
-import java.io.Reader;
-import java.math.BigDecimal;
-import java.net.URL;
-import java.sql.Array;
-import java.sql.Blob;
-import java.sql.Clob;
-import java.sql.Date;
-import java.sql.ParameterMetaData;
-import java.sql.PreparedStatement;
-import java.sql.Ref;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.sql.Time;
-import java.sql.Timestamp;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.List;
-
-/**
- * Implementation of {@link java.sql.PreparedStatement}
- * for the Avatica engine.
- *
- * <p>This class has sub-classes which implement JDBC 3.0 and JDBC 4.0 APIs;
- * it is instantiated using {@link AvaticaFactory#newPreparedStatement}.</p>
- */
-public abstract class AvaticaPreparedStatement
- extends AvaticaStatement
- implements PreparedStatement, ParameterMetaData {
- private final ResultSetMetaData resultSetMetaData;
- private Calendar calendar;
- protected final TypedValue[] slots;
-
- /**
- * Creates an AvaticaPreparedStatement.
- *
- * @param connection Connection
- * @param h Statement handle
- * @param signature Result of preparing statement
- * @param resultSetType Result set type
- * @param resultSetConcurrency Result set concurrency
- * @param resultSetHoldability Result set holdability
- * @throws SQLException If fails due to underlying implementation reasons.
- */
- protected AvaticaPreparedStatement(AvaticaConnection connection,
- Meta.StatementHandle h,
- Meta.Signature signature,
- int resultSetType,
- int resultSetConcurrency,
- int resultSetHoldability) throws SQLException {
- super(connection, h, resultSetType, resultSetConcurrency,
- resultSetHoldability, signature);
- this.slots = new TypedValue[signature.parameters.size()];
- this.resultSetMetaData =
- connection.factory.newResultSetMetaData(this, signature);
- }
-
- @Override protected List<TypedValue> getParameterValues() {
- return Arrays.asList(slots);
- }
-
- /** Returns a calendar in the connection's time zone, creating one the first
- * time this method is called.
- *
- * <p>Uses the calendar to offset date-time values when calling methods such
- * as {@link #setDate(int, Date)}.
- *
- * <p>A note on thread-safety. This method does not strictly need to be
- * {@code synchronized}, because JDBC does not promise thread safety if
- * different threads are accessing the same statement, or even different
- * objects within a particular connection.
- *
- * <p>The calendar returned is to be used only within this statement, and
- * JDBC only allows access to a statement from within one thread, so
- * therefore does not need to be synchronized when accessed.
- */
- protected synchronized Calendar getCalendar() {
- if (calendar == null) {
- calendar = Calendar.getInstance(connection.getTimeZone());
- }
- return calendar;
- }
-
- // implement PreparedStatement
-
- public ResultSet executeQuery() throws SQLException {
- this.updateCount = -1;
- final Signature sig = getSignature();
- return getConnection().executeQueryInternal(this, sig, null,
- new QueryState(sig.sql), false);
- }
-
- public ParameterMetaData getParameterMetaData() throws SQLException {
- return this;
- }
-
- public final int executeUpdate() throws SQLException {
- return (int) executeLargeUpdate();
- }
-
- public long executeLargeUpdate() throws SQLException {
- getConnection().executeQueryInternal(this, null, null,
- new QueryState(getSignature().sql), true);
- return updateCount;
- }
-
- public void setNull(int parameterIndex, int sqlType) throws SQLException {
- getSite(parameterIndex).setNull(sqlType);
- }
-
- public void setBoolean(int parameterIndex, boolean x) throws SQLException {
- getSite(parameterIndex).setBoolean(x);
- }
-
- public void setByte(int parameterIndex, byte x) throws SQLException {
- getSite(parameterIndex).setByte(x);
- }
-
- public void setShort(int parameterIndex, short x) throws SQLException {
- getSite(parameterIndex).setShort(x);
- }
-
- public void setInt(int parameterIndex, int x) throws SQLException {
- getSite(parameterIndex).setInt(x);
- }
-
- public void setLong(int parameterIndex, long x) throws SQLException {
- getSite(parameterIndex).setLong(x);
- }
-
- public void setFloat(int parameterIndex, float x) throws SQLException {
- getSite(parameterIndex).setFloat(x);
- }
-
- public void setDouble(int parameterIndex, double x) throws SQLException {
- getSite(parameterIndex).setDouble(x);
- }
-
- public void setBigDecimal(int parameterIndex, BigDecimal x)
- throws SQLException {
- getSite(parameterIndex).setBigDecimal(x);
- }
-
- public void setString(int parameterIndex, String x) throws SQLException {
- getSite(parameterIndex).setString(x);
- }
-
- public void setBytes(int parameterIndex, byte[] x) throws SQLException {
- getSite(parameterIndex).setBytes(x);
- }
-
- public void setAsciiStream(int parameterIndex, InputStream x, int length)
- throws SQLException {
- getSite(parameterIndex).setAsciiStream(x, length);
- }
-
- public void setUnicodeStream(int parameterIndex, InputStream x, int length)
- throws SQLException {
- getSite(parameterIndex).setUnicodeStream(x, length);
- }
-
- public void setBinaryStream(int parameterIndex, InputStream x, int length)
- throws SQLException {
- getSite(parameterIndex).setBinaryStream(x, length);
- }
-
- public void clearParameters() throws SQLException {
- for (int i = 0; i < slots.length; i++) {
- slots[i] = null;
- }
- }
-
- public void setObject(int parameterIndex, Object x, int targetSqlType)
- throws SQLException {
- getSite(parameterIndex).setObject(x, targetSqlType);
- }
-
- public void setObject(int parameterIndex, Object x) throws SQLException {
- getSite(parameterIndex).setObject(x);
- }
-
- public boolean execute() throws SQLException {
- this.updateCount = -1;
- // We don't know if this is actually an update or a query, so call it a query so we pass the
- // Signature to the server.
- getConnection().executeQueryInternal(this, getSignature(), null,
- new QueryState(getSignature().sql), false);
- // Result set is null for DML or DDL.
- // Result set is closed if user cancelled the query.
- return openResultSet != null && !openResultSet.isClosed();
- }
-
- public void addBatch() throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public void setCharacterStream(int parameterIndex, Reader reader, int length)
- throws SQLException {
- getSite(parameterIndex).setCharacterStream(reader, length);
- }
-
- public void setRef(int parameterIndex, Ref x) throws SQLException {
- getSite(parameterIndex).setRef(x);
- }
-
- public void setBlob(int parameterIndex, Blob x) throws SQLException {
- getSite(parameterIndex).setBlob(x);
- }
-
- public void setClob(int parameterIndex, Clob x) throws SQLException {
- getSite(parameterIndex).setClob(x);
- }
-
- public void setArray(int parameterIndex, Array x) throws SQLException {
- getSite(parameterIndex).setArray(x);
- }
-
- public ResultSetMetaData getMetaData() {
- return resultSetMetaData;
- }
-
- public void setDate(int parameterIndex, Date x, Calendar calendar)
- throws SQLException {
- getSite(parameterIndex).setDate(x, calendar);
- }
-
- public void setDate(int parameterIndex, Date x) throws SQLException {
- setDate(parameterIndex, x, getCalendar());
- }
-
- public void setTime(int parameterIndex, Time x, Calendar calendar)
- throws SQLException {
- getSite(parameterIndex).setTime(x, calendar);
- }
-
- public void setTime(int parameterIndex, Time x) throws SQLException {
- setTime(parameterIndex, x, getCalendar());
- }
-
- public void setTimestamp(int parameterIndex, Timestamp x, Calendar calendar)
- throws SQLException {
- getSite(parameterIndex).setTimestamp(x, calendar);
- }
-
- public void setTimestamp(int parameterIndex, Timestamp x)
- throws SQLException {
- setTimestamp(parameterIndex, x, getCalendar());
- }
-
- public void setNull(int parameterIndex, int sqlType, String typeName)
- throws SQLException {
- getSite(parameterIndex).setNull(sqlType, typeName);
- }
-
- public void setURL(int parameterIndex, URL x) throws SQLException {
- getSite(parameterIndex).setURL(x);
- }
-
- public void setObject(int parameterIndex, Object x, int targetSqlType,
- int scaleOrLength) throws SQLException {
- getSite(parameterIndex).setObject(x, targetSqlType, scaleOrLength);
- }
-
- // implement ParameterMetaData
-
- protected AvaticaParameter getParameter(int param) throws SQLException {
- try {
- return getSignature().parameters.get(param - 1);
- } catch (IndexOutOfBoundsException e) {
- //noinspection ThrowableResultOfMethodCallIgnored
- throw connection.helper.toSQLException(
- connection.helper.createException(
- "parameter ordinal " + param + " out of range"));
- }
- }
-
- protected AvaticaSite getSite(int param) throws SQLException {
- final AvaticaParameter parameter = getParameter(param);
- return new AvaticaSite(parameter, getCalendar(), param - 1, slots);
- }
-
- public int getParameterCount() {
- return getSignature().parameters.size();
- }
-
- public int isNullable(int param) throws SQLException {
- return ParameterMetaData.parameterNullableUnknown;
- }
-
- public boolean isSigned(int index) throws SQLException {
- return getParameter(index).signed;
- }
-
- public int getPrecision(int index) throws SQLException {
- return getParameter(index).precision;
- }
-
- public int getScale(int index) throws SQLException {
- return getParameter(index).scale;
- }
-
- public int getParameterType(int index) throws SQLException {
- return getParameter(index).parameterType;
- }
-
- public String getParameterTypeName(int index) throws SQLException {
- return getParameter(index).typeName;
- }
-
- public String getParameterClassName(int index) throws SQLException {
- return getParameter(index).className;
- }
-
- public int getParameterMode(int param) throws SQLException {
- //noinspection UnusedDeclaration
- AvaticaParameter paramDef = getParameter(param); // forces param range check
- return ParameterMetaData.parameterModeIn;
- }
-}
-
-// End AvaticaPreparedStatement.java