Class JdbcRecordHandler
- java.lang.Object
-
- com.amazonaws.athena.connector.lambda.handlers.RecordHandler
-
- com.amazonaws.athena.connectors.jdbc.manager.JdbcRecordHandler
-
- All Implemented Interfaces:
com.amazonaws.services.lambda.runtime.RequestStreamHandler
- Direct Known Subclasses:
MultiplexingJdbcRecordHandler
public abstract class JdbcRecordHandler extends com.amazonaws.athena.connector.lambda.handlers.RecordHandlerAbstracts JDBC record handler and provides common reusable split records handling.
-
-
Field Summary
Fields Modifier and Type Field Description protected JdbcQueryPassthroughqueryPassthrough
-
Constructor Summary
Constructors Modifier Constructor Description protectedJdbcRecordHandler(String sourceType, Map<String,String> configOptions)Used only by Multiplexing handler.protectedJdbcRecordHandler(software.amazon.awssdk.services.s3.S3Client amazonS3, software.amazon.awssdk.services.secretsmanager.SecretsManagerClient secretsManager, software.amazon.awssdk.services.athena.AthenaClient athena, DatabaseConnectionConfig databaseConnectionConfig, JdbcConnectionFactory jdbcConnectionFactory, Map<String,String> configOptions)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description PreparedStatementbuildQueryPassthroughSql(Connection jdbcConnection, com.amazonaws.athena.connector.lambda.domain.predicate.Constraints constraints)abstract PreparedStatementbuildSplitSql(Connection jdbcConnection, String catalogName, com.amazonaws.athena.connector.lambda.domain.TableName tableName, org.apache.arrow.vector.types.pojo.Schema schema, com.amazonaws.athena.connector.lambda.domain.predicate.Constraints constraints, com.amazonaws.athena.connector.lambda.domain.Split split)Builds split SQL string and returns prepared statement.protected booleandisableCaseSensitivelyLookUpSession(Connection connection)protected booleanenableCaseSensitivelyLookUpSession(Connection connection)protected com.amazonaws.athena.connector.credentials.CredentialsProvidergetCredentialProvider()protected JdbcConnectionFactorygetJdbcConnectionFactory()protected com.amazonaws.athena.connector.lambda.data.writers.extractors.ExtractormakeExtractor(org.apache.arrow.vector.types.pojo.Field field, ResultSet resultSet, Map<String,String> partitionValues)Creates an Extractor for the given field.protected com.amazonaws.athena.connector.lambda.data.writers.fieldwriters.FieldWriterFactorymakeFactory(org.apache.arrow.vector.types.pojo.Field field)Create a field extractor for complex List type.voidreadWithConstraint(com.amazonaws.athena.connector.lambda.data.BlockSpiller blockSpiller, com.amazonaws.athena.connector.lambda.records.ReadRecordsRequest readRecordsRequest, com.amazonaws.athena.connector.lambda.QueryStatusChecker queryStatusChecker)
-
-
-
Field Detail
-
queryPassthrough
protected final JdbcQueryPassthrough queryPassthrough
-
-
Constructor Detail
-
JdbcRecordHandler
protected JdbcRecordHandler(String sourceType, Map<String,String> configOptions)
Used only by Multiplexing handler. All invocations will be delegated to respective database handler.
-
JdbcRecordHandler
protected JdbcRecordHandler(software.amazon.awssdk.services.s3.S3Client amazonS3, software.amazon.awssdk.services.secretsmanager.SecretsManagerClient secretsManager, software.amazon.awssdk.services.athena.AthenaClient athena, DatabaseConnectionConfig databaseConnectionConfig, JdbcConnectionFactory jdbcConnectionFactory, Map<String,String> configOptions)
-
-
Method Detail
-
getJdbcConnectionFactory
protected JdbcConnectionFactory getJdbcConnectionFactory()
-
getCredentialProvider
protected com.amazonaws.athena.connector.credentials.CredentialsProvider getCredentialProvider()
-
readWithConstraint
public void readWithConstraint(com.amazonaws.athena.connector.lambda.data.BlockSpiller blockSpiller, com.amazonaws.athena.connector.lambda.records.ReadRecordsRequest readRecordsRequest, com.amazonaws.athena.connector.lambda.QueryStatusChecker queryStatusChecker) throws Exception- Specified by:
readWithConstraintin classcom.amazonaws.athena.connector.lambda.handlers.RecordHandler- Throws:
Exception
-
makeFactory
protected com.amazonaws.athena.connector.lambda.data.writers.fieldwriters.FieldWriterFactory makeFactory(org.apache.arrow.vector.types.pojo.Field field)
Create a field extractor for complex List type.- Parameters:
field- Field's metadata information.- Returns:
- Extractor for the List type.
-
enableCaseSensitivelyLookUpSession
protected boolean enableCaseSensitivelyLookUpSession(Connection connection)
-
disableCaseSensitivelyLookUpSession
protected boolean disableCaseSensitivelyLookUpSession(Connection connection)
-
makeExtractor
protected com.amazonaws.athena.connector.lambda.data.writers.extractors.Extractor makeExtractor(org.apache.arrow.vector.types.pojo.Field field, ResultSet resultSet, Map<String,String> partitionValues)Creates an Extractor for the given field. In this example the extractor just creates some random data.
-
buildSplitSql
public abstract PreparedStatement buildSplitSql(Connection jdbcConnection, String catalogName, com.amazonaws.athena.connector.lambda.domain.TableName tableName, org.apache.arrow.vector.types.pojo.Schema schema, com.amazonaws.athena.connector.lambda.domain.predicate.Constraints constraints, com.amazonaws.athena.connector.lambda.domain.Split split) throws SQLException
Builds split SQL string and returns prepared statement.- Parameters:
jdbcConnection- jdbc connection. SeeConnectioncatalogName- Athena provided catalog name.tableName- database table name.schema- table schema.constraints- constraints to push down to the database.split- table split.- Returns:
- prepared statement with sql. See
PreparedStatement - Throws:
SQLException- JDBC database exception.
-
buildQueryPassthroughSql
public PreparedStatement buildQueryPassthroughSql(Connection jdbcConnection, com.amazonaws.athena.connector.lambda.domain.predicate.Constraints constraints) throws SQLException
- Throws:
SQLException
-
-