他のバージョンの文書 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

E.23. リリース9.5.9

リリース日: 2017-08-31

このリリースは9.5.8に対し、少数の不具合を修正したものです。 9.5メジャーリリースにおける新機能については、E.32を参照してください。

E.23.1. バージョン9.5.9への移行

9.5.Xからの移行ではダンプ/リストアは不要です。

しかしながら、9.5.8よりも前のリリースからアップグレードする場合は、E.24を参照して下さい。

E.23.2. 変更点

  • 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_TPostgreSQLのWindowsビルドではもはやグローバルに定義されないことです。 time_tはいかなるPostgreSQL API定義でも使われないため、これは問題をひき起こさないと予想されます。

  • 非GNUのmakeプログラムから起動されたときに正しく動作するようにmake checkを修正しました。 (Thomas Munro)