Référence de la configuration de la connexion¶
Objets et procédures de la base de données¶
Les objets de base de données suivants sont créés par le biais du fichier configuration/connection_configuration.sql
.
PUBLIC.SET_CONNECTION_CONFIGURATION (connection_configuration VARIANT)¶
Procédure de point d’entrée disponible au rôle ADMIN
. Cette procédure appelle la fonction Java ConnectionConfigurationHandler.setConnectionConfiguration().
PUBLIC.SET_CONNECTION_CONFIGURATION_VALIDATE (connection_configuration VARIANT)¶
Procédure utilisée pour la validation de la configuration spécifique au connecteur. Elle peut également être utilisée pour transformer certaines parties de la configuration. La configuration transformée doit être renvoyée en tant que propriété "config"
supplémentaire. Par défaut, elle renvoie 'response_code': 'OK'
. Elle est appelée par le DefaultConnectionConfigurationInputValidator
. Peut être écrasée à la fois en SQL et en Java.
PUBLIC.SET_CONNECTION_CONFIGURATION_INTERNAL (connection_configuration VARIANT)¶
Procédure utilisée pour la configuration de connexions supplémentaires spécifiques au connecteur, par exemple l’ajout d’une intégration d’accès externe à d’autres procédures. Par défaut, elle renvoie 'response_code': 'OK'
. Elle est appelée par le InternalConnectionConfigurationCallback
. Peut être écrasée à la fois en SQL et en Java.
PUBLIC.GET_CONNECTION_CONFIGURATION()¶
Une procédure pour récupérer la configuration actuelle de la connexion à partir de la table interne. Elle est disponible pour les utilisateurs ADMIN
et VIEWER
.
Gestionnaire (handler) personnalisé¶
Le gestionnaire (handler) et ses éléments internes peuvent être personnalisés selon les deux approches suivantes.
Approche de remplacement de procédure¶
Les composants suivants peuvent être remplacés à l’aide de SQL.
Gestionnaire (handler)¶
Pour fournir une implémentation entièrement personnalisée du ConnectionConfigurationHandler, la procédure PUBLIC.SET_CONNECTION_CONFIGURATION doit être remplacée. Par exemple :
CREATE OR REPLACE PROCEDURE PUBLIC.SET_CONNECTION_CONFIGURATION(config VARIANT)
RETURNS VARIANT
LANGUAGE JAVA
RUNTIME_VERSION = '11'
PACKAGES = ('com.snowflake:snowpark:1.11.0')
IMPORTS = ('/connectors-native-sdk.jar')
HANDLER = 'com.custom.handler.CustomConnectionConfigurationHandler.setConnectionConfiguration';
GRANT USAGE ON PROCEDURE PUBLIC.CONFIGURE_CONNECTOR(VARIANT) TO APPLICATION ROLE ADMIN;
Procédures internes¶
Les procédures internes VALIDATE
et INTERNAL
peuvent également être personnalisées par le biais de SQL. Elles peuvent même appeler un autre gestionnaire (handler) Java :
CREATE OR REPLACE PROCEDURE PUBLIC.SET_CONNECTION_CONFIGURATION_INTERNAL(config VARIANT)
RETURNS VARIANT
LANGUAGE SQL
EXECUTE AS OWNER
AS
BEGIN
-- SOME CUSTOM LOGIC BEGIN
SELECT sysdate();
-- SOME CUSTOM LOGIC END
RETURN OBJECT_CONSTRUCT('response_code', 'OK', '"config"', '"transformed config variant"');
END;
CREATE OR REPLACE PROCEDURE PUBLIC.SET_CONNECTION_CONFIGURATION_VALIDATE(config VARIANT)
RETURNS VARIANT
LANGUAGE JAVA
RUNTIME_VERSION = '11'
PACKAGES = ('com.snowflake:snowpark:1.11.0')
IMPORTS = ('/connectors-native-sdk.jar')
HANDLER = 'com.custom.handler.CustomConnectionConfigurationValidateHandler.setConnectionConfiguration';
L’approche du constructeur¶
ConnectionConfigurationHandler peut être personnalisé à l’aide de ConnectionConfigurationHandlerBuilder. Ce constructeur permet à l’utilisateur de fournir des implémentations personnalisées des interfaces suivantes :
Dans le cas où l’une d’entre elles n’est pas fournie, l’implémentation par défaut fournie par le SDK sera utilisée.
class CustomConnectionConfigurationInputValidator implements ConnectionConfigurationInputValidator {
@Override
public ConnectorResponse validate(Variant config) {
// CUSTOM LOGIC
return ConnectorResponse.success();
}
}
class CustomHandler {
// Path to this method needs to be specified in the PUBLIC.SET_CONNECTION_CONFIGURATION procedure using SQL
public static Variant configureConnection(Session session, Variant configuration) {
//Using builder
var handler = ConnectionConfigurationHandler.builder(session)
.withInputValidator(new CustomConnectionConfigurationInputValidator())
.build();
return handler.connectionConfiguration(configuration).toVariant();
}
}