Class SnowflakeRecordHandler
- java.lang.Object
-
- com.amazonaws.athena.connector.lambda.handlers.RecordHandler
-
- com.amazonaws.athena.connectors.jdbc.manager.JdbcRecordHandler
-
- com.amazonaws.athena.connectors.snowflake.SnowflakeRecordHandler
-
- All Implemented Interfaces:
FederationRequestHandler
,com.amazonaws.services.lambda.runtime.RequestStreamHandler
public class SnowflakeRecordHandler extends JdbcRecordHandler
-
-
Field Summary
-
Fields inherited from class com.amazonaws.athena.connectors.jdbc.manager.JdbcRecordHandler
queryPassthrough
-
Fields inherited from class com.amazonaws.athena.connector.lambda.handlers.RecordHandler
configOptions
-
-
Constructor Summary
Constructors Constructor Description SnowflakeRecordHandler(DatabaseConnectionConfig databaseConnectionConfig, GenericJdbcConnectionFactory jdbcConnectionFactory, Map<String,String> configOptions)
SnowflakeRecordHandler(DatabaseConnectionConfig databaseConnectionConfig, Map<String,String> configOptions)
SnowflakeRecordHandler(Map<String,String> configOptions)
Instantiates handler to be used by Lambda function directly.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description PreparedStatement
buildSplitSql(Connection jdbcConnection, String catalogName, TableName tableNameInput, org.apache.arrow.vector.types.pojo.Schema schema, Constraints constraints, Split split)
Builds split SQL string and returns prepared statement.protected org.apache.arrow.vector.ipc.ArrowReader
constructArrowReader(String uri)
protected CredentialsProvider
getCredentialProvider()
void
readWithConstraint(BlockSpiller spiller, ReadRecordsRequest recordsRequest, QueryStatusChecker queryStatusChecker)
Used to handle data transfer between Snowflake and Athena, supporting both direct query and S3 export paths, converts to arrow format, and manages spillover logic.-
Methods inherited from class com.amazonaws.athena.connectors.jdbc.manager.JdbcRecordHandler
buildQueryPassthroughSql, disableCaseSensitivelyLookUpSession, enableCaseSensitivelyLookUpSession, getDatabaseConnectionConfig, getJdbcConnectionFactory, makeExtractor, makeFactory
-
Methods inherited from class com.amazonaws.athena.connector.lambda.handlers.RecordHandler
doHandleRequest, doReadRecords, getRequestOverrideConfig, getSecret, getSpillConfig, handleRequest, onPing, resolveSecrets, resolveWithDefaultCredentials
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.amazonaws.athena.connector.lambda.handlers.FederationRequestHandler
getAthenaClient, getRequestOverrideConfig, getS3Client, getSessionCredentials
-
-
-
-
Constructor Detail
-
SnowflakeRecordHandler
public SnowflakeRecordHandler(Map<String,String> configOptions)
Instantiates handler to be used by Lambda function directly.
-
SnowflakeRecordHandler
public SnowflakeRecordHandler(DatabaseConnectionConfig databaseConnectionConfig, Map<String,String> configOptions)
-
SnowflakeRecordHandler
public SnowflakeRecordHandler(DatabaseConnectionConfig databaseConnectionConfig, GenericJdbcConnectionFactory jdbcConnectionFactory, Map<String,String> configOptions)
-
-
Method Detail
-
readWithConstraint
public void readWithConstraint(BlockSpiller spiller, ReadRecordsRequest recordsRequest, QueryStatusChecker queryStatusChecker) throws Exception
Used to handle data transfer between Snowflake and Athena, supporting both direct query and S3 export paths, converts to arrow format, and manages spillover logic.- Overrides:
readWithConstraint
in classJdbcRecordHandler
- Parameters:
spiller
- 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.recordsRequest
- 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
- Throws an Exception
-
constructArrowReader
protected org.apache.arrow.vector.ipc.ArrowReader constructArrowReader(String uri)
-
buildSplitSql
public PreparedStatement buildSplitSql(Connection jdbcConnection, String catalogName, TableName tableNameInput, org.apache.arrow.vector.types.pojo.Schema schema, Constraints constraints, Split split) throws SQLException
Description copied from class:JdbcRecordHandler
Builds split SQL string and returns prepared statement.- Specified by:
buildSplitSql
in classJdbcRecordHandler
- Parameters:
jdbcConnection
- jdbc connection. SeeConnection
catalogName
- Athena provided catalog name.tableNameInput
- 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.
-
getCredentialProvider
protected CredentialsProvider getCredentialProvider()
- Overrides:
getCredentialProvider
in classJdbcRecordHandler
-
-