Class 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.RecordHandler
    Abstracts JDBC record handler and provides common reusable split records handling.
    • 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

      • 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:
        readWithConstraint in class com.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. See Connection
        catalogName - 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.