Redefinir referência de configuração

Detalhes sobre objetos e procedimentos associados ao recurso de configuração de redefinição.

Objetos e procedimentos de banco de dados

Os objetos de banco de dados a seguir são criados usando o endereço configuration/reset_configuration.sql.

PUBLIC.RESET_CONFIGURATION()

Procedimento de ponto de entrada disponível para a função ADMIN. Este procedimento invoca o manipulador Java ResetConfigurationHandler.resetConfiguration.

PUBLIC.RESET_CONFIGURATION_VALIDATE()

Usado para fornecer validação adicional específica do conector. Por padrão, retorna 'response_code': 'OK'. É invocado por padrão ResetConfigurationValidator. Pode ser sobrescrito em ambos SQL e Java.

PUBLIC.RESET_CONFIGURATION_INTERNAL()

Usado para fornecer lógica adicional específica do conector. Por padrão, retorna 'response_code': 'OK'. É invocado por padrão ResetConfigurationCallback. Pode ser sobrescrito em ambos SQL e Java.

Manipulador personalizado

Os manipuladores podem ser personalizados, sendo completamente substituídos pelo SQL ou pela implementação de interfaces Java.

Substituição usando SQL

Os seguintes componentes podem ser substituídos usando SQL.

Manipulador

Para fornecer uma implementação personalizada de ResetConfigurationHandler, o procedimento PUBLIC.RESET_CONFIGURATION deve ser substituído. Por exemplo:

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

Procedimento interno

O procedimento INTERNAL também pode ser personalizado através 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

Ele também pode invocar outro manipulador 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

Abordagem do construtor

ResetConfigurationHandler pode ser personalizado usando ResetConfigurationHandlerBuilder. Este construtor permite que o desenvolvedor forneça implementações personalizadas das seguintes interfaces:

  • ResetConfigurationValidator

  • ResetConfigurationCallback

  • ConnectorErrorHelper

Nem todas as interfaces precisam ser implementadas e, nesse caso, é usada a implementação padrão fornecida pelo SDK.

O exemplo a seguir mostra como o ResetConfigurationValidator pode ser personalizado.

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