Package io.trino.plugin.jdbc
Class BaseJdbcClient
java.lang.Object
io.trino.plugin.jdbc.BaseJdbcClient
- All Implemented Interfaces:
JdbcClient
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final ConnectionFactoryprotected final Stringprotected final QueryBuilderprotected final RemoteQueryModifier -
Constructor Summary
ConstructorsConstructorDescriptionBaseJdbcClient(String identifierQuote, ConnectionFactory connectionFactory, QueryBuilder queryBuilder, Set<String> jdbcTypesMappedToVarchar, IdentifierMapping identifierMapping, RemoteQueryModifier remoteQueryModifier, boolean supportsRetries) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddColumn(ConnectorSession session, JdbcTableHandle handle, ColumnMetadata column) protected voidaddColumn(ConnectorSession session, Connection connection, RemoteTableName table, ColumnMetadata column) protected PreparedQueryapplyQueryTransformations(JdbcTableHandle tableHandle, PreparedQuery query) beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata) beginInsertTable(ConnectorSession session, JdbcTableHandle tableHandle, List<JdbcColumnHandle> columns) buildInsertSql(JdbcOutputTableHandle handle, List<WriteFunction> columnWriters) buildProcedure(ConnectorSession session, Connection connection, JdbcSplit split, JdbcProcedureHandle procedureHandle) buildSql(ConnectorSession session, Connection connection, JdbcSplit split, JdbcTableHandle table, List<JdbcColumnHandle> columns) voidcommitCreateTable(ConnectorSession session, JdbcOutputTableHandle handle, Set<Long> pageSinkIds) protected voidcopyTableSchema(ConnectorSession session, Connection connection, String catalogName, String schemaName, String tableName, String newTableName, List<String> columnNames) voidcreateSchema(ConnectorSession session, String schemaName) protected voidcreateSchema(ConnectorSession session, Connection connection, String remoteSchemaName) voidcreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata) protected JdbcOutputTableHandlecreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, String targetTableName) protected JdbcOutputTableHandlecreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, String targetTableName, Optional<ColumnMetadata> pageSinkIdColumn) protected StringcreateTableSql(RemoteTableName remoteTableName, List<String> columns, ConnectorTableMetadata tableMetadata) Deprecated.createTableSqls(RemoteTableName remoteTableName, List<String> columns, ConnectorTableMetadata tableMetadata) delete(ConnectorSession session, JdbcTableHandle handle) voiddropColumn(ConnectorSession session, JdbcTableHandle handle, JdbcColumnHandle column) voiddropSchema(ConnectorSession session, String schemaName) protected voiddropSchema(ConnectorSession session, Connection connection, String remoteSchemaName) voiddropTable(ConnectorSession session, JdbcTableHandle handle) protected voiddropTable(ConnectorSession session, RemoteTableName remoteTableName, boolean temporaryTable) protected StringescapeObjectNameForMetadataQuery(String name, String escape) escapeObjectNameForMetadataQuery(Optional<String> name, String escape) protected voidexecute(ConnectorSession session, String query) protected voidexecute(ConnectorSession session, Connection connection, String query) protected booleanfilterSchema(String schemaName) voidfinishInsertTable(ConnectorSession session, JdbcOutputTableHandle handle, Set<Long> pageSinkIds) protected static Optional<ParameterizedExpression>getAdditionalPredicate(List<ParameterizedExpression> constraintExpressions, Optional<String> splitPredicate) protected Map<String,CaseSensitivity> getCaseSensitivityForColumns(ConnectorSession session, Connection connection, JdbcTableHandle tableHandle) protected StringgetColumnDefinitionSql(ConnectorSession session, ColumnMetadata column, String columnName) protected ResultSetgetColumns(JdbcTableHandle tableHandle, DatabaseMetaData metadata) getColumns(ConnectorSession session, JdbcTableHandle tableHandle) protected List<JdbcColumnHandle>getColumns(ConnectorSession session, Connection connection, ResultSetMetaData metadata) getConnection(ConnectorSession session, JdbcOutputTableHandle handle) getConnection(ConnectorSession session, JdbcSplit split, JdbcProcedureHandle procedureHandle) getConnection(ConnectorSession session, JdbcSplit split, JdbcTableHandle tableHandle) protected Optional<ColumnMapping>getForcedMappingToVarchar(JdbcTypeHandle typeHandle) protected IdentifierMappinggetInteger(ResultSet resultSet, String columnLabel) getPreparedStatement(Connection connection, String sql, Optional<Integer> columnCount) getProcedureHandle(ConnectorSession session, JdbcProcedureHandle.ProcedureQuery procedureQuery) getSchemaNames(ConnectorSession session) getSplits(ConnectorSession session, JdbcProcedureHandle procedureHandle) getSplits(ConnectorSession session, JdbcTableHandle tableHandle) getTableHandle(ConnectorSession session, PreparedQuery preparedQuery) getTableHandle(ConnectorSession session, SchemaTableName schemaTableName) getTableNames(ConnectorSession session, Optional<String> schema) getTableProperties(ConnectorSession session, JdbcTableHandle tableHandle) getTables(Connection connection, Optional<String> remoteSchemaName, Optional<String> remoteTableName) protected StringgetTableSchemaName(ResultSet resultSet) getTableStatistics(ConnectorSession session, JdbcTableHandle handle, TupleDomain<ColumnHandle> tupleDomain) implementJoin(ConnectorSession session, JoinType joinType, PreparedQuery leftSource, PreparedQuery rightSource, List<JdbcJoinCondition> joinConditions, Map<JdbcColumnHandle, String> rightAssignments, Map<JdbcColumnHandle, String> leftAssignments, JoinStatistics statistics) booleanisLimitGuaranteed(ConnectorSession session) protected booleanisSupportedJoinCondition(ConnectorSession session, JdbcJoinCondition joinCondition) booleanisTopNGuaranteed(ConnectorSession session) Reports whether result cardinality and ordering is guaranteed whenJdbcClient.supportsTopN(ConnectorSession, JdbcTableHandle, List)returns true.protected Optional<BiFunction<String,Long, String>> listSchemas(Connection connection) protected static Optional<ColumnMapping>mapToUnboundedVarchar(JdbcTypeHandle typeHandle) protected StringpostProcessInsertTableNameClause(ConnectorSession session, String tableName) prepareQuery(ConnectorSession session, JdbcTableHandle table, Optional<List<List<JdbcColumnHandle>>> groupingSets, List<JdbcColumnHandle> columns, Map<String, ParameterizedExpression> columnExpressions) protected PreparedQueryprepareQuery(ConnectorSession session, Connection connection, JdbcTableHandle table, Optional<List<List<JdbcColumnHandle>>> groupingSets, List<JdbcColumnHandle> columns, Map<String, ParameterizedExpression> columnExpressions, Optional<JdbcSplit> split) protected static booleanpreventTextualTypeAggregationPushdown(List<List<ColumnHandle>> groupingSets) quoted(RemoteTableName remoteTableName) protected StringvoidrenameColumn(ConnectorSession session, JdbcTableHandle handle, JdbcColumnHandle jdbcColumn, String newColumnName) protected voidrenameColumn(ConnectorSession session, Connection connection, RemoteTableName remoteTableName, String remoteColumnName, String newRemoteColumnName) voidrenameSchema(ConnectorSession session, String schemaName, String newSchemaName) protected voidrenameSchema(ConnectorSession session, Connection connection, String remoteSchemaName, String newRemoteSchemaName) voidrenameTable(ConnectorSession session, JdbcTableHandle handle, SchemaTableName newTableName) protected voidrenameTable(ConnectorSession session, String catalogName, String remoteSchemaName, String remoteTableName, SchemaTableName newTable) protected voidrenameTable(ConnectorSession session, Connection connection, String catalogName, String remoteSchemaName, String remoteTableName, String newRemoteSchemaName, String newRemoteTableName) voidrollbackCreateTable(ConnectorSession session, JdbcOutputTableHandle handle) voidsetColumnType(ConnectorSession session, JdbcTableHandle handle, JdbcColumnHandle column, Type type) booleanbooleanbooleansupportsTopN(ConnectorSession session, JdbcTableHandle handle, List<JdbcSortItem> sortOrder) toColumnMappings(ConnectorSession session, List<JdbcTypeHandle> typeHandles) protected Optional<BaseJdbcClient.TopNFunction>voidtruncateTable(ConnectorSession session, JdbcTableHandle handle) static StringvarcharLiteral(String value) protected voidverifyColumnName(DatabaseMetaData databaseMetadata, String columnName) protected voidverifySchemaName(DatabaseMetaData databaseMetadata, String schemaName) protected voidverifyTableName(DatabaseMetaData databaseMetadata, String tableName) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.trino.plugin.jdbc.JdbcClient
abortReadConnection, convertPredicate, getSystemTable, getTableComment, getTableScanRedirection, getTableStatistics, implementAggregation, schemaExists, setColumnComment, setTableComment, setTableProperties, supportsAggregationPushdown, toColumnMapping, toWriteMapping
-
Field Details
-
connectionFactory
-
queryBuilder
-
identifierQuote
-
jdbcTypesMappedToVarchar
-
queryModifier
-
-
Constructor Details
-
BaseJdbcClient
public BaseJdbcClient(String identifierQuote, ConnectionFactory connectionFactory, QueryBuilder queryBuilder, Set<String> jdbcTypesMappedToVarchar, IdentifierMapping identifierMapping, RemoteQueryModifier remoteQueryModifier, boolean supportsRetries)
-
-
Method Details
-
getIdentifierMapping
-
getSchemaNames
- Specified by:
getSchemaNamesin interfaceJdbcClient
-
listSchemas
-
filterSchema
-
getTableNames
- Specified by:
getTableNamesin interfaceJdbcClient
-
getTableHandle
public Optional<JdbcTableHandle> getTableHandle(ConnectorSession session, SchemaTableName schemaTableName) - Specified by:
getTableHandlein interfaceJdbcClient
-
getTableHandle
- Specified by:
getTableHandlein interfaceJdbcClient
-
getProcedureHandle
public JdbcProcedureHandle getProcedureHandle(ConnectorSession session, JdbcProcedureHandle.ProcedureQuery procedureQuery) - Specified by:
getProcedureHandlein interfaceJdbcClient
-
getColumns
protected List<JdbcColumnHandle> getColumns(ConnectorSession session, Connection connection, ResultSetMetaData metadata) throws SQLException - Throws:
SQLException
-
getColumns
- Specified by:
getColumnsin interfaceJdbcClient
-
getCaseSensitivityForColumns
protected Map<String,CaseSensitivity> getCaseSensitivityForColumns(ConnectorSession session, Connection connection, JdbcTableHandle tableHandle) -
getInteger
protected static Optional<Integer> getInteger(ResultSet resultSet, String columnLabel) throws SQLException - Throws:
SQLException
-
getColumns
protected ResultSet getColumns(JdbcTableHandle tableHandle, DatabaseMetaData metadata) throws SQLException - Throws:
SQLException
-
toColumnMappings
public List<ColumnMapping> toColumnMappings(ConnectorSession session, List<JdbcTypeHandle> typeHandles) Description copied from interface:JdbcClient- Specified by:
toColumnMappingsin interfaceJdbcClient
-
getForcedMappingToVarchar
-
mapToUnboundedVarchar
-
getSplits
- Specified by:
getSplitsin interfaceJdbcClient
-
getSplits
public ConnectorSplitSource getSplits(ConnectorSession session, JdbcProcedureHandle procedureHandle) - Specified by:
getSplitsin interfaceJdbcClient
-
getConnection
public Connection getConnection(ConnectorSession session, JdbcSplit split, JdbcTableHandle tableHandle) throws SQLException - Specified by:
getConnectionin interfaceJdbcClient- Throws:
SQLException
-
getConnection
public Connection getConnection(ConnectorSession session, JdbcSplit split, JdbcProcedureHandle procedureHandle) throws SQLException - Specified by:
getConnectionin interfaceJdbcClient- Throws:
SQLException
-
prepareQuery
public PreparedQuery prepareQuery(ConnectorSession session, JdbcTableHandle table, Optional<List<List<JdbcColumnHandle>>> groupingSets, List<JdbcColumnHandle> columns, Map<String, ParameterizedExpression> columnExpressions) - Specified by:
prepareQueryin interfaceJdbcClient
-
buildSql
public PreparedStatement buildSql(ConnectorSession session, Connection connection, JdbcSplit split, JdbcTableHandle table, List<JdbcColumnHandle> columns) throws SQLException - Specified by:
buildSqlin interfaceJdbcClient- Throws:
SQLException
-
buildProcedure
public CallableStatement buildProcedure(ConnectorSession session, Connection connection, JdbcSplit split, JdbcProcedureHandle procedureHandle) throws SQLException - Specified by:
buildProcedurein interfaceJdbcClient- Throws:
SQLException
-
prepareQuery
protected PreparedQuery prepareQuery(ConnectorSession session, Connection connection, JdbcTableHandle table, Optional<List<List<JdbcColumnHandle>>> groupingSets, List<JdbcColumnHandle> columns, Map<String, ParameterizedExpression> columnExpressions, Optional<JdbcSplit> split) -
getAdditionalPredicate
protected static Optional<ParameterizedExpression> getAdditionalPredicate(List<ParameterizedExpression> constraintExpressions, Optional<String> splitPredicate) -
implementJoin
public Optional<PreparedQuery> implementJoin(ConnectorSession session, JoinType joinType, PreparedQuery leftSource, PreparedQuery rightSource, List<JdbcJoinCondition> joinConditions, Map<JdbcColumnHandle, String> rightAssignments, Map<JdbcColumnHandle, String> leftAssignments, JoinStatistics statistics) - Specified by:
implementJoinin interfaceJdbcClient
-
isSupportedJoinCondition
protected boolean isSupportedJoinCondition(ConnectorSession session, JdbcJoinCondition joinCondition) -
applyQueryTransformations
-
createTable
- Specified by:
createTablein interfaceJdbcClient
-
beginCreateTable
public JdbcOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata) - Specified by:
beginCreateTablein interfaceJdbcClient
-
createTable
protected JdbcOutputTableHandle createTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, String targetTableName) throws SQLException - Throws:
SQLException
-
createTable
protected JdbcOutputTableHandle createTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, String targetTableName, Optional<ColumnMetadata> pageSinkIdColumn) throws SQLException - Throws:
SQLException
-
createTableSqls
protected List<String> createTableSqls(RemoteTableName remoteTableName, List<String> columns, ConnectorTableMetadata tableMetadata) -
createTableSql
@Deprecated protected String createTableSql(RemoteTableName remoteTableName, List<String> columns, ConnectorTableMetadata tableMetadata) Deprecated. -
getColumnDefinitionSql
protected String getColumnDefinitionSql(ConnectorSession session, ColumnMetadata column, String columnName) -
beginInsertTable
public JdbcOutputTableHandle beginInsertTable(ConnectorSession session, JdbcTableHandle tableHandle, List<JdbcColumnHandle> columns) - Specified by:
beginInsertTablein interfaceJdbcClient
-
copyTableSchema
protected void copyTableSchema(ConnectorSession session, Connection connection, String catalogName, String schemaName, String tableName, String newTableName, List<String> columnNames) -
commitCreateTable
public void commitCreateTable(ConnectorSession session, JdbcOutputTableHandle handle, Set<Long> pageSinkIds) - Specified by:
commitCreateTablein interfaceJdbcClient
-
renameTable
public void renameTable(ConnectorSession session, JdbcTableHandle handle, SchemaTableName newTableName) - Specified by:
renameTablein interfaceJdbcClient
-
renameTable
protected void renameTable(ConnectorSession session, String catalogName, String remoteSchemaName, String remoteTableName, SchemaTableName newTable) -
renameTable
protected void renameTable(ConnectorSession session, Connection connection, String catalogName, String remoteSchemaName, String remoteTableName, String newRemoteSchemaName, String newRemoteTableName) throws SQLException - Throws:
SQLException
-
finishInsertTable
public void finishInsertTable(ConnectorSession session, JdbcOutputTableHandle handle, Set<Long> pageSinkIds) - Specified by:
finishInsertTablein interfaceJdbcClient
-
postProcessInsertTableNameClause
-
addColumn
- Specified by:
addColumnin interfaceJdbcClient
-
addColumn
protected void addColumn(ConnectorSession session, Connection connection, RemoteTableName table, ColumnMetadata column) throws SQLException - Throws:
SQLException
-
renameColumn
public void renameColumn(ConnectorSession session, JdbcTableHandle handle, JdbcColumnHandle jdbcColumn, String newColumnName) - Specified by:
renameColumnin interfaceJdbcClient
-
renameColumn
protected void renameColumn(ConnectorSession session, Connection connection, RemoteTableName remoteTableName, String remoteColumnName, String newRemoteColumnName) throws SQLException - Throws:
SQLException
-
dropColumn
- Specified by:
dropColumnin interfaceJdbcClient
-
setColumnType
public void setColumnType(ConnectorSession session, JdbcTableHandle handle, JdbcColumnHandle column, Type type) - Specified by:
setColumnTypein interfaceJdbcClient
-
dropTable
- Specified by:
dropTablein interfaceJdbcClient
-
dropTable
protected void dropTable(ConnectorSession session, RemoteTableName remoteTableName, boolean temporaryTable) -
rollbackCreateTable
- Specified by:
rollbackCreateTablein interfaceJdbcClient
-
supportsRetries
public boolean supportsRetries()- Specified by:
supportsRetriesin interfaceJdbcClient
-
buildInsertSql
- Specified by:
buildInsertSqlin interfaceJdbcClient
-
getConnection
public Connection getConnection(ConnectorSession session, JdbcOutputTableHandle handle) throws SQLException - Specified by:
getConnectionin interfaceJdbcClient- Throws:
SQLException
-
getPreparedStatement
public PreparedStatement getPreparedStatement(Connection connection, String sql, Optional<Integer> columnCount) throws SQLException - Specified by:
getPreparedStatementin interfaceJdbcClient- Throws:
SQLException
-
getTables
public ResultSet getTables(Connection connection, Optional<String> remoteSchemaName, Optional<String> remoteTableName) throws SQLException - Throws:
SQLException
-
getTableTypes
-
getTableSchemaName
- Throws:
SQLException
-
getTableStatistics
public TableStatistics getTableStatistics(ConnectorSession session, JdbcTableHandle handle, TupleDomain<ColumnHandle> tupleDomain) - Specified by:
getTableStatisticsin interfaceJdbcClient
-
createSchema
- Specified by:
createSchemain interfaceJdbcClient
-
createSchema
protected void createSchema(ConnectorSession session, Connection connection, String remoteSchemaName) throws SQLException - Throws:
SQLException
-
dropSchema
- Specified by:
dropSchemain interfaceJdbcClient
-
dropSchema
protected void dropSchema(ConnectorSession session, Connection connection, String remoteSchemaName) throws SQLException - Throws:
SQLException
-
renameSchema
- Specified by:
renameSchemain interfaceJdbcClient
-
renameSchema
protected void renameSchema(ConnectorSession session, Connection connection, String remoteSchemaName, String newRemoteSchemaName) throws SQLException - Throws:
SQLException
-
execute
-
execute
protected void execute(ConnectorSession session, Connection connection, String query) throws SQLException - Throws:
SQLException
-
preventTextualTypeAggregationPushdown
protected static boolean preventTextualTypeAggregationPushdown(List<List<ColumnHandle>> groupingSets) -
supportsTopN
public boolean supportsTopN(ConnectorSession session, JdbcTableHandle handle, List<JdbcSortItem> sortOrder) - Specified by:
supportsTopNin interfaceJdbcClient
-
topNFunction
-
isTopNGuaranteed
Description copied from interface:JdbcClientReports whether result cardinality and ordering is guaranteed whenJdbcClient.supportsTopN(ConnectorSession, JdbcTableHandle, List)returns true.- Specified by:
isTopNGuaranteedin interfaceJdbcClient
-
supportsLimit
public boolean supportsLimit()- Specified by:
supportsLimitin interfaceJdbcClient
-
limitFunction
-
isLimitGuaranteed
- Specified by:
isLimitGuaranteedin interfaceJdbcClient
-
quoted
- Specified by:
quotedin interfaceJdbcClient
-
quoted
- Specified by:
quotedin interfaceJdbcClient
-
getTableProperties
- Specified by:
getTablePropertiesin interfaceJdbcClient
-
delete
- Specified by:
deletein interfaceJdbcClient
-
truncateTable
- Specified by:
truncateTablein interfaceJdbcClient
-
verifySchemaName
protected void verifySchemaName(DatabaseMetaData databaseMetadata, String schemaName) throws SQLException - Throws:
SQLException
-
verifyTableName
protected void verifyTableName(DatabaseMetaData databaseMetadata, String tableName) throws SQLException - Throws:
SQLException
-
verifyColumnName
protected void verifyColumnName(DatabaseMetaData databaseMetadata, String columnName) throws SQLException - Throws:
SQLException
-
quoted
-
varcharLiteral
-
escapeObjectNameForMetadataQuery
-
escapeObjectNameForMetadataQuery
-