Referenz der Konfiguration zurücksetzen

Details zu Objekten und Prozeduren im Zusammenhang mit dem Feature „Konfiguration zurücksetzen“.

Datenbankobjekte und Prozeduren

Die folgenden Datenbankobjekte werden mit dem Befehl configuration/reset_configuration.sql erstellt.

PUBLIC.RESET_CONFIGURATION()

Einstiegspunkt-Prozedur, verfügbar für ADMIN-Rolle. Diese Prozedur ruft den Java-Handler ResetConfigurationHandler.resetConfiguration auf.

PUBLIC.RESET_CONFIGURATION_VALIDATE()

Wird verwendet, um eine zusätzliche konnektorspezifische Validierung vorzunehmen. Standardmäßig wird 'response_code': 'OK' zurückgegeben. Wird von Standard-ResetConfigurationValidator aufgerufen. Kann sowohl in SQL als auch Java überschrieben werden.

PUBLIC.RESET_CONFIGURATION_INTERNAL()

Wird verwendet, um zusätzliche konnektorspezifische Logik bereitzustellen. Standardmäßig wird 'response_code': 'OK' zurückgegeben. Wird von Standard-ResetConfigurationCallback aufgerufen. Kann sowohl in SQL als auch Java überschrieben werden.

Kundenspezifischer Handler

Handler können angepasst werden, indem sie vollständig durch SQL ersetzt werden oder indem Java-Schnittstellen implementiert werden.

Ersetzen unter Verwendung von SQL

Die folgenden Komponenten können durch SQL ersetzt werden.

Handler

Um eine kundenspezifische Implementierung von ResetConfigurationHandler bereitzustellen, muss die Prozedur PUBLIC.RESET_CONFIGURATION ersetzt werden. Beispiel:

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

Interne Prozedur

Die Prozedur INTERNAL können auch über SQL angepasst werden.

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

Er kann auch einen anderen Java-Handler aufrufen:

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

Ansatz: Builder

ResetConfigurationHandler kann mithilfe von ResetConfigurationHandlerBuilder angepasst werden. Dieser Builder ermöglicht es dem Entwickler, kundenspezifische Implementierungen der folgenden Schnittstellen bereitzustellen:

  • ResetConfigurationValidator

  • ResetConfigurationCallback

  • ConnectorErrorHelper

Nicht alle Weboberflächen müssen implementiert werden. In diesem Fall wird die vom SDK bereitgestellte Standardimplementierung verwendet.

Das folgende Beispiel zeigt, wie ResetConfigurationValidator angepasst werden kann.

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