Référence du connecteur de pause

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 lifecycle/pause.sql.

PUBLIC.PAUSE_CONNECTOR()

Procédure de point d’entrée disponible pour le rôle ADMIN. Cette procédure appelle la fonction Java PauseConnectorHandler.pauseConnector.

PUBLIC.PAUSE_CONNECTOR_VALIDATE()

Procédure utilisée pour la validation spécifique au connecteur du processus de mise en pause. Par défaut, elle renvoie 'response_code': 'OK'. Elle est appelée par DefaultPauseConnectorStateValidator. Peut être écrasée à la fois en SQL et en Java.

PUBLIC.PAUSE_CONNECTOR_INTERNAL()

Procédure utilisée pour les fonctions de mise en pause supplémentaires spécifiques aux connecteurs. Par défaut, elle renvoie 'response_code': 'OK'. Elle est appelée par InternalPauseConnectorCallback. Peut être écrasée à la fois en SQL et en Java.

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 de PauseConnectorHandler, la procédure PUBLIC.PAUSE_CONNECTOR doit être remplacée. Par exemple :

CREATE OR REPLACE PROCEDURE PUBLIC.PAUSE_CONNECTOR()
RETURNS VARIANT
LANGUAGE JAVA
RUNTIME_VERSION = '11'
PACKAGES = ('com.snowflake:snowpark:1.11.0')
IMPORTS = ('/connectors-native-sdk.jar')
HANDLER = 'com.custom.handler.CustomPauseConnectorHandler.pauseConnector';

GRANT USAGE ON PROCEDURE PUBLIC.PAUSE_CONNECTOR() 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 aussi appeler un autre gestionnaire (handler) Java :

CREATE OR REPLACE PROCEDURE PUBLIC.PAUSE_CONNECTOR_INTERNAL()
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');
END;

CREATE OR REPLACE PROCEDURE PUBLIC.PAUSE_CONNECTOR_VALIDATE()
RETURNS VARIANT
LANGUAGE JAVA
RUNTIME_VERSION = '11'
PACKAGES = ('com.snowflake:snowpark:1.11.0')
IMPORTS = ('/connectors-native-sdk.jar')
HANDLER = 'com.custom.handler.CustomPauseConnectorInternalHandler.pauseConnector';
Copy

L’approche du constructeur

PauseConnectorHandler peut être personnalisé à l’aide de PauseConnectorHandlerBuilder. Ce constructeur permet à l’utilisateur de fournir des implémentations personnalisées des interfaces suivantes :

  • PauseConnectorStateValidator

  • PauseConnectorCallback

  • ConnectorErrorHelper

Dans le cas où une fonction n’est pas fournie, l’implémentation par défaut fournie par SDK sera utilisée.

class CustomPauseConnectorStateValidator implements PauseConnectorStateValidator {
    @Override
    public ConnectorResponse validate() {
        // CUSTOM LOGIC
        return ConnectorResponse.success();
    }
}

class CustomHandler {

    // Path to this method needs to be specified in the PUBLIC.PAUSE_CONNECTOR procedure using SQL
    public static Variant pauseConnector(Session session) {
            //Using builder
        var handler = PauseConnectorHandlerBuilder.builder(session)
            .withStateValidator(new CustomPauseConnectorStateValidator())
            .build();
        return handler.pauseConnector().toVariant();
    }
}
Copy