PostgreSQL 13.14 に関する技術情報

このリリースは 13.13 からの修正リリース(2024年 2月 8日リリース)です。
13.X からのアップデートではダンプ、リストアは不要です。

しかしながら、本バージョンでの GINインデックスの修正については、インデックスが既に破壊されている可能性もあるためアップグレード後にインデックス再作成することを推奨します。
また、13.13 よりも前のバージョンからアップデートする場合には、13.13 のリリース情報も参照してください。

PostgreSQL 13.13 から 13.14 への変更点

16.2、15.6、14.11、13.14、12.18 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。

  1. REFRESH MATERIALIZED VIEW CONCURRENTLY 内でのセキュリティ上の制限を厳格化しました。 (Heikki Linnakangas) (16)(15)(14)(13)(12)
  2. 同時リフレッシュのある一段階が弱いセキュリティ制限のもとで実行されていました。マテリアライズドビューの所有者が、何らか説きつけて、スーパーユーザや他の高権限ユーザにそのビューの同時リフレッシュをさせた場合、REFRESH を実行したユーザの権限でコードを実行させることができました。

    全てのユーザ定義コードはマテビュー所有者として実行されるように修正されました。これが期待される動作でした。

    この誤りを使った権限奪取は PostgreSQL 16.x では実施できないことが知られていて、おそらく 16.x では実際には脆弱性が無いと見られます。(CVE-2024-0985)

  3. JIT のインライン化を実行する時のメモリリークが修正されました。 (Andres Freund, Daniel Gustafsson) (16)(15)(14)(13)(12)
  4. 多数の JITコンパイルの後にバックエンドプロセスがメモリ不足状態になることが報告されていました。

  5. 不正なパーティション結合のプランが生成されないように修正されました。 (Richard Guo) (16)(15)(14)(13)(12)
  6. LATERAL参照を伴うまれな状況で、不正な実行プランが作られる可能性がありました。影響を受ける場合には、誤った問い合わせ結果が返る、「ERROR: variable not found in subplan target list」などの奇妙なエラーになる、あるいは、エグゼキュータでプロセスがクラッシュする可能性がありました。

  7. PlaceHolderVar でサブクエリ出力式の不正なラッピングが修正されました。 (Tom Lane) (16)(15)(14)(13)(12)
  8. サブクエリが、外部結合の下にあって、外部結合のスコープ外にあるものを LATERAL参照する出力列を持っているとき、誤った問い合わせ結果が生じる可能性がありました。外部結合により生じるべき出力列の NULL が、異なる値になる可能性がありました。

    PlaceHolderVar はプランナの実装コードにおいて別のプランノード結果から値が充当される変数を意味します。

  9. ウィンドウ関数の条件実行(EXPLAIN で「Run Condition:」と出力される動作)の誤動作が修正されました。 (Richard Guo) (16)(15)
  10. 本誤りにより予期せぬエラー「ERROR: WindowFunc not found in subplan target lists」が生じるおそれがありました。

  11. Memoize プランについて内側のユニーク性の検出について修正されました。 (Richard Guo) (16)
  12. この誤りにより「ERROR: cache entry already complete」が生じるおそれがありました。

  13. 定数畳み込みをするフィールドを選択するときの varnullingrels の計算が修正されました。 (Richard Guo) (16)
  14. 「ERROR: wrong varnullingrels (b) (expected (b 3)) for Var 2/2」といった予期せぬエラーが発生することがありました。

    varnullingrels はプランナの実装コードにおける変数ノードの修飾情報の一つです。

  15. MERGE がパーティションにまたがる更新をするときに、不適切な動作を行わないようになりました。 (Dean Rasheed) (16)(15)
  16. パーティションテーブルに対して MERGE UPDATE 動作をするときに、パーティションキーを変更するために UPDATE が DELETE と INSERT に置き換えられる場合に「AFTER UPDATE ROW」トリガを発効しないようになりました。RLS 検査などの他の UPDATE 後のアクションも同様に行われなくなります。

    これらのアクションは一般的には失敗します。このことは通常の UPDATE で実行しない理由であり、MERGE でも実行すべきではありません。

  17. パーティションにまたがる MERGE の更新で、BEFORE ROW DELETE トリガが動作するようになりました。 (Dean Rasheed) (16)(15)
  18. このようなトリガが NULL を返すことで更新を妨げようとした場合、MERGE がエラーやアサート失敗を引き起こしていました。

    「ERROR: could not open file "base/16384/16393.1" (target block 3081245700): previous segment is only 1 blocks」というエラーが出るケースが報告されました。

  19. BEFORE ROW UPDATEトリガで PINされていないバッファへのアクセスが防止されました。 (Alexander Lakhin, Tom Lane) (16)(15)(14)
  20. 更新中タプルが別セッションによって更新されて別ページに移動されたばかりの場合、バッファへの PINなしに新しいタプルバージョンからデータを取得しようとするタイミングがありました。これにより原理的には、新タプルの未更新列にガベージデータが表示される可能性がありました。

    実際に問題が生じる可能性は低いと見られます。

  21. パラレルハッシュ結合で巨大な共有メモリ領域の要求が回避されました。 (Thomas Munro, Andrei Lepikhov, Alexander Korotkov) (16)(15)(14)(13)(12)
  22. 上限値が大きすぎたために、予想ハッシュテーブルサイズが大きい場合に「ERROR: invalid DSA memory alloc request size ..」エラーが発生することがありました。

  23. 一時テーブルを拡張しようとしてエラーが発生するときに、ローカルバッファ状態が破損されることがあり、修正されました。 (Tender Wang) (16)
  24. ディスク不足時にエラーが生じた後、アサート失敗が生じるケースが報告されました。

  25. 複数引数を持つ DISTINCT 指定された集約を評価するときに、誤ったタプルスロットの使用が修正されました。 (David Rowley) (16)
  26. この誤りにより、エグゼキュータで「ERROR: attribute 1 of type record has wrong type」などのエラーが生じる可能性がありました。

    (エラー発生例)
    db1=# SELECT
            string_agg(DISTINCT 'a', ','),
            sum((SELECT sum(1) FROM (VALUES(1)) b(id) WHERE a.id = b.id))
            FROM unnest(array[1]) a(id);
    ERROR:  attribute 1 of type record has wrong type
    DETAIL:  Table has type text, but query expects integer.
    
    (正しい応答)
     string_agg | sum
    ------------+-----
     a          |   1
    (1 row)
    
  27. 外部キーの制約トリガで更新されるタプルが追加の可視性検査に失敗するときに、heap_update() と heap_delete() でアサート失敗にならないように修正されました。 (Alexander Lakhin) (16)(15)(14)(13)(12)
  28. この誤りはアサートを無効にした実運用むけビルドでは、何ら影響はありません。

  29. 複雑な継承テーブルツリーに対する ALTER TABLE .. ADD COLUMN でエラーになることがあり、修正されました。 (Tender Wang) (16)(15)(14)(13)(12)
  30. 孫テーブルが複数の中間の親テーブルを通して新たな列を継承した場合、「ERROR: tuple already updated by self」エラーが生じました。

  31. ALTER TEXT SEARCH CONFIGURATION ... MAPPING で指定するトークン名が重複している場合の問題が修正されました。 (Tender Wang, Michael Paquier) (16)(15)(14)(13)(12)
  32. これまでは「ERROR: tuple already updated by self」が発生していました。

  33. DROP RULE で重複したロール名を指定した場合について修正されました。 (Michael Paquier) (16)
  34. これまでは「ERROR: tuple already updated by self」が発生していましたが、これからは重複した指定を無視してエラーを出さないようになります。

    (これまでのエラー例)
    db1=# CREATE ROLE u;
    db1=# DROP ROLE u, u;
    ERROR:  tuple already updated by self
    
  35. DROP STATISTICS が関連するテーブルに適切にロックを取得するようになりました。 (Tomas Vondra) (16)(15)(14)(13)(12)
  36. ロック取得不足のため、DROP STATISTICS を ANALYZE と同時に実行した場合に、「ERROR: tuple concurrently deleted」が発生していました。

  37. GENERATED と DEFAULT の式で関数の揮発性検査が修正されました。 (Tom Lane) (16)(15)(14)(13)(12)
  38. これらの場所では、関数のデフォルト引数に VOLATILE 関数が指定されているのを検出できなかったり、使われる具体的なデータ型について実際には IMMUTABLE であるのに多様関数を VOLATILE と判断したりする可能性がありました。

    これにより GENERATED句を不適切に拒否または受け入れしたり、ALTER TABLE .. ADD COLUMN で定数デフォルト値の最適化を誤って適用したりする可能性がありました。

  39. フィールドを TOAST から展開するときに、新たなカタログキャッシュエントリが古くなったことを検出するようになりました。 (Tom Lane) (16)(15)(14)(13)(12)
  40. カタログタプルの行外フィールドは何であれ、カタログキャッシュに挿入する前に、TOAST展開されます。これはカタログキャッシュエントリを無効化するかもしれないデータベースアクセスと関わりますが、新たなエントリはまだキャッシュに存在していません。その結果、既に古くなったキャッシュエントリが作られて永続化するかもしれないという競合動作になります。これにより(例えば DDL の同時実行で稀に)予期せぬ振る舞いがもたらされました。

    TOAST展開後にタプルの可視性を再チェックすることで修正されました。

  41. 一部プラットフォームにおけるエッジケースの整数オーバーフロー検知の誤りが修正されました。 (Dean Rasheed) (16)(15)(14)(13)(12)
  42. 「0 - INT64_MIN」の計算はオーバーフローエラーとなるべきで、大部分のプラットフォームではそうなっています。しかしながら、組み込みの整数オーバーフローが無く、128-bit整数も無いプラットフォームの場合、オーバーフローを検知できず、INT64_MIN の値を返していました。

  43. timestamp型の値に interval型の値を足し引きするときに、ユリウス日のオーバーフローを検出するようになりました。 (Tom Lane) (16)(15)(14)(13)(12)
  44. timestamp型の範囲を越えていて「ERROR: timestamp out-of-range」を出すべき一部の場合で、ERROR ではなく誤った問い合わせ結果を返していました。

  45. interval_mul() と interval_div() でオーバーフロー検査を更に追加しました。 (Dean Rasheed) (16)(15)(14)(13)(12)
  46. interval型の値の掛け算と割り算で、「ERROR: interval out of range」を出すべき一部ケースで、ERROR ではなく誤った問い合わせ結果を返していました。

  47. 内部実装関数 scram_SaltedPassword() が割り込み可能になりました。 (Bowen Shi) (16)
  48. 大きな scram_iterations(イテレーション回数が多い)場合に、本関数は時間を要します。本関数は例えば password_encryption が scram-sha-256 であるときに ALTER ROLE ... PASSWORD '...' でパスワード変更するときに使われます。本修正により本関数実行中に問い合わせのキャンセルが可能になりました。

  49. 設定パラメータ stats_fetch_consistency が変更されたときに、キャッシュされた統計情報が確実に破棄されるようになりました。 (Shinya Kato) (16)(15)
  50. 一部のコードパスで、古い統計情報が返される可能性がありました。本修正は以下のビューの応答に影響があります。

     pg_stat_archiver
     pg_stat_bgwriter
     pg_stat_checkpointer
     pg_stat_io
     pg_stat_slru
     pg_stat_wal
    
  51. pg_file_settingsビューが backend および superuser-backend コンテキストの設定について未適用の値の妥当性を検査するようになりました。 (Tom Lane) (16)(15)(14)(13)(12)
  52. これまで、該当の設定パラメータについて無効な値であっても error列に何も出力されませんでした。

    (16.x での該当設定パラメータ)
     ignore_system_indexes
     jit_debugging_support
     jit_profiling_support
     log_connections
     log_disconnections
     post_auth_delay
    
  53. 新たなパーティションインデックスに既存インデックスを当てはめるときに、照合順序も一致させるようになりました。 (Peter Eisentraut) (16)(15)(14)(13)(12)
  54. これまではパーティションキーの対応する要素から、異なる照合順序を持つインデックスも受け入れていて、誤動作を引き起こす可能性がありました。

  55. パーティションインデックスに対する REINDEX INDEX で、子インデックスが同時に削除された場合のエラーを回避するようになりました。 (Fei Changhong) (16)(15)(14)
  56. 予期せぬ「ERROR: could not open relation with OID」が発生していました。

  57. GINインデックスの内部ページの不完全な分割をクリーンアップする時の、不十分なロックが修正されました。 (Fei Changhong, Heikki Linnakangas) (16)(15)(14)(13)(12)
  58. バッファへの(排他ロックではなく)共有ロックでこれを行おうとしていましたが、二つのプロセスが同時にクリーンアップを行おうとするとインデックス破損が生じる可能性がありました。

  59. GINインデックスの挿入で早すぎるバッファPIN の解放が回避されました。 (Tom Lane) (16)(15)(14)(13)(12)
  60. インデックスのルートページの分割が自身の挿入と同時に生じると、「ERROR: buffer NNNN is not owned by resource owner」になる可能性がありました。

  61. パーティションテーブルに対する SP-GiSTインデックス のエラーが回避されました。 (Tom Lane) (16)(15)(14)(13)(12)
  62. このようなインデックスを使用しようとして、「ERROR: could not open file "pg_tblspc/0/PG_16_202307071/0/0": No such file or directory」といったエラーが生じる可能性がありました。

  63. ラージオブジェクトの所有者検査が修正されました。 (Tom Lane) (16)
  64. 所有者権限が必要なラージオブジェクト操作(例えば GRANT や COMMENT)で、所有者ユーザであってもスーパーユーザでない限り、「ERROR: unrecognized class ID: 2613」といったエラーが出て失敗しました。

  65. ラージオブジェクトの所有者変更の報告について修正されました。 (Tom Lane) (16)(15)(14)(13)(12)
  66. 何もしない ALTER LARGE OBJECT OWNER コマンド(元の所有者を指定するなど)が、誤った class ID を PostAlterHook に渡していました。本フックを使っている拡張に混乱をもたらしていたと考えられます。

  67. EXPLAIN (BUFFERS) での I/O タイミングデータの報告が修正されました。 (Michael Paquier) (16)(15)
  68. 「shared/local」ラベルの数は実際には共有バッファだけを参照していました。本修正で、このラベルは「shared」に変更されました。

  69. CREATE DATABASE の耐久性が保証されるようになりました。 (Noah Misch) (16)(15)
  70. これまで、CREATE DATABASE の実行中や直後に OSクラッシュが生じた場合、リカバリに失敗したり、起動後にそのデータベースへの接続に失敗する可能性がありました。同様のタイミングでベースバックアップを取得した場合にも、そのバックアップを使用する時に似た問題が起きる可能性がありました。症状としては、データベースディレクトリや PG_VERSIONファイル、pg_filenode.mapファイルが欠損するか空になります。

  71. バックアップからのリカバリ開始時、終了時に「LOG」メッセージをより多く出すようになりました。 (Andres Freund) (16)(15)
  72. リカバリの問題を診断するのに役立つ追加情報がマスタプロセスのログとして提供されます。具体的には以下のメッセージです。

    LOG:  starting backup recovery with redo LSN XX/XXXXXXXX, checkpoint LSN XX/XXXXXXXX, on timeline ID NN
    LOG:  restarting backup recovery with redo LSN XX/XXXXXXXX
    LOG:  completed backup recovery with redo LSN XX/XXXXXXXX and end LSN XX/XXXXXXXX
    
  73. スタンバイサーバがサブトランザクションでデッドインデックスタプルを不正に処理するのが、防止されました。 (Fei Changhong) (16)(15)(14)(13)(12)
  74. 実装においてサブトランザクションで startedInRecoveryフラグが正しく設定されていませんでした。これはデッドインデックスタプルの処理にのみ影響があります。この誤りにより、サブトランザクション中の問い合わせが返すべき(プライマリではデッドだがスタンバイでは未だ有効な)インデックスエントリを無視してしまう可能性があり、誤った問い合わせ結果が生じます。あるいは、未だプライマリではデッドになっていないインデックスエントリにデッドと早すぎる印付けをしてしまう可能性がありました。後者は深刻な結果になるか明らかではありませんが、想定された動作ではありません。

  75. walreceiverプロセスのシグナル処理が修正されました。 (Heikki Linnakangas) (16)
  76. レプリケーション接続確立まで待つ間、walreceiver を SIGTERM に応答しないようにした変更を、旧に戻しました。以前の変更内容では、スタンバイ昇格が妨げられることがありました。

  77. レコードが WALデコーディングのバッファに収まるかどうかの検査で、整数オーバーフローの危険があり、修正されました。 (Thomas Munro) (16)(15)
  78. このバグは 64-bitプラットフォーム上で 32-bit ビルドした PostgreSQL を稼働させる場合を除き、顕在化しないと考えられます。

  79. ロジカルレプリケーションの apply worker と、その tablesync worker、および、ALTER SUBSCRIPTION を試みるセッションプロセスの間のデッドロックが修正されました。 (Shlok Kyal) (16)(15)(14)(13)(12)
  80. このデッドロックの一端はロック待ちと無関係であるため、デッドロックに陥ると自動では検出できず、(コマンドキャンセルやプロセス停止など)手動で介入しない限り永続的に止まってしまいます。

    tablesync worker はロジカルレプリケーションのテーブル初期同期を行うものです。apply worker は変更差分の適用を行います。

  81. pgoutput 論理レプリケーション・プラグインで、列のデフォルト値が正しく転送されることが保証されました。 (Nikhil Benesch) (16)(15)
  82. 新しい列にデフォルトの定数値を持つ ALTER TABLE ... ADD COLUMN ... は、既存のタプルの書き換えをせず、代わりにタプルの読み取りコードが正しいデフォルト値を挿入することを期待していました。

    その後、そのテーブルでレプリケーションが開始された場合、pgoutput は正しいデフォルト値の代わりに NULL を送信し、サブスクライバで不正なレプリケーションを引き起こしていました。

  83. 列のないテーブルに対する論理レプリケーションの初期同期の失敗が修正されました。 (Vignesh C) (16)(15)
  84. このケースでは、不適切な形式の COPY コマンドが生成されていました。

  85. 使用する前にサブスクリプションの接続文字列を再検証するようになりました。 (Vignesh C) (16)
  86. これは、password_required=true のサブスクリプションがスーパーユーザを所有者として接続文字列にパスワードなしで作成されたけれども、その後に所有者が非スーパーユーザに変更されたケースを検出することを目的としています。

    これまではパスワードファイルや PGPASSWORD環境変数でパスワードが供給されれば、接続文字列にパスワードの無いサブスクリプションを一般ユーザで利用可能でした。

  87. 新しいクライアントが、サーバのパスワードチャレンジに応答せずに切断した場合に、CheckPWChallengeAuth が正しいステータスコードを返すようになりました。 (Liu Lang, Tom Lane) (16)(15)(14)(13)(12)
  88. CheckPWChallengeAuth は PostgreSQL実装内部の関数です。これまで一部ケースでこの場合をログ出力されるエラーとして扱っていました。これは意図したものではなく、psql のような一般的なクライアントで頻繁にある動作であるため、ログスパムの生成につながっていました。

    また、この誤りは ClientAuthentication_hook を使用する拡張を混乱させたかもしれません。

  89. OpenSSL 3.2 との非互換性が修正されました。 (Tristan Partin, Bo Andreson) (16)(15)(14)(13)(12)
  90. 「data」フィールドの使用に代えて BIO「app_data」フィールドを使用するようになりました。以前のバージョンでは問題ありませんでしたが、3.2 ではクラッシュや二重解放のエラーを引き起こしていました。

  91. OpenSSLがエラー時に errno を設定しないことに、より注意するようになりました。 (Tom Lane) (16)(15)(14)(13)(12)
  92. 以前の実装では、errno が設定されていない場合、報告されたエラーの原因は EOF の読み込みだと決めつけていました。 これにより「could not accept SSL connection: Success」のような奇妙なエラー報告が稀に発生していました。

  93. 外部データラッパーの ForeignAsyncRequest関数が失敗した場合の、ファイルディスクリプタのリークが修正されました。 (Heikki Linnakangas) (16)(15)(14)
  94. 外部テーブルから構成されたパーティションテーブルへの問い合わせなどで、非同期実行が使われたときに ERROR を出す場合に、該当している可能性があります。

  95. CREATE SUBSCRIPTION の接続文字列検証における軽度のメモリリークが修正されました。 (Jeff Davis) (16)
  96. ファイル関連のシステムコールによる ENOMEM エラーを「internal_error」(SQLSTATE: XX000) ではなく、「out_of_memory」(SQLSTATE: 53200) として報告するようになりました。 (Alexander Kuzmenkov) (16)(15)(14)(13)(12)
  97. PL/pgSQL の中で SQL標準形式の本体を持つ CREATE FUNCTION / CREATE PROCEDURE をサポートするようになりました。 (Tom Lane) (16)(15)(14)
  98. 以前は、関数本体にセミコロンが含まれているため、構文エラーとなっていました。

    (本マイナーバージョンから実行可能になった PL/pgSQL の例)
    db1=# DO LANGUAGE plpgsql $$
          BEGIN
            CREATE FUNCTION f1() RETURNS int
              BEGIN ATOMIC
                SELECT 1;
              END;
            END $$;
    
    (以前は以下のようなエラーになった)
    ERROR:  syntax error at end of input
    LINE 5:             SELECT 1;
    
  99. libpq によるパイプラインのエラー処理が修正されました。 (Álvaro Herrera) (16)(15)(14)
  100. クエリの問題以外の理由 (接続が失われた場合など) でエラーが返された場合、パイプラインの状態が同期しなくなる可能性があります。これにより、呼び出し側のアプリケーションでビジーループが発生する可能性がありました。

  101. libpq の PQsendFlushRequest() 関数が、他の「PQsend」関数と同じルールの下でクライアント出力バッファをフラッシュするようになりました。 (Jelte Fennema-Nio) (16)(15)(14)
  102. パイプラインモードでも、引き続き PQflush() を呼び出す必要がある場合がありますが、この変更により一部の不整合が解消されます。

  103. libpq が 2つの異なるスレッドで OpenSSL を同時に初期化するときの競合状態を、回避するようになりました。 (Willi Mann, Michael Paquier) (16)(15)(14)(13)(12)
  104. GSSAPI データ送信におけるタイミング依存のエラーが修正されました。 (Tom Lane) (16)(15)(14)(13)(12)
  105. ノンブロッキングモードで GSSAPI 暗号化を使用すると、libpq が「GSSAPI caller failed to retransmit all data needing to be retried」というエラーを出して、サーバへのデータ送出に失敗することがありました。

  106. postgresql.conf の lc_ で始まる設定パラメータ(例えば lc_messages)のコメントを常に解除するように、initdb が変更されました。 (Kyotaro Horiguchi) (16)
  107. initdb は V16以前は postgresql.conf の「lc_...」パラメータのコメントを常に解除していて、本マイナーバージョンアップで再び元の動作に戻されました。16.0 の変更により、initdb の --no-locale オプションがlc_messages に意図した効果を及ぼさなくなっていました。

  108. pg_dump で、拡張のメンバーオブジェクトのRLSポリシーまたはセキュリティラベルをダンプしなくなりました。 (Tom Lane, Jacob Champion) (16)(15)(14)(13)(12)
  109. 以前は、コマンドがこれらのプロパティを設定するためダンプに含まれていましたが、これらのプロパティは拡張機能の内部事項として考慮される必要があるため、全く誤った動作でした。さらに、復元するユーザにはそれらを設定するための十分な権限がない可能性があり、(RLSポリシーをダンプするにはテーブルのロックを取得する必要があるため)ダンプするユーザにもそれらをダンプするための十分な権限がない可能性がありました。

  110. pg_dump で、元となるテーブルがダンプされていない場合は、拡張統計オブジェクトをダンプしないようになりました。 (Rian McGuire, Tom Lane) (16)(15)(14)(13)(12)
  111. 典型的には「--exclude-table」などの指定で一部テーブルを除外したときに、除外したテーブルの拡張統計オブジェクトも除外するということです。これはインデックスなどの他の依存オブジェクトの動作に準拠します。

  112. pg_dump のあるコードパスで、メモリ不足を適切に検出するようになりました。 (Daniel Gustafsson) (16)
  113. pgbenchスクリプトが、開いたままのパイプラインで終了することをエラーとして扱うようになりました。 (Anthonin Bonnefoy) (16)(15)(14)
  114. 以前は、\startpipeline コマンドに一致する\endpipeline がない場合、pgbench は奇妙な動作をしていました。これは、pgbench が適切に処理する必要があるケースというよりは、スクリプトのミスのように見えるため、エラーを投げるようになりました。

  115. BRIN インデックスの bloom演算子クラス で、false_positive_rate に関する過度に厳密なアサートが修正されました。 (Alexander Lakhin) (16)(15)(14)
  116. false_positive_rate パラメータに最大値を指定したときに、アサート失敗が生じる動作が報告されました。

  117. contrib/intarray で、INT_MAX に等しい値の要素を持つ配列がgist__int_ops インデックスに挿入された場合のクラッシュが修正されました。 (Alexander Lakhin, Tom Lane) (16)(15)(14)(13)(12)
  118. contrib/pageinspect の hash_bitmap_info() 関数がパーティション化されたハッシュインデックスに適用されるときに、より適切なエラーを報告するようになりました。 (Alexander Lakhin, Michael Paquier) (16)(15)(14)(13)(12)
  119. 「ERROR: could not open file "....": No such file or directory」といったエラーが生じる動作が報告されました。

  120. contrib/pgstattuple の pgstathashindex() 関数がパーティション化されたハッシュ インデックスに適用されるときに、より適切なエラーを報告するようになりました。 (Alexander Lakhin) (16)(15)(14)(13)(12)
  121. 「ERROR: could not open file "....": No such file or directory」といったエラーが生じる動作が報告されました。

  122. Windows では、pg_ctl および pg_regress でサブプロセスを起動するときに自動実行オプションを抑制するようになりました。 (Kyotaro Horiguchi) (16)(15)(14)(13)(12)
  123. cmd.exe 経由で子プロセスを起動するときは、/D フラグを渡して、レジストリで指定された自動実行コマンドが実行されないようになりました。これにより予想外の副作用が回避できます。

  124. ソースコードにおいて、is_valid_ascii() が mb/pg_wchar.h から utils/ascii.h に移動されました。 (Jubilee Young) (16)(15)
  125. この変更により、pg_wchar.h で「include 」を行う必要がなくなりました。一部のサードパーティコードで問題が発生していました。

  126. libxml2 のバージョン 2.12.0 以降でのコンパイル失敗が修正されました。 (Tom Lane) (16)(15)(14)(13)(12)
  127. Windows での WAL_DEBUG を有効にしたときのコードのコンパイル失敗が修正されました。 (Bharath Rupireddy) (16)(15)(14)(13)
  128. Python のヘッダーファイルからのコンパイラ警告が抑制されるようになりました。 (Peter Eisentraut, Tom Lane) (16)(15)(14)(13)(12)
  129. PostgreSQL のビルドで選択されるコンパイラオプションは、Python のヘッダファイルの最新バージョンに含まれる構造体に関する警告を引き起こしました。gcc を使用する場合、プラグマを使用してこれらの警告を抑制するようになります。

  130. LLVM 18 でのコンパイル時に非推奨の警告が出ないようになりました。 (Thomas Munro) (16)(15)(14)(13)(12)
  131. タイムゾーンデータファイルが tzdata release 2024a に更新されました。 (16)(15)(14)(13)(12)
  132. グリーンランド、カザフスタン、パレスチナの夏時間法の変更、南極観測点のケーシーとボストークの修正、ベトナム、トロント、ミクロン島の歴史的修正が含まれます。

  133. LWLock のキューから取り出しするときに、待機中のプロセスのリストを検索する必要がなくなりました。 (Andres Freund) (15)(14)(13)(12)
  134. これにより、待ちリストが長い場合の O(N^2) の動作が修正されました。一部のユースケースでは、これによりスループットが大幅に向上します。

  135. ロジカルデコーディング中に間違ったスナップショットでシステムカタログを検査することが防止されました。 (Fei Changhong) (15)(14)
  136. システムカタログを変更するトランザクションの途中でデコーディングが開始されると、デコーダがそれを認識できず、そのトランザクションをカタログ検索の進行中として扱うことができない場合がありました。

    この修正は、トップレベルのトランザクションにはすでにカタログ変更が含まれているとマークされているけれども、そのサブトランザクションにはマークがついていない場合に対処します。

    「ERROR: could not map filenode "..." to relation OID」という奇妙なエラーメッセージが出るケースが報告されました。