Class SqlServerMetadataHandler
- java.lang.Object
-
- com.amazonaws.athena.connector.lambda.handlers.MetadataHandler
-
- com.amazonaws.athena.connectors.jdbc.manager.JdbcMetadataHandler
-
- com.amazonaws.athena.connectors.sqlserver.SqlServerMetadataHandler
-
- All Implemented Interfaces:
com.amazonaws.services.lambda.runtime.RequestStreamHandler
public class SqlServerMetadataHandler extends JdbcMetadataHandler
-
-
Field Summary
-
Fields inherited from class com.amazonaws.athena.connectors.jdbc.manager.JdbcMetadataHandler
jdbcQueryPassthrough, TABLES_AND_VIEWS
-
Fields inherited from class com.amazonaws.athena.connector.lambda.handlers.MetadataHandler
configOptions, DISABLE_SPILL_ENCRYPTION, KMS_KEY_ID_ENV, SPILL_BUCKET_ENV, SPILL_PREFIX_ENV
-
-
Constructor Summary
Constructors Modifier Constructor Description SqlServerMetadataHandler(DatabaseConnectionConfig databaseConnectionConfig, JdbcConnectionFactory jdbcConnectionFactory, Map<String,String> configOptions)
SqlServerMetadataHandler(DatabaseConnectionConfig databaseConnectionConfig, Map<String,String> configOptions)
Used by Mux.protected
SqlServerMetadataHandler(DatabaseConnectionConfig databaseConnectionConfig, software.amazon.awssdk.services.secretsmanager.SecretsManagerClient secretsManager, software.amazon.awssdk.services.athena.AthenaClient athena, JdbcConnectionFactory jdbcConnectionFactory, Map<String,String> configOptions)
SqlServerMetadataHandler(Map<String,String> configOptions)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected org.apache.arrow.vector.types.pojo.ArrowType
convertDatasourceTypeToArrow(int columnIndex, int precision, Map<String,String> configOptions, ResultSetMetaData metadata)
A method that takes in a JDBC type; and converts it to Arrow Type This can be overriden by other Metadata Handlers extending JDBCGetDataSourceCapabilitiesResponse
doGetDataSourceCapabilities(BlockAllocator allocator, GetDataSourceCapabilitiesRequest request)
Used to describe the types of capabilities supported by a data source.GetSplitsResponse
doGetSplits(BlockAllocator blockAllocator, GetSplitsRequest getSplitsRequest)
Used to split-up the reads required to scan the requested batch of partition(s).GetTableResponse
doGetTable(BlockAllocator blockAllocator, GetTableRequest getTableRequest)
Used to get definition (field names, types, descriptions, etc...) of a Table.ListSchemasResponse
doListSchemaNames(BlockAllocator blockAllocator, ListSchemasRequest listSchemasRequest)
Used to get the list of schemas (aka databases) that this source contains.protected List<TableName>
getPaginatedTables(Connection connection, String databaseName, int token, int limit)
void
getPartitions(BlockWriter blockWriter, GetTableLayoutRequest getTableLayoutRequest, QueryStatusChecker queryStatusChecker)
Check whether input table is a view or not.org.apache.arrow.vector.types.pojo.Schema
getPartitionSchema(String catalogName)
Delegates creation of partition schema to database type implementation.protected ListTablesResponse
listPaginatedTables(Connection connection, ListTablesRequest listTablesRequest)
-
Methods inherited from class com.amazonaws.athena.connectors.jdbc.manager.JdbcMetadataHandler
caseInsensitiveTableSearch, doGetQueryPassthroughSchema, doListTables, escapeNamePattern, getArrayArrowTypeFromTypeName, getCredentialProvider, getJdbcConnectionFactory, getSplitClauses, listTables, setupQueryPassthroughSplit
-
Methods inherited from class com.amazonaws.athena.connector.lambda.handlers.MetadataHandler
doGetTableLayout, doHandleRequest, doPing, enhancePartitionSchema, getSecret, handleRequest, makeEncryptionKey, makeSpillLocation, onPing, resolveSecrets
-
-
-
-
Constructor Detail
-
SqlServerMetadataHandler
public SqlServerMetadataHandler(DatabaseConnectionConfig databaseConnectionConfig, Map<String,String> configOptions)
Used by Mux.
-
SqlServerMetadataHandler
public SqlServerMetadataHandler(DatabaseConnectionConfig databaseConnectionConfig, JdbcConnectionFactory jdbcConnectionFactory, Map<String,String> configOptions)
-
SqlServerMetadataHandler
protected SqlServerMetadataHandler(DatabaseConnectionConfig databaseConnectionConfig, software.amazon.awssdk.services.secretsmanager.SecretsManagerClient secretsManager, software.amazon.awssdk.services.athena.AthenaClient athena, JdbcConnectionFactory jdbcConnectionFactory, Map<String,String> configOptions)
-
-
Method Detail
-
getPartitionSchema
public org.apache.arrow.vector.types.pojo.Schema getPartitionSchema(String catalogName)
Description copied from class:JdbcMetadataHandler
Delegates creation of partition schema to database type implementation.- Specified by:
getPartitionSchema
in classJdbcMetadataHandler
- Parameters:
catalogName
- Athena provided catalog name.- Returns:
- schema. See
Schema
-
getPaginatedTables
protected List<TableName> getPaginatedTables(Connection connection, String databaseName, int token, int limit) throws SQLException
- Throws:
SQLException
-
listPaginatedTables
protected ListTablesResponse listPaginatedTables(Connection connection, ListTablesRequest listTablesRequest) throws SQLException
- Overrides:
listPaginatedTables
in classJdbcMetadataHandler
- Throws:
SQLException
-
doGetDataSourceCapabilities
public GetDataSourceCapabilitiesResponse doGetDataSourceCapabilities(BlockAllocator allocator, GetDataSourceCapabilitiesRequest request)
Description copied from class:MetadataHandler
Used to describe the types of capabilities supported by a data source. An engine can use this to determine what portions of the query to push down. A connector that returns any optimization will guarantee that the associated predicate will be pushed down.- Overrides:
doGetDataSourceCapabilities
in classMetadataHandler
- Parameters:
allocator
- Tool for creating and managing Apache Arrow Blocks.request
- Provides details about the catalog being used.- Returns:
- A GetDataSourceCapabilitiesResponse object which returns a map of supported optimizations that the connector is advertising to the consumer. The connector assumes all responsibility for whatever is passed here.
-
getPartitions
public void getPartitions(BlockWriter blockWriter, GetTableLayoutRequest getTableLayoutRequest, QueryStatusChecker queryStatusChecker) throws Exception
Check whether input table is a view or not. If it's a view, it will not have any partition info and data will be fetched with single split.If it's a table with no partition, then data will be fetched with single split. If it's a partitioned table, we are fetching the partition info and creating splits equals to the number of partitions for parallel processing.- Specified by:
getPartitions
in classJdbcMetadataHandler
- Parameters:
blockWriter
-getTableLayoutRequest
-queryStatusChecker
-- Throws:
Exception
-
doGetSplits
public GetSplitsResponse doGetSplits(BlockAllocator blockAllocator, GetSplitsRequest getSplitsRequest)
Description copied from class:MetadataHandler
Used to split-up the reads required to scan the requested batch of partition(s).- Specified by:
doGetSplits
in classJdbcMetadataHandler
- Parameters:
blockAllocator
-getSplitsRequest
-- Returns:
-
doGetTable
public GetTableResponse doGetTable(BlockAllocator blockAllocator, GetTableRequest getTableRequest) throws Exception
Description copied from class:MetadataHandler
Used to get definition (field names, types, descriptions, etc...) of a Table.- Overrides:
doGetTable
in classJdbcMetadataHandler
- Parameters:
blockAllocator
-getTableRequest
-- Returns:
- Throws:
Exception
-
convertDatasourceTypeToArrow
protected org.apache.arrow.vector.types.pojo.ArrowType convertDatasourceTypeToArrow(int columnIndex, int precision, Map<String,String> configOptions, ResultSetMetaData metadata) throws SQLException
Description copied from class:JdbcMetadataHandler
A method that takes in a JDBC type; and converts it to Arrow Type This can be overriden by other Metadata Handlers extending JDBC- Overrides:
convertDatasourceTypeToArrow
in classJdbcMetadataHandler
- Returns:
- Arrow Type
- Throws:
SQLException
-
doListSchemaNames
public ListSchemasResponse doListSchemaNames(BlockAllocator blockAllocator, ListSchemasRequest listSchemasRequest) throws Exception
Description copied from class:MetadataHandler
Used to get the list of schemas (aka databases) that this source contains.- Overrides:
doListSchemaNames
in classJdbcMetadataHandler
- Parameters:
blockAllocator
- Tool for creating and managing Apache Arrow Blocks.listSchemasRequest
- Provides details on who made the request and which Athena catalog they are querying.- Returns:
- A ListSchemasResponse which primarily contains a Set
of schema names and a catalog name corresponding the Athena catalog that was queried. - Throws:
Exception
-
-