Class SnowflakeConnectionFactory
- java.lang.Object
-
- com.amazonaws.athena.connectors.jdbc.connection.GenericJdbcConnectionFactory
-
- com.amazonaws.athena.connectors.snowflake.connection.SnowflakeConnectionFactory
-
- All Implemented Interfaces:
JdbcConnectionFactory,AutoCloseable
public class SnowflakeConnectionFactory extends GenericJdbcConnectionFactory
Custom connection factory for Snowflake that supports multiple authentication methods.For JWT (key-pair) auth: uses
DriverManagerdirectly because HikariCP stringifies all property values viatoString(), which breaks thePrivateKeyobject required by the Snowflake JDBC driver.For password/OAuth auth: always uses HikariCP connection pooling via
GenericJdbcConnectionFactory.getConnectionFromManagedPool(com.amazonaws.athena.connector.credentials.CredentialsProvider), bypassing the parent's direct-connection path even whenfas_tokenis present.The Snowflake JDBC driver's
SnowflakeConnectString.parse()URL-decodes query parameters internally, so both%22and literal"in the connection string work correctly for case-sensitive identifiers.
-
-
Field Summary
-
Fields inherited from class com.amazonaws.athena.connectors.jdbc.connection.GenericJdbcConnectionFactory
databaseConnectionConfig, databaseConnectionInfo, jdbcProperties, SECRET_NAME_PATTERN
-
-
Constructor Summary
Constructors Constructor Description SnowflakeConnectionFactory(DatabaseConnectionConfig databaseConnectionConfig, Map<String,String> properties, DatabaseConnectionInfo databaseConnectionInfo)SnowflakeConnectionFactory(DatabaseConnectionConfig databaseConnectionConfig, Map<String,String> properties, DatabaseConnectionInfo databaseConnectionInfo, Map<String,String> configOptions)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ConnectiongetConnection(CredentialsProvider credentialsProvider)Retrieves database connection for a database type.-
Methods inherited from class com.amazonaws.athena.connectors.jdbc.connection.GenericJdbcConnectionFactory
close, getConnectionFromManagedPool
-
-
-
-
Constructor Detail
-
SnowflakeConnectionFactory
public SnowflakeConnectionFactory(DatabaseConnectionConfig databaseConnectionConfig, Map<String,String> properties, DatabaseConnectionInfo databaseConnectionInfo)
-
SnowflakeConnectionFactory
public SnowflakeConnectionFactory(DatabaseConnectionConfig databaseConnectionConfig, Map<String,String> properties, DatabaseConnectionInfo databaseConnectionInfo, Map<String,String> configOptions)
-
-
Method Detail
-
getConnection
public Connection getConnection(CredentialsProvider credentialsProvider) throws Exception
Description copied from interface:JdbcConnectionFactoryRetrieves database connection for a database type.- Specified by:
getConnectionin interfaceJdbcConnectionFactory- Overrides:
getConnectionin classGenericJdbcConnectionFactory- Parameters:
credentialsProvider- jdbc user and password provider.- Returns:
- JDBC connection. See
Connection. - Throws:
Exception
-
-