Class SaphanaMetadataHandler

  • All Implemented Interfaces:
    com.amazonaws.services.lambda.runtime.RequestStreamHandler

    public class SaphanaMetadataHandler
    extends JdbcMetadataHandler
    • 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 class MetadataHandler
        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 class JdbcMetadataHandler
        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 class JdbcMetadataHandler
        Parameters:
        blockWriter -
        getTableLayoutRequest -
        queryStatusChecker -
        Throws:
        Exception
      • 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 class JdbcMetadataHandler
        Parameters:
        jdbcConnection -
        tableName -
        partitionSchema -
        Returns:
        Throws:
        Exception