このリリースは 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 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。
- REFRESH MATERIALIZED VIEW CONCURRENTLY 内でのセキュリティ上の制限を厳格化しました。 (Heikki Linnakangas) (16)(15)(14)(13)(12)
- JIT のインライン化を実行する時のメモリリークが修正されました。 (Andres Freund, Daniel Gustafsson) (16)(15)(14)(13)(12)
- 不正なパーティション結合のプランが生成されないように修正されました。 (Richard Guo) (16)(15)(14)(13)(12)
- PlaceHolderVar でサブクエリ出力式の不正なラッピングが修正されました。 (Tom Lane) (16)(15)(14)(13)(12)
- ウィンドウ関数の条件実行(EXPLAIN で「Run Condition:」と出力される動作)の誤動作が修正されました。 (Richard Guo) (16)(15)
- Memoize プランについて内側のユニーク性の検出について修正されました。 (Richard Guo) (16)
- 定数畳み込みをするフィールドを選択するときの varnullingrels の計算が修正されました。 (Richard Guo) (16)
- MERGE がパーティションにまたがる更新をするときに、不適切な動作を行わないようになりました。 (Dean Rasheed) (16)(15)
- パーティションにまたがる MERGE の更新で、BEFORE ROW DELETE トリガが動作するようになりました。 (Dean Rasheed) (16)(15)
- BEFORE ROW UPDATEトリガで PINされていないバッファへのアクセスが防止されました。 (Alexander Lakhin, Tom Lane) (16)(15)(14)
- パラレルハッシュ結合で巨大な共有メモリ領域の要求が回避されました。 (Thomas Munro, Andrei Lepikhov, Alexander Korotkov) (16)(15)(14)(13)(12)
- 一時テーブルを拡張しようとしてエラーが発生するときに、ローカルバッファ状態が破損されることがあり、修正されました。 (Tender Wang) (16)
- 複数引数を持つ DISTINCT 指定された集約を評価するときに、誤ったタプルスロットの使用が修正されました。 (David Rowley) (16)
- 外部キーの制約トリガで更新されるタプルが追加の可視性検査に失敗するときに、heap_update() と heap_delete() でアサート失敗にならないように修正されました。 (Alexander Lakhin) (16)(15)(14)(13)(12)
- 複雑な継承テーブルツリーに対する ALTER TABLE .. ADD COLUMN でエラーになることがあり、修正されました。 (Tender Wang) (16)(15)(14)(13)(12)
- ALTER TEXT SEARCH CONFIGURATION ... MAPPING で指定するトークン名が重複している場合の問題が修正されました。 (Tender Wang, Michael Paquier) (16)(15)(14)(13)(12)
- DROP RULE で重複したロール名を指定した場合について修正されました。 (Michael Paquier) (16)
- DROP STATISTICS が関連するテーブルに適切にロックを取得するようになりました。 (Tomas Vondra) (16)(15)(14)(13)(12)
- GENERATED と DEFAULT の式で関数の揮発性検査が修正されました。 (Tom Lane) (16)(15)(14)(13)(12)
- フィールドを TOAST から展開するときに、新たなカタログキャッシュエントリが古くなったことを検出するようになりました。 (Tom Lane) (16)(15)(14)(13)(12)
- 一部プラットフォームにおけるエッジケースの整数オーバーフロー検知の誤りが修正されました。 (Dean Rasheed) (16)(15)(14)(13)(12)
- timestamp型の値に interval型の値を足し引きするときに、ユリウス日のオーバーフローを検出するようになりました。 (Tom Lane) (16)(15)(14)(13)(12)
- interval_mul() と interval_div() でオーバーフロー検査を更に追加しました。 (Dean Rasheed) (16)(15)(14)(13)(12)
- 内部実装関数 scram_SaltedPassword() が割り込み可能になりました。 (Bowen Shi) (16)
- 設定パラメータ stats_fetch_consistency が変更されたときに、キャッシュされた統計情報が確実に破棄されるようになりました。 (Shinya Kato) (16)(15)
- pg_file_settingsビューが backend および superuser-backend コンテキストの設定について未適用の値の妥当性を検査するようになりました。 (Tom Lane) (16)(15)(14)(13)(12)
- 新たなパーティションインデックスに既存インデックスを当てはめるときに、照合順序も一致させるようになりました。 (Peter Eisentraut) (16)(15)(14)(13)(12)
- パーティションインデックスに対する REINDEX INDEX で、子インデックスが同時に削除された場合のエラーを回避するようになりました。 (Fei Changhong) (16)(15)(14)
- GINインデックスの内部ページの不完全な分割をクリーンアップする時の、不十分なロックが修正されました。 (Fei Changhong, Heikki Linnakangas) (16)(15)(14)(13)(12)
- GINインデックスの挿入で早すぎるバッファPIN の解放が回避されました。 (Tom Lane) (16)(15)(14)(13)(12)
- パーティションテーブルに対する SP-GiSTインデックス のエラーが回避されました。 (Tom Lane) (16)(15)(14)(13)(12)
- ラージオブジェクトの所有者検査が修正されました。 (Tom Lane) (16)
- ラージオブジェクトの所有者変更の報告について修正されました。 (Tom Lane) (16)(15)(14)(13)(12)
- EXPLAIN (BUFFERS) での I/O タイミングデータの報告が修正されました。 (Michael Paquier) (16)(15)
- CREATE DATABASE の耐久性が保証されるようになりました。 (Noah Misch) (16)(15)
- バックアップからのリカバリ開始時、終了時に「LOG」メッセージをより多く出すようになりました。 (Andres Freund) (16)(15)
- スタンバイサーバがサブトランザクションでデッドインデックスタプルを不正に処理するのが、防止されました。 (Fei Changhong) (16)(15)(14)(13)(12)
- walreceiverプロセスのシグナル処理が修正されました。 (Heikki Linnakangas) (16)
- レコードが WALデコーディングのバッファに収まるかどうかの検査で、整数オーバーフローの危険があり、修正されました。 (Thomas Munro) (16)(15)
- ロジカルレプリケーションの apply worker と、その tablesync worker、および、ALTER SUBSCRIPTION を試みるセッションプロセスの間のデッドロックが修正されました。 (Shlok Kyal) (16)(15)(14)(13)(12)
- pgoutput 論理レプリケーション・プラグインで、列のデフォルト値が正しく転送されることが保証されました。 (Nikhil Benesch) (16)(15)
- 列のないテーブルに対する論理レプリケーションの初期同期の失敗が修正されました。 (Vignesh C) (16)(15)
- 使用する前にサブスクリプションの接続文字列を再検証するようになりました。 (Vignesh C) (16)
- 新しいクライアントが、サーバのパスワードチャレンジに応答せずに切断した場合に、CheckPWChallengeAuth が正しいステータスコードを返すようになりました。 (Liu Lang, Tom Lane) (16)(15)(14)(13)(12)
- OpenSSL 3.2 との非互換性が修正されました。 (Tristan Partin, Bo Andreson) (16)(15)(14)(13)(12)
- OpenSSLがエラー時に errno を設定しないことに、より注意するようになりました。 (Tom Lane) (16)(15)(14)(13)(12)
- 外部データラッパーの ForeignAsyncRequest関数が失敗した場合の、ファイルディスクリプタのリークが修正されました。 (Heikki Linnakangas) (16)(15)(14)
- CREATE SUBSCRIPTION の接続文字列検証における軽度のメモリリークが修正されました。 (Jeff Davis) (16)
- ファイル関連のシステムコールによる ENOMEM エラーを「internal_error」(SQLSTATE: XX000) ではなく、「out_of_memory」(SQLSTATE: 53200) として報告するようになりました。 (Alexander Kuzmenkov) (16)(15)(14)(13)(12)
- PL/pgSQL の中で SQL標準形式の本体を持つ CREATE FUNCTION / CREATE PROCEDURE をサポートするようになりました。 (Tom Lane) (16)(15)(14)
- libpq によるパイプラインのエラー処理が修正されました。 (Álvaro Herrera) (16)(15)(14)
- libpq の PQsendFlushRequest() 関数が、他の「PQsend」関数と同じルールの下でクライアント出力バッファをフラッシュするようになりました。 (Jelte Fennema-Nio) (16)(15)(14)
- libpq が 2つの異なるスレッドで OpenSSL を同時に初期化するときの競合状態を、回避するようになりました。 (Willi Mann, Michael Paquier) (16)(15)(14)(13)(12)
- GSSAPI データ送信におけるタイミング依存のエラーが修正されました。 (Tom Lane) (16)(15)(14)(13)(12)
- postgresql.conf の lc_ で始まる設定パラメータ(例えば lc_messages)のコメントを常に解除するように、initdb が変更されました。 (Kyotaro Horiguchi) (16)
- pg_dump で、拡張のメンバーオブジェクトのRLSポリシーまたはセキュリティラベルをダンプしなくなりました。 (Tom Lane, Jacob Champion) (16)(15)(14)(13)(12)
- pg_dump で、元となるテーブルがダンプされていない場合は、拡張統計オブジェクトをダンプしないようになりました。 (Rian McGuire, Tom Lane) (16)(15)(14)(13)(12)
- pg_dump のあるコードパスで、メモリ不足を適切に検出するようになりました。 (Daniel Gustafsson) (16)
- pgbenchスクリプトが、開いたままのパイプラインで終了することをエラーとして扱うようになりました。 (Anthonin Bonnefoy) (16)(15)(14)
- BRIN インデックスの bloom演算子クラス で、false_positive_rate に関する過度に厳密なアサートが修正されました。 (Alexander Lakhin) (16)(15)(14)
- contrib/intarray で、INT_MAX に等しい値の要素を持つ配列がgist__int_ops インデックスに挿入された場合のクラッシュが修正されました。 (Alexander Lakhin, Tom Lane) (16)(15)(14)(13)(12)
- contrib/pageinspect の hash_bitmap_info() 関数がパーティション化されたハッシュインデックスに適用されるときに、より適切なエラーを報告するようになりました。 (Alexander Lakhin, Michael Paquier) (16)(15)(14)(13)(12)
- contrib/pgstattuple の pgstathashindex() 関数がパーティション化されたハッシュ インデックスに適用されるときに、より適切なエラーを報告するようになりました。 (Alexander Lakhin) (16)(15)(14)(13)(12)
- Windows では、pg_ctl および pg_regress でサブプロセスを起動するときに自動実行オプションを抑制するようになりました。 (Kyotaro Horiguchi) (16)(15)(14)(13)(12)
- ソースコードにおいて、is_valid_ascii() が mb/pg_wchar.h から utils/ascii.h に移動されました。 (Jubilee Young) (16)(15)
- libxml2 のバージョン 2.12.0 以降でのコンパイル失敗が修正されました。 (Tom Lane) (16)(15)(14)(13)(12)
- Windows での WAL_DEBUG を有効にしたときのコードのコンパイル失敗が修正されました。 (Bharath Rupireddy) (16)(15)(14)(13)
- Python のヘッダーファイルからのコンパイラ警告が抑制されるようになりました。 (Peter Eisentraut, Tom Lane) (16)(15)(14)(13)(12)
- LLVM 18 でのコンパイル時に非推奨の警告が出ないようになりました。 (Thomas Munro) (16)(15)(14)(13)(12)
- タイムゾーンデータファイルが tzdata release 2024a に更新されました。 (16)(15)(14)(13)(12)
- LWLock のキューから取り出しするときに、待機中のプロセスのリストを検索する必要がなくなりました。 (Andres Freund) (15)(14)(13)(12)
- ロジカルデコーディング中に間違ったスナップショットでシステムカタログを検査することが防止されました。 (Fei Changhong) (15)(14)
同時リフレッシュのある一段階が弱いセキュリティ制限のもとで実行されていました。マテリアライズドビューの所有者が、何らか説きつけて、スーパーユーザや他の高権限ユーザにそのビューの同時リフレッシュをさせた場合、REFRESH を実行したユーザの権限でコードを実行させることができました。
全てのユーザ定義コードはマテビュー所有者として実行されるように修正されました。これが期待される動作でした。
この誤りを使った権限奪取は PostgreSQL 16.x では実施できないことが知られていて、おそらく 16.x では実際には脆弱性が無いと見られます。(CVE-2024-0985)
多数の JITコンパイルの後にバックエンドプロセスがメモリ不足状態になることが報告されていました。
LATERAL参照を伴うまれな状況で、不正な実行プランが作られる可能性がありました。影響を受ける場合には、誤った問い合わせ結果が返る、「ERROR: variable not found in subplan target list」などの奇妙なエラーになる、あるいは、エグゼキュータでプロセスがクラッシュする可能性がありました。
サブクエリが、外部結合の下にあって、外部結合のスコープ外にあるものを LATERAL参照する出力列を持っているとき、誤った問い合わせ結果が生じる可能性がありました。外部結合により生じるべき出力列の NULL が、異なる値になる可能性がありました。
PlaceHolderVar はプランナの実装コードにおいて別のプランノード結果から値が充当される変数を意味します。
本誤りにより予期せぬエラー「ERROR: WindowFunc not found in subplan target lists」が生じるおそれがありました。
この誤りにより「ERROR: cache entry already complete」が生じるおそれがありました。
「ERROR: wrong varnullingrels (b) (expected (b 3)) for Var 2/2」といった予期せぬエラーが発生することがありました。
varnullingrels はプランナの実装コードにおける変数ノードの修飾情報の一つです。
パーティションテーブルに対して MERGE UPDATE 動作をするときに、パーティションキーを変更するために UPDATE が DELETE と INSERT に置き換えられる場合に「AFTER UPDATE ROW」トリガを発効しないようになりました。RLS 検査などの他の UPDATE 後のアクションも同様に行われなくなります。
これらのアクションは一般的には失敗します。このことは通常の UPDATE で実行しない理由であり、MERGE でも実行すべきではありません。
このようなトリガが NULL を返すことで更新を妨げようとした場合、MERGE がエラーやアサート失敗を引き起こしていました。
「ERROR: could not open file "base/16384/16393.1" (target block 3081245700): previous segment is only 1 blocks」というエラーが出るケースが報告されました。
更新中タプルが別セッションによって更新されて別ページに移動されたばかりの場合、バッファへの PINなしに新しいタプルバージョンからデータを取得しようとするタイミングがありました。これにより原理的には、新タプルの未更新列にガベージデータが表示される可能性がありました。
実際に問題が生じる可能性は低いと見られます。
上限値が大きすぎたために、予想ハッシュテーブルサイズが大きい場合に「ERROR: invalid DSA memory alloc request size ..」エラーが発生することがありました。
ディスク不足時にエラーが生じた後、アサート失敗が生じるケースが報告されました。
この誤りにより、エグゼキュータで「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)
この誤りはアサートを無効にした実運用むけビルドでは、何ら影響はありません。
孫テーブルが複数の中間の親テーブルを通して新たな列を継承した場合、「ERROR: tuple already updated by self」エラーが生じました。
これまでは「ERROR: tuple already updated by self」が発生していました。
これまでは「ERROR: tuple already updated by self」が発生していましたが、これからは重複した指定を無視してエラーを出さないようになります。
(これまでのエラー例) db1=# CREATE ROLE u; db1=# DROP ROLE u, u; ERROR: tuple already updated by self
ロック取得不足のため、DROP STATISTICS を ANALYZE と同時に実行した場合に、「ERROR: tuple concurrently deleted」が発生していました。
これらの場所では、関数のデフォルト引数に VOLATILE 関数が指定されているのを検出できなかったり、使われる具体的なデータ型について実際には IMMUTABLE であるのに多様関数を VOLATILE と判断したりする可能性がありました。
これにより GENERATED句を不適切に拒否または受け入れしたり、ALTER TABLE .. ADD COLUMN で定数デフォルト値の最適化を誤って適用したりする可能性がありました。
カタログタプルの行外フィールドは何であれ、カタログキャッシュに挿入する前に、TOAST展開されます。これはカタログキャッシュエントリを無効化するかもしれないデータベースアクセスと関わりますが、新たなエントリはまだキャッシュに存在していません。その結果、既に古くなったキャッシュエントリが作られて永続化するかもしれないという競合動作になります。これにより(例えば DDL の同時実行で稀に)予期せぬ振る舞いがもたらされました。
TOAST展開後にタプルの可視性を再チェックすることで修正されました。
「0 - INT64_MIN」の計算はオーバーフローエラーとなるべきで、大部分のプラットフォームではそうなっています。しかしながら、組み込みの整数オーバーフローが無く、128-bit整数も無いプラットフォームの場合、オーバーフローを検知できず、INT64_MIN の値を返していました。
timestamp型の範囲を越えていて「ERROR: timestamp out-of-range」を出すべき一部の場合で、ERROR ではなく誤った問い合わせ結果を返していました。
interval型の値の掛け算と割り算で、「ERROR: interval out of range」を出すべき一部ケースで、ERROR ではなく誤った問い合わせ結果を返していました。
大きな scram_iterations(イテレーション回数が多い)場合に、本関数は時間を要します。本関数は例えば password_encryption が scram-sha-256 であるときに ALTER ROLE ... PASSWORD '...' でパスワード変更するときに使われます。本修正により本関数実行中に問い合わせのキャンセルが可能になりました。
一部のコードパスで、古い統計情報が返される可能性がありました。本修正は以下のビューの応答に影響があります。
pg_stat_archiver pg_stat_bgwriter pg_stat_checkpointer pg_stat_io pg_stat_slru pg_stat_wal
これまで、該当の設定パラメータについて無効な値であっても error列に何も出力されませんでした。
(16.x での該当設定パラメータ) ignore_system_indexes jit_debugging_support jit_profiling_support log_connections log_disconnections post_auth_delay
これまではパーティションキーの対応する要素から、異なる照合順序を持つインデックスも受け入れていて、誤動作を引き起こす可能性がありました。
予期せぬ「ERROR: could not open relation with OID」が発生していました。
バッファへの(排他ロックではなく)共有ロックでこれを行おうとしていましたが、二つのプロセスが同時にクリーンアップを行おうとするとインデックス破損が生じる可能性がありました。
インデックスのルートページの分割が自身の挿入と同時に生じると、「ERROR: buffer NNNN is not owned by resource owner」になる可能性がありました。
このようなインデックスを使用しようとして、「ERROR: could not open file "pg_tblspc/0/PG_16_202307071/0/0": No such file or directory」といったエラーが生じる可能性がありました。
所有者権限が必要なラージオブジェクト操作(例えば GRANT や COMMENT)で、所有者ユーザであってもスーパーユーザでない限り、「ERROR: unrecognized class ID: 2613」といったエラーが出て失敗しました。
何もしない ALTER LARGE OBJECT OWNER コマンド(元の所有者を指定するなど)が、誤った class ID を PostAlterHook に渡していました。本フックを使っている拡張に混乱をもたらしていたと考えられます。
「shared/local」ラベルの数は実際には共有バッファだけを参照していました。本修正で、このラベルは「shared」に変更されました。
これまで、CREATE DATABASE の実行中や直後に OSクラッシュが生じた場合、リカバリに失敗したり、起動後にそのデータベースへの接続に失敗する可能性がありました。同様のタイミングでベースバックアップを取得した場合にも、そのバックアップを使用する時に似た問題が起きる可能性がありました。症状としては、データベースディレクトリや PG_VERSIONファイル、pg_filenode.mapファイルが欠損するか空になります。
リカバリの問題を診断するのに役立つ追加情報がマスタプロセスのログとして提供されます。具体的には以下のメッセージです。
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
実装においてサブトランザクションで startedInRecoveryフラグが正しく設定されていませんでした。これはデッドインデックスタプルの処理にのみ影響があります。この誤りにより、サブトランザクション中の問い合わせが返すべき(プライマリではデッドだがスタンバイでは未だ有効な)インデックスエントリを無視してしまう可能性があり、誤った問い合わせ結果が生じます。あるいは、未だプライマリではデッドになっていないインデックスエントリにデッドと早すぎる印付けをしてしまう可能性がありました。後者は深刻な結果になるか明らかではありませんが、想定された動作ではありません。
レプリケーション接続確立まで待つ間、walreceiver を SIGTERM に応答しないようにした変更を、旧に戻しました。以前の変更内容では、スタンバイ昇格が妨げられることがありました。
このバグは 64-bitプラットフォーム上で 32-bit ビルドした PostgreSQL を稼働させる場合を除き、顕在化しないと考えられます。
このデッドロックの一端はロック待ちと無関係であるため、デッドロックに陥ると自動では検出できず、(コマンドキャンセルやプロセス停止など)手動で介入しない限り永続的に止まってしまいます。
tablesync worker はロジカルレプリケーションのテーブル初期同期を行うものです。apply worker は変更差分の適用を行います。
新しい列にデフォルトの定数値を持つ ALTER TABLE ... ADD COLUMN ... は、既存のタプルの書き換えをせず、代わりにタプルの読み取りコードが正しいデフォルト値を挿入することを期待していました。
その後、そのテーブルでレプリケーションが開始された場合、pgoutput は正しいデフォルト値の代わりに NULL を送信し、サブスクライバで不正なレプリケーションを引き起こしていました。
このケースでは、不適切な形式の COPY コマンドが生成されていました。
これは、password_required=true のサブスクリプションがスーパーユーザを所有者として接続文字列にパスワードなしで作成されたけれども、その後に所有者が非スーパーユーザに変更されたケースを検出することを目的としています。
これまではパスワードファイルや PGPASSWORD環境変数でパスワードが供給されれば、接続文字列にパスワードの無いサブスクリプションを一般ユーザで利用可能でした。
CheckPWChallengeAuth は PostgreSQL実装内部の関数です。これまで一部ケースでこの場合をログ出力されるエラーとして扱っていました。これは意図したものではなく、psql のような一般的なクライアントで頻繁にある動作であるため、ログスパムの生成につながっていました。
また、この誤りは ClientAuthentication_hook を使用する拡張を混乱させたかもしれません。
「data」フィールドの使用に代えて BIO「app_data」フィールドを使用するようになりました。以前のバージョンでは問題ありませんでしたが、3.2 ではクラッシュや二重解放のエラーを引き起こしていました。
以前の実装では、errno が設定されていない場合、報告されたエラーの原因は EOF の読み込みだと決めつけていました。 これにより「could not accept SSL connection: Success」のような奇妙なエラー報告が稀に発生していました。
外部テーブルから構成されたパーティションテーブルへの問い合わせなどで、非同期実行が使われたときに ERROR を出す場合に、該当している可能性があります。
以前は、関数本体にセミコロンが含まれているため、構文エラーとなっていました。
(本マイナーバージョンから実行可能になった 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;
クエリの問題以外の理由 (接続が失われた場合など) でエラーが返された場合、パイプラインの状態が同期しなくなる可能性があります。これにより、呼び出し側のアプリケーションでビジーループが発生する可能性がありました。
パイプラインモードでも、引き続き PQflush() を呼び出す必要がある場合がありますが、この変更により一部の不整合が解消されます。
ノンブロッキングモードで GSSAPI 暗号化を使用すると、libpq が「GSSAPI caller failed to retransmit all data needing to be retried」というエラーを出して、サーバへのデータ送出に失敗することがありました。
initdb は V16以前は postgresql.conf の「lc_...」パラメータのコメントを常に解除していて、本マイナーバージョンアップで再び元の動作に戻されました。16.0 の変更により、initdb の --no-locale オプションがlc_messages に意図した効果を及ぼさなくなっていました。
以前は、コマンドがこれらのプロパティを設定するためダンプに含まれていましたが、これらのプロパティは拡張機能の内部事項として考慮される必要があるため、全く誤った動作でした。さらに、復元するユーザにはそれらを設定するための十分な権限がない可能性があり、(RLSポリシーをダンプするにはテーブルのロックを取得する必要があるため)ダンプするユーザにもそれらをダンプするための十分な権限がない可能性がありました。
典型的には「--exclude-table」などの指定で一部テーブルを除外したときに、除外したテーブルの拡張統計オブジェクトも除外するということです。これはインデックスなどの他の依存オブジェクトの動作に準拠します。
以前は、\startpipeline コマンドに一致する\endpipeline がない場合、pgbench は奇妙な動作をしていました。これは、pgbench が適切に処理する必要があるケースというよりは、スクリプトのミスのように見えるため、エラーを投げるようになりました。
false_positive_rate パラメータに最大値を指定したときに、アサート失敗が生じる動作が報告されました。
「ERROR: could not open file "....": No such file or directory」といったエラーが生じる動作が報告されました。
「ERROR: could not open file "....": No such file or directory」といったエラーが生じる動作が報告されました。
cmd.exe 経由で子プロセスを起動するときは、/D フラグを渡して、レジストリで指定された自動実行コマンドが実行されないようになりました。これにより予想外の副作用が回避できます。
この変更により、pg_wchar.h で「include
PostgreSQL のビルドで選択されるコンパイラオプションは、Python のヘッダファイルの最新バージョンに含まれる構造体に関する警告を引き起こしました。gcc を使用する場合、プラグマを使用してこれらの警告を抑制するようになります。
グリーンランド、カザフスタン、パレスチナの夏時間法の変更、南極観測点のケーシーとボストークの修正、ベトナム、トロント、ミクロン島の歴史的修正が含まれます。
これにより、待ちリストが長い場合の O(N^2) の動作が修正されました。一部のユースケースでは、これによりスループットが大幅に向上します。
システムカタログを変更するトランザクションの途中でデコーディングが開始されると、デコーダがそれを認識できず、そのトランザクションをカタログ検索の進行中として扱うことができない場合がありました。
この修正は、トップレベルのトランザクションにはすでにカタログ変更が含まれているとマークされているけれども、そのサブトランザクションにはマークがついていない場合に対処します。
「ERROR: could not map filenode "..." to relation OID」という奇妙なエラーメッセージが出るケースが報告されました。