blob: f530cc64fe8d18107d3a9695054d11cb8eb835fa [file] [log] [blame]
/*
* 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;
/**
* 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();
}