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;
Copy

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';
Copy

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();
    }
}
Copy