リリース日: 2017-08-31
このリリースは9.4.13に対し、少数の不具合を修正したものです。 9.4メジャーリリースにおける新機能については、E.52を参照してください。
9.4.Xからの移行ではダンプ/リストアは不要です。
しかしながら、9.4.13よりも前のリリースからアップグレードする場合は、E.39を参照して下さい。
walsenderプロセスがシャットダウンシグナルに反応するのに失敗するのを修正しました。 (Marco Nenciarini)
フラグの更新忘れのため、即時シャットダウンモード以外では、walsenderはスタンバイサーバが接続されている限り動作し続け、プライマリサーバがシャットダウンできませんでした。
information_schema
.table_privileges
ビューで外部テーブルを表示するようになりました。
(Peter Eisentraut)
全ての他の関連するinformation_schema
ビューは外部テーブルを含んでいますが、このビューは外部テーブルを無視していました。
このビュー定義はinitdbで導入されるため、アップグレードするだけでは問題は修正されません。 既存のインストレーションで修正する必要がある場合、スーパーユーザーとしてpsqlで以下を実行してください。
SET search_path TO information_schema; CREATE OR REPLACE VIEW table_privileges AS SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor, CAST(grantee.rolname AS sql_identifier) AS grantee, CAST(current_database() AS sql_identifier) AS table_catalog, CAST(nc.nspname AS sql_identifier) AS table_schema, CAST(c.relname AS sql_identifier) AS table_name, CAST(c.prtype AS character_data) AS privilege_type, CAST( CASE WHEN -- object owner always has grant options pg_has_role(grantee.oid, c.relowner, 'USAGE') OR c.grantable THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_grantable, CAST(CASE WHEN c.prtype = 'SELECT' THEN 'YES' ELSE 'NO' END AS yes_or_no) AS with_hierarchy FROM ( SELECT oid, relname, relnamespace, relkind, relowner, (aclexplode(coalesce(relacl, acldefault('r', relowner)))).* FROM pg_class ) AS c (oid, relname, relnamespace, relkind, relowner, grantor, grantee, prtype, grantable), pg_namespace nc, pg_authid u_grantor, ( SELECT oid, rolname FROM pg_authid UNION ALL SELECT 0::oid, 'PUBLIC' ) AS grantee (oid, rolname) WHERE c.relnamespace = nc.oid AND c.relkind IN ('r', 'v', 'f') AND c.grantee = grantee.oid AND c.grantor = u_grantor.oid AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER') AND (pg_has_role(u_grantor.oid, 'USAGE') OR pg_has_role(grantee.oid, 'USAGE') OR grantee.rolname = 'PUBLIC');
これは、template0
を含む、修正すべき各データベースで繰り返さなくてはなりません。
失敗したトランザクションのROLLBACK
実行を試みている間に生じた、致命的な(例えばSIGTERMを受けとったことによる)終了の処理を整理しました。
(Tom Lane)
この状況はアサート失敗に至るかもしれません。 実運用ビルドでもこのような終了は起きますが、この場合は「cannot drop active portal(アクティブポータルを削除できません)」といった予期せぬメッセージがログ出力されます。
致命的な終了の間に駆動するかもしれないアサートを削除しました。 (Tom Lane)
検索されている、複合型またはドメイン型の上の、範囲型またはドメイン型の列を正確に識別するようにしました。 (Tom Lane)
複合型またはドメイン型の定義を変更する、ある種のALTER
コマンドはデータベース中にその型の格納された値が1つでもあるときはエラーになるはずでした。なぜなら、そのような値を更新または検査するのに必要な基盤が欠けているためです。
これまでは、これらの検査は範囲型またはドメイン型の内側にラップされた関連する値を見過ごすかもしれず、データベースが不整合になるのを許すおそれがありました。
pg_restoreにおける、パラレルモードを使っていてリストアする部分要素を選択するのにリストファイルを使っているときのクラッシュを修正しました。 (Fabrízio de Royes Mello)
ecpgのパーサを、C変数の割り当て無しのRETURNING
句が使えるように変更しました。
(Michael Meskes)
これによりRETURNING
をクライアントに返される値を定義するためではなく内部的に(例えばCTE内に)使ったSQL構文をecpgプログラムに含むことができます。
Windows上のPL/Perlに対するコンパイラフラグの選択を改善しました。 (Tom Lane)
本修正はtime_t
値の幅についての一貫性のない仮定のために起こりうるPL/Perlのクラッシュを回避します。
拡張の開発者に見えるかもしれない副作用は、_USE_32BIT_TIME_T
がPostgreSQLのWindowsビルドではもはやグローバルに定義されないことです。
time_t
はいかなるPostgreSQL API定義でも使われないため、これは問題をひき起こさないと予想されます。