CURRENT_DATABASE および CURRENT_SCHEMA 関数: ポリシー、ビュー、および UDFs での決定論的出力の確保

注意

この動作変更は2023_08バンドルにあります。

バンドルの現在のステータスについては、 バンドル履歴 をご参照ください。

CURRENT_DATABASE および CURRENT_SCHEMA 関数の動作は以下のとおりです。

変更前

CURRENT_DATABASE または CURRENT_SCHEMA 関数を呼び出したときの返り値は決定論的ではありません。

マスキングや行アクセスポリシーなどのデータアクセスポリシーの内部で関数を呼び出すと、関数は2つの値のいずれかを返します。

  • ポリシーを含むデータベースまたはスキーマ。

  • セッションで使用されているデータベースまたはスキーマ。

ビューまたは UDF の定義で関数を呼び出し、 SELECT キーワードが関数の前にない場合、関数は2つの値のいずれかを返します。

  • セッションで使用されているデータベースまたはスキーマ。

  • UDF またはビューを含むデータベースまたはスキーマ。

変更後

CURRENT_DATABASE または CURRENT_SCHEMA 関数を呼び出したときの戻り値は決定論的です。

  • マスキングや行アクセスポリシーなどのデータアクセスポリシー内で関数を呼び出すと、関数は保護されたテーブルやビューを含むデータベースやスキーマを返します。

  • ビューまたは UDF の定義で関数を呼び出すと、関数は UDF またはビューを含むデータベースまたはスキーマを返します。

これらの変更の影響を最小限に抑えるには、次のことをお勧めします。

  • ビューの定義または UDF でこれらの関数を使用し、 SELECT キーワードが関数の前にない場合は、 UDF の定義が関数の使用方法に対して正しいかどうかを再確認してください。

  • ポリシーがこれらの関数を呼び出す場合、ポリシーの本文がセッションで使用されているデータベースまたはスキーマではなく、保護されたテーブルを含むデータベースまたはスキーマに対して記述されていることを再度確認してください。

参照: 1337