はじめに
Shallow Clone 元テーブル(nation)に対してVacuumを実行する際に、Shallow Clone 先のテーブル(nation_clone)に対する権限不足によるエラーが発生しましたので、再現方法と解決策を紹介します。
このエラーが発生する想定シチュエーションとしては、ジョブ実行用ユーザでメダリオンアーキテクチャの Silver テーブルの作成から最適化まで実行しており、一般ユーザがその Silver テーブルを Shallow Clone してしまうという状況が考えられるかなと思います。
権限確認
- Shallow Clone 元テーブル(nation)に対して ユーザAに ALL PRIVILEGES 権限を付与
- Shallow Clone 先テーブル(nation_clone)に対してはユーザAの権限なし
Vacuum実行
- ユーザAの専用アクセスモード(シングルアクセスモード)クラスターを使用する
- Shallow Clone 元テーブル(nation)に対してVacuumを実行すると、Shallow Clone 先テーブル(nation_clone)にSELECT権限がないというエラーが発生
解決策
- クラスターを標準アクセスモード(共有アクセスモード)にして、Vacuumを実行すると成功する
- もしくは、Shallow Clone 先のテーブル(nation_clone)にSELECT権限を付与すると成功する
おわりに
ドキュメントにも以下の記述が記載されていましたので、Shallow Clone テーブルの操作は標準アクセスモードのクラスターを使用するべきのようです。