Verticaでは、テーブルアクセス時のスキーマ名を省略した場合に、自動選択されるスキーマをSEARCH_PATHで管理しています。
スキーマ修飾の優先順を確認する方法
Verticaにログイン後、以下のコマンドで、自動で修飾されるスキーマの優先順を確認することができます。
構文
SHOW SEARCH_PATH;実行例
dbadmin=> SHOW SEARCH_PATH;
name | setting
-------------+---------------------------------------------------
search_path | "$user", public, v_catalog, v_monitor, v_internal
(1 row)デフォルトでは上記のように、ユーザー名のスキーマ、publicスキーマ、システムテーブル用スキーマ(v_catalogスキーマ、v_monitorスキーマ、v_internalスキーマ)の順で参照されます。
※ユーザー名と同名のスキーマは意図的に作成しないと存在しません。
スキーマ修飾の優先順を変更する方法
セッション単位の変更方法
セッション単位で自動修飾されるスキーマの優先順を変更する場合は、Verticaログイン後に下記コマンドを実行します。
構文
SET SEARCH_PATH TO スキーマ名1,スキーマ名2....; 実行例
dbadmin=> SET SEARCH_PATH TO test_schema, "$user", public;
SET
dbadmin=>
dbadmin=> SHOW SEARCH_PATH;
name | setting
-------------+----------------------------------------------------------------
search_path | test_schema, "$user", public, v_catalog, v_monitor, v_internal
(1 row)なお、 v_catalogスキーマ、v_monitorスキーマ、v_internalスキーマは常にSEARCH_PATHに含まれる仕様のため、上記コマンド実行時に省略することができます。
ユーザー単位(永続的)の変更方法
ユーザー単位で永続的に自動修飾されるスキーマの優先順を変更する場合は、Verticaログイン後に下記コマンドを実行します。
構文
ALTER USER ユーザ名 SEARCH_PATH スキーマ名1,スキーマ名2,....; 実行例
dbadmin=> ALTER USER dbadmin SEARCH_PATH test_schema, "$user", public;
ALTER USER
dbadmin=>
-- Verticaに再ログイン
dbadmin=> SHOW SEARCH_PATH;
name | setting
-------------+----------------------------------------------------------------
search_path | test_schema, "$user", public, v_catalog, v_monitor, v_internal
(1 row)なお、 v_catalogスキーマ、v_monitorスキーマ、v_internalスキーマは常にSEARCH_PATHに含まれる仕様のため、上記コマンド実行時に省略することができます。
検証バージョンについて
この記事の内容はVertica 9.1で確認しています。