Desativação da referência de recurso

Objetos e procedimentos de banco de dados

Os seguintes objetos de banco de dados são criados quando o arquivo ingestion/resource_management.sql é executado.

PUBLIC.DISABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)

Procedimento de ponto de entrada disponível para a função ADMIN. Este procedimento invoca a função Java DisableResourceHandler.disableResource.

PUBLIC.PRE_DISABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)

Procedimento usado para adicionar lógica específica do conector invocada antes de um recurso ser desabilitado. Por padrão, ela retorna 'response_code': 'OK'. É invocado por DefaultPreDisableResourceCallback. Pode ser sobrescrito em ambos SQL e Java.

PUBLIC.POST_DISABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)

Procedimento usado para adicionar lógica específica do conector invocada depois que um recurso é desabilitado. Por padrão, ela retorna 'response_code': 'OK'. É invocado por DefaultPostDisableResourceCallback. Pode ser sobrescrito em ambos SQL e Java.

Manipulador personalizado

O manipulador e seus componentes internos podem ser personalizados usando as seguintes abordagens.

Abordagem de substituição de procedimento

Os seguintes componentes podem ser substituídos usando SQL.

Manipulador

Para fornecer uma implementação personalizada de DisableResourceHandler, substitua o procedimento PUBLIC.DISABLE_RESOURCE.

Por exemplo:

CREATE OR REPLACE PROCEDURE PUBLIC.DISABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)
  RETURNS VARIANT
  LANGUAGE JAVA
  RUNTIME_VERSION = '11'
  PACKAGES = ('com.snowflake:snowpark:1.11.0')
  IMPORTS = ('/connectors-native-sdk.jar')
  HANDLER = 'com.custom.handler.CustomDisableResourceHandler.disableResource';

GRANT USAGE ON PROCEDURE PUBLIC.DISABLE_RESOURCE(VARCHAR) TO APPLICATION ROLE ADMIN;
Copy

Procedimentos internos

Os procedimentos internos PRE_DISABLE_RESOURCE e POST_DISABLE_RESOURCE também podem ser personalizados através de SQL. Esses procedimentos também podem invocar outros manipuladores Java:

CREATE OR REPLACE PROCEDURE PUBLIC.PRE_DISABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)
  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.PRE_DISABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)
  RETURNS VARIANT
  LANGUAGE JAVA
  RUNTIME_VERSION = '11'
  PACKAGES = ('com.snowflake:snowpark:1.11.0')
  IMPORTS = ('/connectors-native-sdk.jar')
  HANDLER = 'com.custom.handler.CustomHandler.disableResourceValidate';
Copy

Abordagem do construtor

DisableResourceHandler pode ser personalizado usando DisableResourceHandlerBuilder. Este construtor permite que o usuário forneça implementações personalizadas das seguintes interfaces:

  • PreDisableResourceCallback

  • PostDisableResourceCallback

  • ConnectorErrorHelper

Quando uma função não é fornecida, a implementação padrão fornecida pelo SDK é usada.

class CustomPreDisableResourceCallback implements PreDisableResourceCallback {
  @Override
  public ConnectorResponse execute(String resourceIngestionDefinitionId) {
    // CUSTOM LOGIC
    return ConnectorResponse.success();
  }
}

class CustomHandler {

  // Path to this method needs to be specified in the PUBLIC.DISABLE_RESOURCE procedure using SQL
  public static Variant disableResource(Session session, String resourceIngestionDefinitionId) {
    //Using builder
    var handler = DisableResourceHandlerBuilder.builder(session)
      .withPreDisableResourceCallback(new CustomPreDisableResourceCallback())
      .build();
    return handler.disableResource(resourceIngestionDefinitionId).toVariant();
  }
}
Copy