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