/* * 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.drill.jdbc; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.calcite.avatica.util.Quoting; /** * Drill-specific {@link DatabaseMetaData}. */ public interface DrillDatabaseMetaData extends DatabaseMetaData { // For matching order of java.sql.DatabaseMetaData: // // allProceduresAreCallable() // allTablesAreSelectable() // getURL() // getUserName() // isReadOnly() /** * <strong>Drill</strong>: * Reports that NULL values are sorted high. * @return {@code true} */ public boolean nullsAreSortedHigh() throws SQLException; /** * <strong>Drill</strong>: * Reports that NULL values are not sorted low. * @return {@code false} */ public boolean nullsAreSortedLow() throws SQLException; /** * <strong>Drill</strong>: * Reports that NULL values are not sorted first. * @return {@code false} */ public boolean nullsAreSortedAtStart() throws SQLException; /** * <strong>Drill</strong>: * Reports that NULL values are not sorted last. * @return {@code false} */ public boolean nullsAreSortedAtEnd() throws SQLException; // For matching order of java.sql.DatabaseMetaData: // getDatabaseProductName() // getDatabaseProductVersion() // getDriverName() // getDriverVersion() // getDriverMajorVersion() // getDriverMinorVersion() // usesLocalFiles() // usesLocalFilePerTable() // supportsMixedCaseIdentifiers() // storesUpperCaseIdentifiers() // storesLowerCaseIdentifiers() // storesMixedCaseIdentifiers() // supportsMixedCaseQuotedIdentifiers() // storesUpperCaseQuotedIdentifiers() // storesLowerCaseQuotedIdentifiers() // storesMixedCaseQuotedIdentifiers() /** * <strong>Drill</strong>: * Reports current SQL identifier quoting character. * <li>{@link Quoting#BACK_TICK} - default back-quote character ("{@code `}"; Unicode U+0060; "GRAVE ACCENT") </li> * <li>{@link Quoting#DOUBLE_QUOTE} - double quote character ("{@code "}"; Unicode U+0022; 'QUOTATION MARK')</li> * <li>{@link Quoting#BRACKET} - brackets characters ("{@code [}"; Unicode U+005B; 'LEFT SQUARE BRACKET' and * "{@code ]}"; Unicode U+005D; 'RIGHT SQUARE BRACKET')</li> * * @return current SQL identifier quoting character. Note: 'LEFT SQUARE BRACKET' is returned, * when {@link Quoting#BRACKET} is set. */ @Override String getIdentifierQuoteString() throws SQLException; // For matching order of java.sql.DatabaseMetaData: // getSQLKeywords() // getNumericFunctions() // getStringFunctions() // getSystemFunctions() // getTimeDateFunctions() // getSearchStringEscape() // getExtraNameCharacters() // supportsAlterTableWithAddColumn() // supportsAlterTableWithDropColumn() // supportsColumnAliasing() // nullPlusNonNullIsNull() // supportsConvert() // supportsConvert( int, int ) // supportsTableCorrelationNames() // supportsDifferentTableCorrelationNames() // supportsExpressionsInOrderBy() // supportsOrderByUnrelated() // supportsGroupBy() // supportsGroupByUnrelated() // supportsGroupByBeyondSelect() // supportsLikeEscapeClause() // supportsMultipleResultSets() // supportsMultipleTransactions() // supportsNonNullableColumns() // supportsMinimumSQLGrammar() // supportsCoreSQLGrammar() // supportsExtendedSQLGrammar() // supportsANSI92EntryLevelSQL() // supportsANSI92IntermediateSQL() // supportsANSI92FullSQL() // supportsIntegrityEnhancementFacility() // supportsOuterJoins() // supportsFullOuterJoins() // supportsLimitedOuterJoins() // getSchemaTerm() // getProcedureTerm() // getCatalogTerm() // isCatalogAtStart() // getCatalogSeparator() // supportsSchemasInDataManipulation() // supportsSchemasInProcedureCalls() // supportsSchemasInTableDefinitions() // supportsSchemasInIndexDefinitions() // supportsSchemasInPrivilegeDefinitions() // supportsCatalogsInDataManipulation() // supportsCatalogsInProcedureCalls() // supportsCatalogsInTableDefinitions() // supportsCatalogsInIndexDefinitions() // supportsCatalogsInPrivilegeDefinitions() // supportsPositionedDelete() // supportsPositionedUpdate() // supportsSelectForUpdate() // supportsStoredProcedures() // supportsSubqueriesInComparisons() // supportsSubqueriesInExists() // supportsSubqueriesInIns() // supportsSubqueriesInQuantifieds() // supportsCorrelatedSubqueries() // supportsUnion() // supportsUnionAll() // supportsOpenCursorsAcrossCommit() // supportsOpenCursorsAcrossRollback() // supportsOpenStatementsAcrossCommit() // supportsOpenStatementsAcrossRollback() // getMaxBinaryLiteralLength() // getMaxCharLiteralLength() // getMaxColumnNameLength() // getMaxColumnsInGroupBy() // getMaxColumnsInIndex() // getMaxColumnsInOrderBy() // getMaxColumnsInSelect() // getMaxColumnsInTable() // getMaxConnections() // getMaxCursorNameLength() // getMaxIndexLength() // getMaxSchemaNameLength() // getMaxProcedureNameLength() // getMaxCatalogNameLength() // getMaxRowSize() // doesMaxRowSizeIncludeBlobs() // getMaxStatementLength() // getMaxStatements() // getMaxTableNameLength() // getMaxTablesInSelect() // getMaxUserNameLength() // getDefaultTransactionIsolation() // supportsTransactions() // supportsTransactionIsolationLevel( int ) // supportsDataDefinitionAndDataManipulationTransactions() // supportsDataManipulationTransactionsOnly() // dataDefinitionCausesTransactionCommit() // dataDefinitionIgnoredInTransactions() /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getProcedures( String catalog, String schemaPattern, String procedureNamePattern) throws SQLException; /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getProcedureColumns( String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern ) throws SQLException; // For matching order of java.sql.DatabaseMetaData: // // getTables( String, String, String, String[] ) // getSchemas() // getCatalogs() /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getTableTypes() throws SQLException; // For matching order of java.sql.DatabaseMetaData: // // getColumns( String, String, String, String ) /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getColumnPrivileges( String catalog, String schema, String table, String columnNamePattern ) throws SQLException; /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getTablePrivileges( String catalog, String schemaPattern, String tableNamePattern ) throws SQLException; /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getBestRowIdentifier( String catalog, String schema, String table, int scope, boolean nullable ) throws SQLException; /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getVersionColumns( String catalog, String schema, String table ) throws SQLException; /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getPrimaryKeys( String catalog, String schema, String table ) throws SQLException; /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getImportedKeys( String catalog, String schema, String table ) throws SQLException; /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getExportedKeys( String catalog, String schema, String table ) throws SQLException; /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getCrossReference( String parentCatalog, String parentSchema, String parentTable, String foreignCatalog, String foreignSchema, String foreignTable ) throws SQLException; /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getTypeInfo() throws SQLException; /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getIndexInfo( String catalog, String schema, String table, boolean unique, boolean approximate ) throws SQLException; // For matching order of java.sql.DatabaseMetaData: // // --------------------------JDBC 2.0----------------------------- // supportsResultSetType( int ) // supportsResultSetConcurrency( int, int ) // ownUpdatesAreVisible( int ) // ownDeletesAreVisible( int ) // ownInsertsAreVisible( int ) // othersUpdatesAreVisible( int ) // othersDeletesAreVisible( int ) // othersInsertsAreVisible( int ) // updatesAreDetected( int ) // deletesAreDetected( int ) // insertsAreDetected( int ) // supportsBatchUpdates() /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getUDTs( String catalog, String schemaPattern, String typeNamePattern, int[] types ) throws SQLException; // For matching order of java.sql.DatabaseMetaData: // // getConnection() // ------------------- JDBC 3.0 ------------------------- // supportsSavepoints() // supportsNamedParameters() // supportsMultipleOpenResults() // supportsGetGeneratedKeys() /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getSuperTypes( String catalog, String schemaPattern, String typeNamePattern ) throws SQLException; /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getSuperTables( String catalog, String schemaPattern, String tableNamePattern ) throws SQLException; /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getAttributes( String catalog, String schemaPattern, String typeNamePattern, String attributeNamePattern ) throws SQLException; // For matching order of java.sql.DatabaseMetaData: // // supportsResultSetHoldability( int ) // getResultSetHoldability() // getDatabaseMajorVersion() // getDatabaseMinorVersion() // getJDBCMajorVersion() // getJDBCMinorVersion() // getSQLStateType() // locatorsUpdateCopy() // supportsStatementPooling() // ------------------------- JDBC 4.0 ----------------------------------- // getRowIdLifetime() // getSchemas( String, String ) // supportsStoredFunctionsUsingCallSyntax() // autoCommitFailureClosesAllResultSets() /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getClientInfoProperties() throws SQLException; /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getFunctions( String catalog, String schemaPattern, String functionNamePattern ) throws SQLException; /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getFunctionColumns( String catalog, String schemaPattern, String functionNamePattern, String columnNamePattern ) throws SQLException; // --------------------------JDBC 4.1 ----------------------------- /** * <strong>Drill</strong>: Currently, returns an empty (zero-row) result set. * (Note: Currently, result set might not have the expected columns.) */ @Override ResultSet getPseudoColumns( String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern ) throws SQLException; // For matching order of java.sql.DatabaseMetaData: // // generatedKeyAlwaysReturned(); }