ウェアハウス更新リファレンス¶
データベースオブジェクトとプロシージャ¶
次のデータベースオブジェクトは、 configuration/update_warehouse.sql
を通じて作成されます。
PUBLIC.UPDATE_WAREHOUSE(warehouse_name STRING)¶
ADMIN
ロールで使用可能なエントリポイントプロシージャ。このプロシージャはJavaの UpdateWarehouseHandler.updateWarehouse
ハンドラーを呼び出します。
PUBLIC.UPDATE_WAREHOUSE_INTERNAL(warehouse_name STRING)¶
追加のコネクタ固有のロジックを提供するために使用されるプロシージャ。デフォルトでは 'response_code': 'OK'
を返します。デフォルトの UpdateWarehouseCallback
によって呼び出されます。SQL でもJavaでも上書きできます。
カスタムハンドラー¶
ハンドラーとその内部は以下の2つのアプローチを使用してカスタマイズできます。
プロシージャの代替アプローチ¶
以下のコンポーネントは SQL を使用して置き換えることができます。
ハンドラー¶
UpdateWarehouseHandler
のカスタム実装を提供するには、 PUBLIC.UPDATE_WAREHOUSE
プロシージャを置き換える必要があります。例:
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;
内部プロシージャ¶
INTERNAL
プロシージャは、 SQL を通じてカスタマイズすることもできます。別の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;
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';
ビルダーアプローチ¶
UpdateWarehouseHandler
は、 UpdateWarehouseHandlerBuilder
を使用してカスタマイズできます。このビルダーを使用すると、開発者は次のインターフェイスのカスタム実装を提供できます。
UpdateWarehouseInputValidator
UpdateWarehouseCallback
ConnectorErrorHelper
これらのいずれかが提供されていない場合、 SDK によって提供されるデフォルトの実装が使用されます。
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();
}
}