Class MultiplexingJdbcMetadataHandler

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

    public class MultiplexingJdbcMetadataHandler
    extends JdbcMetadataHandler
    Metadata handler multiplexer that supports multiple engines e.g. MySQL, PostGreSql and Redshift in same Lambda. Uses catalog name and associations to database types to route operations.
    • 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 com.amazonaws.athena.connector.lambda.metadata.ListSchemasResponse doListSchemaNames​(com.amazonaws.athena.connector.lambda.data.BlockAllocator blockAllocator,
                                                                                                    com.amazonaws.athena.connector.lambda.metadata.ListSchemasRequest listSchemasRequest)
                                                                                             throws Exception
        Overrides:
        doListSchemaNames in class JdbcMetadataHandler
        Throws:
        Exception
      • doListTables

        public com.amazonaws.athena.connector.lambda.metadata.ListTablesResponse doListTables​(com.amazonaws.athena.connector.lambda.data.BlockAllocator blockAllocator,
                                                                                              com.amazonaws.athena.connector.lambda.metadata.ListTablesRequest listTablesRequest)
                                                                                       throws Exception
        Overrides:
        doListTables in class JdbcMetadataHandler
        Throws:
        Exception
      • doGetTable

        public com.amazonaws.athena.connector.lambda.metadata.GetTableResponse doGetTable​(com.amazonaws.athena.connector.lambda.data.BlockAllocator blockAllocator,
                                                                                          com.amazonaws.athena.connector.lambda.metadata.GetTableRequest getTableRequest)
                                                                                   throws Exception
        Overrides:
        doGetTable in class JdbcMetadataHandler
        Throws:
        Exception
      • doGetQueryPassthroughSchema

        public com.amazonaws.athena.connector.lambda.metadata.GetTableResponse doGetQueryPassthroughSchema​(com.amazonaws.athena.connector.lambda.data.BlockAllocator blockAllocator,
                                                                                                           com.amazonaws.athena.connector.lambda.metadata.GetTableRequest getTableRequest)
                                                                                                    throws Exception
        Overrides:
        doGetQueryPassthroughSchema in class JdbcMetadataHandler
        Throws:
        Exception
      • getPartitions

        public void getPartitions​(com.amazonaws.athena.connector.lambda.data.BlockWriter blockWriter,
                                  com.amazonaws.athena.connector.lambda.metadata.GetTableLayoutRequest getTableLayoutRequest,
                                  com.amazonaws.athena.connector.lambda.QueryStatusChecker queryStatusChecker)
                           throws Exception
        Specified by:
        getPartitions in class JdbcMetadataHandler
        Throws:
        Exception
      • doGetTableLayout

        public com.amazonaws.athena.connector.lambda.metadata.GetTableLayoutResponse doGetTableLayout​(com.amazonaws.athena.connector.lambda.data.BlockAllocator blockAllocator,
                                                                                                      com.amazonaws.athena.connector.lambda.metadata.GetTableLayoutRequest getTableLayoutRequest)
                                                                                               throws Exception
        Overrides:
        doGetTableLayout in class com.amazonaws.athena.connector.lambda.handlers.MetadataHandler
        Throws:
        Exception
      • doGetSplits

        public com.amazonaws.athena.connector.lambda.metadata.GetSplitsResponse doGetSplits​(com.amazonaws.athena.connector.lambda.data.BlockAllocator blockAllocator,
                                                                                            com.amazonaws.athena.connector.lambda.metadata.GetSplitsRequest getSplitsRequest)
        Specified by:
        doGetSplits in class JdbcMetadataHandler
      • doGetDataSourceCapabilities

        public com.amazonaws.athena.connector.lambda.metadata.GetDataSourceCapabilitiesResponse doGetDataSourceCapabilities​(com.amazonaws.athena.connector.lambda.data.BlockAllocator allocator,
                                                                                                                            com.amazonaws.athena.connector.lambda.metadata.GetDataSourceCapabilitiesRequest request)
        Overrides:
        doGetDataSourceCapabilities in class com.amazonaws.athena.connector.lambda.handlers.MetadataHandler