Class MultiplexingJdbcMetadataHandler

    • Constructor Detail

      • MultiplexingJdbcMetadataHandler

        protected MultiplexingJdbcMetadataHandler​(software.amazon.awssdk.services.secretsmanager.SecretsManagerClient secretsManager,
                                                  software.amazon.awssdk.services.athena.AthenaClient athena,
                                                  JdbcConnectionFactory jdbcConnectionFactory,
                                                  Map<String,​JdbcMetadataHandler> metadataHandlerMap,
                                                  DatabaseConnectionConfig databaseConnectionConfig,
                                                  Map<String,​String> configOptions)
        Parameters:
        metadataHandlerMap - catalog -> JdbcMetadataHandler
      • MultiplexingJdbcMetadataHandler

        protected MultiplexingJdbcMetadataHandler​(JdbcMetadataHandlerFactory jdbcMetadataHandlerFactory,
                                                  Map<String,​String> configOptions)
        Initializes mux routing map. Creates a reverse index of Athena catalogs supported by a database instance. Max 100 catalogs supported currently.
    • Method Detail

      • 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
      • doListSchemaNames

        public ListSchemasResponse doListSchemaNames​(BlockAllocator blockAllocator,
                                                     ListSchemasRequest listSchemasRequest)
                                              throws Exception
        Description copied from class: MetadataHandler
        Used to get the list of schemas (aka databases) that this source contains.
        Overrides:
        doListSchemaNames in class JdbcMetadataHandler
        Parameters:
        blockAllocator - Tool for creating and managing Apache Arrow Blocks.
        listSchemasRequest - Provides details on who made the request and which Athena catalog they are querying.
        Returns:
        A ListSchemasResponse which primarily contains a Set of schema names and a catalog name corresponding the Athena catalog that was queried.
        Throws:
        Exception
      • doListTables

        public ListTablesResponse doListTables​(BlockAllocator blockAllocator,
                                               ListTablesRequest listTablesRequest)
                                        throws Exception
        Description copied from class: MetadataHandler
        Used to get the list of tables that this source contains.
        Overrides:
        doListTables in class JdbcMetadataHandler
        Parameters:
        blockAllocator - Tool for creating and managing Apache Arrow Blocks.
        listTablesRequest - Provides details on who made the request and which Athena catalog and database they are querying.
        Returns:
        A ListTablesResponse which primarily contains a List enumerating the tables in this catalog, database tuple. It also contains the catalog name corresponding the Athena catalog that was queried.
        Throws:
        Exception
      • doGetTable

        public GetTableResponse doGetTable​(BlockAllocator blockAllocator,
                                           GetTableRequest getTableRequest)
                                    throws Exception
        Description copied from class: MetadataHandler
        Used to get definition (field names, types, descriptions, etc...) of a Table.
        Overrides:
        doGetTable in class JdbcMetadataHandler
        Parameters:
        blockAllocator - Tool for creating and managing Apache Arrow Blocks.
        getTableRequest - Provides details on who made the request and which Athena catalog, database, and table they are querying.
        Returns:
        A GetTableResponse which primarily contains: 1. An Apache Arrow Schema object describing the table's columns, types, and descriptions. 2. A Set of partition column names (or empty if the table isn't partitioned).
        Throws:
        Exception
      • doGetQueryPassthroughSchema

        public GetTableResponse doGetQueryPassthroughSchema​(BlockAllocator blockAllocator,
                                                            GetTableRequest getTableRequest)
                                                     throws Exception
        Description copied from class: MetadataHandler
        Used to get definition (field names, types, descriptions, etc...) of a Query PassThrough.
        Overrides:
        doGetQueryPassthroughSchema in class JdbcMetadataHandler
        Parameters:
        blockAllocator - Tool for creating and managing Apache Arrow Blocks.
        getTableRequest - Provides details on who made the request and which Athena catalog, database, and table they are querying.
        Returns:
        A GetTableResponse which primarily contains: 1. An Apache Arrow Schema object describing the table's columns, types, and descriptions. 2. A Set of partition column names (or empty if the table isn't partitioned).
        Throws:
        Exception
      • getPartitions

        public void getPartitions​(BlockWriter blockWriter,
                                  GetTableLayoutRequest getTableLayoutRequest,
                                  QueryStatusChecker queryStatusChecker)
                           throws Exception
        Description copied from class: MetadataHandler
        Used to get the partitions that must be read from the request table in order to satisfy the requested predicate.
        Specified by:
        getPartitions in class JdbcMetadataHandler
        Parameters:
        blockWriter - Used to write rows (partitions) into the Apache Arrow response.
        getTableLayoutRequest - Provides details of the catalog, database, and table being queried as well as any filter predicate.
        queryStatusChecker - A QueryStatusChecker that you can use to stop doing work for a query that has already terminated
        Throws:
        Exception
      • doGetTableLayout

        public GetTableLayoutResponse doGetTableLayout​(BlockAllocator blockAllocator,
                                                       GetTableLayoutRequest getTableLayoutRequest)
                                                throws Exception
        Description copied from class: MetadataHandler
        Used to get the partitions that must be read from the request table in order to satisfy the requested predicate.
        Overrides:
        doGetTableLayout in class MetadataHandler
        Parameters:
        blockAllocator - Tool for creating and managing Apache Arrow Blocks.
        getTableLayoutRequest - Provides details of the catalog, database, and table being queried as well as any filter predicate.
        Returns:
        A GetTableLayoutResponse which primarily contains: 1. An Apache Arrow Block with 0 or more partitions to read. 0 partitions implies there are 0 rows to read. 2. Set of partition column names which should correspond to columns in your Apache Arrow Block.
        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 class JdbcMetadataHandler
        Parameters:
        blockAllocator - Tool for creating and managing Apache Arrow Blocks.
        getSplitsRequest - Provides details of the catalog, database, table, andpartition(s) being queried as well as any filter predicate.
        Returns:
        A GetSplitsResponse which primarily contains: 1. A Set which represent read operations Amazon Athena must perform by calling your read function. 2. (Optional) A continuation token which allows you to paginate the generation of splits for large queries.
      • doGetDataSourceCapabilities

        public GetDataSourceCapabilitiesResponse doGetDataSourceCapabilities​(BlockAllocator allocator,
                                                                             GetDataSourceCapabilitiesRequest request)
        Description copied from class: MetadataHandler
        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.