Class MultiplexingJdbcMetadataHandler
- java.lang.Object
-
- com.amazonaws.athena.connector.lambda.handlers.MetadataHandler
-
- com.amazonaws.athena.connectors.jdbc.manager.JdbcMetadataHandler
-
- com.amazonaws.athena.connectors.jdbc.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.
-
-
Field Summary
Fields Modifier and Type Field Description protected Map<String,JdbcMetadataHandler>metadataHandlerMap-
Fields inherited from class com.amazonaws.athena.connectors.jdbc.manager.JdbcMetadataHandler
caseResolver, jdbcQueryPassthrough, TABLES_AND_VIEWS
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedMultiplexingJdbcMetadataHandler(JdbcMetadataHandlerFactory jdbcMetadataHandlerFactory, Map<String,String> configOptions)Initializes mux routing map.protectedMultiplexingJdbcMetadataHandler(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)protectedMultiplexingJdbcMetadataHandler(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, JDBCCaseResolver caseResolver)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description com.amazonaws.athena.connector.lambda.metadata.GetDataSourceCapabilitiesResponsedoGetDataSourceCapabilities(com.amazonaws.athena.connector.lambda.data.BlockAllocator allocator, com.amazonaws.athena.connector.lambda.metadata.GetDataSourceCapabilitiesRequest request)com.amazonaws.athena.connector.lambda.metadata.GetTableResponsedoGetQueryPassthroughSchema(com.amazonaws.athena.connector.lambda.data.BlockAllocator blockAllocator, com.amazonaws.athena.connector.lambda.metadata.GetTableRequest getTableRequest)com.amazonaws.athena.connector.lambda.metadata.GetSplitsResponsedoGetSplits(com.amazonaws.athena.connector.lambda.data.BlockAllocator blockAllocator, com.amazonaws.athena.connector.lambda.metadata.GetSplitsRequest getSplitsRequest)com.amazonaws.athena.connector.lambda.metadata.GetTableResponsedoGetTable(com.amazonaws.athena.connector.lambda.data.BlockAllocator blockAllocator, com.amazonaws.athena.connector.lambda.metadata.GetTableRequest getTableRequest)com.amazonaws.athena.connector.lambda.metadata.GetTableLayoutResponsedoGetTableLayout(com.amazonaws.athena.connector.lambda.data.BlockAllocator blockAllocator, com.amazonaws.athena.connector.lambda.metadata.GetTableLayoutRequest getTableLayoutRequest)com.amazonaws.athena.connector.lambda.metadata.ListSchemasResponsedoListSchemaNames(com.amazonaws.athena.connector.lambda.data.BlockAllocator blockAllocator, com.amazonaws.athena.connector.lambda.metadata.ListSchemasRequest listSchemasRequest)com.amazonaws.athena.connector.lambda.metadata.ListTablesResponsedoListTables(com.amazonaws.athena.connector.lambda.data.BlockAllocator blockAllocator, com.amazonaws.athena.connector.lambda.metadata.ListTablesRequest listTablesRequest)voidgetPartitions(com.amazonaws.athena.connector.lambda.data.BlockWriter blockWriter, com.amazonaws.athena.connector.lambda.metadata.GetTableLayoutRequest getTableLayoutRequest, com.amazonaws.athena.connector.lambda.QueryStatusChecker queryStatusChecker)org.apache.arrow.vector.types.pojo.SchemagetPartitionSchema(String catalogName)Delegates creation of partition schema to database type implementation.-
Methods inherited from class com.amazonaws.athena.connectors.jdbc.manager.JdbcMetadataHandler
convertDatasourceTypeToArrow, escapeNamePattern, getArrayArrowTypeFromTypeName, getColumns, getCredentialProvider, getJdbcConnectionFactory, getSchema, getSplitClauses, listDatabaseNames, listPaginatedTables, listTables, setupQueryPassthroughSplit, wrapNameWithEscapedCharacter
-
-
-
-
Field Detail
-
metadataHandlerMap
protected Map<String,JdbcMetadataHandler> metadataHandlerMap
-
-
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(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, JDBCCaseResolver caseResolver)
-
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:JdbcMetadataHandlerDelegates creation of partition schema to database type implementation.- Specified by:
getPartitionSchemain classJdbcMetadataHandler- 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:
doListSchemaNamesin classJdbcMetadataHandler- 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:
doListTablesin classJdbcMetadataHandler- 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:
doGetTablein classJdbcMetadataHandler- 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:
doGetQueryPassthroughSchemain classJdbcMetadataHandler- 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:
getPartitionsin classJdbcMetadataHandler- 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:
doGetTableLayoutin classcom.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:
doGetSplitsin classJdbcMetadataHandler
-
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:
doGetDataSourceCapabilitiesin classcom.amazonaws.athena.connector.lambda.handlers.MetadataHandler
-
-