Package io.trino.plugin.sqlserver
Class SqlServerClient
java.lang.Object
io.trino.plugin.jdbc.BaseJdbcClient
io.trino.plugin.sqlserver.SqlServerClient
- All Implemented Interfaces:
JdbcClient
-
Nested Class Summary
Nested classes/interfaces inherited from class io.trino.plugin.jdbc.BaseJdbcClient
BaseJdbcClient.TopNFunction -
Field Summary
FieldsFields inherited from class io.trino.plugin.jdbc.BaseJdbcClient
connectionFactory, identifierQuote, jdbcTypesMappedToVarchar, queryBuilder, queryModifier -
Constructor Summary
ConstructorsConstructorDescriptionSqlServerClient(BaseJdbcConfig config, JdbcStatisticsConfig statisticsConfig, ConnectionFactory connectionFactory, QueryBuilder queryBuilder, IdentifierMapping identifierMapping, RemoteQueryModifier queryModifier) -
Method Summary
Modifier and TypeMethodDescriptionvoidabortReadConnection(Connection connection, ResultSet resultSet) beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata) beginInsertTable(ConnectorSession session, JdbcTableHandle tableHandle, List<JdbcColumnHandle> columns) convertPredicate(ConnectorSession session, ConnectorExpression expression, Map<String, ColumnHandle> assignments) protected voidcopyTableSchema(ConnectorSession session, Connection connection, String catalogName, String schemaName, String tableName, String newTableName, List<String> columnNames) protected StringcreateTableSql(RemoteTableName remoteTableName, List<String> columns, ConnectorTableMetadata tableMetadata) protected voiddropSchema(ConnectorSession session, Connection connection, String remoteSchemaName, boolean cascade) protected voidprotected StringescapeObjectNameForMetadataQuery(String name, String escape) protected Map<String,CaseSensitivity> getCaseSensitivityForColumns(ConnectorSession session, Connection connection, JdbcTableHandle tableHandle) getConnection(ConnectorSession session, JdbcOutputTableHandle handle) getProcedureHandle(ConnectorSession session, JdbcProcedureHandle.ProcedureQuery procedureQuery) getTableProperties(ConnectorSession session, JdbcTableHandle tableHandle) getTableStatistics(ConnectorSession session, JdbcTableHandle handle) implementAggregation(ConnectorSession session, AggregateFunction aggregate, Map<String, ColumnHandle> assignments) 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) protected booleanisTableLockNeeded(ConnectorSession session) Table lock is a prerequisite for `minimal logging` in SQL ServerbooleanisTopNGuaranteed(ConnectorSession session) protected Optional<BiFunction<String,Long, String>> protected StringpostProcessInsertTableNameClause(ConnectorSession session, String tableName) protected voidrenameColumn(ConnectorSession session, Connection connection, RemoteTableName remoteTableName, String remoteColumnName, String newRemoteColumnName) voidrenameSchema(ConnectorSession session, String schemaName, String newSchemaName) protected voidrenameTable(ConnectorSession session, Connection connection, String catalogName, String remoteSchemaName, String remoteTableName, String newRemoteSchemaName, String newRemoteTableName) static <T> TretryOnDeadlock(dev.failsafe.function.CheckedSupplier<T> supplier, String attemptLogMessage) voidsetColumnType(ConnectorSession session, JdbcTableHandle handle, JdbcColumnHandle column, Type type) booleansupportsAggregationPushdown(ConnectorSession session, JdbcTableHandle table, List<AggregateFunction> aggregates, Map<String, ColumnHandle> assignments, List<List<ColumnHandle>> groupingSets) booleansupportsTopN(ConnectorSession session, JdbcTableHandle handle, List<JdbcSortItem> sortOrder) toColumnMapping(ConnectorSession session, Connection connection, JdbcTypeHandle typeHandle) protected Optional<BaseJdbcClient.TopNFunction>toWriteMapping(ConnectorSession session, Type type) static ColumnMappingstatic SliceWriteFunctionprotected voidverifyColumnName(DatabaseMetaData databaseMetadata, String columnName) protected voidverifyTableName(DatabaseMetaData databaseMetadata, String tableName) Methods inherited from class io.trino.plugin.jdbc.BaseJdbcClient
addColumn, addColumn, applyQueryTransformations, buildInsertSql, buildProcedure, buildSql, commitCreateTable, createSchema, createSchema, createTable, createTable, createTable, createTableSqls, delete, dropColumn, dropSchema, dropTable, dropTable, escapeObjectNameForMetadataQuery, execute, execute, filterSchema, finishInsertTable, getAdditionalPredicate, getColumnDefinitionSql, getColumns, getColumns, getColumns, getConnection, getConnection, getForcedMappingToVarchar, getIdentifierMapping, getInteger, getMaxWriteParallelism, getPreparedStatement, getRemoteIdentifiers, getSchemaNames, getSplits, getSplits, getTableHandle, getTableHandle, getTableNames, getTables, getTableSchemaName, getTableStatistics, getTableTypes, listSchemas, mapToUnboundedVarchar, prepareQuery, prepareQuery, preventTextualTypeAggregationPushdown, quoted, quoted, quoted, renameColumn, renameSchema, renameTable, renameTable, rollbackCreateTable, supportsLimit, supportsRetries, toColumnMappings, truncateTable, varcharLiteral, verifySchemaNameMethods 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
getSupportedType, getSystemTable, getTableComment, getTableScanRedirection, schemaExists, setColumnComment, setTableComment, setTableProperties
-
Field Details
-
SQL_SERVER_MAX_LIST_EXPRESSIONS
public static final int SQL_SERVER_MAX_LIST_EXPRESSIONS- See Also:
-
SQL_SERVER_DEADLOCK_ERROR_CODE
public static final int SQL_SERVER_DEADLOCK_ERROR_CODE- See Also:
-
BIGINT_TYPE
-
-
Constructor Details
-
SqlServerClient
@Inject public SqlServerClient(BaseJdbcConfig config, JdbcStatisticsConfig statisticsConfig, ConnectionFactory connectionFactory, QueryBuilder queryBuilder, IdentifierMapping identifierMapping, RemoteQueryModifier queryModifier)
-
-
Method Details
-
dropSchema
protected void dropSchema(ConnectorSession session, Connection connection, String remoteSchemaName, boolean cascade) throws SQLException - Overrides:
dropSchemain classBaseJdbcClient- Throws:
SQLException
-
beginCreateTable
public JdbcOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata) - Specified by:
beginCreateTablein interfaceJdbcClient- Overrides:
beginCreateTablein classBaseJdbcClient
-
beginInsertTable
public JdbcOutputTableHandle beginInsertTable(ConnectorSession session, JdbcTableHandle tableHandle, List<JdbcColumnHandle> columns) - Specified by:
beginInsertTablein interfaceJdbcClient- Overrides:
beginInsertTablein classBaseJdbcClient
-
enableTableLockOnBulkLoadTableOption
protected void enableTableLockOnBulkLoadTableOption(ConnectorSession session, JdbcOutputTableHandle table) -
isTableLockNeeded
Table lock is a prerequisite for `minimal logging` in SQL Server- See Also:
-
verifyTableName
protected void verifyTableName(DatabaseMetaData databaseMetadata, String tableName) throws SQLException - Overrides:
verifyTableNamein classBaseJdbcClient- Throws:
SQLException
-
verifyColumnName
protected void verifyColumnName(DatabaseMetaData databaseMetadata, String columnName) throws SQLException - Overrides:
verifyColumnNamein classBaseJdbcClient- Throws:
SQLException
-
renameTable
protected void renameTable(ConnectorSession session, Connection connection, String catalogName, String remoteSchemaName, String remoteTableName, String newRemoteSchemaName, String newRemoteTableName) throws SQLException - Overrides:
renameTablein classBaseJdbcClient- Throws:
SQLException
-
renameColumn
protected void renameColumn(ConnectorSession session, Connection connection, RemoteTableName remoteTableName, String remoteColumnName, String newRemoteColumnName) throws SQLException - Overrides:
renameColumnin classBaseJdbcClient- Throws:
SQLException
-
setColumnType
public void setColumnType(ConnectorSession session, JdbcTableHandle handle, JdbcColumnHandle column, Type type) - Specified by:
setColumnTypein interfaceJdbcClient- Overrides:
setColumnTypein classBaseJdbcClient
-
convertPredicate
public Optional<ParameterizedExpression> convertPredicate(ConnectorSession session, ConnectorExpression expression, Map<String, ColumnHandle> assignments) -
renameSchema
- Specified by:
renameSchemain interfaceJdbcClient- Overrides:
renameSchemain classBaseJdbcClient
-
copyTableSchema
protected void copyTableSchema(ConnectorSession session, Connection connection, String catalogName, String schemaName, String tableName, String newTableName, List<String> columnNames) - Overrides:
copyTableSchemain classBaseJdbcClient
-
getCaseSensitivityForColumns
protected Map<String,CaseSensitivity> getCaseSensitivityForColumns(ConnectorSession session, Connection connection, JdbcTableHandle tableHandle) - Overrides:
getCaseSensitivityForColumnsin classBaseJdbcClient
-
toColumnMapping
public Optional<ColumnMapping> toColumnMapping(ConnectorSession session, Connection connection, JdbcTypeHandle typeHandle) -
toWriteMapping
-
getTableStatistics
-
getProcedureHandle
public JdbcProcedureHandle getProcedureHandle(ConnectorSession session, JdbcProcedureHandle.ProcedureQuery procedureQuery) - Specified by:
getProcedureHandlein interfaceJdbcClient- Overrides:
getProcedureHandlein classBaseJdbcClient
-
escapeObjectNameForMetadataQuery
- Overrides:
escapeObjectNameForMetadataQueryin classBaseJdbcClient
-
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- Overrides:
implementJoinin classBaseJdbcClient
-
implementAggregation
public Optional<JdbcExpression> implementAggregation(ConnectorSession session, AggregateFunction aggregate, Map<String, ColumnHandle> assignments) -
supportsAggregationPushdown
public boolean supportsAggregationPushdown(ConnectorSession session, JdbcTableHandle table, List<AggregateFunction> aggregates, Map<String, ColumnHandle> assignments, List<List<ColumnHandle>> groupingSets) -
limitFunction
- Overrides:
limitFunctionin classBaseJdbcClient
-
isLimitGuaranteed
- Specified by:
isLimitGuaranteedin interfaceJdbcClient- Overrides:
isLimitGuaranteedin classBaseJdbcClient
-
supportsTopN
public boolean supportsTopN(ConnectorSession session, JdbcTableHandle handle, List<JdbcSortItem> sortOrder) - Specified by:
supportsTopNin interfaceJdbcClient- Overrides:
supportsTopNin classBaseJdbcClient
-
topNFunction
- Overrides:
topNFunctionin classBaseJdbcClient
-
isTopNGuaranteed
- Specified by:
isTopNGuaranteedin interfaceJdbcClient- Overrides:
isTopNGuaranteedin classBaseJdbcClient
-
isSupportedJoinCondition
protected boolean isSupportedJoinCondition(ConnectorSession session, JdbcJoinCondition joinCondition) - Overrides:
isSupportedJoinConditionin classBaseJdbcClient
-
createTableSql
protected String createTableSql(RemoteTableName remoteTableName, List<String> columns, ConnectorTableMetadata tableMetadata) - Overrides:
createTableSqlin classBaseJdbcClient
-
postProcessInsertTableNameClause
- Overrides:
postProcessInsertTableNameClausein classBaseJdbcClient
-
getTableProperties
- Specified by:
getTablePropertiesin interfaceJdbcClient- Overrides:
getTablePropertiesin classBaseJdbcClient
-
abortReadConnection
- Throws:
SQLException
-
getConnection
public Connection getConnection(ConnectorSession session, JdbcOutputTableHandle handle) throws SQLException - Specified by:
getConnectionin interfaceJdbcClient- Overrides:
getConnectionin classBaseJdbcClient- Throws:
SQLException
-
varbinaryColumnMapping
-
varbinaryWriteFunction
-
retryOnDeadlock
public static <T> T retryOnDeadlock(dev.failsafe.function.CheckedSupplier<T> supplier, String attemptLogMessage)
-