Mettre à jour de la référence de la configuration de la connexion¶
Objets et procédures de la base de données¶
Les objets de base de données suivants sont créés par le biais de configuration/update_connection_configuration.sql
PUBLIC.UPDATE_CONNECTION_CONFIGURATION(VARIANT connection_configuration)¶
Procédure de point d’entrée disponible pour le rôle ADMIN
. Cette procédure appelle le gestionnaire (handler) Java UpdateConnectionConfigurationHandler.updateConnectionConfiguration
.
PUBLIC.UPDATE_CONNECTION_CONFIGURATION_VALIDATE( connection_configuration VARIANT)¶
Procédure utilisée pour fournir une logique de validation supplémentaire spécifique au connecteur. Par défaut, elle renvoie 'response_code': 'OK'
. Elle est appelée par ConnectionConfigurationInputValidator
par défaut. Peut être écrasée à la fois en SQL et en Java.
PUBLIC.DRAFT_CONNECTION_CONFIGURATION_INTERNAL( connection_configuration VARIANT)¶
Procédure utilisée pour fournir une logique supplémentaire spécifique au connecteur. Par défaut, elle renvoie 'response_code': 'OK'
. Elle est appelée par ConnectionConfigurationCallback
par défaut. 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 personnalisée de UpdateConnectionConfigurationHandler
, la procédure PUBLIC.UPDATE_CONNECTION_CONFIGURATION
doit être remplacée. Par exemple :
CREATE OR REPLACE PROCEDURE PUBLIC.UPDATE_CONNECTION_CONFIGURATION(connection_configuration VARIANT)
RETURNS VARIANT
LANGUAGE JAVA
RUNTIME_VERSION = '11'
PACKAGES = ('com.snowflake:snowpark:1.11.0')
IMPORTS = ('/connectors-native-sdk.jar')
HANDLER = 'com.custom.handler.CustomUpdateConnectionConfigurationHandler.updateConnectionConfiguration';
GRANT USAGE ON PROCEDURE PUBLIC.UPDATE_CONNECTION_CONFIGURATION(VARIANT) TO APPLICATION ROLE ADMIN;
Procédures internes¶
Les procédures VALIDATE
et INTERNAL
peuvent également être personnalisées via SQL. Elles peuvent même appeler un autre gestionnaire (handler) Java :
CREATE OR REPLACE PROCEDURE PUBLIC.DRAFT_CONNECTION_CONFIGURATION_INTERNAL(connection_configuration VARIANT)
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.UPDATE_CONNECTION_CONFIGURATION_VALIDATE(connection_configuration VARIANT)
RETURNS VARIANT
LANGUAGE JAVA
RUNTIME_VERSION = '11'
PACKAGES = ('com.snowflake:snowpark:1.11.0')
IMPORTS = ('/connectors-native-sdk.jar')
HANDLER = 'com.custom.handler.CustomConnectionConfigurationInputValidator.validate';
L’approche du constructeur¶
UpdateConnectionConfigurationHandler
peut être personnalisé à l’aide de UpdateConnectionConfigurationHandlerBuilder
. Ce constructeur permet au développeur de fournir des implémentations personnalisées des interfaces suivantes :
ConnectionConfigurationInputValidator
ConnectionConfigurationCallback
DraftConnectionValidator
ConnectionConfigurationCallback
ConnectionValidator
ConnectorErrorHelper
Dans le cas où l’une d’entre elles n’est pas fournie, l’implémentation par défaut fournie par le SDK sera utilisée.
class CustomConnectionConfigurationInputValidator implements ConnectionConfigurationInputValidator {
@Override
public ConnectorResponse validate(Variant configuration) {
// CUSTOM VALIDATION LOGIC
return ConnectorResponse.success();
}
}
class CustomHandler {
// Path to this method needs to be specified in the PUBLIC.UPDATE_CONNECTION_CONFIGURATION procedure using SQL
public static Variant updateConnectionConfiguration(Session session, Variant configuration) {
// Using the builder
var handler = UpdateConnectionConfigurationHandler.builder(session)
.withInputValidator(new CustomConnectionConfigurationInputValidator())
.build();
return handler.updateConnectionConfiguration(configuration).toVariant();
}
}