PostgreSQL

pg_settings ビュー

サーバ実行時パラメータを確認できます。私はshowコマンドの代わりに使っていたのですが、最近setの代わりになる事を知りました。(update文のみ有効)ただし変更内容はupdateを発行したセッションでのみ有効で、また変更できるパラメータには制限あります(contextカラムに依存。詳細はマニュアル参照)

pg_settings のupdate例
-- ログインユーザ確認
postgres=# select current_user,current_schema;
 current_user | current_schema
--------------+----------------
 postgres     | public
(1 行)


-- 例題としてlc_messagesを使います
-- context=superuserとなっていますがこれはスーパーユーザのみ
-- 変更できることを表しています
postgres=# select name,setting,context,vartype,reset_val
postgres-# from pg_settings where name = 'lc_messages';
    name     | setting |  context  | vartype | reset_val
-------------+---------+-----------+---------+-----------
 lc_messages | en_US   | superuser | string  | en_US
(1 行)


-- 以下の通りエラーメッセージは英文で出力されます
postgres=# select current_database;
ERROR:  column "current_database" does not exist
行 1: select current_database;
             ^
-- 値の更新
postgres=# update pg_settings set setting ='ja_JP.UTF-8' where name = 'lc_messages';
 set_config
-------------
 ja_JP.UTF-8
(1 行)

UPDATE 0

-- 補足
以下のような権限エラーが出る場合は、実行ユーザにSUPERUSER権限を付与してください。
update pg_settingsはスーパーユーザでないと実行できません。
ERROR:  permission denied to set parameter "lc_messages"

-- 変更した事でエラーメッセージが日本語で出力されます。
postgres=# select current_database;
ERROR:  列"current_database"は存在しません
行 1: select current_database;
             ^
postgres=#
スポンサーリンク