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