Mettre à jour la référence de l’entrepôt

Objets et procédures de la base de données

Les objets de base de données suivants sont créés par l’intermédiaire de configuration/update_warehouse.sql.

PUBLIC.UPDATE_WAREHOUSE(nom_entrepôt STRING)

Procédure de point d’entrée disponible pour le rôle ADMIN. Cette procédure appelle le gestionnaire (handler) Java UpdateWarehouseHandler.updateWarehouse.

PUBLIC.UPDATE_WAREHOUSE_INTERNAL(nom_entrepôt STRING)

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 UpdateWarehouseCallback 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 UpdateWarehouseHandler, la procédure PUBLIC.UPDATE_WAREHOUSE doit être remplacée. Par exemple :

CREATE OR REPLACE PROCEDURE PUBLIC.UPDATE_WAREHOUSE(warehouse_name STRING)
  RETURNS VARIANT
  LANGUAGE JAVA
  RUNTIME_VERSION = '11'
  PACKAGES = ('com.snowflake:snowpark:1.11.0')
  IMPORTS = ('/connectors-native-sdk.jar')
  HANDLER = 'com.custom.handler.CustomUpdateWarehouseHandler.updateWarehouse';

GRANT USAGE ON PROCEDURE PUBLIC.UPDATE_WAREHOUSE(STRING) TO APPLICATION ROLE ADMIN;
Copy

Procédure interne

La procédure INTERNAL peut également être personnalisée par le biais de SQL. Elles peuvent même appeler un autre gestionnaire (handler) Java :

CREATE OR REPLACE PROCEDURE PUBLIC.UPDATE_WAREHOUSE_INTERNAL(warehouse_name STRING)
  RETURNS VARIANT
  LANGUAGE SQL
  EXECUTE AS OWNER
  AS
  BEGIN
    -- SOME CUSTOM LOGIC

    RETURN OBJECT_CONSTRUCT('response_code', 'OK');
  END;
Copy
CREATE OR REPLACE PROCEDURE PUBLIC.UPDATE_WAREHOUSE_INTERNAL(warehouse_name STRING)
  RETURNS VARIANT
  LANGUAGE JAVA
  RUNTIME_VERSION = '11'
  PACKAGES = ('com.snowflake:snowpark:1.11.0')
  IMPORTS = ('/connectors-native-sdk.jar')
  HANDLER = 'com.custom.handler.CustomUpdateWarehouseCallback.execute';
Copy

L’approche du constructeur

UpdateWarehouseHandler peut être personnalisé à l’aide de UpdateWarehouseHandlerBuilder. Ce constructeur permet au développeur de fournir des implémentations personnalisées des interfaces suivantes :

  • UpdateWarehouseInputValidator

  • UpdateWarehouseCallback

  • 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 CustomUpdateWarehouseInputValidator implements UpdateWarehouseInputValidator {

  @Override
  public ConnectorResponse validate(Identifier warehouse) {
    // CUSTOM VALIDATION LOGIC
    return ConnectorResponse.success();
  }
}

class CustomHandler {

  // Path to this method needs to be specified in the PUBLIC.UPDATE_WAREHOUSE procedure using SQL
  public static Variant updateWarehouse(Session session, String warehouseName) {
    // Using the builder
    var handler = UpdateWarehouseHandler.builder(session)
      .withInputValidator(new CustomUpdateWarehouseInputValidator())
      .build();
    return handler.updateWarehouse(warehouseName).toVariant();
  }
}
Copy