Class SaphanaMetadataHandler
- java.lang.Object
-
- com.amazonaws.athena.connector.lambda.handlers.MetadataHandler
-
- com.amazonaws.athena.connectors.jdbc.manager.JdbcMetadataHandler
-
- com.amazonaws.athena.connectors.saphana.SaphanaMetadataHandler
-
- All Implemented Interfaces:
com.amazonaws.services.lambda.runtime.RequestStreamHandler
public class SaphanaMetadataHandler extends JdbcMetadataHandler
-
-
Field Summary
-
Fields inherited from class com.amazonaws.athena.connectors.jdbc.manager.JdbcMetadataHandler
caseResolver, 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 SaphanaMetadataHandler(DatabaseConnectionConfig databaseConnectionConfig, GenericJdbcConnectionFactory jdbcConnectionFactory, Map<String,String> configOptions)
SaphanaMetadataHandler(DatabaseConnectionConfig databaseConnectionConfig, Map<String,String> configOptions)
Used by Mux.protected
SaphanaMetadataHandler(DatabaseConnectionConfig databaseConnectionConfig, software.amazon.awssdk.services.secretsmanager.SecretsManagerClient secretsManager, software.amazon.awssdk.services.athena.AthenaClient athena, JdbcConnectionFactory jdbcConnectionFactory, Map<String,String> configOptions, JDBCCaseResolver caseResolver)
SaphanaMetadataHandler(Map<String,String> configOptions)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description GetDataSourceCapabilitiesResponse
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).void
getPartitions(BlockWriter blockWriter, GetTableLayoutRequest getTableLayoutRequest, QueryStatusChecker queryStatusChecker)
We are first checking if input table is a view, if it's a view, it will not have any partition info and data will be fetched with single split.If it is a table with no partition, then data will be fetched with single split.org.apache.arrow.vector.types.pojo.Schema
getPartitionSchema(String catalogName)
Delegates creation of partition schema to database type implementation.protected org.apache.arrow.vector.types.pojo.Schema
getSchema(Connection jdbcConnection, TableName tableName, org.apache.arrow.vector.types.pojo.Schema partitionSchema)
-
Methods inherited from class com.amazonaws.athena.connectors.jdbc.manager.JdbcMetadataHandler
convertDatasourceTypeToArrow, doGetQueryPassthroughSchema, doGetTable, doListSchemaNames, doListTables, escapeNamePattern, getArrayArrowTypeFromTypeName, getColumns, getCredentialProvider, getJdbcConnectionFactory, getSplitClauses, listDatabaseNames, listPaginatedTables, listTables, setupQueryPassthroughSplit, wrapNameWithEscapedCharacter
-
Methods inherited from class com.amazonaws.athena.connector.lambda.handlers.MetadataHandler
doGetTableLayout, doHandleRequest, doPing, enhancePartitionSchema, getSecret, handleRequest, makeEncryptionKey, makeSpillLocation, onPing, resolveSecrets, resolveWithDefaultCredentials
-
-
-
-
Constructor Detail
-
SaphanaMetadataHandler
public SaphanaMetadataHandler(DatabaseConnectionConfig databaseConnectionConfig, Map<String,String> configOptions)
Used by Mux.
-
SaphanaMetadataHandler
protected SaphanaMetadataHandler(DatabaseConnectionConfig databaseConnectionConfig, software.amazon.awssdk.services.secretsmanager.SecretsManagerClient secretsManager, software.amazon.awssdk.services.athena.AthenaClient athena, JdbcConnectionFactory jdbcConnectionFactory, Map<String,String> configOptions, JDBCCaseResolver caseResolver)
-
SaphanaMetadataHandler
public SaphanaMetadataHandler(DatabaseConnectionConfig databaseConnectionConfig, GenericJdbcConnectionFactory jdbcConnectionFactory, Map<String,String> configOptions)
-
-
Method Detail
-
doGetDataSourceCapabilities
public GetDataSourceCapabilitiesResponse doGetDataSourceCapabilities(BlockAllocator allocator, GetDataSourceCapabilitiesRequest request)
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.
-
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
-
getPartitions
public void getPartitions(BlockWriter blockWriter, GetTableLayoutRequest getTableLayoutRequest, QueryStatusChecker queryStatusChecker) throws Exception
We are first checking if input table is a view, if it's a view, it will not have any partition info and data will be fetched with single split.If it is a table with no partition, then data will be fetched with single split. If it is 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:
-
getSchema
protected org.apache.arrow.vector.types.pojo.Schema getSchema(Connection jdbcConnection, TableName tableName, org.apache.arrow.vector.types.pojo.Schema partitionSchema) throws Exception
- Overrides:
getSchema
in classJdbcMetadataHandler
- Parameters:
jdbcConnection
-tableName
-partitionSchema
-- Returns:
- Throws:
Exception
-
-