Class JdbcRecordHandler

    • 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

      • readWithConstraint

        public void readWithConstraint​(BlockSpiller blockSpiller,
                                       ReadRecordsRequest readRecordsRequest,
                                       QueryStatusChecker queryStatusChecker)
                                throws Exception
        Description copied from class: RecordHandler
        A more stream lined option for reading the row data associated with the provided Split. This method differs from doReadRecords(...) in that the SDK handles more of the request lifecycle, leaving you to focus more closely on the task of actually reading from your source.
        Specified by:
        readWithConstraint in class RecordHandler
        Parameters:
        blockSpiller - A BlockSpiller that should be used to write the row data associated with this Split. The BlockSpiller automatically handles chunking the response, encrypting, and spilling to S3.
        readRecordsRequest - Details of the read request, including: 1. The Split 2. The Catalog, Database, and Table the read request is for. 3. The filtering predicate (if any) 4. The columns required for projection.
        queryStatusChecker - A QueryStatusChecker that you can use to stop doing work for a query that has already terminated
        Throws:
        Exception
      • makeFactory

        protected 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.
      • makeExtractor

        protected 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,
                                                        TableName tableName,
                                                        org.apache.arrow.vector.types.pojo.Schema schema,
                                                        Constraints constraints,
                                                        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.