Réinitialisation de la référence de configuration

Détails sur les objets et les procédures associés à la fonction de réinitialisation de la configuration.

Objets et procédures de la base de données

Les objets de base de données suivants sont créés à l’aide de la fonction configuration/reset_configuration.sql.

PUBLIC.RESET_CONFIGURATION()

Procédure de point d’entrée disponible pour le rôle ADMIN. Cette procédure appelle le gestionnaire (handler) Java ResetConfigurationHandler.resetConfiguration.

PUBLIC.RESET_CONFIGURATION_VALIDATE()

Utilisé pour fournir une validation supplémentaire spécifique au connecteur. La valeur par défaut est 'response_code': 'OK'. Elle est appelée par ResetConfigurationValidator par défaut. Peut être écrasée à la fois en SQL et en Java.

PUBLIC.RESET_CONFIGURATION_INTERNAL()

Utilisé pour fournir une logique supplémentaire spécifique au connecteur. La valeur par défaut est 'response_code': 'OK'. Elle est appelée par ResetConfigurationCallback par défaut. Peut être écrasée à la fois en SQL et en Java.

Gestionnaire (handler) personnalisé

Les gestionnaires peuvent être personnalisés en étant complètement remplacés par SQL ou en mettant en œuvre des interfaces Java.

Remplacement par SQL

Les composants suivants peuvent être remplacés à l’aide de SQL.

Gestionnaire (handler)

Pour fournir une implémentation personnalisée de ResetConfigurationHandler, la procédure PUBLIC.RESET_CONFIGURATION doit être remplacée. Par exemple :

CREATE OR REPLACE PROCEDURE PUBLIC.RESET_CONFIGURATION()
RETURNS VARIANT
LANGUAGE JAVA
RUNTIME_VERSION = '11'
PACKAGES = ('com.snowflake:snowpark:1.11.0')
IMPORTS = ('/connectors-native-sdk.jar')
HANDLER = 'com.snowflake.connectors.application.configuration.reset.CustomResetConfigurationHandler.resetConfiguration';

GRANT USAGE ON PROCEDURE PUBLIC.RESET_CONFIGURATION() TO APPLICATION ROLE ADMIN;
Copy

Procédure interne

La procédure INTERNAL peut également être personnalisée par le biais de SQL.

CREATE OR REPLACE PROCEDURE PUBLIC.RESET_CONFIGURATION_INTERNAL()
    RETURNS VARIANT
LANGUAGE SQL
EXECUTE AS OWNER
AS
BEGIN
    -- SOME CUSTOM LOGIC

    RETURN OBJECT_CONSTRUCT('response_code', 'OK');
END;
Copy

Il peut également invoquer un autre gestionnaire Java :

CREATE OR REPLACE PROCEDURE PUBLIC.RESET_CONFIGURATION_INTERNAL()
RETURNS VARIANT
LANGUAGE JAVA
RUNTIME_VERSION = '11'
PACKAGES = ('com.snowflake:snowpark:1.11.0')
IMPORTS = ('/connectors-native-sdk.jar')
HANDLER = 'com.snowflake.connectors.application.configuration.reset.CustomResetConfigurationCallback.resetConfiguration';
Copy

L’approche du constructeur

ResetConfigurationHandler peut être personnalisé à l’aide de ResetConfigurationHandlerBuilder. Ce constructeur permet au développeur de fournir des implémentations personnalisées des interfaces suivantes :

  • ResetConfigurationValidator

  • ResetConfigurationCallback

  • ConnectorErrorHelper

Il n’est pas nécessaire d’implémenter toutes les interfaces, auquel cas l’implémentation par défaut fournie par le SDK est utilisée.

L’exemple suivant montre comment ResetConfigurationValidator peut être personnalisé.

class CustomResetConfigurationValidator implements ResetConfigurationValidator {

    @Override
    public ConnectorResponse validate() {
        // CUSTOM VALIDATION LOGIC
        return ConnectorResponse.success();
    }
}

class CustomHandler {

    // Path to this method needs to be specified in the SQL definition of the PUBLIC.RESET_CONFIGURATION procedure
    public static Variant resetConfiguration(Session session) {
        // Using the builder
        var handler = ResetConfigurationHandler.builder(session)
            .withValidator(new CustomResetConfigurationValidator())
            .build();
        return handler.resetConfiguration().toVariant();
    }
}
Copy