<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SRA OSS Tech Blog</title>
	<atom:link href="https://www.sraoss.co.jp/tech-blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.sraoss.co.jp/tech-blog/</link>
	<description>OSS専門の技術ブログ。PostgreSQL、Zabbixを中心に10種類以上のOSSの解説、アップデート情報、運用ヒントを提供。</description>
	<lastBuildDate>Fri, 04 Sep 2026 01:01:09 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>

<image>
	<url>https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2018/07/blog-icon-150x150.png</url>
	<title>SRA OSS Tech Blog</title>
	<link>https://www.sraoss.co.jp/tech-blog/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>pgsql-hackersウォッチ（2026年8月）</title>
		<link>https://www.sraoss.co.jp/tech-blog/postgresql-development-trends/hackers-watch-2026-08/</link>
		
		<dc:creator><![CDATA[長田 悠吾 (Yugo Nagata)]]></dc:creator>
		<pubDate>Fri, 04 Sep 2026 00:00:31 +0000</pubDate>
				<category><![CDATA[PostgreSQL開発動向]]></category>
		<category><![CDATA[pgsql-hackersウォッチ]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[オープンソースソフトウェア]]></category>
		<category><![CDATA[コミュニティ]]></category>
		<category><![CDATA[開発]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=21118</guid>

					<description><![CDATA[今回は、PostgreSQL の開発者向けメーリングリストである pgsql-hackers で、2026年8月に行われた議論の中から、筆者が注目した話題を紹介します。網羅的なまとめではなく、筆者が追跡した範囲での内容と ...]]></description>
										<content:encoded><![CDATA[<p>今回は、PostgreSQL の開発者向けメーリングリストである <a href="https://www.postgresql.org/list/pgsql-hackers/" target="_blank" rel="noopener">pgsql-hackers</a> で、2026年8月に行われた議論の中から、筆者が注目した話題を紹介します。網羅的なまとめではなく、筆者が追跡した範囲での内容となります。</p>
<p><span id="more-21118"></span></p>
<h2>PostgreSQL 19 リリースにむけて</h2>
<p>PostgreSQL 19 のリリースに向けた準備が進められています。PostgreSQL のメジャーリリースのリリースノートには、開発だけではなくレビューや開発報告など何らかの形での貢献者の名前リストが掲載されます。これらの名前について、表記揺れや重複、姓と名の順序などを確認する作業が行われました。なお、SRA OSS からも6名（８月時点）の貢献者の名前が含まれています。</p>
<p>一方で、リリース予定機能についてはやや緊迫した状況となっています。きっかけとなったのは、主要開発者の Robert Haas が AI（Claude）を利用して最近の不具合報告を整理し、多数の問題報告が集まっている機能を洗い出したことでした。対象となったのは、外部キー制約の高速化、REPACK / REPACK CONCURRENTLY コマンド、オンライン・データチェックサム有効化、SQL Property Graph Queries（SQL/PGQ）など、PostgreSQL 19 の主要機能です。議論では、それぞれについてリスクを評価し、機能全体または一部を差し戻すべきかどうかが検討されています。</p>
<p>興味深かったのは、こうした状況の背景として、「AI の普及によって従来よりも不具合が発見されやすくなった可能性がある」という意見も出ていたことです。PostgreSQL に限らず、OSS 開発のあり方が変化しつつあることを感じさせる議論でした。</p>
<h2>SSIで相次いで報告された不具合</h2>
<p>新機能ではなく、長年存在する機能に関する議論として、SERIALIZABLE 分離レベルを実現するための仕組みである、シリアライザブルスナップショット分離（SSI）に関する不具合が多数報告されました。ここ最近で SSI に関係する不具合が合計7件報告され、それぞれについて修正案が議論されています。報告された問題には、一意性制約をすり抜けて主キー重複が発生する可能性があるものや、SAVEPOINT の ROLLBACK 時に直列化異常の情報が失われる可能性があるものなどが含まれています。</p>
<p>SSI は PostgreSQL のトランザクション制御機構の中でも特に複雑な部分の一つです。これらの問題はもともと別々のスレッドで報告されたものですが、開発者の Andrey Borodin によって一つのスレッドへ整理されており、SSI の内部動作や課題を理解するための良い手がかりとなっています。</p>
<h2>INSERT SELECT のパラレル化</h2>
<p>性能改善に関する議論では、INSERT SELECT のパラレル化に進展がありました。</p>
<p>INSERT SELECT は、SELECT 文の結果をテーブルに挿入するための構文ですが、この SELECT の実行部分をパラレル化することで、大量データのロードを高速化しようという提案です。しかし、テーブルへの挿入時には、トリガや制約、デフォルト値、生成列などの処理が実行される可能性があり、それらを並列実行しても安全かどうかを確認する必要があります。この確認処理自体がオーバヘッドとなり、巨大なパーティションテーブルなどでは特にそれが顕著となります。</p>
<p>この問題に対し、ユーザ自身が事前にテーブルを「並列安全」と宣言する方式も提案されていましたが、その場合はユーザに全ての責任を負わせることになるため、好ましくありません。これに対して8月には、並列安全性を初回アクセス時に自動計算し、その結果をキャッシュする方法が提案されました。さらに、適切なキャッシュの無効化や、SELECTを並列実行した結果を一旦全て一時ファイルに保存してからテーブルに挿入する方式とのハイブリッドなど、さらなる改善の議論が続いています。</p>
<h2>リカバリのパイプライン化</h2>
<p>もう一つ注目した性能改善提案が、リカバリ処理のパイプライン化です。これは、PostgreSQL のリカバリ（クラッシュリカバリ、アーカイブリカバリ）時に WAL の適用を高速化するための提案です。</p>
<p>現在の PostgreSQL では、リカバリを担当する「startup プロセス」が、WAL の読み込み、デコード、適用をすべて担当しています。提案では、WAL のデコードを専用のバックグラウンドプロセスへ分離し、startup プロセスは WAL の適用に専念する構成となっています。つまり、WAL レコードの生成と消費を異なるプロセスで担当するパイプライン構造であり、これによって、リカバリ処理を20〜42%程度高速化できることが報告されています。</p>
<p>8月には、ロック競合によるオーバーヘッドの削減や、プロセス間シグナル通信の最適化、不正な WAL を検出した場合の責任分担などについて議論が行われました。リカバリアーキテクチャそのものを見直す提案として興味深く感じています。</p>
<h2>VACUUMを妨げる要因を可視化する pg_xmin_horizon</h2>
<p>運用に関する提案としては、新しいシステムビュー pg_xmin_horizon の議論に進展がありました。</p>
<p>PostgreSQL を運用していると、不要データを削除する VACUUM が期待通りに進まないことがあります。その原因としては、長時間実行中のトランザクションやレプリケーションスロット、プリペアドトランザクションなどが考えられます。現在も既存のシステムビューを組み合わせることで調査は可能ですが、それぞれの情報取得タイミングが異なるため、必ずしも正確な状況を把握できるとは限りません。</p>
<p>pg_xmin_horizon は、そのような要因を単一のビューで確認できるようにする提案です。このビューには、VACUUMを妨げている要因（バックエンドプロセス、レプリケーションスロット、プリペアドトランザクション、など）や、その要因によって VACUUMがどこで止められているか、要因となっているトランザクションのIDはなにか、などの情報が含まれています。8月には、表示情報の追加やテスト強化、ドキュメント整備などが進められていました。運用時のトラブルシューティングに役立つ機能として期待できそうです。</p>
<div>
<a href="https://www.sraoss.co.jp/prod_serv/support/pgsql-mainte/?utm_source=sraoss-techblog&utm_medium=referral&utm_campaign=under-article-pgsql" rel="noopener" style="color:initial;" target="_blank" class="no-ext"></p>
<div style="background-color:#DAEFF6; padding:20px; border-radius:8px; text-align:center;">
SRA OSSでは、PostgreSQL/Pgpool-II のサポートを提供しております。<br />
詳しくは<strong style="color:#2581c4;">弊社ホームページ</strong>をご覧ください。
</div>
<p></a>
</div>

<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PostgreSQL 18.6 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/18-6/</link>
		
		<dc:creator><![CDATA[データベース技術グループ]]></dc:creator>
		<pubDate>Tue, 01 Sep 2026 04:35:29 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 18]]></category>
		<category><![CDATA[PostgreSQL 18.4]]></category>
		<category><![CDATA[PostgreSQL 18.6]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=21090</guid>

					<description><![CDATA[このリリースは 18.4 からの修正リリース（2026年 8月 13日リリース）です。 バージョン 18.5 は欠番となります。 18.X からのアップデートではダンプ、リストアは不要です。 しかしながら、最初の 3項目 ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 18.4 からの修正リリース（2026年 8月 13日リリース）です。<br />
バージョン 18.5 は欠番となります。<br />
18.X からのアップデートではダンプ、リストアは不要です。</p>
<p>しかしながら、最初の 3項目のセキュリティ修正は、設定の修正やデータのクリーンアップが必要となるかもしれません。また、修正項目に該当する GINインデックスや GiSTインデックスがある場合には、インデックス再構築が必要となります。</p>
<p>さらに、18.2 よりも前のバージョンからアップデートする場合には、<a href="/tech-blog/pgsql/18-2/" rel="noopener">18.2のリリース情報</a>も参照してください。</p>
<p><span id="more-21090"></span></p>
<h3>PostgreSQL 18.4 から 18.6 への変更点</h3>
<p>18.6, 17.11, 16.15, 15.19, 14.24 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<ol>
<li>ロジカルデコーディングの出力プラグインが厳格化されました。新たな設定パラメータoutput_plugin_librariesでの指定が必要となりました。(CVE-2026-6471)  (Jacob Champion) (18)(17)(16)(15)(14)</li>
<p>
これまでは、レプリケーションユーザがロジカルデコーディングむけに任意のライブラリを選ぶことができて（プラグイン名になどフルパス指定も可能）、さまざまな攻撃が可能でした。仕組みを変えずにこれを防げるようにするため、許可された出力プラグインのホワイトリストが導入されました。
</p>
<p>
PostgreSQL本体同梱のpgoutput（ロジカルレプリケーション用）とtest_decoding（単純なテキスト書き出し用）がデフォルトでoutput_plugin_librariesに含まれます。
</p>
<p>
加えて、pg_upgrade --checkで、新クラスタのoutput_plugin_librariesが 旧クラスタ（バージョン 17.x 以降）のレプリケーションスロットで使っているプラグインライブラリを許可していない場合、失敗するようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5d47df21e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a29b607d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=01992176e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e1252ee5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=99f205407">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf3842a64">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7082ce248">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=82fd68801">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fcccea97">&#167;</a></small></p>
<li>contrib/pgcryptoのPGP暗号化がサポートされない暗号化方式を検出するように、修正されました。(CVE-2026-14663)  (Daniel Gustafsson) (18)(17)(16)(15)(14)</li>
<p>
これまでは、OpenSSLが要求された暗号化方式を（例えば、FIPSモードであるため、あるいは、古いプロバイダがロードされていないために）拒否した場合に、pgcryptoはその失敗を知らせず、プレーンテキストを含む暗号化されないブロックに単にXORを適用していて、その「暗号化」は容易に解読可能でした。これは典型的には非推奨や非FIPSの暗号化アルゴリズム（cipher-algoオプション指定が blowfish/bf, twofish, cast5, 3des などの場合）で発生します。
</p>
<p>
これからはデフォルトでは、OpenSSLでサポートされない方式でのPGP暗号化がエラーになり、これまでの動作により不適切に暗号化されたメッセージの復号もエラーになります。pgp_pub_decrypt()関数、pgp_sym_decrypt()関数などのオプション引数の新たなオプションignore_cipher_failureに1を指定して実行すると、従来通りの振る舞いに戻ります。
</p>
<p>
前述の理由で不適切に暗号化されたメッセージを、'ignore-cipher-failure=1'オプションを指定して復号する場合には、OpenSSLの動作がそのメッセージを作成したときと同じでなければなりません。サポートされない暗号化方式が異なっている場合にはうまくいきません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba207f58f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe32b10fc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b05cfc693">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6ca6023ca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=472ef7e4a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7e29eb6f4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d97b3f58c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c5128ca0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7eed42aa8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba2a63faf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=953be116c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2c48c81f">&#167;</a></small></p>
<li>psqlがスクリプト化された「COPY ... FROM STDIN」コマンドに続くインラインデータを、COPY開始時のエラーであっても、読み飛ばすように修正されました。(CVE-2026-6464)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
これまでは「COPY」コマンドが行の読み込みを始める前に（例えば、対象のテーブルが無い、などで）エラーを起こした場合、psqlはこのことを認識できず、続くインラインデータを読んでSQLとして処理しました。これは良くて誤りであり、悪くするとSQLインジェクションを起こします。
</p>
<p>
これまでも、COPY開始処理が完了してサーバが「PGRES_COPY_IN」を返した後であれば、途中の行読み込みでエラーを起こしても、残りを読み飛ばすように動作していました。
</p>
<p>
本修正が実運用SQLスクリプトに影響を及ぼすことは無いと考えられますが、テスト用スクリプトでは意図的に「COPY ... FROM STDIN」コマンドが失敗するように作られている場合があります。そのような場合には各コマンドの後に「\.」というデータ区切り行を追加する必要があります。さもないと、読み飛ばす行が多すぎる結果になるかもしれません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6ab88d37">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=29921259e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=46fa1f6f3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2bdfd5cdc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3fdcfa8f7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5c51ae455">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cf01e213">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=900894d35">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dca6627de">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=db96e87f9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cdbabea7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7215c7e96">&#167;</a></small></p>
<li>EXECUTEやFETCHを実行するポータルの出力行型についてクロスチェックを行うようになりました。(CVE-2026-16239)  (Robert Haas) (18)(17)(16)(15)(14)</li>
<p>
EXECUTEとFETCHは2つのポータルを使います。外側の1つはそのステートメント自身のためで、内側の1つはクエリを代わって実行します。これまで、宣言された2つのポータルの行型を異なるものにできて、これを利用してサーバメモリ暴露や任意コード実行を引き起こせました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=64a65ead1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=37b8f3b0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60887d348">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7d150b5c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc933ce00">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f49beef2">&#167;</a></small></p>
<li>to_char()で、長いタイムゾーン省略形によるバッファオーバーランが修正されました。(CVE-2026-14669)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
これは容易にバックエンドプロセスのクラッシュができて、任意コード実行をもたらす攻撃も報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3294ab839">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fafe2380">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12a620686">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5dbeb69bc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f64cc83f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fb3c6389">&#167;</a></small></p>
<li>正規表現によるマッチ、分割の関数で、バッファオーバーランが修正されました。(CVE-2026-14664)  (Masahiko Sawada) (18)(17)(16)(15)(14)</li>
<p>
不正な文字エンコーディングのデータを渡すと、変換バッファの終端を過ぎた位置に書き込みが行なわれる可能性がありました。regexp_match()、regexp_matches()、regexp_split_to_table()、regexp_split_to_array()の各関数の動作が修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7df2aa8ef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b7e5c3f63">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e91dcfcca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3179253c2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=127a0673f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=890327639">&#167;</a></small></p>
<li>ascii()関数が不正な入力に対して頑健になりました。(CVE-2026-18024)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
不正な文字エンコーディングのデータが入力されることで、騙されて読むべきでない何バイトかを読んで返す可能性がありました。アサートが有効なビルドでは、アサート失敗も発生します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80ce920a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08e812c02">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=849da8210">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac450853d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3b925133b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42d333a78">&#167;</a></small></p>
<li>pg_restore_attribute_stats()関数でのマルチ範囲型の処理が修正されました。(CVE-2026-16238)  (OpenAI Security Research Team) (18)(17)(16)(15)(14)</li>
<p>
pg_restore_attribute_stats()はプランナ統計情報のダンプ、リストアで使われる関数です。
</p>
<p>
pg_restore_attribute_stats()はマルチ範囲型を元となる範囲型と単純に同様に扱っていました。これは境界ヒストグラムについては有効でしたが、他の種類の統計情報に対しては誤っていました。
</p>
<p>
誤った統計情報のリストアにより、不適切なプラン選択による問合せ実行の遅延や潜在的なプランナ誤動作の可能性が考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3d9262bb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08454e8b2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8d428c6e6">&#167;</a></small></p>
<li>scalarineqsel()が、tid型と想定される定数を実際にそうであるか検査するようになりました。(CVE-2026-14668)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
この想定は組み込みの演算子については成り立ちますが、悪意で作られた演算子には通用せず、クラッシュやサーバメモリ暴露を引き起こします。
</p>
<p>
scalarineqsel()は選択率の見積を返すプランナの内部実装関数の1つです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0d60ee717">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a2cb5a1cf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ebf896f4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=591192e2e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=005ffaa7f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=59205c7e9">&#167;</a></small></p>
<li>tsvector型とtsquery型の実装コードが（個々の要素、全体の長さの両面で）きわめて長い値に対して頑健になりました。(CVE-2026-14662)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
ドキュメントに記載されていた上限が、全てのコードパスで必ずしも強制されていませんでした。
</p>
<p>
本マイナーバージョンアップで、これまで許容されていたデータについて、以下のようなエラーが出るようになる可能性があり、仕様通りであるものの非互換変更ともいえます。
</p>
<pre>
ERROR:  lexeme is too long for tsvector ...
ERROR:  string is too long for tsvector ...
ERROR:  word is too long to be indexed ...
ERROR:  tsquery is too large
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cb947ca31">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e25135057">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe0b5bd6d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c1a8805a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f443d0a0a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c2ba321d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3b2238fbe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dddc8a69f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8e87bd473">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=84b6a7a06">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4f8b37b6b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e3014f37">&#167;</a></small></p>
<li>「FUNC_MAX_ARGS」を超える関数引数を処理する必要がない、と誤って想定していた様々な箇所が修正されました。(CVE-2026-14679)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
特に集約関数について、実際の引数の数の上限は「FUNC_MAX_ARGS - 1」ですが、パーサ段階では制限しておらず、後の処理で問題を引き起こしました。潜在的にバッファオーバーランの可能性がありました。
</p>
<p>
「FUNC_MAX_ARGS」はビルド時指定の定数でデフォルト100です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=92972e815">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f0e1aac7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=797e3cc4c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c67c4cf5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b417744a7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf44ff5e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42d9749b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a03f21da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a40f4b09">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=32e0d25d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb2fa2704">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7f462838">&#167;</a></small></p>
<li>internal型を引数や戻り値とする関数のSQLからの呼び出しを拒否するようになりました。(CVE-2026-14680)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
拒否するための既存の仕組みはありましたが、不十分であったため、明示的な検査が追加されました。
</p>
<p>
また、いくつかの集約関数のcombine処理で入力がNULLである場合に正しくSQLとしてのNULLを返すように修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21a00de43">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=54649de65">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb9e55297">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c0c1b2cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e926a9aac">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=155dacbc5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21d8cfb18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=722695db1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=83d0a083f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f308dd7c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6e861e19">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=913fe0c31">&#167;</a></small></p>
<li>ALTER TABLEコマンドで再構築されたとき、拡張統計オブジェクトの所有者が保たれるようになりました。(CVE-2026-6469)  (Masahiko Sawada) (18)(17)(16)(15)(14)</li>
<p>
これまでは拡張統計情報の対象テーブルに、列の型を変えるなどのALTER TABLEコマンドを実行したロールが、拡張統計オブジェクトの所有者になっていましたが、これは不適切な動作と判断されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=93b93f28f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1fa24127">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=75a03c569">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c3367ab5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fb6d1ca8d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=70a3b4e18">&#167;</a></small></p>
<li>EXTRACT()関数呼び出しを逆パースするときに、必要であればフィールド名をクォートするようになりました。(CVE-2026-15741)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
パーサはEXTRACT()のフィールド名としてどのような文字列リテラルも受け付け、検証は実行時まで先送りされます。関数呼び出しを格納して、解析する場合（例えばpg_dumpのとき）、文字列本体が逐語的に吐き戻されて、SQLインジェクションが可能でした。
</p>
<p>
逆パースはダンプ出力やpsqlでの定義表示で行なわれる処理です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a3832a757">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ddd9098a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5981fe370">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5e5ea74e3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=44ea6764b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=967acab87">&#167;</a></small></p>
<li>これまで検査ができていなかった個所について、データ型に対する「USAGE」権限を検査するようになりました。(CVE-2026-6470)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
「CREATE TYPE AS RANGE」、「ALTER TABLE OF」、および、格納される式を作成するコマンド（式を伴うビューやチェック制約の定義など）で、検査が行なわれていませんでした。これらの欠落により、「USAGE」権限を持たないロールでもデータ型に依存するオブジェクトを作成できて、データ型の所有者が後でデータ型を変更できなくなる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=efdb26072">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2e91f8548">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fd6d3e7e9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=24855357c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=97e277402">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=323af0a4e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb1bc525d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57f59ca1d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=671359605">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7a761fe40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c062734cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b6e45b4f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=424fb7160">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=278053843">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d1c8aa0b0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7ce056b17">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6dbedd48b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1a358b8f2">&#167;</a></small></p>
<li>行単位セキュリティ(RLS)に対して、ロールに依存したキャッシュされたプランを、ロール変更後に無効化するようになりました。(CVE-2026-14666)  (Ilya Staroverov, Shinya Kato, Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
ロールのメンバーシップや属性、データベース所有者の変更は、行単位セキュリティポリシーの振る舞いに影響がありますが、これまでは、キャッシュされた古い状態に基づくプランがそのまま使われていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=567286b76">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b12f56bf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1974acf23">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f5f2da795">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=17b6083db">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f4174aa84">&#167;</a></small></p>
<li>直接のSSL接続の後のGSSEncRequestメッセージを拒否するようになりました。(CVE-2026-14681)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
これまでサーバは、TLS暗号化接続が確立した後にもGSSAPI暗号化の要求を受け付けていました。これに成功すると、接続はTLS暗号化(SSL)を使っているけれども、pg_hba.confのルールとしてはGSS接続のように見えました。その結果、pg_hba.confでSSLを無効としていても、それを正しく強制できませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf1bb7e29">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=203a48209">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=067a64d40">&#167;</a></small></p>
<li>モックのSCRAM認証シークレットがより本物らしくなりました。(CVE-2026-14672)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
存在しないロールやSCRAMシークレットを持たないロールに対して、SCRAMログインが試みられた場合、PostgreSQLはモックのシークレットを生成して認証のハンドシェイクをとにかく行ない、攻撃者にそのことが分からないようにします。しかしながら、モックが固定のイテレーションカウントで作られていたため、観測可能な応答の差異がありました。
</p>
<p>
本修正で、モックにもscram_iterations設定パラメータの値を使って、より実際に使われているシークレットに似せるようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d192fa16">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=822143c4d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dec60e8ad">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fadbe882d">&#167;</a></small></p>
<li>ecpgアプリケーションでの範囲外書き込みが修正されました。サーバから不正なbytea型データを受け取ることで引き起こされます。(CVE-2026-16241)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
ecpgはbytea型の値は「\x」で始まることを検査せずに想定していました。壊れているか悪意のサーバは2バイトよりも短い文字列を送ってくるかもしれず、そのためにアプリケーションでのメモリ上書きが発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=457b8737a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a14ba29b1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c3c830272">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39f855e0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5737110b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74c59d062">&#167;</a></small></p>
<li>psqlの「\unrestrict」コマンドの引数でバッククォート展開をしないようになりました。(CVE-2026-18408)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
\restrict と \unrestrict は 17.6、16.10、15.14、14.19バージョンでのCVE-2025-8714の修正で導入されましたが、その中で見落としがありました。悪意のサーバからの応答で出力されたダンプにより、リストアを実行するユーザに意図せぬシェルコマンド実行をさせること（シェルコマンドインジェクション）ができました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0119aa30e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71ca694c7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0bfac9e1f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=33d0c63fb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=df245c374">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2006fca40">&#167;</a></small></p>
<li>pg_dumpにおいてpg_proc.protrftypesのエントリ数がFUNC_MAX_ARGSを超えないという前提が取り除かれました。(CVE-2026-19385)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
入力引数と出力引数の両方のエントリが存在する可能性があるため、この配列の長さがFUNC_MAX_ARGS（これは入力引数のみに制限するものです）を超えることは十分にあり得ます。仮にそうでは無いとしても、pg_dumpはサーバがpg_dumpと同じFUNC_MAX_ARGSの値でビルドされたと仮定することはできません。オーバーランが発生すると、pg_dump内部でのメモリ破壊を引き起こす可能性がありました。
</p>
<p>
pg_procシステムテーブルに関数定義が格納されて、protrftypes列にTRANSFORM句による変換のためのデータ型の配列が格納されます。FUNC_MAX_ARGSは実装内部の定数で、通常100です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86cd82bf4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3392cce5c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c2b16f5d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3299c2ba0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71ba5705d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57aa21f69">&#167;</a></small></p>
<li>tieされたPerlの配列やハッシュに対して、PL/Perlが堅牢化されました。(CVE-2026-14670)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
通常のオブジェクトとは異なる挙動をするtieされたオブジェクトは、メモリの上書きや、破損した結果配列の生成につながる可能性があり、その結果、後で問題が発生する可能性が高い状況でした。
</p>
<p>
tieは、配列やハッシュなどの変数に対して操作用のメソッド群を実装したオブジェクトに結びつける Perl の機能です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c48cd615">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=87c4b8219">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2d78c34f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=477a6bdb0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf4ae7c3b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d7fcfead3">&#167;</a></small></p>
<li>PL/PerlおよびPL/Tclにおけるメモリ割り当て計算時の整数オーバーフローが修正されました。(CVE-2026-14677)  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
これはコードの異なる個所で発生していたCVE-2026-6473と同様の問題で、同じ方法で修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1c1727cb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=028ee716a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b56cc7deb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bbdc0540">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1eb0d5380">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aff9dac1c">&#167;</a></small></p>
<li>contrib/amcheckの関数がインデックス式を実行する前にsearch_pathを制限するようになりました。(CVE-2026-14673)  (Noah Misch) (18)(17)(16)(15)(14)</li>
<p>
amcheckはそれらのインデックス式をテーブル所有者の権限で実行するため、呼び出し元がsearch_pathに依存する関数を乗っ取り、テーブル所有者の権限で任意のコードを実行できてしまう恐れがありました。デフォルトでは、amcheck関数の呼び出しはスーパーユーザーにのみ許可されているため、これは脆弱性には当たりません。しかし、もしその権限が他のユーザに付与されていた場合、ドキュメントで示されているよりも大きな危険が生じることになります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=557cc7186">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0a61fcde0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e41c72aff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2cc147318">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e43e74756">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39d792040">&#167;</a></small></p>
<li>contrib/fuzzystrmatchのlevenshtein()およびlevenshtein_less_equal()関数における整数オーバーフローが修正されました。(CVE-2026-15742)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
これらの関数に大きなコスト値を渡すと整数オーバーフローが発生し、無意味な結果が生じたり、場合によっては境界外書き込みを引き起こしたりする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=62c31b490">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e88eb4e76">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c4d51b627">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=61481aa0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74916136f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9505175f2">&#167;</a></small></p>
<li>contrib/pg_stat_statementsにおけるバッファオーバーランが修正されました。(CVE-2026-14676)  (Alvaro Herrera) (18)(17)(16)(15)(14)</li>
<p>
クエリの正規化処理において、正規化後の文字列が必要とするサイズが正確に考慮されていませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb02eba53">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a31ffc2d">&#167;</a></small></p>
<li>contrib/pg_trgmのGiST picksplit関数におけるデータ型エラーが修正されました。(CVE-2026-14678)  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
このエラーによりバッファの末尾を超えた読み取りを引き起こし、通常は不適切な分割判断の原因となっており、運が悪ければクラッシュに至る可能性もありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aa7b5815e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=849019a50">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1af08af69">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=24c88cd39">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7c82a88c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a74aa0854">&#167;</a></small></p>
<li>contrib/refintのプランキャッシュが削除されるようになりました。(CVE-2026-14671)  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
このキャッシュの挙動にはいくつかの深刻なバグがありました。特に、check_foreign_key()がカスケードUPDATEクエリに新しいキー値を埋め込んでしまうため、キャッシュされたプランでは、本来使用すべきキー値ではなく、最初に必要とされたキー値が再利用されてしまう問題がありました。最も簡単な解決策は、これを削除することです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=79a506228">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=66a5146dc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a572dd213">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b7b513d9a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5b72d0279">&#167;</a></small></p>
<li>並列GINインデックスの構築時に、テーブルのpg_class.reltuples値が正しく更新されるようになりました。  (Jan Nidzwetzki, Tomas Vondra) (18)</li>
<p>
並列ワーカーが処理した行数として初期化されていない値を報告する場合があり、その結果、reltuplesがInfinityやNaNといった不正な値になる可能性がありました。このような値が設定されると、その後のautovacuumやautoanalyze操作において、そのテーブルの処理が必要であると判断されなくなる可能性がありました。そうなると、この状態は自動的には解消されません。
</p>
<p>
reltuplesを正しい値にリセットするには、手動でANALYZEコマンドを実行するか、別のインデックスを作成する必要があります。  GINインデックスを持つテーブルがある場合は、reltuplesの値が妥当かどうかを確認することをお勧めします。以下のようなクエリが役立ちます。
</p>
<pre>
SELECT DISTINCT t.oid::regclass, t.reltuples
FROM pg_class t
  JOIN pg_index i ON t.oid = i.indrelid
  JOIN pg_class ic ON i.indexrelid = ic.oid
WHERE t.relhasindex AND ic.relam = 2742;
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5707d7517">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d4420a972">&#167;</a></small></p>
<li>非同期のAppendプランノードを再スキャンする際の、非同期読み取りの不適切な処理が修正されました。  (Alexander Korotkov, Gleb Kashkin, Etsuro Fujita) (18)(17)(16)(15)(14)</li>
<p>
上位のプランノードがAppendの出力をすべて読み取る前にAppendを再スキャンする場合、外部サーバー（例えばpostgres_fdwなど）に対して送信済の未完了リクエストをすべて破棄する必要があります。  サブプランのパラメータが変更された場合や、次回のスキャンでパーティションプルーニングによってサブプランが破棄される場合、この処理が正しく行われていませんでした。  その結果、クエリ結果が不正になったり、無限ループに陥ったり、アサート失敗が発生したりする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7d74b2644">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4ea497a92">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3704870b2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=894da35b3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7213cbfa0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cec48686a">&#167;</a></small></p>
<li>RANGEパーティションテーブルにおけるパーティションプルーニングの不具合が修正されました。  (David Rowley) (18)(17)(16)(15)(14)</li>
<p>
特定のケースにおいて、本来対象とすべきDEFAULTパーティションがスキップされ、その結果、クエリの結果から行が欠落して、誤った問い合わせ結果となる恐れがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9282a650">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=02e69be47">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=31f2acde5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9a0cd8e73">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5190732c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6098f35f4">&#167;</a></small></p>
<li>結果リレーションのプルーニング後に、ModifyTableプランノード内の外部データラッパーの状態を正しく更新するようになりました。  (Ayush Tiwari, Rafia Sabih) (18)</li>
<p>
以前は、実行時のパーティションプルーニングによって、対象のパーティションテーブルの一部のパーティションをスキャンする必要がないと判断された場合、そのテーブルに外部テーブルのパーティションが含まれていると、クラッシュや誤動作が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1ef917e3a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bba4e095d">&#167;</a></small></p>
<li>「BEFORE UPDATE」トリガーを持つテーブルに対して、「RETURNING OLD」を指定したUPDATE文で発生していた並行更新の処理漏れが修正されました。  (Dean Rasheed) (18)</li>
<p>
対象行が並行して更新された場合、「READ COMMITTED」分離レベルでは、RETURNING句で返される「OLD」値はすべて、更新後の行の値を反映している必要があります。しかし、トリガーが存在する場合、トリガー自体や最終的な出力行では正しい値が参照されていたにもかかわらず、古い値が返されてしまっていました。結果として、誤った問い合わせ結果が生じる可能性があります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7048e50f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4908225be">&#167;</a></small></p>
<li>複数の結合キーと多数のNULL値が存在する場合のハッシュ結合の性能問題が修正されました。  (David Rowley) (18)</li>
<p>
NULL値を持つタプルは他のどのタプルとも一致することはないため、ハッシュテーブルに挿入されるべきではありません。  これまでのコードでは、最後の結合列以外の列にNULL値が含まれる場合にこの処理が適切に行われていなかったため、NULL値を含む入力が多数あるとハッシュテーブルが著しく肥大化していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a71a348ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f70acc8a2">&#167;</a></small></p>
<li>RETURNING句の式における括弧で囲まれた「OLD」や「NEW」の解析処理が修正されました。  (Marko Grujic) (18)</li>
<p>
「(old).colname」や「(old).*」といった式が誤って処理され、実質的に「NEW」への参照に変換されていました。結果として、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9108fed3e">&#167;</a></small></p>
<li>value IN (array)式に対するプランナのNULL許容性および厳密性チェックが修正されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
これらのチェックは、配列オペランドが空でないことが既知である場合にのみ成功すべきですが、その点が考慮されておらず、本来適用されるべきではない最適化が適用されてしまう問題がありました。これにより、実際の配列が空であった場合、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9740c68ff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=277122036">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=26d6b7dc9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6fcee189b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=53470ffba">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=13b627a3e">&#167;</a></small></p>
<li>不適切な結合削除のロジックが修正されました。  (Matheus Alcantara, Richard Guo) (18)(17)(16)</li>
<p>
一部の特殊なケースにおいて、外部結合のNULL許容側由来の定数出力値が、本来NULLに置換されるべき場面でNULLに置換されない問題が発生し、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bc479627">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21f5e659e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cdcec567d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3e1fe25e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=72457f1df">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e40d07e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b308eb366">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d610d8e8b">&#167;</a></small></p>
<li>結合の削除処理において、PlaceHolderVarsのクリーンアップがより徹底されるようになりました。  (Richard Guo, Arne Roland) (18)</li>
<p>
この修正により、アサート失敗や誤った実行計画の生成（とそれに伴う誤った問い合わせ結果や予期せぬエラー）を招く可能性のあった様々なエッジケースが解消されます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e02526795">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aae47813a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18105e6db">&#167;</a></small></p>
<li>コンテナデータ型（配列、複合型、範囲型）の等価比較におけるハッシュ可能性に関する漏れていたチェックが追加されました。  (Andrei Lepikhov, Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
プランナは、ハッシュベースの実行計画を採用する前に、コンテナの構成要素の型のハッシュ化可能かどうかを検証する必要がありました。一部の箇所でこの手順が漏れていたため、実行時に「ERROR:  could not identify a hash function for type ...」という予期せぬエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=11aed8d19">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19152e3c2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf2bfe073">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=caebac5f1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=64778fac7">&#167;</a></small></p>
<li>プランナが、異なる等価性ルールを持つグループ化ステップより下位へ、WHERE句をプッシュダウンすることを避けるようになりました。  (Richard Guo) (18)</li>
<p>
非決定的照合順序でグループ化される列に対するテストは、その同じ照合順序を使用した比較である場合にのみ、安全にプッシュダウンできます。そうでない場合、グループ化によって統合されるはずだった行がフィルタリングされて、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=98d5d7ee6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe5d62951">&#167;</a></small></p>
<li>「EXCLUDE」句を指定している、または「ORDER BY」を指定していない、COUNTウィンドウ関数の誤った最適化が修正されました。  (Chengpeng Yan, David Rowley) (18)(17)(16)(15)</li>
<p>
これまで、このウィンドウ関数は該当しない場合でも単調増加するものとして扱われていました。そのため、誤った問い合わせ結果が生じる可能性がありました。
</p>
<pre>
（報告された誤動作例）
db1=# CREATE TABLE t41 (id int PRIMARY KEY, k int NOT NULL, v int);
db1=# INSERT INTO t41(id, k, v) VALUES
        (1, 1, 1), (2, 1, NULL), (3, 1, 1), (4, 2, 1);

db1=# SELECT id, count(v) OVER (
        ORDER BY k RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
        EXCLUDE CURRENT ROW) AS c FROM t41;
 id | c
----+---
  1 | 1
  2 | 2
  3 | 1
  4 | 2
(4 rows)

db1=# SELECT * FROM (
        SELECT id, count(v) OVER (
          ORDER BY k RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
          EXCLUDE CURRENT ROW) AS c FROM t41) s WHERE c &lt; 2;
 id | c
----+---
  1 | 1
(1 row)
→ 正しくは id=3 の行も出力されないといけない
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fcd58c6d9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf184ec77">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=be63b285e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a85732162">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=842e34efa">&#167;</a></small></p>
<li>プランナが"char"型の列の統計情報を参照する際に、予期せぬエラー「ERROR:  cache lookup failed for collation 0」が発生する障害が修正されました。  (Feng Wu) (18)</li>
<p>
"char"型は、一般的に使われるchar(n)型とは別の、主として内部的なシステムカタログで使用されるものです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fd1c3f28">&#167;</a></small></p>
<li>複数階層のパーティションが存在する場合でも、ALTER TABLEのALTER COLUMN ... DROP EXPRESSIONが正常に動作するよう修正されました。  (Alberto Piai) (18)(17)(16)(15)(14)</li>
<p>
ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSIONは、格納生成列を基本列に変換する構文です。複数階層の子パーティション／子テーブルを持つパーティションテーブルや継承ツリーの親テーブルに対して実行すると、「ERROR:  ALTER TABLE / DROP EXPRESSION must be applied to child tables too」というエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ce6e434ce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c374f2807">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18006c1bd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=34785a0d5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=785289de0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cad17745e">&#167;</a></small></p>
<li>排他制約であるインデックスのパーティションをアタッチする処理の不具合が修正されました。  (Japin Li) (18)(17)</li>
<p>
この誤りにより、排他制約を持つパーティションテーブルのダンプ/リストアが正常に動作しなくなっていました。
</p>
<p>
リストア時に以下のようなエラーが発生します。
</p>
<pre>
ERROR:  cannot attach index "..." as a partition of index "..."
DETAIL:  The index definitions do not match.
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2b2c2492c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19e3aa704">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d6c654c8">&#167;</a></small></p>
<li>ALTER CONSTRAINTを使用して、パーティションテーブルのNOT NULL制約にNO INHERITを設定することができないように修正されました。  (Andreas Karlsson) (18)</li>
<p>
本来、パーティションテーブルのNOT NULL制約は、すべてのパーティションに継承される仕様であるため、NO INHERITを指定することはできません。これまでは、この仕様は制約を新規作成する際には正しく適用されていましたが、「ALTER TABLE ... ALTER CONSTRAINT」では適用されておらず、NO NULL制約の有無がパーティションごとに異なるようにできました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41247cdf6">&#167;</a></small></p>
<li>ルールの名前を「_RETURN」に変更できないように修正されました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
「_RETURN」という名前は、ビューの「ON SELECT」ルール用に予約されています。これまでは「ON SELECT」以外のルールをALTER RULEで「_RETURN」に名前変更できてしまい、その後の処理で問題を引き起こしていました。
</p>
<p>
具体的には、ダンプ/リストアで「ERROR:  non-view rule for "..." must not be named "_RETURN"」というエラーを起こすことが報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80c7f5467">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7f7958ab">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e99fb3262">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a69503fb1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eada45dd8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b17a6e3c">&#167;</a></small></p>
<li>DROP OWNED BYにおいて、ロールメンバーシップへのロックの解放漏れが修正されました。  (Jeff Davis) (18)(17)(16)</li>
<p>
この不具合により、トランザクションが終了するまで、ロールメンバーシップ（pg_auth_membersシステムテーブルの対応するエントリであらわされる暗黙的なオブジェクト）へのロックが保持され続けていました。その結果、並行するDDL実行で警告メッセージが出ることがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9eccdae22">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a0daa0b41">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=25e54cec7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e61d44fde">&#167;</a></small></p>
<li>EXPLAINがSQL/JSONの集約関数をデパースするときに予期せぬエラーを出すことがあり、修正されました。  (Richard Guo) (18)(17)(16)</li>
<p>
実行プランの構造によっては、「ERROR:  invalid JsonConstructorExpr underlying node type」というエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eaa561fb6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=45364e496">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dcda1f07d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=485527190">&#167;</a></small></p>
<li>遅延一意性制約のインデックスに対してREINDEX CONCURRENTLYを使用した場合の不具合が修正されました。  (Nitin Motiani) (18)(17)(16)(15)(14)</li>
<p>
REINDEX CONCURRENTLYの実行中に一時的に作成されるインデックスのコピーが、誤って即時一意性制約として扱われていました。そのため、実際には制約違反ではない場合でも、制約違反が発生したと誤って報告することがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9f6fb1191">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4527519b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28269fed6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac222bea5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5b3712e31">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55adef7ab">&#167;</a></small></p>
<li>非決定論的照合順序でバックスラッシュ（\）を使用したLIKE句のマッチングの不具合が修正されました。  (Nitin Motiani, Tom Lane) (18)</li>
<p>
非決定論的照合順序において、LIKEがエスケープされたバックスラッシュ（\\）を誤って処理し、実質的にバックスラッシュが存在しないものとして扱っていました。
</p>
<p>
また、通常の文字の前にバックスラッシュが付いている場合も誤った処理をしていました。この場合、バックスラッシュは実質的に無視されるべきですが、実際には後続の通常の文字を完全一致として扱ってしまい、非決定論的照合順序にマッチするかを判断していませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=99775b388">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a99bd8d58">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=54d5947ef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51652c42d">&#167;</a></small></p>
<li>LIKE句や正規表現の完全一致パターンのインデックススキャン最適化の不具合が修正されました。  (Jelte Fennema-Nio) (18)</li>
<p>
非決定論的な照合順序におけるLIKEのリファクタリングによって、LIKE句や正規表現の完全一致パターンを、等価比較のインデックス条件に変換する最適化が誤って壊れていました。これはインデックスの照合順序と式の照合順序が一致しない場合に発生していました。この影響で、psql の「\d tablename」コマンドが大幅に遅くなっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=67cf73ddb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0bb49e61">&#167;</a></small></p>
<li>to_date() におけるローカライズされた月名、曜日名のマッチング処理が修正されました。  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
大文字・小文字の変換によって文字列のバイト長が変化する場合に、マッチング処理が誤動作していました。月名、曜日名が認識されずに予期せぬエラーが発生する可能性が考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55ea76426">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=011384ba4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8acfaa12a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b594efe52">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0de744cd5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=49a712f32">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5f003855e">&#167;</a></small></p>
<li>ギリシャ文字の語末形のシグマに対する大文字小文字の変換のルールが修正されました。  (Jeff Davis) (18)</li>
<p>
文字列の直前が大文字小文字を区別しない文字だけで構成されている場合、そのシグマを語末形のシグマとはみなさないようにしました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28d498e28">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=66ec24276">&#167;</a></small></p>
<li>ハングルU+11A7（TBASE）のNFC再合成における誤りが修正されました。  (Diego Frias, Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
この文字は有効なT音節として扱われていましたが、実際にはT音節ではないため、正規化処理中にこの文字が消えてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=273fe9485">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0c9cbbfb5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=82116023e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c391375ba">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bb935d61">&#167;</a></small></p>
<li>大文字小文字を区別しない類義語の辞書において、出力する語彙素が切り捨てられる不具合が修正されました。  (Jeff Davis) (18)(17)(16)(15)(14)</li>
<p>
小文字への変換によって語彙素のバイト長が増加した場合、出力時に元のバイト長に誤って切り捨てられていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=89e648498">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3805641cb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b32df590c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7e0e42a2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e0458172">&#167;</a></small></p>
<li>大文字小文字変換処理において、途中で途切れたUTF-8文字への対処が修正されました。  (Jeff Davis) (18)(17)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=05da336dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9021c8f3c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5e78ebca5">&#167;</a></small></p>
<li>hash_record_extended()のバグが修正されました。  (Man Zeng) (18)(17)(16)(15)(14)</li>
<p>
FunctionCallInvoke()に渡される2番目のisnull引数が初期化されていませんでした。既存の組み込み拡張ハッシュサポート関数では、この値を参照しないため問題はありません。しかし、拡張機能が提供するハッシュ関数が「PG_ARGISNULL(1)」を調べる場合、その影響を受ける可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3f13c032">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=203e238bb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8b5580a05">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=259b627d5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74d3482f4">&#167;</a></small></p>
<li>公開可能なテーブルが並行して削除された場合に、pg_get_publication_tables()が失敗する不具合が修正されました。  (Bharath Rupireddy) (18)(17)(16)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28c995948">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=73d63d1c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dcbc96685">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6c760f6b6">&#167;</a></small></p>
<li>VARIADIC NULL を指定した場合に、satisfies_hash_partition() がクラッシュする不具合が修正されました。  (Robert Haas) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2ddc45662">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0c06ebf12">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=52af6fef4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6de480156">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d39b9eed0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0115650de">&#167;</a></small></p>
<li>tsvector_filter() および関連する関数で、不正な重みに関するエラーを、より明確かつ一貫した形で報告するよう修正されました。  (Ewan Young) (18)(17)(16)(15)(14)</li>
<p>
具体的には、表示可能なASCII文字ではない重み文字については、charout()と同様に8進数形式（"\nnn"）で報告します。これにより、無効なエンコーディングを含むエラーメッセージが生成されるのを防ぎます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c5194139c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0626fbfeb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed5ca5828">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3a86eb6d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=262cc4df2">&#167;</a></small></p>
<li>uundv7()関数で範囲外のタイムスタンプとなるシフト値を拒絶するようになりました。  (Baji Shaik) (18)</li>
<p>
v7 UUIDで表現可能な範囲を超えたタイムスタンプになるシフト値は「ERROR:  timestamp out of range for UUID version 7」というエラーを出すようになります。有効なタイムスタンプ範囲は、1970-01-01 00:00から10889年くらいまでです。これまでは壊れたUUID値が作られていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a933deaa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c31b0fca0">&#167;</a></small></p>
<li>xpath()関数でnamestapeノードの処理が修正されました。  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
予期せぬ「ERROR:  could not copy node」エラーが出ていたものが修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c777d6dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6c08cbb7a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=174076601">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d8c72b2e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41876c8d7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0d145be2c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=940916549">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fac26fd41">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9618e790c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a17f39aa2">&#167;</a></small></p>
<li>jsonpathの「.decimal」メソッドが、精度やスケールの指定が正しくない場合でもERRORを出さないように、修正されました。  (Ewan Young) (18)(17)</li>
<p>
サイレントモード（json_path_*関数のsilent引数がtrue）では、エラーを抑止すべきですが、そのようになっていませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5bbc9b300">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=84001a04d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab35b8d25">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=90789900b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c768637d6">&#167;</a></small></p>
<li>「IS JSON」や「JSON()」等の構文が、text型へのキャストを持たない文字列型の引数を与えられたときの、NULLポインタによるクラッシュが修正されました。  (Ayush Tiwari) (18)(17)(16)</li>
<p>
PostgreSQL本体コードには該当するデータ型はありませんが、一部の拡張のデータ型で問題を引き起こす可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=35d9a6263">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0acd2535">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60abb3c73">&#167;</a></small></p>
<li>「SQL/JSON」の「ON EMPTY / ON ERROR DEFAULT」の値に正しい型修飾が確実に適用されるようになりました。  (Ewan Young) (18)(17)</li>
<p>
例えば、対象numeric型列の宣言された精度とスケールがデフォルト値に適用されませんでした。
</p>
<pre>
（誤動作例）
db1=# SELECT JSON_VALUE(jsonb '{"b":"1234.5"}', '$.a' 
        RETURNING numeric(4,1) DEFAULT 99999.9 ON EMPTY);
 json_value
------------
    99999.9
(1 row)

（以下エラーが出るのが正しい動作）
ERROR:  numeric field overflow
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d30bfcbdd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=441e4c8d6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71cd10cd2">&#167;</a></small></p>
<li>money型の最小値（64bit整数最小値）を-1で割ったときの、マシン依存の振る舞いが回避されました。  (Andrey Rachitskiy) (18)(17)(16)(15)(14)</li>
<p>
x86_64アーキテクチャでエラーになるものが、aarch64アーキテクチャではエラーになりませんでした。オーバーフローを起こした場合には必ず「ERROR:  money out of range」が出るようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7746f7492">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6298a41b4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1416f304d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86f42357c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d782c97e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fec40878c">&#167;</a></small></p>
<li>全文検索の辞書に対するキャッシュエントリの作成途中でメモリ不足が生じた後にクラッシュする障害が修正されました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=df8407d7d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=81b1e7916">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=634a8dcb8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=83336e3ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=025228104">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dda622edc">&#167;</a></small></p>
<li>誤ったispell/hunspell辞書ファイルに対する処理でメモリ安全性に問題があり、修正されました。  (Andrey Rachitskiy) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3fe4062cc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4689ea9ce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fdea3aa3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=444038bb7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0fb88979b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cfc720ef4">&#167;</a></small></p>
<li>他セッションの一時テーブルへのアクセスが防止されました。  (Jim Jones, Daniil Davydov, Alexander Korotkov) (18)(17)(16)</li>
<p>
基本的にそのようなアクセスは禁止されていますが、一部のコードパスで防止しきれておらず、干渉されたセッションで誤った問合せ結果が生じるおそれがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b0dd0815">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4dfae59a1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8021cdceb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3aaefe892">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e49f68b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cc3fe7e2a">&#167;</a></small></p>
<li>一時テーブルにアクセスするときの「ERROR: no empty local buffer available」エラーが防止されました。  (Melanie Plageman) (18)</li>
<p>
本修正でストリーミング読み取りの仕組みが使用可能なローカルバッファの数が制限されました。これまでは、effective_io_concurrency設定が大きな値の場合に単一のストリームで全バッファを利用可能であったため、本エラーが発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed8050370">&#167;</a></small></p>
<li>autovacuumがデータベースを処理する順番が修正されました。  (Rustam Khamidullin) (18)(17)</li>
<p>
最高スコアから最低スコアに向かう順で処理されるべきところで、意図せず逆順になっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3331578b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4cc49cb70">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=288d4e83f">&#167;</a></small></p>
<li>VACUUMのXID周回フェールセーフモードで、共有バッファプールを全使用するように動作が復旧されました。  (Melanie Plageman) (18)</li>
<p>
通常のVACUUMは、他の処理に大きな影響を与えないように、共有バッファを少しだけ使うように制限されています。しかしながら、フェールセーフモードではできるだけ早くトランザクションIDを回収する必要があるので、この制限は放棄されることになっていました。この振る舞いがv18のリファクタリングで壊れていて、復旧されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fd90c3221">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=585181e07">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55d01a10f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c25cdb1e">&#167;</a></small></p>
<li>パラレルVACUUMワーカーの処理でのメモリリークが修正されました。  (Baji Shaik) (18)(17)</li>
<p>
パラレルワーカーからの報告過程で報告ごとに1kB程度のリークがあり、これはワーカープロセスが生きている間は蓄積されていきました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4154a1482">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8ad414831">&#167;</a></small></p>
<li>問合せのキャンセルとVACUUM遅延が、GINインデックスのポスティングツリーのクリーンアップ中であっても、すぐに行なわれるようになりました。  (Paul Kim, Alexander Korotkov) (18)(17)(16)(15)(14)</li>
<p>
よくある値に対するポスティングツリーは大きくなることがあり、ここに割り込みの検査が欠けていたため、処理が長く継続してしまいました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=70dad584e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7becb647d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba5e46329">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=006ac761e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7123abab7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=15fd7a3e2">&#167;</a></small></p>
<li>GiSTおよびSP-GiSTのインデックスに対するIndex Only Scanで、インデックスタプルのデコーディングを誤る可能性があり、修正されました。  (Peter Geoghegan) (18)(17)(16)(15)(14)</li>
<p>
この障害で壊れたデータが出力されて、誤った問い合わせ結果や予期せぬエラーが発生する可能性がありました。本体コードで影響があるのは、GiSTの演算子クラスrange_opsのみで、その範囲列が最初のインデックス列でない場合にのみ、誤動作が発生します。
</p>
<pre>
（誤動作例）
db1=# CREATE TABLE t75 (a inet, r numrange);
db1=# INSERT INTO t75 VALUES 
      ('::1', numrange(repeat('1', 100)::numeric, repeat('2', 200)::numeric)));
db1=# CREATE INDEX ON t75 USING gist (a inet_ops, r range_ops);
db1=# VACUUM ANALYZE t75;
db1=# SET enable_seqscan TO off;
db1=# SELECT lower(r) = repeat('1', 100)::numeric,
             upper(r) = repeat('2', 200)::numeric FROM t75;
ERROR:  type with OID 860 does not exist
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d4c81ad6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=959b7fa2c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=355faed5a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e58192546">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=126141425">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4ad22eb0">&#167;</a></small></p>
<li>バルク拡張されたテーブルの新たな最終ブロックがフリースペースマップに即座に追加されるようになりました。  (Jingtang Zhang) (18)(17)(16)</li>
<p>
off-by-one（1つ足りない）誤りで、複数ブロックが追加されたときの最後のブロックがフリースペースマップに登録されませんでした。VACUUMによってやがては正しく登録されますが、それまでの間、最終ブロックが使われませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7a103928a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eabc9a9dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=768ae083e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0fd5595aa">&#167;</a></small></p>
<li>トランザクションのアボート時のリソース解放処理で、メモリの二重解放（クラッシュをひきおこします）、または、エラーの再帰的な無限ループが起きる可能性があり、修正されました。  (Tom Lane) (18)(17)</li>
<p>
巨大な入力値を伴うSQLがエラーになって、トランザクションアボートが行なわれたケースで問題が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac6a58a70">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=011eedcdc">&#167;</a></small></p>
<li>PostgreSQLの処理内でディレクトリを作成するとき、同じディレクトリの同時作成を許容するようになりました。  (Andrew Dunstan, Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
他プロセスが同じディレクトリを作っているのであれば、ディレクトリ作成に成功した扱いとすることで、これまで同時実行で発生する可能性のあった「ERROR:  could not create directory "...": File exists」といったエラーを回避できます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aa80c34c8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f0a831ef3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9951e3d38">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4647ac142">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4b3bc6b71">&#167;</a></small></p>
<li>JITコンパイルされたタプルデフォームを行うコードが、仮想生成列を正しく考慮するように修正されました。  (David Rowley) (18)</li>
<p>
NOT NULL制約のある仮想生成列を含むテーブルへの問合せで、誤った問い合わせ結果が生じる例が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e9692de1d">&#167;</a></small></p>
<li>依存されている全てのオブジェクトに共有ロックを取得することにより、宙に浮いたオブジェクト依存関係の生成が防止されました。  (Bertrand Drouvot) (18)(17)(16)(15)(14)</li>
<p>
共有ロックは依存されているオブジェクトの削除と衝突しますので、これまであった競合状態を排除することができます。
</p>
<p>
例えば、これまでは、空スキーマの削除とスキーマ内へのオブジェクト作成の同時実行が両方成功して、無効なオブジェクト定義が残ることがありましたが、これからはどちらかのトランザクションが失敗します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c8cd3d697">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3a9909eda">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9bc0d96c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fa137727">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5100bdbd3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9d5a52da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c1588f92a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d44cd4674">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ef3d7b15e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=36b6ed260">&#167;</a></small></p>
<li>SERIALIZABLE分離モードに対する衝突の検出での競合状態が修正されました。  (Peter Geoghegan) (18)(17)(16)(15)(14)</li>
<p>
初期の空のbtreeインデックスを検査するときに衝突が見過ごされる可能性があり、競合しているトランザクションのコミットを許してしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2aa3c6d1f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d560e730e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8434c9385">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e321faaae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5d18105ca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2fc3e1b44">&#167;</a></small></p>
<li>バリアイベントの処理で競合状態が修正されました。  (Masahiko Sawada) (18)(17)(16)(15)</li>
<p>
この誤りにより、プロセスがハングアップする可能性がありました。典型的には、その際に以下ログメッセージが出力されます。待機イベントとしてはIPC型のProcSignalBarrierの待機となります。
</p>
<pre>
LOG:  still waiting for backend with PID %d to accept ProcSignalBarrier
</pre>
<p>
近年追加されたオンラインWALレベル変更などの機能によって、この問題がより目立つようになっています。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1a9b1cc18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a651b8a89">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cdb9b2830">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=159324a73">&#167;</a></small></p>
<li>同じロックグループに属するプロセス集合が同時に終了したときの競合状態が修正されました。  (Vlad Lesin) (18)(17)(16)(15)(14)</li>
<p>
この誤りは「PANIC:  latch already owned by PID ..」によるサービスのPANIC終了を引き起こす可能性があります。PostgreSQL本体の通常のパラレル問合せでは、リーダープロセスがワーカープロセスの終了を待たずに終了することが無いため、この問題は起きませんが、何らかの拡張で該当する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ae08eb168">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d489c4439">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=65d04df60">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d5cc6df60">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8007d1185">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c9b8b42">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e14b4ea4a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e8edf53f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e786fb5aa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=db4d12fc9">&#167;</a></small></p>
<li>テーブルのビジビリティマップ(VM)でビットをクリアする操作のWAL出力が修正されました。  (Melanie Plageman, Andres Freund) (18)(17)</li>
<p>
このようなVM変更がWALサマライズ処理で見落とされていて、誤ったインクリメンタルバックアップをもたらす可能性がありました。また、このようなVMページの必要時のフルページイメージWAL出力も行なわれておらず、壊れたページ書き込みが修正されないままとなる可能性がありました。これは後にIndex Only Scanでの誤った問い合わせ結果が生じるなどの、誤動作を引き起こすおそれがあります。
</p>
<p>
既存のバックアップやアーカイブWALに潜在的にデータ破損が含まれていることに留意してください。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=56bf5fa5d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0fb1da21">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7edec8b57">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b01c31eef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f581fa729">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c0d9864f5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9171f77db">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d7feebfb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=067213430">&#167;</a></small></p>
<li>WALサマライズ処理でのタイムライン変更時のハングアップが防止されました。  (Robert Haas) (18)(17)</li>
<p>
スタンバイサーバで、以下のログメッセージがwalsummarizerプロセスから継続的に出力される動作が報告されました。
</p>
<pre>
ERROR:  could not read WAL from timeline .. at ...: invalid record length ...
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dfb96277d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18f0de6b8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=499d9eabb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bdcea66f0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d299d6ab">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d28cdf46e">&#167;</a></small></p>
<li>スタンバイ昇格のときのロジカルデコーディングのタイムライン選択で、競合状態が修正されました。  (Bertrand Drouvot) (18)(17)(16)</li>
<p>
スタンバイ側で実行中のロジカルデコーディングが「ERROR:  requested WAL segment has already been removed」で失敗する可能性がありました。再試行すれば成功するため恒久的な問題はありませんが、可用性としては有害でした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b4bd13850">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=16b89ff04">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cd687c44">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a04624da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4bff3aa51">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab5334d8b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9b49e5b4">&#167;</a></small></p>
<li>タイムラインを切替するときのwalreceiverの接続文字列の露出が回避されました。  (Chao Li) (18)(17)(16)(15)(14)</li>
<p>
pg_stat_wal_receiverビューは機微なデータを除いてサニタイズされた接続文字列を見せるべきです。しかし、タイムライン切替に際して既存のwalreceiverプロセスを再利用するときに、一時的に完全な接続文字列を見せてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b903d1792">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c89499a79">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e037a4199">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=065cbfb88">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e18b77153">&#167;</a></small></p>
<li>ロジカルレプリケーションで受け取ったタプルの列数が正しいかの検証を、アサートではなく実行時チェックで行うようになりました。  (Varik Matevosyan) (18)(17)(16)(15)(14)</li>
<p>
悪意の、または、壊れたパブリッシャは一貫性のない列数を送出するかもしれません。これによる深刻な悪影響をおよぼすシナリオは見つからなかったものの、より注意を払うべきと判断されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dc3db3a83">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=15f4e3d0c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=59759e1a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=871d4f5b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=510a05f07">&#167;</a></small></p>
<li>レプリケーションコマンド内の文字列パラメータへのクォート付加について、実装がクリーンアップされました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
レプリケーションコマンドを生成する様々な個所で、コマンドに挿入されるレプリケーションスロット名や他のパラメータのクォート付加について、十分な注意が払われていませんでした。そのため、レプリケーションコマンドで予期せぬエラーが発生するおそれがありました。
</p>
<p>
原理的には作りこまれたレプリケーションスロット名でSQLインジェクションも可能でした。ただし、ほとんどの場合、元からSQL実行が可能な管理者が行う操作であるため、実用的な害はないと考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=abb582555">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=14810cc0d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=26d6c19d0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=819e5b964">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a00840e8">&#167;</a></small></p>
<li>空のプリペアドトランザクションのロジカルデコーディングについて修正されました。  (Masahiko Sawada) (18)(17)(16)(15)(14)</li>
<p>
デコード可能な変更を起こさないプリペアドトランザクションは、先立つ「PREPARE」無しに、「COMMIT PREPARED」や「ROLLBACK PREPARED」を出力プラグインに送出していました。組み込みのサブスクライバでは、これはレプリケーションを壊します。他のプラグインでも同様に問題となると考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2289e65e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b563fc6bd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c4519c71">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=744618346">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0dbfb8520">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c2d34db0a">&#167;</a></small></p>
<li>スタンバイ昇格後のUNLOGGEDシーケンスのデータ破損が修正されました。  (Fujii Masao) (18)(17)(16)(15)</li>
<p>
これまでは、プライマリで作られてスタンバイにレプリケートされたUNLOGGEDシーケンスに、スタンバイ昇格後にアクセスすると、「ERROR:  bad magic number in sequence」などのエラーや、アサート失敗が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=22af34b98">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=627605713">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1ed6a9a0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=913d3b610">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d2980067b">&#167;</a></small></p>
<li>カスケードスタンバイでのWALアーカイブによるリカバリからストリーミングに復帰するときの再接続失敗が、修正されました。  (Marco Nenciarini) (18)(17)(16)(15)(14)</li>
<p>
このとき「ERROR:  requested starting point ... is ahead of the WAL flush position」が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bef46aed3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=331016322">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2cf28d1b9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5dbeb69bc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f64cc83f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fb3c6389">&#167;</a></small></p>
<li>WALリプレイが一貫性のあるデータベース状態に達する前にホットスタンバイ接続を受け付ける動作が防止されました。  (Nikhil Sontakke) (18)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7673dfe77">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=311e66df9">&#167;</a></small></p>
<li>スタンバイサーバで、ローカルにpg_database.dathasloginevtのクリアを試みないようになりました。  (Ayush Tiwari) (18)(17)</li>
<p>
スタンバイで実行が試みられていましたが、これは機能しておらず、また、プライマリでの変化がすぐに反映されて上書きされるので不要な動作でした。
</p>
<p>
loginのイベントトリガを削除した後にスタンバイに接続したときに、「FATAL:  cannot acquire lock mode AccessExclusiveLock on database objects while recovery is in progress」が出て接続できない動作が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=97b5c5aaa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4a375527a">&#167;</a></small></p>
<li>使われなくなったレプリケーションスロットを削除するときの競合状態が回避されました。  (Xuneng Zhou) (18)(17)</li>
<p>
削除直後のスロットの共有メモリエントリを他セッションが再利用した場合、誤ったロック解放と誤ったログメッセージ（異なるスロット名やデータベースOIDが使われる）が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08458bcae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ea834d747">&#167;</a></small></p>
<li>一時的なレプリケーションスロット（初期化途中の論理レプリケーションスロット）を削除するときの競合状態が回避されました。  (Zhijie Hou) (18)(17)(16)(15)(14)</li>
<p>
これまでの実装では、スロットを解放した後にスロットの共有メモリエントリにいくらか追加的な更新を実行していました。これは他セッションが直ちに再利用するかもしれないため、安全ではありません。本修正で、一時スロットには、この更新を行なわないようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f833c9207">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=080d61f07">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51e79222c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4eb59d40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=968c50845">&#167;</a></small></p>
<li>ロジカルレプリケーションのテーブル初期同期で、進捗報告が古い内容となっていた問題が修正されました。  (Shinya Kato) (18)(17)(16)(15)(14)</li>
<p>
これまでは、サブスクライバのpg_stat_progress_copyビューは、データコピーが終わった後でも、初期COPY操作をアクティブとして表示していました。同期がパブリッシャに追いつくまで、古いエントリが表示されたままでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9cd9b4d7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f2acab534">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d140237da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b5f7e7569">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e3c4e3746">&#167;</a></small></p>
<li>バックアップに失敗したなら、ベースバックアップの進捗がクリアされるようになりました。  (Chao Li) (18)(17)(16)(15)</li>
<p>
これまで、pg_stat_progress_basebackupビューは、レプリケーションクライアントが切断するまで、古い進捗情報を表示し続けていました。標準付属のpg_basebackupであれば、失敗した後に即座に切断しますが、他のバックアップを取得するクライアントはそうであるとは限りません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b70000837">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e7564ee8c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2ea6bfed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7cbd80340">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf7530cf7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2ad214dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a240e8cd2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fffa4d870">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a8fb98b7b">&#167;</a></small></p>
<li>設定track_functionsが有効であるとき、実行時統計情報(pgstats)のエントリの同時削除のためにPANICが生じる可能性があり、修正されました。  (Sami Imseih, Michael Paquier) (18)(17)(16)(15)</li>
<p>
「PANIC:  cannot abort transaction .., it was already committed」が出るケースが報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5cc59834b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2e0c61aed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf4616b59">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e9e62193">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a4f389dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39e649d44">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c457ea15">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=75aca8b93">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe464e9e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=afb076b29">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e34b1ff5d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e4771825">&#167;</a></small></p>
<li>対応する共有ハッシュテーブルのエントリに対するメモリ領域取得に失敗した後、壊れた実行時統計情報(pgstats)のローカルエントリをクリーンアップするようになりました。  (Niall Newman) (18)(17)(16)(15)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=89fc6a7c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2fd8d45ec">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc9283b21">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=636bcd6a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=10e20e59e">&#167;</a>これを行なっていなかったため、次にローカルエントリが使われたときに、NULLポインタ参照によるクラッシュが発生しました。
</p>
<p></small></p>
<li>読み込みや書き込みの失敗後に誤ったI/O操作統計が記録されないように、修正されました。  (Bertrand Drouvot) (18)</li>
<p>
各種のWAL読み書きに処理に失敗したときにエラーを意味する負の値がそのまま統計値のカウントに使われていて、pg_stat_ioビューなどで参照されるWALのI/O統計に誤った値が混入する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=13f940b4b">&#167;</a></small></p>
<li>PL/Perlで、不正なPostgreSQL::InServer::ARRAYオブジェクトを扱うときのNULLポインタ参照によるクラッシュが回避されるようになりました。  (Xing Guo) (18)(17)(16)(15)(14)</li>
<p>
PostgreSQL::InServer::ARRAYはPL/Perl関数に引数でPostgreSQLの配列を渡すときに使われるperlのオブジェクト型です。PL/Perl関数からPostgreSQLの配列を返すときにも使用できます。検査が不足していて、引数に由来せず適切な内部構造を持たないPostgreSQL::InServer::ARRAYオブジェクトを返すとクラッシュを引き起こせました。
</p>
<pre>
（クラッシュ発生例）
=# CREATE FUNCTION f102() RETURNS integer[] AS $$
     return bless {}, "PostgreSQL::InServer::ARRAY"; $$ LANGUAGE plperl;
=# SELECT f102();
server closed the connection unexpectedly
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e430ecc59">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d424d06ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3854f4afc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9b2a6ccc4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e520ad34b">&#167;</a></small></p>
<li>PL/Pythonで、Pythonのシーケンスオブジェクトとマッピングオブジェクトを扱うときにエラーを正しく検査するようになりました。  (Richard Guo) (18)(17)(16)(15)(14)</li>
<p>
hstore_plpython拡張やjsonb_plpython拡張を使って、PL/Python関数の戻り値をhsotre型やjsonb型に変換している場合に該当する問題です。これまでは、壊れたオブジェクトやハンドルされない例外によって、NULLポインタ参照によるクラッシュが発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=53482fcb9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3dc59c173">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e92f23bde">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12bff46ff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b7719f74">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=309dc4526">&#167;</a></small></p>
<li>libpqで、pqReadData()の実行中にSSLまたはGSSの復号バッファに残っている未処理バイトを常にすべて取り出すようになりました。  (Jacob Champion) (18)(17)(16)(15)(14)</li>
<p>
例外的なケースですが、大きなメッセージのサーバからの届き方によっては、バッファがいっぱいになることでlibpqがソケット到着を誤って待ち続けて、APIを呼び出すクライアントアプリケーションがハングアップしてしまう可能性がありました。
</p>
<p>
pqReadData()はサーバ側からデータを読むlibpqの内部実装関数です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eeb2940ae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2167302b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c162810a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d3f329656">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4ecba7fa3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b018b5d1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f8745543">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb0a54518">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=177a2a2e3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=477bc27a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=05908afcd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d3888c90a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=536512f34">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=27761c015">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0958c3ea4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6243ea6c3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21a6c69ea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f5f569713">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9eb70c9c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=87c3a79ea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bab0a2db7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=56988064b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5ba13f8c0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7532f2117">&#167;</a></small></p>
<li>libpqのメモリ不足状態の処理が改善されました。  (Anthonin Bonnefoy) (18)</li>
<p>
COPYデータ読み込みや関数呼び出しの途中に、非同期メッセージ処理でメモリ不足になった場合にも、直ちにエラーを出すようになりました。これまでは、セッション切断された状態で処理が継続されていて、エラー発生が遅れたり、不適切なエラーが出る可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8380013cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6b46a5d1b">&#167;</a></small></p>
<li>libpqのトレース機能が、新しい形式のBackendKeyDataメッセージとCancelRequestメッセージを正しく出力するようになりました。  (Anthonin Bonnefoy) (18)</li>
<p>
これらのプロトコルメッセージは固定長から可変長に仕様変更されましたが、トレース機能では固定長を想定したままとなっていたため、「mismatched message length」という警告が出力されていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0766bc57e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dd5eca055">&#167;</a></small></p>
<li>libpqが30000バイトを超えるParameterDescriptionメッセージを受け付けられるようになりました。  (Ning Sun) (18)(17)(16)(15)(14)</li>
<p>
libpqは受信メッセージの妥当性検査として、「長くなりうるメッセージ型」以外について長すぎるメッセージを弾きます。ParameterDescriptionは「長くなりうるメッセージ型」として扱われていなかったため、メッセージ長が30000バイトを超えるとエラーになっていました。この制限により、7498個を超えるパラメータを持つプリペアドステートメントに対するPQdescribePrepared()が失敗していました。この数のパラメータはまれな用法ですが仕様の範囲内です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b1ab4bc52">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4183c667">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8d516d2b9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0f63b74a4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b79c8d1a">&#167;</a></small></p>
<li>ecpgコンパイラのNULLポインタ参照によるクラッシュが修正されました。  (Jehan-Guillaume de Rorthais) (18)</li>
<p>
構造体の内側に入れ子になった共用体を含むDECLAREセクションをもつ.pgcコードを変換しようとすると、ecpgコマンド実行がクラッシュしました。
</p>
<pre>
（ecpgコマンドがクラッシュするコード例）
EXEC SQL BEGIN DECLARE SECTION;
    struct s1
    {
        char STR1[10];
        union u1
        {
             int NUM1;
             int NUM2;
        } U1;
    } S1;
EXEC SQL END DECLARE SECTION;
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=917fdbc63">&#167;</a></small></p>
<li>ecpgのGET DESCRIPTOR文とSET DESCRIPTOR文で、記述子ヘッダ項目を複数指定する構文が拒否されるようになりました。  (Masashi Kamura) (18)(17)(16)(15)(14)</li>
<p>
これまでも文法上はこの構文が許されていましたが、実装は実際には複数のヘッダ項目に対応できておらず、指定すると壊れたCコードが生成されていました。
</p>
<p>
本修正で構文解析処理でもドキュメント上でもヘッダ項目は1つだけに変更されました。これは非互換性を含む変更です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=081434b0f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe8c0a762">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d4b73cfd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bfeddcf09">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e8fd9f7a">&#167;</a></small></p>
<li>psqlのパイプラインモードにおける遅延エラーの問題が修正されました。  (Michael Paquier) (18)</li>
<p>
Syncメッセージへの応答としてサーバがエラーを報告する場面（遅延制約の違反など）で、psqlがハングアップしたり、アサート失敗したりする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e9bc4074">&#167;</a></small></p>
<li>psqlの拡張表示（expanded）の整形出力で、行の幅が揃うようになりました。  (Pavel Stehule) (18)(17)(16)(15)(14)</li>
<p>
テーブルのデータ行がレコードヘッダ行より狭い場合、データ行の幅がレコードヘッダ行に合わせられず、次のように桁のずれた出力になっていました。
</p>
<pre>
（ずれた出力の例）

+-[ RECORD 1 ]-+
| a | 10 |
| b | 20 |
+---+----+

（修正後の出力例）

+-[ RECORD 1 ]-+
| a | 10       |
| b | 20       |
+---+----------+
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=07a6c262b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=efd885d05">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1edbe6695">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=022ba5c61">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4ca91ea1">&#167;</a></small></p>
<li>psqlの特別変数WATCH_INTERVALについて、既定の上限が強制されるようになりました。  (Sven Klemm, Daniel Gustafsson) (18)</li>
<p>
大きすぎる値(1000000超)を設定しようとすると、psqlはエラーを報告するものの、その値を適用してしまっていました。修正後は、上限を超える値は拒否され、変数の値は変更されません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e0c641ebb">&#167;</a></small></p>
<li>psqlの「\l+」でデータベースサイズを表示する権限検査が修正されました。  (Christoph Berg) (18)(17)(16)(15)(14)</li>
<p>
サーバ側のpg_database_size()は、pg_read_all_statsロールの権限を持つ利用者に対して、対象データベースへのCONNECT権限がなくてもすべてのデータベースのサイズの参照を許します。しかしpsqlはこの仕組みを考慮せず、CONNECT権限を持つ利用者以外に対してはこの関数を呼び出していませんでした。
</p>
<p>
修正後は、「\l+」の権限検査にpg_read_all_statsロールの権限（USAGE）の確認が加わり、pg_database_size()の権限規則と一致するようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=77aeca802">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f2d6cf880">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41949c6f3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=844bc718a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e6e8a3078">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e19081da">&#167;</a></small></p>
<li>psqlの「\df」のタブ補完で、プロシージャも候補に含めるようになりました。  (Erik Wienhold) (18)(17)(16)(15)(14)</li>
<p>
「\df」コマンド自体はプロシージャも表示対象に含めるよう拡張されていましたが、タブ補完の候補は関数だけを表示し続けていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=558e0de6d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=598af79b1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=355a4fcf9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9afdb6d1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c25737c89">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2d44bb900">&#167;</a></small></p>
<li>pgbenchのスレッド安全性のバグが修正されました。  (Fujii Masao) (18)(17)(16)(15)</li>
<p>
pgbenchを複数スレッドで実行し、かつ「--verbose-errors」オプションを指定した場合、異なるスレッドが同じバッファを使ってエラーメッセージを組み立てようとし、ログ出力が壊れる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=98dd6c204">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=52b3e7001">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6432a4cd6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f18fcd9a4">&#167;</a></small></p>
<li>pg_combinebackupで、コピー元ファイルが想定より小さい場合に無限ループが発生することがあり、防止されました。  (Peter Eisentraut) (18)(17)</li>
<p>
「--copy-file-range」を指定して合成フルバックアップを再構築する過程で、ファイルが0バイトしかコピーできなかった場合をエラーとしていなかったため、試行が繰り返されてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d36b72894">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=090ce6934">&#167;</a></small></p>
<li>pg_createsubscriberで、エラー発生後にパブリッシャ側オブジェクトのクリーンアップが行なわれない場合があり、修正されました。  (Nisha Moond) (18)(17)</li>
<p>
pg_createsubscriberは、論理レプリケーションオブジェクトを作成した後にエラーを起こした場合、パブリッシャ上に作成したパブリケーションとレプリケーションスロットを削除する必要があります。一部のエラーケースでは削除が行われず、pg_createsubscriberの再実行のために手動での削除が必要でした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=196b4b5ae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c03784a21">&#167;</a></small></p>
<li>pg_recvlogicalの出力ファイルが、ソースクラスタのグループ読み取り権限に従って作成されるようになりました。  (Fujii Masao) (18)(17)(16)(15)(14)</li>
<p>
pg_recvlogicalはこの挙動についてドキュメントに記載されていたにもかかわらず、実際にはソースクラスタのグループ読み取り権限を反映した書き出しが行なわれず、常にファイル所有者の読み書きのみを許すモードが使われていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=89b4b3ae3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ddd12d1a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9590dcfca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba9833a75">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5552a15a3">&#167;</a></small></p>
<li>pg_restoreの「--statistics」および「--statistics-only」オプションの一貫しない挙動が修正されました。  (Chao Li, Michael Paquier) (18)</li>
<p>
「--schema」「--table」などの選択的リストアオプションと組み合わせた場合に意図通りの要素がリストアされませんでした。pg_dumpで対象選択オプションを組み合わせた場合と同様に動作するように修正されました。
</p>
<pre>
（誤動作例）
$ psql -d db1 &lt;&lt;EOS
CREATE TABLE t119 AS SELECT g id, g % 5 n FROM generate_series(1, 20) g;
CREATE STATISTICS s119 ON id, n FROM t119;
ANALYZE;
EOS

$ pg_dump --statistics -Fc db1 -f db1.dmp
（プランナ統計情報を含むダンプファイルを作る）

$ pg_restore --table t119 --statistics-only -f - db1.dmp
（→「t119テーブルの統計情報のみをリストア」の意図だが、リストア内容が空になる）

$ pg_restore --statistics --table t119 -f - db1.dmp
（→「統計情報を含めてt119テーブルをリストア」の意図だが、拡張統計情報が欠損する）
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42ffdedcf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=477efef08">&#167;</a></small></p>
<li>vacuumdbの「--missing-stats-only」が、パーティションテーブルに対する式インデックスを処理対象から除外するようになりました。  (Baji Shaik) (18)</li>
<p>
これまで、本オプションのvacuumdb実行では、パーティションテーブルに式インデックスがあると、常にそのパーティションテーブルにANALYZEを実行しようとしていました。しかし、統計情報は子パーティションのインデックスに作成されても、パーティションテーブルのインデックスには作成されないため、意味がありませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7e085aabd">&#167;</a></small></p>
<li>contrib/amcheckで、btreeインデックスのメタページの「allequalimage」フラグの破損が報告されない問題が修正されました。  (Chao Li) (18)</li>
<p>
btreeインデックスを検査する関数は、これまでインデックスキー列のいずれかにinterval_ops演算子クラスを含む場合のみ正しく動作していて、そうでないインデックスでこの破損が見逃される可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c32bbc8">&#167;</a></small></p>
<li>contrib/amcheckの GINインデックス検証関数でメモリリークが修正されました。問い合わせが終わるまで未開放メモリが蓄積します。  (Kirill Reshke) (18)</li>
<p>
大きなGINインデックスの検証でメモリ使用量が増大するおそれがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80cfd8aef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f8ab91c1">&#167;</a></small></p>
<li>contrib/amcheckで、ショートヘッダのvarlenaデータムが正しく扱われるように修正されました。  (Andrey Borodin) (18)(17)(16)(15)(14)</li>
<p>
この誤りで、btreeインデックス検証で無駄な処理が生じる可能性がありますが、それ以上の悪影響は無いと考えられます。
</p>
<p>
varlenaデータムとはPostgreSQL実装内で使われる長さとデータ本体からなるデータ構造です。ショートヘッダは長さをあらわすのに1バイトだけ使う形式です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=897e79486">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8abb8a155">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c89a1ca01">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4284476c0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=af09b18cb">&#167;</a></small></p>
<li>contrib/btree_gistで、float4とfloat8の演算子クラスにおける「NaN」の扱いが修正されました。  (Bill Kim, Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
各種の比較関数と、GiSTのpenalty関数、distance関数が「NaN」を考慮しておらず、「NaN」を渡されたときに誤った結果を返していました。
</p>
<p>
本修正の適用後、float列のbtree_gistインデックスに「NaN」のエントリが含まれる可能性がある場合は、それらのインデックスの再構築を推奨します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a47005f0b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e1d07792">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d215d2cc2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d569ccd40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=98dd4406f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=255bce448">&#167;</a></small></p>
<li>contrib/btree_gistで、GiSTインデックス構築時のbit型とvarbit型の値のソートが修正されました。  (Tom Lane) (18)</li>
<p>
これまでbit型の値がbytea型であるかのようにソートされていました。これは明白な誤動作を引き起こすことはありませんでしたが、型本来のソート順に一致しない並びで構築されるため、非効率なインデックスになりました。
</p>
<p>
本修正の適用後、bit列上のbtree_gistインデックスの再構築を推奨します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=11cb9c431">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=558c4ea9a">&#167;</a></small></p>
<li>contrib/btree_gistで、非等価（<>）演算子を使った検索が修正されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
可変長データ型の場合、非リーフインデックスページを走査するコードが誤った比較関数を適用していました。これは誤った問い合わせ結果、および場合によってはクラッシュにつながる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc6649abe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c519207">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86992769e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0663382c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f2a1b3d3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=286f9a3ce">&#167;</a></small></p>
<li>contrib/dblinkとcontrib/postgres_fdwで、use_scram_passthroughオプションについて、ユーザマッピングの設定が外部サーバの設定より優先されるよう修正されました。  (Matheus Alcantara) (18)</li>
<p>
これまでは外部サーバ側の設定が優先されていましたが、これは他の外部テーブルオプションの挙動と一貫していませんでした。他の接続オプション（sslcertやsslkeyなど）と同様に、外部サーバのオプションは共通のデフォルト値を提供し、ユーザマッピングのオプションがそれを上書きする扱いに統一されました。
</p>
<p>
これは非互換性を含む変更と言えます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=88d7748d2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=130396e6c">&#167;</a></small></p>
<li>contrib/dblinkの外部データラッパのuse_scram_passthroughオプションが拒否されるようになりました。  (Matheus Alcantara) (18)</li>
<p>
このオプションは外部サーバとユーザマッピングに対してのみ意味を持ちますが、dblinkは外部データラッパ（dblink_fdw）レベルでもこのオプションを受け付けていました（そして受け付けた設定を無視していました）。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cd777e27e">&#167;</a></small></p>
<li>contrib/hstore_plperl、contrib/jsonb_plperl、contrib/jsonb_plpythonで保護されていない再帰とループがあり、修正されました。  (Aleksander Alekseev) (18)(17)(16)(15)(14)</li>
<p>
深くネストしたjsonb値を扱うときのスタックオーバーフロー（によるクラッシュ）が防止されました。また、Perlのオブジェクト参照の循環チェーンをたどるときに生じる無限ループが割り込み可能になりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e3b7a43fa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3df0b7755">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b0f3465b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a6f23c3ad">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=639fff511">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d65cf6f80">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4efef9d18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60a1d712a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fbbabb0a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f6b2295f">&#167;</a></small></p>
<li>contrib/intarrayでプランナ統計情報のカタログキャッシュエントリの解放漏れが修正されました。  (Man Zeng) (18)(17)(16)(15)(14)</li>
<p>
この解放漏れにより、「WARNING:  resource was not closed: cache pg_statistic ..」のような警告が発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e7544c518">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=94b57ab54">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=273be484a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=702a6d5f6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a96b051a9">&#167;</a></small></p>
<li>contrib/ltreeで比較関数における整数オーバーフローが修正されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
約14,653個を超えるラベルを含むltree値は、オーバーフローによって誤った比較結果を返していました。btreeインデックスにそのような値が含まれている場合、破損している可能性があるため、本修正の適用後に再構築することを推奨します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c3e36a9a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c391c00d9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aca944e33">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1bec6b1c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f528a5606">&#167;</a></small></p>
<li>contrib/pgcryptoで、OSSLCipherオブジェクトの使用中にエラーが発生した後の二重解放によるクラッシュが回避されました。  (Yuelin Wang) (18)(17)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=020426268">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2aa6be6e6">&#167;</a></small></p>
<li>contrib/pg_prewarmのautoprewarmワーカの範囲外アクセスが修正されました。  (Matheus Alcantara) (18)</li>
<p>
このコードは、配列の末尾の1つ先から値を取り出そうとしており、セグメンテーション違反によるクラッシュを引き起こす可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3bf2cb225">&#167;</a></small></p>
<li>contrib/pg_surgeryのheap_force_kill関数とheap_force_freeze関数で、配列の範囲外書き込みが修正されました。  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
オフセット番号がMaxHeapTuplesPerPage（ページあたりの最大タプル数、291など）に等しいTIDを変更しようとすると、確保された配列の末尾の1バイト先に書き込み、サーバをクラッシュさせる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2b09f8a91">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0bcf19c9e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=daf8bc7d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51f63ba2b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1eda3eb07">&#167;</a></small></p>
<li>contrib/pg_surgeryで、64K要素を超えるTID配列による無限ループが回避されるようになりました。  (Andrey Rachitskiy) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f24c8237">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19f0391df">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b6c99d96">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb28b6f24">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=395700f48">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e9d53cf45">&#167;</a></small></p>
<li>contrib/spiのrefint拡張で、check_foreign_key()関数のNULLポインタ参照が回避されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
ON UPDATE CASCADEの場合、参照列の新しいキー値がNULLであると、クラッシュが発生していました。これはCVE-2026-6637の修正の見落しですが、その前からあったコードも正しいものではありませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed0c4d5af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6b4de201e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb93f10e2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=77b2d18e9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1de0a711d">&#167;</a></small></p>
<li>contrib/segで、確実性指示子「~」を持つセグメントの値が正しく出力されるように修正されました。  (Ewan Young) (18)(17)(16)(15)(14)</li>
<p>
seg型の出力関数seg_out()はセグメントの上限に付いた「~」を出力していませんでした。さらに悪いことに、下限に「~」があり上限に指示子がない場合、上限がまったく出力されませんでした。なお、文字列としての出力が不正であるだけで、演算結果に影響はありません。
</p>
<pre>
（誤動作例：2番目と3番目が誤動作）
db1=# SELECT '~1 .. ~5'::seg, '1 .. ~5'::seg, '~1 .. 5'::seg;
   seg    |  seg   |  seg
----------+--------+--------
 ~1 .. ~5 | 1 .. 5 | ~1 ..
(1 row)
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0004cab4d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bcbbd070d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=504ca0513">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3aa2083a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=58b91fc73">&#167;</a></small></p>
<li>contrib/xml2のxpath_nodeset()関数で名前空間ノードを問合せたときのクラッシュが修正されました。  (Andrey Chernyy, Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
以下のように、query引数に「//namespace::」を指定した場合にクラッシュするケースが報告されました。
</p>
<pre>
db1=# SELECT xpath_nodeset(
        '&lt;root xmlns:foo="http://example.com/foo"&gt;&lt;child/&gt;&lt;/root&gt;',
        '//namespace::*');
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=91b57eade">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4a49ab289">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18955d412">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bc5775149">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f3f901a53">&#167;</a></small></p>
<li>OpenSSL 4を使ったPostgreSQLのビルドに対応しました。  (Daniel Gustafsson) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=27cf3b5af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bcabfcce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fb8befa7b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7f70fa1b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=086652c02">&#167;</a></small></p>
<li>タイムゾーンデータファイルをtzdataリリース2026cに更新しました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
アルバータ州（America/Edmonton）は、2026年11月から年間を通したUTC-06（実質的に、恒久的なサマータイム）になります。このリリースでは、それ以降のタイムゾーン省略形は「CST」と仮定しています。この仮定は将来変更される可能性が高いのですが、新しい省略形に何が使われるかは明らかになっていません。
</p>
<p>
モロッコ（Africa/Casablanca）は、2026-09-20に、サマータイムの切り替えなしの恒久的なUTC+00に移行します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3c16aa293">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5f67124fa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=669438aed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=796c275a0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=af7be5672">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=812cc1a73">&#167;</a></small></p>
<li>古いマイナーバージョンが生成したWALのリプレイ時の自己デッドロックが修正されました。  (Andrey Borodin) (16)(15)(14)</li>
<p>
この不具合は前回のマイナーリリース(16.14、15.18、14.23)で導入されました。より古いマイナーバージョンのプライマリに追従するスタンバイサーバで、startupプロセスがハングアップしてレプリケーションが先に進まなくなりました。
</p>
<p>
共有行ロックで使われるマルチトランザクションに関するWALレコードのリプレイで問題が発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42a3194e5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2dfe75f98">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2bb60eb4f">&#167;</a></small></p>
<li>変数が1つも渡されていない場合でも、未定義のjsonpath変数をエラーとして扱うようになりました。  (Andrey Rachitskiy) (16)(15)(14)</li>
<p>
jsonbの「@?」演算子と「@@」演算子がjsonpath式の中で使う変数を渡せない、という場合のコードパスでは、未知のjsonpath変数が、本来の期待であるエラーの発生ではなく、JSONのnullとして誤って扱われていました。期待される動作でないことに加えて、この誤りは無制限のメモリ消費を引き起こす可能性がありました。
</p>
<pre>
（誤動作例）
db1=# select '{"A":1}'::jsonb @@ '$"no_such_var" == 1';
 ?column?
----------
 f
(1 row)

db1=# SELECT '{"A":1}'::jsonb @? '$"no_such_var"';
 ?column?
----------
 t
(1 row)

（修正後は以下のエラーが出る）
ERROR:  could not find jsonpath variable "no_such_var"
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1daeef6e0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8af173e28">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=364014327">&#167;</a></small></p>
<li>Visual Studio 2026を使ったPostgreSQLのビルドに対応しました。  (Andrew Dunstan) (16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bc5a873a8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eba7f1dc0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f1c579fc4">&#167;</a></small></p>
</ol>

<div>
<a href="https://www.sraoss.co.jp/prod_serv/support/pgsql-mainte/?utm_source=sraoss-techblog&utm_medium=referral&utm_campaign=under-article-pgsql" rel="noopener" style="color:initial;" target="_blank" class="no-ext"></p>
<div style="background-color:#DAEFF6; padding:20px; border-radius:8px; text-align:center;">
SRA OSSでは、PostgreSQL/Pgpool-II のサポートを提供しております。<br />
詳しくは<strong style="color:#2581c4;">弊社ホームページ</strong>をご覧ください。
</div>
<p></a>
</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PostgreSQL 17.11 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/17-11/</link>
		
		<dc:creator><![CDATA[データベース技術グループ]]></dc:creator>
		<pubDate>Tue, 01 Sep 2026 04:34:01 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 17]]></category>
		<category><![CDATA[PostgreSQL 17.10]]></category>
		<category><![CDATA[PostgreSQL 17.11]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=21094</guid>

					<description><![CDATA[このリリースは 17.10 からの修正リリース（2026年 8月 13日リリース）です。 17.X からのアップデートではダンプ、リストアは不要です。 しかしながら、最初の 3項目のセキュリティ修正は、設定の修正やデータ ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 17.10 からの修正リリース（2026年 8月 13日リリース）です。<br />
17.X からのアップデートではダンプ、リストアは不要です。</p>
<p>しかしながら、最初の 3項目のセキュリティ修正は、設定の修正やデータのクリーンアップが必要となるかもしれません。また、以下に記載の修正項目に該当する GiSTインデックスがある場合には、インデックス再構築が必要となります。</p>
<p>さらに、17.6 よりも前のバージョンからアップデートする場合には、<a href="/tech-blog/pgsql/17-6/" rel="noopener">17.6のリリース情報</a>も参照してください。</p>
<p><span id="more-21094"></span></p>
<h3>PostgreSQL 17.10 から 17.11 への変更点</h3>
<p>18.6, 17.11, 16.15, 15.19, 14.24 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<ol>
<li>ロジカルデコーディングの出力プラグインが厳格化されました。新たな設定パラメータoutput_plugin_librariesでの指定が必要となりました。(CVE-2026-6471)  (Jacob Champion) (18)(17)(16)(15)(14)</li>
<p>
これまでは、レプリケーションユーザがロジカルデコーディングむけに任意のライブラリを選ぶことができて（プラグイン名になどフルパス指定も可能）、さまざまな攻撃が可能でした。仕組みを変えずにこれを防げるようにするため、許可された出力プラグインのホワイトリストが導入されました。
</p>
<p>
PostgreSQL本体同梱のpgoutput（ロジカルレプリケーション用）とtest_decoding（単純なテキスト書き出し用）がデフォルトでoutput_plugin_librariesに含まれます。
</p>
<p>
加えて、pg_upgrade --checkで、新クラスタのoutput_plugin_librariesが 旧クラスタ（バージョン 17.x 以降）のレプリケーションスロットで使っているプラグインライブラリを許可していない場合、失敗するようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5d47df21e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a29b607d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=01992176e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e1252ee5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=99f205407">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf3842a64">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7082ce248">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=82fd68801">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fcccea97">&#167;</a></small></p>
<li>contrib/pgcryptoのPGP暗号化がサポートされない暗号化方式を検出するように、修正されました。(CVE-2026-14663)  (Daniel Gustafsson) (18)(17)(16)(15)(14)</li>
<p>
これまでは、OpenSSLが要求された暗号化方式を（例えば、FIPSモードであるため、あるいは、古いプロバイダがロードされていないために）拒否した場合に、pgcryptoはその失敗を知らせず、プレーンテキストを含む暗号化されないブロックに単にXORを適用していて、その「暗号化」は容易に解読可能でした。これは典型的には非推奨や非FIPSの暗号化アルゴリズム（cipher-algoオプション指定が blowfish/bf, twofish, cast5, 3des などの場合）で発生します。
</p>
<p>
これからはデフォルトでは、OpenSSLでサポートされない方式でのPGP暗号化がエラーになり、これまでの動作により不適切に暗号化されたメッセージの復号もエラーになります。pgp_pub_decrypt()関数、pgp_sym_decrypt()関数などのオプション引数の新たなオプションignore_cipher_failureに1を指定して実行すると、従来通りの振る舞いに戻ります。
</p>
<p>
前述の理由で不適切に暗号化されたメッセージを、'ignore-cipher-failure=1'オプションを指定して復号する場合には、OpenSSLの動作がそのメッセージを作成したときと同じでなければなりません。サポートされない暗号化方式が異なっている場合にはうまくいきません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba207f58f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe32b10fc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b05cfc693">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6ca6023ca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=472ef7e4a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7e29eb6f4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d97b3f58c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c5128ca0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7eed42aa8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba2a63faf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=953be116c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2c48c81f">&#167;</a></small></p>
<li>psqlがスクリプト化された「COPY ... FROM STDIN」コマンドに続くインラインデータを、COPY開始時のエラーであっても、読み飛ばすように修正されました。(CVE-2026-6464)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
これまでは「COPY」コマンドが行の読み込みを始める前に（例えば、対象のテーブルが無い、などで）エラーを起こした場合、psqlはこのことを認識できず、続くインラインデータを読んでSQLとして処理しました。これは良くて誤りであり、悪くするとSQLインジェクションを起こします。
</p>
<p>
これまでも、COPY開始処理が完了してサーバが「PGRES_COPY_IN」を返した後であれば、途中の行読み込みでエラーを起こしても、残りを読み飛ばすように動作していました。
</p>
<p>
本修正が実運用SQLスクリプトに影響を及ぼすことは無いと考えられますが、テスト用スクリプトでは意図的に「COPY ... FROM STDIN」コマンドが失敗するように作られている場合があります。そのような場合には各コマンドの後に「\.」というデータ区切り行を追加する必要があります。さもないと、読み飛ばす行が多すぎる結果になるかもしれません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6ab88d37">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=29921259e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=46fa1f6f3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2bdfd5cdc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3fdcfa8f7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5c51ae455">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cf01e213">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=900894d35">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dca6627de">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=db96e87f9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cdbabea7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7215c7e96">&#167;</a></small></p>
<li>EXECUTEやFETCHを実行するポータルの出力行型についてクロスチェックを行うようになりました。(CVE-2026-16239)  (Robert Haas) (18)(17)(16)(15)(14)</li>
<p>
EXECUTEとFETCHは2つのポータルを使います。外側の1つはそのステートメント自身のためで、内側の1つはクエリを代わって実行します。これまで、宣言された2つのポータルの行型を異なるものにできて、これを利用してサーバメモリ暴露や任意コード実行を引き起こせました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=64a65ead1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=37b8f3b0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60887d348">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7d150b5c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc933ce00">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f49beef2">&#167;</a></small></p>
<li>to_char()で、長いタイムゾーン省略形によるバッファオーバーランが修正されました。(CVE-2026-14669)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
これは容易にバックエンドプロセスのクラッシュができて、任意コード実行をもたらす攻撃も報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3294ab839">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fafe2380">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12a620686">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5dbeb69bc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f64cc83f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fb3c6389">&#167;</a></small></p>
<li>正規表現によるマッチ、分割の関数で、バッファオーバーランが修正されました。(CVE-2026-14664)  (Masahiko Sawada) (18)(17)(16)(15)(14)</li>
<p>
不正な文字エンコーディングのデータを渡すと、変換バッファの終端を過ぎた位置に書き込みが行なわれる可能性がありました。regexp_match()、regexp_matches()、regexp_split_to_table()、regexp_split_to_array()の各関数の動作が修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7df2aa8ef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b7e5c3f63">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e91dcfcca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3179253c2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=127a0673f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=890327639">&#167;</a></small></p>
<li>ascii()関数が不正な入力に対して頑健になりました。(CVE-2026-18024)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
不正な文字エンコーディングのデータが入力されることで、騙されて読むべきでない何バイトかを読んで返す可能性がありました。アサートが有効なビルドでは、アサート失敗も発生します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80ce920a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08e812c02">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=849da8210">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac450853d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3b925133b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42d333a78">&#167;</a></small></p>
<li>pg_restore_attribute_stats()関数でのマルチ範囲型の処理が修正されました。(CVE-2026-16238)  (OpenAI Security Research Team) (18)(17)(16)(15)(14)</li>
<p>
pg_restore_attribute_stats()はプランナ統計情報のダンプ、リストアで使われる関数です。
</p>
<p>
pg_restore_attribute_stats()はマルチ範囲型を元となる範囲型と単純に同様に扱っていました。これは境界ヒストグラムについては有効でしたが、他の種類の統計情報に対しては誤っていました。
</p>
<p>
誤った統計情報のリストアにより、不適切なプラン選択による問合せ実行の遅延や潜在的なプランナ誤動作の可能性が考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3d9262bb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08454e8b2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8d428c6e6">&#167;</a></small></p>
<li>scalarineqsel()が、tid型と想定される定数を実際にそうであるか検査するようになりました。(CVE-2026-14668)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
この想定は組み込みの演算子については成り立ちますが、悪意で作られた演算子には通用せず、クラッシュやサーバメモリ暴露を引き起こします。
</p>
<p>
scalarineqsel()は選択率の見積を返すプランナの内部実装関数の1つです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0d60ee717">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a2cb5a1cf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ebf896f4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=591192e2e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=005ffaa7f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=59205c7e9">&#167;</a></small></p>
<li>tsvector型とtsquery型の実装コードが（個々の要素、全体の長さの両面で）きわめて長い値に対して頑健になりました。(CVE-2026-14662)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
ドキュメントに記載されていた上限が、全てのコードパスで必ずしも強制されていませんでした。
</p>
<p>
本マイナーバージョンアップで、これまで許容されていたデータについて、以下のようなエラーが出るようになる可能性があり、仕様通りであるものの非互換変更ともいえます。
</p>
<pre>
ERROR:  lexeme is too long for tsvector ...
ERROR:  string is too long for tsvector ...
ERROR:  word is too long to be indexed ...
ERROR:  tsquery is too large
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cb947ca31">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e25135057">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe0b5bd6d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c1a8805a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f443d0a0a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c2ba321d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3b2238fbe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dddc8a69f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8e87bd473">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=84b6a7a06">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4f8b37b6b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e3014f37">&#167;</a></small></p>
<li>「FUNC_MAX_ARGS」を超える関数引数を処理する必要がない、と誤って想定していた様々な箇所が修正されました。(CVE-2026-14679)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
特に集約関数について、実際の引数の数の上限は「FUNC_MAX_ARGS - 1」ですが、パーサ段階では制限しておらず、後の処理で問題を引き起こしました。潜在的にバッファオーバーランの可能性がありました。
</p>
<p>
「FUNC_MAX_ARGS」はビルド時指定の定数でデフォルト100です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=92972e815">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f0e1aac7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=797e3cc4c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c67c4cf5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b417744a7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf44ff5e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42d9749b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a03f21da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a40f4b09">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=32e0d25d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb2fa2704">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7f462838">&#167;</a></small></p>
<li>internal型を引数や戻り値とする関数のSQLからの呼び出しを拒否するようになりました。(CVE-2026-14680)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
拒否するための既存の仕組みはありましたが、不十分であったため、明示的な検査が追加されました。
</p>
<p>
また、いくつかの集約関数のcombine処理で入力がNULLである場合に正しくSQLとしてのNULLを返すように修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21a00de43">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=54649de65">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb9e55297">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c0c1b2cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e926a9aac">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=155dacbc5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21d8cfb18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=722695db1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=83d0a083f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f308dd7c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6e861e19">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=913fe0c31">&#167;</a></small></p>
<li>ALTER TABLEコマンドで再構築されたとき、拡張統計オブジェクトの所有者が保たれるようになりました。(CVE-2026-6469)  (Masahiko Sawada) (18)(17)(16)(15)(14)</li>
<p>
これまでは拡張統計情報の対象テーブルに、列の型を変えるなどのALTER TABLEコマンドを実行したロールが、拡張統計オブジェクトの所有者になっていましたが、これは不適切な動作と判断されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=93b93f28f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1fa24127">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=75a03c569">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c3367ab5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fb6d1ca8d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=70a3b4e18">&#167;</a></small></p>
<li>EXTRACT()関数呼び出しを逆パースするときに、必要であればフィールド名をクォートするようになりました。(CVE-2026-15741)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
パーサはEXTRACT()のフィールド名としてどのような文字列リテラルも受け付け、検証は実行時まで先送りされます。関数呼び出しを格納して、解析する場合（例えばpg_dumpのとき）、文字列本体が逐語的に吐き戻されて、SQLインジェクションが可能でした。
</p>
<p>
逆パースはダンプ出力やpsqlでの定義表示で行なわれる処理です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a3832a757">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ddd9098a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5981fe370">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5e5ea74e3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=44ea6764b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=967acab87">&#167;</a></small></p>
<li>これまで検査ができていなかった個所について、データ型に対する「USAGE」権限を検査するようになりました。(CVE-2026-6470)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
「CREATE TYPE AS RANGE」、「ALTER TABLE OF」、および、格納される式を作成するコマンド（式を伴うビューやチェック制約の定義など）で、検査が行なわれていませんでした。これらの欠落により、「USAGE」権限を持たないロールでもデータ型に依存するオブジェクトを作成できて、データ型の所有者が後でデータ型を変更できなくなる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=efdb26072">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2e91f8548">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fd6d3e7e9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=24855357c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=97e277402">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=323af0a4e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb1bc525d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57f59ca1d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=671359605">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7a761fe40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c062734cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b6e45b4f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=424fb7160">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=278053843">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d1c8aa0b0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7ce056b17">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6dbedd48b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1a358b8f2">&#167;</a></small></p>
<li>行単位セキュリティ(RLS)に対して、ロールに依存したキャッシュされたプランを、ロール変更後に無効化するようになりました。(CVE-2026-14666)  (Ilya Staroverov, Shinya Kato, Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
ロールのメンバーシップや属性、データベース所有者の変更は、行単位セキュリティポリシーの振る舞いに影響がありますが、これまでは、キャッシュされた古い状態に基づくプランがそのまま使われていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=567286b76">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b12f56bf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1974acf23">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f5f2da795">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=17b6083db">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f4174aa84">&#167;</a></small></p>
<li>直接のSSL接続の後のGSSEncRequestメッセージを拒否するようになりました。(CVE-2026-14681)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
これまでサーバは、TLS暗号化接続が確立した後にもGSSAPI暗号化の要求を受け付けていました。これに成功すると、接続はTLS暗号化(SSL)を使っているけれども、pg_hba.confのルールとしてはGSS接続のように見えました。その結果、pg_hba.confでSSLを無効としていても、それを正しく強制できませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf1bb7e29">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=203a48209">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=067a64d40">&#167;</a></small></p>
<li>モックのSCRAM認証シークレットがより本物らしくなりました。(CVE-2026-14672)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
存在しないロールやSCRAMシークレットを持たないロールに対して、SCRAMログインが試みられた場合、PostgreSQLはモックのシークレットを生成して認証のハンドシェイクをとにかく行ない、攻撃者にそのことが分からないようにします。しかしながら、モックが固定のイテレーションカウントで作られていたため、観測可能な応答の差異がありました。
</p>
<p>
本修正で、モックにもscram_iterations設定パラメータの値を使って、より実際に使われているシークレットに似せるようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d192fa16">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=822143c4d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dec60e8ad">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fadbe882d">&#167;</a></small></p>
<li>ecpgアプリケーションでの範囲外書き込みが修正されました。サーバから不正なbytea型データを受け取ることで引き起こされます。(CVE-2026-16241)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
ecpgはbytea型の値は「\x」で始まることを検査せずに想定していました。壊れているか悪意のサーバは2バイトよりも短い文字列を送ってくるかもしれず、そのためにアプリケーションでのメモリ上書きが発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=457b8737a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a14ba29b1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c3c830272">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39f855e0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5737110b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74c59d062">&#167;</a></small></p>
<li>psqlの「\unrestrict」コマンドの引数でバッククォート展開をしないようになりました。(CVE-2026-18408)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
\restrict と \unrestrict は 17.6、16.10、15.14、14.19バージョンでのCVE-2025-8714の修正で導入されましたが、その中で見落としがありました。悪意のサーバからの応答で出力されたダンプにより、リストアを実行するユーザに意図せぬシェルコマンド実行をさせること（シェルコマンドインジェクション）ができました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0119aa30e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71ca694c7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0bfac9e1f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=33d0c63fb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=df245c374">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2006fca40">&#167;</a></small></p>
<li>pg_dumpにおいてpg_proc.protrftypesのエントリ数がFUNC_MAX_ARGSを超えないという前提が取り除かれました。(CVE-2026-19385)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
入力引数と出力引数の両方のエントリが存在する可能性があるため、この配列の長さがFUNC_MAX_ARGS（これは入力引数のみに制限するものです）を超えることは十分にあり得ます。仮にそうでは無いとしても、pg_dumpはサーバがpg_dumpと同じFUNC_MAX_ARGSの値でビルドされたと仮定することはできません。オーバーランが発生すると、pg_dump内部でのメモリ破壊を引き起こす可能性がありました。
</p>
<p>
pg_procシステムテーブルに関数定義が格納されて、protrftypes列にTRANSFORM句による変換のためのデータ型の配列が格納されます。FUNC_MAX_ARGSは実装内部の定数で、通常100です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86cd82bf4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3392cce5c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c2b16f5d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3299c2ba0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71ba5705d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57aa21f69">&#167;</a></small></p>
<li>tieされたPerlの配列やハッシュに対して、PL/Perlが堅牢化されました。(CVE-2026-14670)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
通常のオブジェクトとは異なる挙動をするtieされたオブジェクトは、メモリの上書きや、破損した結果配列の生成につながる可能性があり、その結果、後で問題が発生する可能性が高い状況でした。
</p>
<p>
tieは、配列やハッシュなどの変数に対して操作用のメソッド群を実装したオブジェクトに結びつける Perl の機能です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c48cd615">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=87c4b8219">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2d78c34f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=477a6bdb0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf4ae7c3b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d7fcfead3">&#167;</a></small></p>
<li>PL/PerlおよびPL/Tclにおけるメモリ割り当て計算時の整数オーバーフローが修正されました。(CVE-2026-14677)  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
これはコードの異なる個所で発生していたCVE-2026-6473と同様の問題で、同じ方法で修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1c1727cb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=028ee716a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b56cc7deb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bbdc0540">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1eb0d5380">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aff9dac1c">&#167;</a></small></p>
<li>contrib/amcheckの関数がインデックス式を実行する前にsearch_pathを制限するようになりました。(CVE-2026-14673)  (Noah Misch) (18)(17)(16)(15)(14)</li>
<p>
amcheckはそれらのインデックス式をテーブル所有者の権限で実行するため、呼び出し元がsearch_pathに依存する関数を乗っ取り、テーブル所有者の権限で任意のコードを実行できてしまう恐れがありました。デフォルトでは、amcheck関数の呼び出しはスーパーユーザーにのみ許可されているため、これは脆弱性には当たりません。しかし、もしその権限が他のユーザに付与されていた場合、ドキュメントで示されているよりも大きな危険が生じることになります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=557cc7186">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0a61fcde0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e41c72aff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2cc147318">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e43e74756">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39d792040">&#167;</a></small></p>
<li>contrib/fuzzystrmatchのlevenshtein()およびlevenshtein_less_equal()関数における整数オーバーフローが修正されました。(CVE-2026-15742)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
これらの関数に大きなコスト値を渡すと整数オーバーフローが発生し、無意味な結果が生じたり、場合によっては境界外書き込みを引き起こしたりする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=62c31b490">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e88eb4e76">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c4d51b627">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=61481aa0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74916136f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9505175f2">&#167;</a></small></p>
<li>contrib/pg_stat_statementsにおけるバッファオーバーランが修正されました。(CVE-2026-14676)  (Alvaro Herrera) (18)(17)(16)(15)(14)</li>
<p>
クエリの正規化処理において、正規化後の文字列が必要とするサイズが正確に考慮されていませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb02eba53">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a31ffc2d">&#167;</a></small></p>
<li>contrib/pg_trgmのGiST picksplit関数におけるデータ型エラーが修正されました。(CVE-2026-14678)  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
このエラーによりバッファの末尾を超えた読み取りを引き起こし、通常は不適切な分割判断の原因となっており、運が悪ければクラッシュに至る可能性もありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aa7b5815e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=849019a50">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1af08af69">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=24c88cd39">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7c82a88c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a74aa0854">&#167;</a></small></p>
<li>contrib/refintのプランキャッシュが削除されるようになりました。(CVE-2026-14671)  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
このキャッシュの挙動にはいくつかの深刻なバグがありました。特に、check_foreign_key()がカスケードUPDATEクエリに新しいキー値を埋め込んでしまうため、キャッシュされたプランでは、本来使用すべきキー値ではなく、最初に必要とされたキー値が再利用されてしまう問題がありました。最も簡単な解決策は、これを削除することです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=79a506228">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=66a5146dc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a572dd213">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b7b513d9a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5b72d0279">&#167;</a></small></p>
<li>並列GINインデックスの構築時に、テーブルのpg_class.reltuples値が正しく更新されるようになりました。  (Jan Nidzwetzki, Tomas Vondra) (18)</li>
<p>
並列ワーカーが処理した行数として初期化されていない値を報告する場合があり、その結果、reltuplesがInfinityやNaNといった不正な値になる可能性がありました。このような値が設定されると、その後のautovacuumやautoanalyze操作において、そのテーブルの処理が必要であると判断されなくなる可能性がありました。そうなると、この状態は自動的には解消されません。
</p>
<p>
reltuplesを正しい値にリセットするには、手動でANALYZEコマンドを実行するか、別のインデックスを作成する必要があります。  GINインデックスを持つテーブルがある場合は、reltuplesの値が妥当かどうかを確認することをお勧めします。以下のようなクエリが役立ちます。
</p>
<pre>
SELECT DISTINCT t.oid::regclass, t.reltuples
FROM pg_class t
  JOIN pg_index i ON t.oid = i.indrelid
  JOIN pg_class ic ON i.indexrelid = ic.oid
WHERE t.relhasindex AND ic.relam = 2742;
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5707d7517">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d4420a972">&#167;</a></small></p>
<li>非同期のAppendプランノードを再スキャンする際の、非同期読み取りの不適切な処理が修正されました。  (Alexander Korotkov, Gleb Kashkin, Etsuro Fujita) (18)(17)(16)(15)(14)</li>
<p>
上位のプランノードがAppendの出力をすべて読み取る前にAppendを再スキャンする場合、外部サーバー（例えばpostgres_fdwなど）に対して送信済の未完了リクエストをすべて破棄する必要があります。  サブプランのパラメータが変更された場合や、次回のスキャンでパーティションプルーニングによってサブプランが破棄される場合、この処理が正しく行われていませんでした。  その結果、クエリ結果が不正になったり、無限ループに陥ったり、アサート失敗が発生したりする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7d74b2644">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4ea497a92">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3704870b2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=894da35b3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7213cbfa0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cec48686a">&#167;</a></small></p>
<li>RANGEパーティションテーブルにおけるパーティションプルーニングの不具合が修正されました。  (David Rowley) (18)(17)(16)(15)(14)</li>
<p>
特定のケースにおいて、本来対象とすべきDEFAULTパーティションがスキップされ、その結果、クエリの結果から行が欠落して、誤った問い合わせ結果となる恐れがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9282a650">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=02e69be47">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=31f2acde5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9a0cd8e73">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5190732c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6098f35f4">&#167;</a></small></p>
<li>結果リレーションのプルーニング後に、ModifyTableプランノード内の外部データラッパーの状態を正しく更新するようになりました。  (Ayush Tiwari, Rafia Sabih) (18)</li>
<p>
以前は、実行時のパーティションプルーニングによって、対象のパーティションテーブルの一部のパーティションをスキャンする必要がないと判断された場合、そのテーブルに外部テーブルのパーティションが含まれていると、クラッシュや誤動作が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1ef917e3a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bba4e095d">&#167;</a></small></p>
<li>「BEFORE UPDATE」トリガーを持つテーブルに対して、「RETURNING OLD」を指定したUPDATE文で発生していた並行更新の処理漏れが修正されました。  (Dean Rasheed) (18)</li>
<p>
対象行が並行して更新された場合、「READ COMMITTED」分離レベルでは、RETURNING句で返される「OLD」値はすべて、更新後の行の値を反映している必要があります。しかし、トリガーが存在する場合、トリガー自体や最終的な出力行では正しい値が参照されていたにもかかわらず、古い値が返されてしまっていました。結果として、誤った問い合わせ結果が生じる可能性があります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7048e50f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4908225be">&#167;</a></small></p>
<li>複数の結合キーと多数のNULL値が存在する場合のハッシュ結合の性能問題が修正されました。  (David Rowley) (18)</li>
<p>
NULL値を持つタプルは他のどのタプルとも一致することはないため、ハッシュテーブルに挿入されるべきではありません。  これまでのコードでは、最後の結合列以外の列にNULL値が含まれる場合にこの処理が適切に行われていなかったため、NULL値を含む入力が多数あるとハッシュテーブルが著しく肥大化していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a71a348ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f70acc8a2">&#167;</a></small></p>
<li>RETURNING句の式における括弧で囲まれた「OLD」や「NEW」の解析処理が修正されました。  (Marko Grujic) (18)</li>
<p>
「(old).colname」や「(old).*」といった式が誤って処理され、実質的に「NEW」への参照に変換されていました。結果として、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9108fed3e">&#167;</a></small></p>
<li>value IN (array)式に対するプランナのNULL許容性および厳密性チェックが修正されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
これらのチェックは、配列オペランドが空でないことが既知である場合にのみ成功すべきですが、その点が考慮されておらず、本来適用されるべきではない最適化が適用されてしまう問題がありました。これにより、実際の配列が空であった場合、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9740c68ff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=277122036">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=26d6b7dc9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6fcee189b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=53470ffba">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=13b627a3e">&#167;</a></small></p>
<li>不適切な結合削除のロジックが修正されました。  (Matheus Alcantara, Richard Guo) (18)(17)(16)</li>
<p>
一部の特殊なケースにおいて、外部結合のNULL許容側由来の定数出力値が、本来NULLに置換されるべき場面でNULLに置換されない問題が発生し、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bc479627">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21f5e659e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cdcec567d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3e1fe25e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=72457f1df">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e40d07e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b308eb366">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d610d8e8b">&#167;</a></small></p>
<li>結合の削除処理において、PlaceHolderVarsのクリーンアップがより徹底されるようになりました。  (Richard Guo, Arne Roland) (18)</li>
<p>
この修正により、アサート失敗や誤った実行計画の生成（とそれに伴う誤った問い合わせ結果や予期せぬエラー）を招く可能性のあった様々なエッジケースが解消されます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e02526795">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aae47813a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18105e6db">&#167;</a></small></p>
<li>コンテナデータ型（配列、複合型、範囲型）の等価比較におけるハッシュ可能性に関する漏れていたチェックが追加されました。  (Andrei Lepikhov, Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
プランナは、ハッシュベースの実行計画を採用する前に、コンテナの構成要素の型のハッシュ化可能かどうかを検証する必要がありました。一部の箇所でこの手順が漏れていたため、実行時に「ERROR:  could not identify a hash function for type ...」という予期せぬエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=11aed8d19">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19152e3c2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf2bfe073">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=caebac5f1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=64778fac7">&#167;</a></small></p>
<li>プランナが、異なる等価性ルールを持つグループ化ステップより下位へ、WHERE句をプッシュダウンすることを避けるようになりました。  (Richard Guo) (18)</li>
<p>
非決定的照合順序でグループ化される列に対するテストは、その同じ照合順序を使用した比較である場合にのみ、安全にプッシュダウンできます。そうでない場合、グループ化によって統合されるはずだった行がフィルタリングされて、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=98d5d7ee6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe5d62951">&#167;</a></small></p>
<li>「EXCLUDE」句を指定している、または「ORDER BY」を指定していない、COUNTウィンドウ関数の誤った最適化が修正されました。  (Chengpeng Yan, David Rowley) (18)(17)(16)(15)</li>
<p>
これまで、このウィンドウ関数は該当しない場合でも単調増加するものとして扱われていました。そのため、誤った問い合わせ結果が生じる可能性がありました。
</p>
<pre>
（報告された誤動作例）
db1=# CREATE TABLE t41 (id int PRIMARY KEY, k int NOT NULL, v int);
db1=# INSERT INTO t41(id, k, v) VALUES
        (1, 1, 1), (2, 1, NULL), (3, 1, 1), (4, 2, 1);

db1=# SELECT id, count(v) OVER (
        ORDER BY k RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
        EXCLUDE CURRENT ROW) AS c FROM t41;
 id | c
----+---
  1 | 1
  2 | 2
  3 | 1
  4 | 2
(4 rows)

db1=# SELECT * FROM (
        SELECT id, count(v) OVER (
          ORDER BY k RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
          EXCLUDE CURRENT ROW) AS c FROM t41) s WHERE c &lt; 2;
 id | c
----+---
  1 | 1
(1 row)
→ 正しくは id=3 の行も出力されないといけない
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fcd58c6d9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf184ec77">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=be63b285e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a85732162">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=842e34efa">&#167;</a></small></p>
<li>プランナが"char"型の列の統計情報を参照する際に、予期せぬエラー「ERROR:  cache lookup failed for collation 0」が発生する障害が修正されました。  (Feng Wu) (18)</li>
<p>
"char"型は、一般的に使われるchar(n)型とは別の、主として内部的なシステムカタログで使用されるものです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fd1c3f28">&#167;</a></small></p>
<li>複数階層のパーティションが存在する場合でも、ALTER TABLEのALTER COLUMN ... DROP EXPRESSIONが正常に動作するよう修正されました。  (Alberto Piai) (18)(17)(16)(15)(14)</li>
<p>
ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSIONは、格納生成列を基本列に変換する構文です。複数階層の子パーティション／子テーブルを持つパーティションテーブルや継承ツリーの親テーブルに対して実行すると、「ERROR:  ALTER TABLE / DROP EXPRESSION must be applied to child tables too」というエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ce6e434ce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c374f2807">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18006c1bd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=34785a0d5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=785289de0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cad17745e">&#167;</a></small></p>
<li>排他制約であるインデックスのパーティションをアタッチする処理の不具合が修正されました。  (Japin Li) (18)(17)</li>
<p>
この誤りにより、排他制約を持つパーティションテーブルのダンプ/リストアが正常に動作しなくなっていました。
</p>
<p>
リストア時に以下のようなエラーが発生します。
</p>
<pre>
ERROR:  cannot attach index "..." as a partition of index "..."
DETAIL:  The index definitions do not match.
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2b2c2492c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19e3aa704">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d6c654c8">&#167;</a></small></p>
<li>ALTER CONSTRAINTを使用して、パーティションテーブルのNOT NULL制約にNO INHERITを設定することができないように修正されました。  (Andreas Karlsson) (18)</li>
<p>
本来、パーティションテーブルのNOT NULL制約は、すべてのパーティションに継承される仕様であるため、NO INHERITを指定することはできません。これまでは、この仕様は制約を新規作成する際には正しく適用されていましたが、「ALTER TABLE ... ALTER CONSTRAINT」では適用されておらず、NO NULL制約の有無がパーティションごとに異なるようにできました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41247cdf6">&#167;</a></small></p>
<li>ルールの名前を「_RETURN」に変更できないように修正されました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
「_RETURN」という名前は、ビューの「ON SELECT」ルール用に予約されています。これまでは「ON SELECT」以外のルールをALTER RULEで「_RETURN」に名前変更できてしまい、その後の処理で問題を引き起こしていました。
</p>
<p>
具体的には、ダンプ/リストアで「ERROR:  non-view rule for "..." must not be named "_RETURN"」というエラーを起こすことが報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80c7f5467">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7f7958ab">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e99fb3262">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a69503fb1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eada45dd8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b17a6e3c">&#167;</a></small></p>
<li>DROP OWNED BYにおいて、ロールメンバーシップへのロックの解放漏れが修正されました。  (Jeff Davis) (18)(17)(16)</li>
<p>
この不具合により、トランザクションが終了するまで、ロールメンバーシップ（pg_auth_membersシステムテーブルの対応するエントリであらわされる暗黙的なオブジェクト）へのロックが保持され続けていました。その結果、並行するDDL実行で警告メッセージが出ることがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9eccdae22">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a0daa0b41">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=25e54cec7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e61d44fde">&#167;</a></small></p>
<li>EXPLAINがSQL/JSONの集約関数をデパースするときに予期せぬエラーを出すことがあり、修正されました。  (Richard Guo) (18)(17)(16)</li>
<p>
実行プランの構造によっては、「ERROR:  invalid JsonConstructorExpr underlying node type」というエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eaa561fb6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=45364e496">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dcda1f07d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=485527190">&#167;</a></small></p>
<li>遅延一意性制約のインデックスに対してREINDEX CONCURRENTLYを使用した場合の不具合が修正されました。  (Nitin Motiani) (18)(17)(16)(15)(14)</li>
<p>
REINDEX CONCURRENTLYの実行中に一時的に作成されるインデックスのコピーが、誤って即時一意性制約として扱われていました。そのため、実際には制約違反ではない場合でも、制約違反が発生したと誤って報告することがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9f6fb1191">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4527519b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28269fed6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac222bea5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5b3712e31">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55adef7ab">&#167;</a></small></p>
<li>非決定論的照合順序でバックスラッシュ（\）を使用したLIKE句のマッチングの不具合が修正されました。  (Nitin Motiani, Tom Lane) (18)</li>
<p>
非決定論的照合順序において、LIKEがエスケープされたバックスラッシュ（\\）を誤って処理し、実質的にバックスラッシュが存在しないものとして扱っていました。
</p>
<p>
また、通常の文字の前にバックスラッシュが付いている場合も誤った処理をしていました。この場合、バックスラッシュは実質的に無視されるべきですが、実際には後続の通常の文字を完全一致として扱ってしまい、非決定論的照合順序にマッチするかを判断していませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=99775b388">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a99bd8d58">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=54d5947ef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51652c42d">&#167;</a></small></p>
<li>LIKE句や正規表現の完全一致パターンのインデックススキャン最適化の不具合が修正されました。  (Jelte Fennema-Nio) (18)</li>
<p>
非決定論的な照合順序におけるLIKEのリファクタリングによって、LIKE句や正規表現の完全一致パターンを、等価比較のインデックス条件に変換する最適化が誤って壊れていました。これはインデックスの照合順序と式の照合順序が一致しない場合に発生していました。この影響で、psql の「\d tablename」コマンドが大幅に遅くなっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=67cf73ddb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0bb49e61">&#167;</a></small></p>
<li>to_date() におけるローカライズされた月名、曜日名のマッチング処理が修正されました。  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
大文字・小文字の変換によって文字列のバイト長が変化する場合に、マッチング処理が誤動作していました。月名、曜日名が認識されずに予期せぬエラーが発生する可能性が考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55ea76426">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=011384ba4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8acfaa12a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b594efe52">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0de744cd5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=49a712f32">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5f003855e">&#167;</a></small></p>
<li>ギリシャ文字の語末形のシグマに対する大文字小文字の変換のルールが修正されました。  (Jeff Davis) (18)</li>
<p>
文字列の直前が大文字小文字を区別しない文字だけで構成されている場合、そのシグマを語末形のシグマとはみなさないようにしました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28d498e28">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=66ec24276">&#167;</a></small></p>
<li>ハングルU+11A7（TBASE）のNFC再合成における誤りが修正されました。  (Diego Frias, Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
この文字は有効なT音節として扱われていましたが、実際にはT音節ではないため、正規化処理中にこの文字が消えてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=273fe9485">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0c9cbbfb5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=82116023e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c391375ba">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bb935d61">&#167;</a></small></p>
<li>大文字小文字を区別しない類義語の辞書において、出力する語彙素が切り捨てられる不具合が修正されました。  (Jeff Davis) (18)(17)(16)(15)(14)</li>
<p>
小文字への変換によって語彙素のバイト長が増加した場合、出力時に元のバイト長に誤って切り捨てられていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=89e648498">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3805641cb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b32df590c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7e0e42a2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e0458172">&#167;</a></small></p>
<li>大文字小文字変換処理において、途中で途切れたUTF-8文字への対処が修正されました。  (Jeff Davis) (18)(17)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=05da336dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9021c8f3c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5e78ebca5">&#167;</a></small></p>
<li>hash_record_extended()のバグが修正されました。  (Man Zeng) (18)(17)(16)(15)(14)</li>
<p>
FunctionCallInvoke()に渡される2番目のisnull引数が初期化されていませんでした。既存の組み込み拡張ハッシュサポート関数では、この値を参照しないため問題はありません。しかし、拡張機能が提供するハッシュ関数が「PG_ARGISNULL(1)」を調べる場合、その影響を受ける可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3f13c032">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=203e238bb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8b5580a05">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=259b627d5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74d3482f4">&#167;</a></small></p>
<li>公開可能なテーブルが並行して削除された場合に、pg_get_publication_tables()が失敗する不具合が修正されました。  (Bharath Rupireddy) (18)(17)(16)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28c995948">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=73d63d1c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dcbc96685">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6c760f6b6">&#167;</a></small></p>
<li>VARIADIC NULL を指定した場合に、satisfies_hash_partition() がクラッシュする不具合が修正されました。  (Robert Haas) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2ddc45662">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0c06ebf12">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=52af6fef4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6de480156">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d39b9eed0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0115650de">&#167;</a></small></p>
<li>tsvector_filter() および関連する関数で、不正な重みに関するエラーを、より明確かつ一貫した形で報告するよう修正されました。  (Ewan Young) (18)(17)(16)(15)(14)</li>
<p>
具体的には、表示可能なASCII文字ではない重み文字については、charout()と同様に8進数形式（"\nnn"）で報告します。これにより、無効なエンコーディングを含むエラーメッセージが生成されるのを防ぎます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c5194139c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0626fbfeb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed5ca5828">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3a86eb6d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=262cc4df2">&#167;</a></small></p>
<li>uundv7()関数で範囲外のタイムスタンプとなるシフト値を拒絶するようになりました。  (Baji Shaik) (18)</li>
<p>
v7 UUIDで表現可能な範囲を超えたタイムスタンプになるシフト値は「ERROR:  timestamp out of range for UUID version 7」というエラーを出すようになります。有効なタイムスタンプ範囲は、1970-01-01 00:00から10889年くらいまでです。これまでは壊れたUUID値が作られていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a933deaa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c31b0fca0">&#167;</a></small></p>
<li>xpath()関数でnamestapeノードの処理が修正されました。  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
予期せぬ「ERROR:  could not copy node」エラーが出ていたものが修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c777d6dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6c08cbb7a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=174076601">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d8c72b2e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41876c8d7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0d145be2c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=940916549">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fac26fd41">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9618e790c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a17f39aa2">&#167;</a></small></p>
<li>jsonpathの「.decimal」メソッドが、精度やスケールの指定が正しくない場合でもERRORを出さないように、修正されました。  (Ewan Young) (18)(17)</li>
<p>
サイレントモード（json_path_*関数のsilent引数がtrue）では、エラーを抑止すべきですが、そのようになっていませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5bbc9b300">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=84001a04d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab35b8d25">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=90789900b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c768637d6">&#167;</a></small></p>
<li>「IS JSON」や「JSON()」等の構文が、text型へのキャストを持たない文字列型の引数を与えられたときの、NULLポインタによるクラッシュが修正されました。  (Ayush Tiwari) (18)(17)(16)</li>
<p>
PostgreSQL本体コードには該当するデータ型はありませんが、一部の拡張のデータ型で問題を引き起こす可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=35d9a6263">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0acd2535">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60abb3c73">&#167;</a></small></p>
<li>「SQL/JSON」の「ON EMPTY / ON ERROR DEFAULT」の値に正しい型修飾が確実に適用されるようになりました。  (Ewan Young) (18)(17)</li>
<p>
例えば、対象numeric型列の宣言された精度とスケールがデフォルト値に適用されませんでした。
</p>
<pre>
（誤動作例）
db1=# SELECT JSON_VALUE(jsonb '{"b":"1234.5"}', '$.a' 
        RETURNING numeric(4,1) DEFAULT 99999.9 ON EMPTY);
 json_value
------------
    99999.9
(1 row)

（以下エラーが出るのが正しい動作）
ERROR:  numeric field overflow
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d30bfcbdd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=441e4c8d6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71cd10cd2">&#167;</a></small></p>
<li>money型の最小値（64bit整数最小値）を-1で割ったときの、マシン依存の振る舞いが回避されました。  (Andrey Rachitskiy) (18)(17)(16)(15)(14)</li>
<p>
x86_64アーキテクチャでエラーになるものが、aarch64アーキテクチャではエラーになりませんでした。オーバーフローを起こした場合には必ず「ERROR:  money out of range」が出るようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7746f7492">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6298a41b4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1416f304d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86f42357c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d782c97e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fec40878c">&#167;</a></small></p>
<li>全文検索の辞書に対するキャッシュエントリの作成途中でメモリ不足が生じた後にクラッシュする障害が修正されました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=df8407d7d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=81b1e7916">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=634a8dcb8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=83336e3ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=025228104">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dda622edc">&#167;</a></small></p>
<li>誤ったispell/hunspell辞書ファイルに対する処理でメモリ安全性に問題があり、修正されました。  (Andrey Rachitskiy) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3fe4062cc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4689ea9ce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fdea3aa3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=444038bb7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0fb88979b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cfc720ef4">&#167;</a></small></p>
<li>他セッションの一時テーブルへのアクセスが防止されました。  (Jim Jones, Daniil Davydov, Alexander Korotkov) (18)(17)(16)</li>
<p>
基本的にそのようなアクセスは禁止されていますが、一部のコードパスで防止しきれておらず、干渉されたセッションで誤った問合せ結果が生じるおそれがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b0dd0815">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4dfae59a1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8021cdceb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3aaefe892">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e49f68b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cc3fe7e2a">&#167;</a></small></p>
<li>一時テーブルにアクセスするときの「ERROR: no empty local buffer available」エラーが防止されました。  (Melanie Plageman) (18)</li>
<p>
本修正でストリーミング読み取りの仕組みが使用可能なローカルバッファの数が制限されました。これまでは、effective_io_concurrency設定が大きな値の場合に単一のストリームで全バッファを利用可能であったため、本エラーが発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed8050370">&#167;</a></small></p>
<li>autovacuumがデータベースを処理する順番が修正されました。  (Rustam Khamidullin) (18)(17)</li>
<p>
最高スコアから最低スコアに向かう順で処理されるべきところで、意図せず逆順になっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3331578b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4cc49cb70">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=288d4e83f">&#167;</a></small></p>
<li>VACUUMのXID周回フェールセーフモードで、共有バッファプールを全使用するように動作が復旧されました。  (Melanie Plageman) (18)</li>
<p>
通常のVACUUMは、他の処理に大きな影響を与えないように、共有バッファを少しだけ使うように制限されています。しかしながら、フェールセーフモードではできるだけ早くトランザクションIDを回収する必要があるので、この制限は放棄されることになっていました。この振る舞いがv18のリファクタリングで壊れていて、復旧されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fd90c3221">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=585181e07">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55d01a10f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c25cdb1e">&#167;</a></small></p>
<li>パラレルVACUUMワーカーの処理でのメモリリークが修正されました。  (Baji Shaik) (18)(17)</li>
<p>
パラレルワーカーからの報告過程で報告ごとに1kB程度のリークがあり、これはワーカープロセスが生きている間は蓄積されていきました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4154a1482">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8ad414831">&#167;</a></small></p>
<li>問合せのキャンセルとVACUUM遅延が、GINインデックスのポスティングツリーのクリーンアップ中であっても、すぐに行なわれるようになりました。  (Paul Kim, Alexander Korotkov) (18)(17)(16)(15)(14)</li>
<p>
よくある値に対するポスティングツリーは大きくなることがあり、ここに割り込みの検査が欠けていたため、処理が長く継続してしまいました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=70dad584e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7becb647d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba5e46329">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=006ac761e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7123abab7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=15fd7a3e2">&#167;</a></small></p>
<li>GiSTおよびSP-GiSTのインデックスに対するIndex Only Scanで、インデックスタプルのデコーディングを誤る可能性があり、修正されました。  (Peter Geoghegan) (18)(17)(16)(15)(14)</li>
<p>
この障害で壊れたデータが出力されて、誤った問い合わせ結果や予期せぬエラーが発生する可能性がありました。本体コードで影響があるのは、GiSTの演算子クラスrange_opsのみで、その範囲列が最初のインデックス列でない場合にのみ、誤動作が発生します。
</p>
<pre>
（誤動作例）
db1=# CREATE TABLE t75 (a inet, r numrange);
db1=# INSERT INTO t75 VALUES 
      ('::1', numrange(repeat('1', 100)::numeric, repeat('2', 200)::numeric)));
db1=# CREATE INDEX ON t75 USING gist (a inet_ops, r range_ops);
db1=# VACUUM ANALYZE t75;
db1=# SET enable_seqscan TO off;
db1=# SELECT lower(r) = repeat('1', 100)::numeric,
             upper(r) = repeat('2', 200)::numeric FROM t75;
ERROR:  type with OID 860 does not exist
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d4c81ad6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=959b7fa2c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=355faed5a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e58192546">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=126141425">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4ad22eb0">&#167;</a></small></p>
<li>バルク拡張されたテーブルの新たな最終ブロックがフリースペースマップに即座に追加されるようになりました。  (Jingtang Zhang) (18)(17)(16)</li>
<p>
off-by-one（1つ足りない）誤りで、複数ブロックが追加されたときの最後のブロックがフリースペースマップに登録されませんでした。VACUUMによってやがては正しく登録されますが、それまでの間、最終ブロックが使われませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7a103928a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eabc9a9dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=768ae083e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0fd5595aa">&#167;</a></small></p>
<li>トランザクションのアボート時のリソース解放処理で、メモリの二重解放（クラッシュをひきおこします）、または、エラーの再帰的な無限ループが起きる可能性があり、修正されました。  (Tom Lane) (18)(17)</li>
<p>
巨大な入力値を伴うSQLがエラーになって、トランザクションアボートが行なわれたケースで問題が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac6a58a70">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=011eedcdc">&#167;</a></small></p>
<li>PostgreSQLの処理内でディレクトリを作成するとき、同じディレクトリの同時作成を許容するようになりました。  (Andrew Dunstan, Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
他プロセスが同じディレクトリを作っているのであれば、ディレクトリ作成に成功した扱いとすることで、これまで同時実行で発生する可能性のあった「ERROR:  could not create directory "...": File exists」といったエラーを回避できます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aa80c34c8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f0a831ef3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9951e3d38">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4647ac142">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4b3bc6b71">&#167;</a></small></p>
<li>JITコンパイルされたタプルデフォームを行うコードが、仮想生成列を正しく考慮するように修正されました。  (David Rowley) (18)</li>
<p>
NOT NULL制約のある仮想生成列を含むテーブルへの問合せで、誤った問い合わせ結果が生じる例が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e9692de1d">&#167;</a></small></p>
<li>依存されている全てのオブジェクトに共有ロックを取得することにより、宙に浮いたオブジェクト依存関係の生成が防止されました。  (Bertrand Drouvot) (18)(17)(16)(15)(14)</li>
<p>
共有ロックは依存されているオブジェクトの削除と衝突しますので、これまであった競合状態を排除することができます。
</p>
<p>
例えば、これまでは、空スキーマの削除とスキーマ内へのオブジェクト作成の同時実行が両方成功して、無効なオブジェクト定義が残ることがありましたが、これからはどちらかのトランザクションが失敗します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c8cd3d697">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3a9909eda">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9bc0d96c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fa137727">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5100bdbd3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9d5a52da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c1588f92a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d44cd4674">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ef3d7b15e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=36b6ed260">&#167;</a></small></p>
<li>SERIALIZABLE分離モードに対する衝突の検出での競合状態が修正されました。  (Peter Geoghegan) (18)(17)(16)(15)(14)</li>
<p>
初期の空のbtreeインデックスを検査するときに衝突が見過ごされる可能性があり、競合しているトランザクションのコミットを許してしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2aa3c6d1f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d560e730e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8434c9385">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e321faaae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5d18105ca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2fc3e1b44">&#167;</a></small></p>
<li>バリアイベントの処理で競合状態が修正されました。  (Masahiko Sawada) (18)(17)(16)(15)</li>
<p>
この誤りにより、プロセスがハングアップする可能性がありました。典型的には、その際に以下ログメッセージが出力されます。待機イベントとしてはIPC型のProcSignalBarrierの待機となります。
</p>
<pre>
LOG:  still waiting for backend with PID %d to accept ProcSignalBarrier
</pre>
<p>
近年追加されたオンラインWALレベル変更などの機能によって、この問題がより目立つようになっています。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1a9b1cc18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a651b8a89">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cdb9b2830">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=159324a73">&#167;</a></small></p>
<li>同じロックグループに属するプロセス集合が同時に終了したときの競合状態が修正されました。  (Vlad Lesin) (18)(17)(16)(15)(14)</li>
<p>
この誤りは「PANIC:  latch already owned by PID ..」によるサービスのPANIC終了を引き起こす可能性があります。PostgreSQL本体の通常のパラレル問合せでは、リーダープロセスがワーカープロセスの終了を待たずに終了することが無いため、この問題は起きませんが、何らかの拡張で該当する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ae08eb168">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d489c4439">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=65d04df60">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d5cc6df60">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8007d1185">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c9b8b42">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e14b4ea4a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e8edf53f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e786fb5aa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=db4d12fc9">&#167;</a></small></p>
<li>テーブルのビジビリティマップ(VM)でビットをクリアする操作のWAL出力が修正されました。  (Melanie Plageman, Andres Freund) (18)(17)</li>
<p>
このようなVM変更がWALサマライズ処理で見落とされていて、誤ったインクリメンタルバックアップをもたらす可能性がありました。また、このようなVMページの必要時のフルページイメージWAL出力も行なわれておらず、壊れたページ書き込みが修正されないままとなる可能性がありました。これは後にIndex Only Scanでの誤った問い合わせ結果が生じるなどの、誤動作を引き起こすおそれがあります。
</p>
<p>
既存のバックアップやアーカイブWALに潜在的にデータ破損が含まれていることに留意してください。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=56bf5fa5d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0fb1da21">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7edec8b57">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b01c31eef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f581fa729">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c0d9864f5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9171f77db">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d7feebfb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=067213430">&#167;</a></small></p>
<li>WALサマライズ処理でのタイムライン変更時のハングアップが防止されました。  (Robert Haas) (18)(17)</li>
<p>
スタンバイサーバで、以下のログメッセージがwalsummarizerプロセスから継続的に出力される動作が報告されました。
</p>
<pre>
ERROR:  could not read WAL from timeline .. at ...: invalid record length ...
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dfb96277d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18f0de6b8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=499d9eabb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bdcea66f0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d299d6ab">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d28cdf46e">&#167;</a></small></p>
<li>スタンバイ昇格のときのロジカルデコーディングのタイムライン選択で、競合状態が修正されました。  (Bertrand Drouvot) (18)(17)(16)</li>
<p>
スタンバイ側で実行中のロジカルデコーディングが「ERROR:  requested WAL segment has already been removed」で失敗する可能性がありました。再試行すれば成功するため恒久的な問題はありませんが、可用性としては有害でした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b4bd13850">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=16b89ff04">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cd687c44">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a04624da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4bff3aa51">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab5334d8b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9b49e5b4">&#167;</a></small></p>
<li>タイムラインを切替するときのwalreceiverの接続文字列の露出が回避されました。  (Chao Li) (18)(17)(16)(15)(14)</li>
<p>
pg_stat_wal_receiverビューは機微なデータを除いてサニタイズされた接続文字列を見せるべきです。しかし、タイムライン切替に際して既存のwalreceiverプロセスを再利用するときに、一時的に完全な接続文字列を見せてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b903d1792">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c89499a79">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e037a4199">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=065cbfb88">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e18b77153">&#167;</a></small></p>
<li>ロジカルレプリケーションで受け取ったタプルの列数が正しいかの検証を、アサートではなく実行時チェックで行うようになりました。  (Varik Matevosyan) (18)(17)(16)(15)(14)</li>
<p>
悪意の、または、壊れたパブリッシャは一貫性のない列数を送出するかもしれません。これによる深刻な悪影響をおよぼすシナリオは見つからなかったものの、より注意を払うべきと判断されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dc3db3a83">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=15f4e3d0c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=59759e1a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=871d4f5b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=510a05f07">&#167;</a></small></p>
<li>レプリケーションコマンド内の文字列パラメータへのクォート付加について、実装がクリーンアップされました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
レプリケーションコマンドを生成する様々な個所で、コマンドに挿入されるレプリケーションスロット名や他のパラメータのクォート付加について、十分な注意が払われていませんでした。そのため、レプリケーションコマンドで予期せぬエラーが発生するおそれがありました。
</p>
<p>
原理的には作りこまれたレプリケーションスロット名でSQLインジェクションも可能でした。ただし、ほとんどの場合、元からSQL実行が可能な管理者が行う操作であるため、実用的な害はないと考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=abb582555">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=14810cc0d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=26d6c19d0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=819e5b964">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a00840e8">&#167;</a></small></p>
<li>空のプリペアドトランザクションのロジカルデコーディングについて修正されました。  (Masahiko Sawada) (18)(17)(16)(15)(14)</li>
<p>
デコード可能な変更を起こさないプリペアドトランザクションは、先立つ「PREPARE」無しに、「COMMIT PREPARED」や「ROLLBACK PREPARED」を出力プラグインに送出していました。組み込みのサブスクライバでは、これはレプリケーションを壊します。他のプラグインでも同様に問題となると考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2289e65e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b563fc6bd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c4519c71">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=744618346">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0dbfb8520">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c2d34db0a">&#167;</a></small></p>
<li>スタンバイ昇格後のUNLOGGEDシーケンスのデータ破損が修正されました。  (Fujii Masao) (18)(17)(16)(15)</li>
<p>
これまでは、プライマリで作られてスタンバイにレプリケートされたUNLOGGEDシーケンスに、スタンバイ昇格後にアクセスすると、「ERROR:  bad magic number in sequence」などのエラーや、アサート失敗が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=22af34b98">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=627605713">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1ed6a9a0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=913d3b610">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d2980067b">&#167;</a></small></p>
<li>カスケードスタンバイでのWALアーカイブによるリカバリからストリーミングに復帰するときの再接続失敗が、修正されました。  (Marco Nenciarini) (18)(17)(16)(15)(14)</li>
<p>
このとき「ERROR:  requested starting point ... is ahead of the WAL flush position」が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bef46aed3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=331016322">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2cf28d1b9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5dbeb69bc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f64cc83f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fb3c6389">&#167;</a></small></p>
<li>WALリプレイが一貫性のあるデータベース状態に達する前にホットスタンバイ接続を受け付ける動作が防止されました。  (Nikhil Sontakke) (18)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7673dfe77">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=311e66df9">&#167;</a></small></p>
<li>スタンバイサーバで、ローカルにpg_database.dathasloginevtのクリアを試みないようになりました。  (Ayush Tiwari) (18)(17)</li>
<p>
スタンバイで実行が試みられていましたが、これは機能しておらず、また、プライマリでの変化がすぐに反映されて上書きされるので不要な動作でした。
</p>
<p>
loginのイベントトリガを削除した後にスタンバイに接続したときに、「FATAL:  cannot acquire lock mode AccessExclusiveLock on database objects while recovery is in progress」が出て接続できない動作が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=97b5c5aaa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4a375527a">&#167;</a></small></p>
<li>使われなくなったレプリケーションスロットを削除するときの競合状態が回避されました。  (Xuneng Zhou) (18)(17)</li>
<p>
削除直後のスロットの共有メモリエントリを他セッションが再利用した場合、誤ったロック解放と誤ったログメッセージ（異なるスロット名やデータベースOIDが使われる）が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08458bcae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ea834d747">&#167;</a></small></p>
<li>一時的なレプリケーションスロット（初期化途中の論理レプリケーションスロット）を削除するときの競合状態が回避されました。  (Zhijie Hou) (18)(17)(16)(15)(14)</li>
<p>
これまでの実装では、スロットを解放した後にスロットの共有メモリエントリにいくらか追加的な更新を実行していました。これは他セッションが直ちに再利用するかもしれないため、安全ではありません。本修正で、一時スロットには、この更新を行なわないようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f833c9207">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=080d61f07">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51e79222c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4eb59d40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=968c50845">&#167;</a></small></p>
<li>ロジカルレプリケーションのテーブル初期同期で、進捗報告が古い内容となっていた問題が修正されました。  (Shinya Kato) (18)(17)(16)(15)(14)</li>
<p>
これまでは、サブスクライバのpg_stat_progress_copyビューは、データコピーが終わった後でも、初期COPY操作をアクティブとして表示していました。同期がパブリッシャに追いつくまで、古いエントリが表示されたままでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9cd9b4d7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f2acab534">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d140237da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b5f7e7569">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e3c4e3746">&#167;</a></small></p>
<li>バックアップに失敗したなら、ベースバックアップの進捗がクリアされるようになりました。  (Chao Li) (18)(17)(16)(15)</li>
<p>
これまで、pg_stat_progress_basebackupビューは、レプリケーションクライアントが切断するまで、古い進捗情報を表示し続けていました。標準付属のpg_basebackupであれば、失敗した後に即座に切断しますが、他のバックアップを取得するクライアントはそうであるとは限りません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b70000837">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e7564ee8c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2ea6bfed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7cbd80340">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf7530cf7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2ad214dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a240e8cd2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fffa4d870">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a8fb98b7b">&#167;</a></small></p>
<li>設定track_functionsが有効であるとき、実行時統計情報(pgstats)のエントリの同時削除のためにPANICが生じる可能性があり、修正されました。  (Sami Imseih, Michael Paquier) (18)(17)(16)(15)</li>
<p>
「PANIC:  cannot abort transaction .., it was already committed」が出るケースが報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5cc59834b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2e0c61aed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf4616b59">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e9e62193">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a4f389dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39e649d44">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c457ea15">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=75aca8b93">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe464e9e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=afb076b29">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e34b1ff5d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e4771825">&#167;</a></small></p>
<li>対応する共有ハッシュテーブルのエントリに対するメモリ領域取得に失敗した後、壊れた実行時統計情報(pgstats)のローカルエントリをクリーンアップするようになりました。  (Niall Newman) (18)(17)(16)(15)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=89fc6a7c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2fd8d45ec">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc9283b21">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=636bcd6a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=10e20e59e">&#167;</a>これを行なっていなかったため、次にローカルエントリが使われたときに、NULLポインタ参照によるクラッシュが発生しました。
</p>
<p></small></p>
<li>読み込みや書き込みの失敗後に誤ったI/O操作統計が記録されないように、修正されました。  (Bertrand Drouvot) (18)</li>
<p>
各種のWAL読み書きに処理に失敗したときにエラーを意味する負の値がそのまま統計値のカウントに使われていて、pg_stat_ioビューなどで参照されるWALのI/O統計に誤った値が混入する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=13f940b4b">&#167;</a></small></p>
<li>PL/Perlで、不正なPostgreSQL::InServer::ARRAYオブジェクトを扱うときのNULLポインタ参照によるクラッシュが回避されるようになりました。  (Xing Guo) (18)(17)(16)(15)(14)</li>
<p>
PostgreSQL::InServer::ARRAYはPL/Perl関数に引数でPostgreSQLの配列を渡すときに使われるperlのオブジェクト型です。PL/Perl関数からPostgreSQLの配列を返すときにも使用できます。検査が不足していて、引数に由来せず適切な内部構造を持たないPostgreSQL::InServer::ARRAYオブジェクトを返すとクラッシュを引き起こせました。
</p>
<pre>
（クラッシュ発生例）
=# CREATE FUNCTION f102() RETURNS integer[] AS $$
     return bless {}, "PostgreSQL::InServer::ARRAY"; $$ LANGUAGE plperl;
=# SELECT f102();
server closed the connection unexpectedly
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e430ecc59">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d424d06ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3854f4afc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9b2a6ccc4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e520ad34b">&#167;</a></small></p>
<li>PL/Pythonで、Pythonのシーケンスオブジェクトとマッピングオブジェクトを扱うときにエラーを正しく検査するようになりました。  (Richard Guo) (18)(17)(16)(15)(14)</li>
<p>
hstore_plpython拡張やjsonb_plpython拡張を使って、PL/Python関数の戻り値をhsotre型やjsonb型に変換している場合に該当する問題です。これまでは、壊れたオブジェクトやハンドルされない例外によって、NULLポインタ参照によるクラッシュが発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=53482fcb9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3dc59c173">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e92f23bde">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12bff46ff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b7719f74">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=309dc4526">&#167;</a></small></p>
<li>libpqで、pqReadData()の実行中にSSLまたはGSSの復号バッファに残っている未処理バイトを常にすべて取り出すようになりました。  (Jacob Champion) (18)(17)(16)(15)(14)</li>
<p>
例外的なケースですが、大きなメッセージのサーバからの届き方によっては、バッファがいっぱいになることでlibpqがソケット到着を誤って待ち続けて、APIを呼び出すクライアントアプリケーションがハングアップしてしまう可能性がありました。
</p>
<p>
pqReadData()はサーバ側からデータを読むlibpqの内部実装関数です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eeb2940ae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2167302b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c162810a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d3f329656">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4ecba7fa3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b018b5d1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f8745543">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb0a54518">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=177a2a2e3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=477bc27a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=05908afcd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d3888c90a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=536512f34">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=27761c015">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0958c3ea4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6243ea6c3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21a6c69ea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f5f569713">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9eb70c9c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=87c3a79ea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bab0a2db7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=56988064b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5ba13f8c0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7532f2117">&#167;</a></small></p>
<li>libpqのメモリ不足状態の処理が改善されました。  (Anthonin Bonnefoy) (18)</li>
<p>
COPYデータ読み込みや関数呼び出しの途中に、非同期メッセージ処理でメモリ不足になった場合にも、直ちにエラーを出すようになりました。これまでは、セッション切断された状態で処理が継続されていて、エラー発生が遅れたり、不適切なエラーが出る可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8380013cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6b46a5d1b">&#167;</a></small></p>
<li>libpqのトレース機能が、新しい形式のBackendKeyDataメッセージとCancelRequestメッセージを正しく出力するようになりました。  (Anthonin Bonnefoy) (18)</li>
<p>
これらのプロトコルメッセージは固定長から可変長に仕様変更されましたが、トレース機能では固定長を想定したままとなっていたため、「mismatched message length」という警告が出力されていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0766bc57e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dd5eca055">&#167;</a></small></p>
<li>libpqが30000バイトを超えるParameterDescriptionメッセージを受け付けられるようになりました。  (Ning Sun) (18)(17)(16)(15)(14)</li>
<p>
libpqは受信メッセージの妥当性検査として、「長くなりうるメッセージ型」以外について長すぎるメッセージを弾きます。ParameterDescriptionは「長くなりうるメッセージ型」として扱われていなかったため、メッセージ長が30000バイトを超えるとエラーになっていました。この制限により、7498個を超えるパラメータを持つプリペアドステートメントに対するPQdescribePrepared()が失敗していました。この数のパラメータはまれな用法ですが仕様の範囲内です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b1ab4bc52">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4183c667">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8d516d2b9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0f63b74a4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b79c8d1a">&#167;</a></small></p>
<li>ecpgコンパイラのNULLポインタ参照によるクラッシュが修正されました。  (Jehan-Guillaume de Rorthais) (18)</li>
<p>
構造体の内側に入れ子になった共用体を含むDECLAREセクションをもつ.pgcコードを変換しようとすると、ecpgコマンド実行がクラッシュしました。
</p>
<pre>
（ecpgコマンドがクラッシュするコード例）
EXEC SQL BEGIN DECLARE SECTION;
    struct s1
    {
        char STR1[10];
        union u1
        {
             int NUM1;
             int NUM2;
        } U1;
    } S1;
EXEC SQL END DECLARE SECTION;
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=917fdbc63">&#167;</a></small></p>
<li>ecpgのGET DESCRIPTOR文とSET DESCRIPTOR文で、記述子ヘッダ項目を複数指定する構文が拒否されるようになりました。  (Masashi Kamura) (18)(17)(16)(15)(14)</li>
<p>
これまでも文法上はこの構文が許されていましたが、実装は実際には複数のヘッダ項目に対応できておらず、指定すると壊れたCコードが生成されていました。
</p>
<p>
本修正で構文解析処理でもドキュメント上でもヘッダ項目は1つだけに変更されました。これは非互換性を含む変更です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=081434b0f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe8c0a762">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d4b73cfd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bfeddcf09">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e8fd9f7a">&#167;</a></small></p>
<li>psqlのパイプラインモードにおける遅延エラーの問題が修正されました。  (Michael Paquier) (18)</li>
<p>
Syncメッセージへの応答としてサーバがエラーを報告する場面（遅延制約の違反など）で、psqlがハングアップしたり、アサート失敗したりする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e9bc4074">&#167;</a></small></p>
<li>psqlの拡張表示（expanded）の整形出力で、行の幅が揃うようになりました。  (Pavel Stehule) (18)(17)(16)(15)(14)</li>
<p>
テーブルのデータ行がレコードヘッダ行より狭い場合、データ行の幅がレコードヘッダ行に合わせられず、次のように桁のずれた出力になっていました。
</p>
<pre>
（ずれた出力の例）

+-[ RECORD 1 ]-+
| a | 10 |
| b | 20 |
+---+----+

（修正後の出力例）

+-[ RECORD 1 ]-+
| a | 10       |
| b | 20       |
+---+----------+
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=07a6c262b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=efd885d05">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1edbe6695">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=022ba5c61">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4ca91ea1">&#167;</a></small></p>
<li>psqlの特別変数WATCH_INTERVALについて、既定の上限が強制されるようになりました。  (Sven Klemm, Daniel Gustafsson) (18)</li>
<p>
大きすぎる値(1000000超)を設定しようとすると、psqlはエラーを報告するものの、その値を適用してしまっていました。修正後は、上限を超える値は拒否され、変数の値は変更されません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e0c641ebb">&#167;</a></small></p>
<li>psqlの「\l+」でデータベースサイズを表示する権限検査が修正されました。  (Christoph Berg) (18)(17)(16)(15)(14)</li>
<p>
サーバ側のpg_database_size()は、pg_read_all_statsロールの権限を持つ利用者に対して、対象データベースへのCONNECT権限がなくてもすべてのデータベースのサイズの参照を許します。しかしpsqlはこの仕組みを考慮せず、CONNECT権限を持つ利用者以外に対してはこの関数を呼び出していませんでした。
</p>
<p>
修正後は、「\l+」の権限検査にpg_read_all_statsロールの権限（USAGE）の確認が加わり、pg_database_size()の権限規則と一致するようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=77aeca802">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f2d6cf880">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41949c6f3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=844bc718a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e6e8a3078">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e19081da">&#167;</a></small></p>
<li>psqlの「\df」のタブ補完で、プロシージャも候補に含めるようになりました。  (Erik Wienhold) (18)(17)(16)(15)(14)</li>
<p>
「\df」コマンド自体はプロシージャも表示対象に含めるよう拡張されていましたが、タブ補完の候補は関数だけを表示し続けていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=558e0de6d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=598af79b1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=355a4fcf9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9afdb6d1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c25737c89">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2d44bb900">&#167;</a></small></p>
<li>pgbenchのスレッド安全性のバグが修正されました。  (Fujii Masao) (18)(17)(16)(15)</li>
<p>
pgbenchを複数スレッドで実行し、かつ「--verbose-errors」オプションを指定した場合、異なるスレッドが同じバッファを使ってエラーメッセージを組み立てようとし、ログ出力が壊れる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=98dd6c204">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=52b3e7001">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6432a4cd6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f18fcd9a4">&#167;</a></small></p>
<li>pg_combinebackupで、コピー元ファイルが想定より小さい場合に無限ループが発生することがあり、防止されました。  (Peter Eisentraut) (18)(17)</li>
<p>
「--copy-file-range」を指定して合成フルバックアップを再構築する過程で、ファイルが0バイトしかコピーできなかった場合をエラーとしていなかったため、試行が繰り返されてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d36b72894">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=090ce6934">&#167;</a></small></p>
<li>pg_createsubscriberで、エラー発生後にパブリッシャ側オブジェクトのクリーンアップが行なわれない場合があり、修正されました。  (Nisha Moond) (18)(17)</li>
<p>
pg_createsubscriberは、論理レプリケーションオブジェクトを作成した後にエラーを起こした場合、パブリッシャ上に作成したパブリケーションとレプリケーションスロットを削除する必要があります。一部のエラーケースでは削除が行われず、pg_createsubscriberの再実行のために手動での削除が必要でした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=196b4b5ae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c03784a21">&#167;</a></small></p>
<li>pg_recvlogicalの出力ファイルが、ソースクラスタのグループ読み取り権限に従って作成されるようになりました。  (Fujii Masao) (18)(17)(16)(15)(14)</li>
<p>
pg_recvlogicalはこの挙動についてドキュメントに記載されていたにもかかわらず、実際にはソースクラスタのグループ読み取り権限を反映した書き出しが行なわれず、常にファイル所有者の読み書きのみを許すモードが使われていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=89b4b3ae3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ddd12d1a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9590dcfca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba9833a75">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5552a15a3">&#167;</a></small></p>
<li>pg_restoreの「--statistics」および「--statistics-only」オプションの一貫しない挙動が修正されました。  (Chao Li, Michael Paquier) (18)</li>
<p>
「--schema」「--table」などの選択的リストアオプションと組み合わせた場合に意図通りの要素がリストアされませんでした。pg_dumpで対象選択オプションを組み合わせた場合と同様に動作するように修正されました。
</p>
<pre>
（誤動作例）
$ psql -d db1 &lt;&lt;EOS
CREATE TABLE t119 AS SELECT g id, g % 5 n FROM generate_series(1, 20) g;
CREATE STATISTICS s119 ON id, n FROM t119;
ANALYZE;
EOS

$ pg_dump --statistics -Fc db1 -f db1.dmp
（プランナ統計情報を含むダンプファイルを作る）

$ pg_restore --table t119 --statistics-only -f - db1.dmp
（→「t119テーブルの統計情報のみをリストア」の意図だが、リストア内容が空になる）

$ pg_restore --statistics --table t119 -f - db1.dmp
（→「統計情報を含めてt119テーブルをリストア」の意図だが、拡張統計情報が欠損する）
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42ffdedcf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=477efef08">&#167;</a></small></p>
<li>vacuumdbの「--missing-stats-only」が、パーティションテーブルに対する式インデックスを処理対象から除外するようになりました。  (Baji Shaik) (18)</li>
<p>
これまで、本オプションのvacuumdb実行では、パーティションテーブルに式インデックスがあると、常にそのパーティションテーブルにANALYZEを実行しようとしていました。しかし、統計情報は子パーティションのインデックスに作成されても、パーティションテーブルのインデックスには作成されないため、意味がありませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7e085aabd">&#167;</a></small></p>
<li>contrib/amcheckで、btreeインデックスのメタページの「allequalimage」フラグの破損が報告されない問題が修正されました。  (Chao Li) (18)</li>
<p>
btreeインデックスを検査する関数は、これまでインデックスキー列のいずれかにinterval_ops演算子クラスを含む場合のみ正しく動作していて、そうでないインデックスでこの破損が見逃される可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c32bbc8">&#167;</a></small></p>
<li>contrib/amcheckの GINインデックス検証関数でメモリリークが修正されました。問い合わせが終わるまで未開放メモリが蓄積します。  (Kirill Reshke) (18)</li>
<p>
大きなGINインデックスの検証でメモリ使用量が増大するおそれがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80cfd8aef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f8ab91c1">&#167;</a></small></p>
<li>contrib/amcheckで、ショートヘッダのvarlenaデータムが正しく扱われるように修正されました。  (Andrey Borodin) (18)(17)(16)(15)(14)</li>
<p>
この誤りで、btreeインデックス検証で無駄な処理が生じる可能性がありますが、それ以上の悪影響は無いと考えられます。
</p>
<p>
varlenaデータムとはPostgreSQL実装内で使われる長さとデータ本体からなるデータ構造です。ショートヘッダは長さをあらわすのに1バイトだけ使う形式です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=897e79486">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8abb8a155">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c89a1ca01">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4284476c0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=af09b18cb">&#167;</a></small></p>
<li>contrib/btree_gistで、float4とfloat8の演算子クラスにおける「NaN」の扱いが修正されました。  (Bill Kim, Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
各種の比較関数と、GiSTのpenalty関数、distance関数が「NaN」を考慮しておらず、「NaN」を渡されたときに誤った結果を返していました。
</p>
<p>
本修正の適用後、float列のbtree_gistインデックスに「NaN」のエントリが含まれる可能性がある場合は、それらのインデックスの再構築を推奨します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a47005f0b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e1d07792">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d215d2cc2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d569ccd40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=98dd4406f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=255bce448">&#167;</a></small></p>
<li>contrib/btree_gistで、GiSTインデックス構築時のbit型とvarbit型の値のソートが修正されました。  (Tom Lane) (18)</li>
<p>
これまでbit型の値がbytea型であるかのようにソートされていました。これは明白な誤動作を引き起こすことはありませんでしたが、型本来のソート順に一致しない並びで構築されるため、非効率なインデックスになりました。
</p>
<p>
本修正の適用後、bit列上のbtree_gistインデックスの再構築を推奨します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=11cb9c431">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=558c4ea9a">&#167;</a></small></p>
<li>contrib/btree_gistで、非等価（<>）演算子を使った検索が修正されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
可変長データ型の場合、非リーフインデックスページを走査するコードが誤った比較関数を適用していました。これは誤った問い合わせ結果、および場合によってはクラッシュにつながる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc6649abe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c519207">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86992769e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0663382c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f2a1b3d3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=286f9a3ce">&#167;</a></small></p>
<li>contrib/dblinkとcontrib/postgres_fdwで、use_scram_passthroughオプションについて、ユーザマッピングの設定が外部サーバの設定より優先されるよう修正されました。  (Matheus Alcantara) (18)</li>
<p>
これまでは外部サーバ側の設定が優先されていましたが、これは他の外部テーブルオプションの挙動と一貫していませんでした。他の接続オプション（sslcertやsslkeyなど）と同様に、外部サーバのオプションは共通のデフォルト値を提供し、ユーザマッピングのオプションがそれを上書きする扱いに統一されました。
</p>
<p>
これは非互換性を含む変更と言えます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=88d7748d2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=130396e6c">&#167;</a></small></p>
<li>contrib/dblinkの外部データラッパのuse_scram_passthroughオプションが拒否されるようになりました。  (Matheus Alcantara) (18)</li>
<p>
このオプションは外部サーバとユーザマッピングに対してのみ意味を持ちますが、dblinkは外部データラッパ（dblink_fdw）レベルでもこのオプションを受け付けていました（そして受け付けた設定を無視していました）。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cd777e27e">&#167;</a></small></p>
<li>contrib/hstore_plperl、contrib/jsonb_plperl、contrib/jsonb_plpythonで保護されていない再帰とループがあり、修正されました。  (Aleksander Alekseev) (18)(17)(16)(15)(14)</li>
<p>
深くネストしたjsonb値を扱うときのスタックオーバーフロー（によるクラッシュ）が防止されました。また、Perlのオブジェクト参照の循環チェーンをたどるときに生じる無限ループが割り込み可能になりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e3b7a43fa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3df0b7755">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b0f3465b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a6f23c3ad">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=639fff511">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d65cf6f80">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4efef9d18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60a1d712a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fbbabb0a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f6b2295f">&#167;</a></small></p>
<li>contrib/intarrayでプランナ統計情報のカタログキャッシュエントリの解放漏れが修正されました。  (Man Zeng) (18)(17)(16)(15)(14)</li>
<p>
この解放漏れにより、「WARNING:  resource was not closed: cache pg_statistic ..」のような警告が発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e7544c518">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=94b57ab54">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=273be484a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=702a6d5f6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a96b051a9">&#167;</a></small></p>
<li>contrib/ltreeで比較関数における整数オーバーフローが修正されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
約14,653個を超えるラベルを含むltree値は、オーバーフローによって誤った比較結果を返していました。btreeインデックスにそのような値が含まれている場合、破損している可能性があるため、本修正の適用後に再構築することを推奨します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c3e36a9a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c391c00d9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aca944e33">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1bec6b1c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f528a5606">&#167;</a></small></p>
<li>contrib/pgcryptoで、OSSLCipherオブジェクトの使用中にエラーが発生した後の二重解放によるクラッシュが回避されました。  (Yuelin Wang) (18)(17)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=020426268">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2aa6be6e6">&#167;</a></small></p>
<li>contrib/pg_prewarmのautoprewarmワーカの範囲外アクセスが修正されました。  (Matheus Alcantara) (18)</li>
<p>
このコードは、配列の末尾の1つ先から値を取り出そうとしており、セグメンテーション違反によるクラッシュを引き起こす可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3bf2cb225">&#167;</a></small></p>
<li>contrib/pg_surgeryのheap_force_kill関数とheap_force_freeze関数で、配列の範囲外書き込みが修正されました。  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
オフセット番号がMaxHeapTuplesPerPage（ページあたりの最大タプル数、291など）に等しいTIDを変更しようとすると、確保された配列の末尾の1バイト先に書き込み、サーバをクラッシュさせる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2b09f8a91">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0bcf19c9e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=daf8bc7d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51f63ba2b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1eda3eb07">&#167;</a></small></p>
<li>contrib/pg_surgeryで、64K要素を超えるTID配列による無限ループが回避されるようになりました。  (Andrey Rachitskiy) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f24c8237">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19f0391df">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b6c99d96">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb28b6f24">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=395700f48">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e9d53cf45">&#167;</a></small></p>
<li>contrib/spiのrefint拡張で、check_foreign_key()関数のNULLポインタ参照が回避されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
ON UPDATE CASCADEの場合、参照列の新しいキー値がNULLであると、クラッシュが発生していました。これはCVE-2026-6637の修正の見落しですが、その前からあったコードも正しいものではありませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed0c4d5af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6b4de201e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb93f10e2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=77b2d18e9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1de0a711d">&#167;</a></small></p>
<li>contrib/segで、確実性指示子「~」を持つセグメントの値が正しく出力されるように修正されました。  (Ewan Young) (18)(17)(16)(15)(14)</li>
<p>
seg型の出力関数seg_out()はセグメントの上限に付いた「~」を出力していませんでした。さらに悪いことに、下限に「~」があり上限に指示子がない場合、上限がまったく出力されませんでした。なお、文字列としての出力が不正であるだけで、演算結果に影響はありません。
</p>
<pre>
（誤動作例：2番目と3番目が誤動作）
db1=# SELECT '~1 .. ~5'::seg, '1 .. ~5'::seg, '~1 .. 5'::seg;
   seg    |  seg   |  seg
----------+--------+--------
 ~1 .. ~5 | 1 .. 5 | ~1 ..
(1 row)
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0004cab4d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bcbbd070d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=504ca0513">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3aa2083a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=58b91fc73">&#167;</a></small></p>
<li>contrib/xml2のxpath_nodeset()関数で名前空間ノードを問合せたときのクラッシュが修正されました。  (Andrey Chernyy, Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
以下のように、query引数に「//namespace::」を指定した場合にクラッシュするケースが報告されました。
</p>
<pre>
db1=# SELECT xpath_nodeset(
        '&lt;root xmlns:foo="http://example.com/foo"&gt;&lt;child/&gt;&lt;/root&gt;',
        '//namespace::*');
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=91b57eade">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4a49ab289">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18955d412">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bc5775149">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f3f901a53">&#167;</a></small></p>
<li>OpenSSL 4を使ったPostgreSQLのビルドに対応しました。  (Daniel Gustafsson) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=27cf3b5af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bcabfcce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fb8befa7b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7f70fa1b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=086652c02">&#167;</a></small></p>
<li>タイムゾーンデータファイルをtzdataリリース2026cに更新しました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
アルバータ州（America/Edmonton）は、2026年11月から年間を通したUTC-06（実質的に、恒久的なサマータイム）になります。このリリースでは、それ以降のタイムゾーン省略形は「CST」と仮定しています。この仮定は将来変更される可能性が高いのですが、新しい省略形に何が使われるかは明らかになっていません。
</p>
<p>
モロッコ（Africa/Casablanca）は、2026-09-20に、サマータイムの切り替えなしの恒久的なUTC+00に移行します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3c16aa293">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5f67124fa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=669438aed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=796c275a0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=af7be5672">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=812cc1a73">&#167;</a></small></p>
<li>古いマイナーバージョンが生成したWALのリプレイ時の自己デッドロックが修正されました。  (Andrey Borodin) (16)(15)(14)</li>
<p>
この不具合は前回のマイナーリリース(16.14、15.18、14.23)で導入されました。より古いマイナーバージョンのプライマリに追従するスタンバイサーバで、startupプロセスがハングアップしてレプリケーションが先に進まなくなりました。
</p>
<p>
共有行ロックで使われるマルチトランザクションに関するWALレコードのリプレイで問題が発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42a3194e5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2dfe75f98">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2bb60eb4f">&#167;</a></small></p>
<li>変数が1つも渡されていない場合でも、未定義のjsonpath変数をエラーとして扱うようになりました。  (Andrey Rachitskiy) (16)(15)(14)</li>
<p>
jsonbの「@?」演算子と「@@」演算子がjsonpath式の中で使う変数を渡せない、という場合のコードパスでは、未知のjsonpath変数が、本来の期待であるエラーの発生ではなく、JSONのnullとして誤って扱われていました。期待される動作でないことに加えて、この誤りは無制限のメモリ消費を引き起こす可能性がありました。
</p>
<pre>
（誤動作例）
db1=# select '{"A":1}'::jsonb @@ '$"no_such_var" == 1';
 ?column?
----------
 f
(1 row)

db1=# SELECT '{"A":1}'::jsonb @? '$"no_such_var"';
 ?column?
----------
 t
(1 row)

（修正後は以下のエラーが出る）
ERROR:  could not find jsonpath variable "no_such_var"
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1daeef6e0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8af173e28">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=364014327">&#167;</a></small></p>
<li>Visual Studio 2026を使ったPostgreSQLのビルドに対応しました。  (Andrew Dunstan) (16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bc5a873a8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eba7f1dc0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f1c579fc4">&#167;</a></small></p>
</ol>

<div>
<a href="https://www.sraoss.co.jp/prod_serv/support/pgsql-mainte/?utm_source=sraoss-techblog&utm_medium=referral&utm_campaign=under-article-pgsql" rel="noopener" style="color:initial;" target="_blank" class="no-ext"></p>
<div style="background-color:#DAEFF6; padding:20px; border-radius:8px; text-align:center;">
SRA OSSでは、PostgreSQL/Pgpool-II のサポートを提供しております。<br />
詳しくは<strong style="color:#2581c4;">弊社ホームページ</strong>をご覧ください。
</div>
<p></a>
</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PostgreSQL 16.15 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/16-15/</link>
		
		<dc:creator><![CDATA[データベース技術グループ]]></dc:creator>
		<pubDate>Tue, 01 Sep 2026 04:33:02 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 16]]></category>
		<category><![CDATA[PostgreSQL 16.14]]></category>
		<category><![CDATA[PostgreSQL 16.15]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=21096</guid>

					<description><![CDATA[このリリースは 16.14 からの修正リリース（2026年 8月 13日リリース）です。 16.X からのアップデートではダンプ、リストアは不要です。 しかしながら、最初の 3項目のセキュリティ修正は、設定の修正やデータ ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 16.14 からの修正リリース（2026年 8月 13日リリース）です。<br />
16.X からのアップデートではダンプ、リストアは不要です。</p>
<p>しかしながら、最初の 3項目のセキュリティ修正は、設定の修正やデータのクリーンアップが必要となるかもしれません。また、以下に記載の GiSTインデックスがある場合には、インデックス再構築が必要となります。</p>
<p>さらに、16.10 よりも前のバージョンからアップデートする場合には、<a href="/tech-blog/pgsql/16-10/" rel="noopener">16.10のリリース情報</a>も参照してください。</p>
<p><span id="more-21096"></span></p>
<h3>PostgreSQL 16.14 から 16.15 への変更点</h3>
<p>18.6, 17.11, 16.15, 15.19, 14.24 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<ol>
<li>ロジカルデコーディングの出力プラグインが厳格化されました。新たな設定パラメータoutput_plugin_librariesでの指定が必要となりました。(CVE-2026-6471)  (Jacob Champion) (18)(17)(16)(15)(14)</li>
<p>
これまでは、レプリケーションユーザがロジカルデコーディングむけに任意のライブラリを選ぶことができて（プラグイン名になどフルパス指定も可能）、さまざまな攻撃が可能でした。仕組みを変えずにこれを防げるようにするため、許可された出力プラグインのホワイトリストが導入されました。
</p>
<p>
PostgreSQL本体同梱のpgoutput（ロジカルレプリケーション用）とtest_decoding（単純なテキスト書き出し用）がデフォルトでoutput_plugin_librariesに含まれます。
</p>
<p>
加えて、pg_upgrade --checkで、新クラスタのoutput_plugin_librariesが 旧クラスタ（バージョン 17.x 以降）のレプリケーションスロットで使っているプラグインライブラリを許可していない場合、失敗するようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5d47df21e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a29b607d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=01992176e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e1252ee5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=99f205407">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf3842a64">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7082ce248">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=82fd68801">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fcccea97">&#167;</a></small></p>
<li>contrib/pgcryptoのPGP暗号化がサポートされない暗号化方式を検出するように、修正されました。(CVE-2026-14663)  (Daniel Gustafsson) (18)(17)(16)(15)(14)</li>
<p>
これまでは、OpenSSLが要求された暗号化方式を（例えば、FIPSモードであるため、あるいは、古いプロバイダがロードされていないために）拒否した場合に、pgcryptoはその失敗を知らせず、プレーンテキストを含む暗号化されないブロックに単にXORを適用していて、その「暗号化」は容易に解読可能でした。これは典型的には非推奨や非FIPSの暗号化アルゴリズム（cipher-algoオプション指定が blowfish/bf, twofish, cast5, 3des などの場合）で発生します。
</p>
<p>
これからはデフォルトでは、OpenSSLでサポートされない方式でのPGP暗号化がエラーになり、これまでの動作により不適切に暗号化されたメッセージの復号もエラーになります。pgp_pub_decrypt()関数、pgp_sym_decrypt()関数などのオプション引数の新たなオプションignore_cipher_failureに1を指定して実行すると、従来通りの振る舞いに戻ります。
</p>
<p>
前述の理由で不適切に暗号化されたメッセージを、'ignore-cipher-failure=1'オプションを指定して復号する場合には、OpenSSLの動作がそのメッセージを作成したときと同じでなければなりません。サポートされない暗号化方式が異なっている場合にはうまくいきません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba207f58f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe32b10fc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b05cfc693">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6ca6023ca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=472ef7e4a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7e29eb6f4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d97b3f58c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c5128ca0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7eed42aa8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba2a63faf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=953be116c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2c48c81f">&#167;</a></small></p>
<li>psqlがスクリプト化された「COPY ... FROM STDIN」コマンドに続くインラインデータを、COPY開始時のエラーであっても、読み飛ばすように修正されました。(CVE-2026-6464)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
これまでは「COPY」コマンドが行の読み込みを始める前に（例えば、対象のテーブルが無い、などで）エラーを起こした場合、psqlはこのことを認識できず、続くインラインデータを読んでSQLとして処理しました。これは良くて誤りであり、悪くするとSQLインジェクションを起こします。
</p>
<p>
これまでも、COPY開始処理が完了してサーバが「PGRES_COPY_IN」を返した後であれば、途中の行読み込みでエラーを起こしても、残りを読み飛ばすように動作していました。
</p>
<p>
本修正が実運用SQLスクリプトに影響を及ぼすことは無いと考えられますが、テスト用スクリプトでは意図的に「COPY ... FROM STDIN」コマンドが失敗するように作られている場合があります。そのような場合には各コマンドの後に「\.」というデータ区切り行を追加する必要があります。さもないと、読み飛ばす行が多すぎる結果になるかもしれません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6ab88d37">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=29921259e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=46fa1f6f3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2bdfd5cdc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3fdcfa8f7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5c51ae455">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cf01e213">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=900894d35">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dca6627de">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=db96e87f9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cdbabea7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7215c7e96">&#167;</a></small></p>
<li>EXECUTEやFETCHを実行するポータルの出力行型についてクロスチェックを行うようになりました。(CVE-2026-16239)  (Robert Haas) (18)(17)(16)(15)(14)</li>
<p>
EXECUTEとFETCHは2つのポータルを使います。外側の1つはそのステートメント自身のためで、内側の1つはクエリを代わって実行します。これまで、宣言された2つのポータルの行型を異なるものにできて、これを利用してサーバメモリ暴露や任意コード実行を引き起こせました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=64a65ead1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=37b8f3b0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60887d348">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7d150b5c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc933ce00">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f49beef2">&#167;</a></small></p>
<li>to_char()で、長いタイムゾーン省略形によるバッファオーバーランが修正されました。(CVE-2026-14669)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
これは容易にバックエンドプロセスのクラッシュができて、任意コード実行をもたらす攻撃も報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3294ab839">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fafe2380">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12a620686">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5dbeb69bc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f64cc83f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fb3c6389">&#167;</a></small></p>
<li>正規表現によるマッチ、分割の関数で、バッファオーバーランが修正されました。(CVE-2026-14664)  (Masahiko Sawada) (18)(17)(16)(15)(14)</li>
<p>
不正な文字エンコーディングのデータを渡すと、変換バッファの終端を過ぎた位置に書き込みが行なわれる可能性がありました。regexp_match()、regexp_matches()、regexp_split_to_table()、regexp_split_to_array()の各関数の動作が修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7df2aa8ef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b7e5c3f63">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e91dcfcca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3179253c2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=127a0673f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=890327639">&#167;</a></small></p>
<li>ascii()関数が不正な入力に対して頑健になりました。(CVE-2026-18024)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
不正な文字エンコーディングのデータが入力されることで、騙されて読むべきでない何バイトかを読んで返す可能性がありました。アサートが有効なビルドでは、アサート失敗も発生します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80ce920a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08e812c02">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=849da8210">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac450853d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3b925133b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42d333a78">&#167;</a></small></p>
<li>pg_restore_attribute_stats()関数でのマルチ範囲型の処理が修正されました。(CVE-2026-16238)  (OpenAI Security Research Team) (18)(17)(16)(15)(14)</li>
<p>
pg_restore_attribute_stats()はプランナ統計情報のダンプ、リストアで使われる関数です。
</p>
<p>
pg_restore_attribute_stats()はマルチ範囲型を元となる範囲型と単純に同様に扱っていました。これは境界ヒストグラムについては有効でしたが、他の種類の統計情報に対しては誤っていました。
</p>
<p>
誤った統計情報のリストアにより、不適切なプラン選択による問合せ実行の遅延や潜在的なプランナ誤動作の可能性が考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3d9262bb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08454e8b2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8d428c6e6">&#167;</a></small></p>
<li>scalarineqsel()が、tid型と想定される定数を実際にそうであるか検査するようになりました。(CVE-2026-14668)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
この想定は組み込みの演算子については成り立ちますが、悪意で作られた演算子には通用せず、クラッシュやサーバメモリ暴露を引き起こします。
</p>
<p>
scalarineqsel()は選択率の見積を返すプランナの内部実装関数の1つです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0d60ee717">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a2cb5a1cf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ebf896f4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=591192e2e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=005ffaa7f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=59205c7e9">&#167;</a></small></p>
<li>tsvector型とtsquery型の実装コードが（個々の要素、全体の長さの両面で）きわめて長い値に対して頑健になりました。(CVE-2026-14662)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
ドキュメントに記載されていた上限が、全てのコードパスで必ずしも強制されていませんでした。
</p>
<p>
本マイナーバージョンアップで、これまで許容されていたデータについて、以下のようなエラーが出るようになる可能性があり、仕様通りであるものの非互換変更ともいえます。
</p>
<pre>
ERROR:  lexeme is too long for tsvector ...
ERROR:  string is too long for tsvector ...
ERROR:  word is too long to be indexed ...
ERROR:  tsquery is too large
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cb947ca31">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e25135057">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe0b5bd6d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c1a8805a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f443d0a0a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c2ba321d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3b2238fbe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dddc8a69f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8e87bd473">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=84b6a7a06">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4f8b37b6b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e3014f37">&#167;</a></small></p>
<li>「FUNC_MAX_ARGS」を超える関数引数を処理する必要がない、と誤って想定していた様々な箇所が修正されました。(CVE-2026-14679)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
特に集約関数について、実際の引数の数の上限は「FUNC_MAX_ARGS - 1」ですが、パーサ段階では制限しておらず、後の処理で問題を引き起こしました。潜在的にバッファオーバーランの可能性がありました。
</p>
<p>
「FUNC_MAX_ARGS」はビルド時指定の定数でデフォルト100です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=92972e815">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f0e1aac7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=797e3cc4c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c67c4cf5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b417744a7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf44ff5e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42d9749b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a03f21da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a40f4b09">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=32e0d25d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb2fa2704">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7f462838">&#167;</a></small></p>
<li>internal型を引数や戻り値とする関数のSQLからの呼び出しを拒否するようになりました。(CVE-2026-14680)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
拒否するための既存の仕組みはありましたが、不十分であったため、明示的な検査が追加されました。
</p>
<p>
また、いくつかの集約関数のcombine処理で入力がNULLである場合に正しくSQLとしてのNULLを返すように修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21a00de43">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=54649de65">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb9e55297">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c0c1b2cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e926a9aac">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=155dacbc5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21d8cfb18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=722695db1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=83d0a083f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f308dd7c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6e861e19">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=913fe0c31">&#167;</a></small></p>
<li>ALTER TABLEコマンドで再構築されたとき、拡張統計オブジェクトの所有者が保たれるようになりました。(CVE-2026-6469)  (Masahiko Sawada) (18)(17)(16)(15)(14)</li>
<p>
これまでは拡張統計情報の対象テーブルに、列の型を変えるなどのALTER TABLEコマンドを実行したロールが、拡張統計オブジェクトの所有者になっていましたが、これは不適切な動作と判断されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=93b93f28f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1fa24127">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=75a03c569">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c3367ab5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fb6d1ca8d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=70a3b4e18">&#167;</a></small></p>
<li>EXTRACT()関数呼び出しを逆パースするときに、必要であればフィールド名をクォートするようになりました。(CVE-2026-15741)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
パーサはEXTRACT()のフィールド名としてどのような文字列リテラルも受け付け、検証は実行時まで先送りされます。関数呼び出しを格納して、解析する場合（例えばpg_dumpのとき）、文字列本体が逐語的に吐き戻されて、SQLインジェクションが可能でした。
</p>
<p>
逆パースはダンプ出力やpsqlでの定義表示で行なわれる処理です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a3832a757">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ddd9098a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5981fe370">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5e5ea74e3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=44ea6764b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=967acab87">&#167;</a></small></p>
<li>これまで検査ができていなかった個所について、データ型に対する「USAGE」権限を検査するようになりました。(CVE-2026-6470)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
「CREATE TYPE AS RANGE」、「ALTER TABLE OF」、および、格納される式を作成するコマンド（式を伴うビューやチェック制約の定義など）で、検査が行なわれていませんでした。これらの欠落により、「USAGE」権限を持たないロールでもデータ型に依存するオブジェクトを作成できて、データ型の所有者が後でデータ型を変更できなくなる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=efdb26072">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2e91f8548">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fd6d3e7e9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=24855357c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=97e277402">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=323af0a4e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb1bc525d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57f59ca1d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=671359605">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7a761fe40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c062734cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b6e45b4f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=424fb7160">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=278053843">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d1c8aa0b0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7ce056b17">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6dbedd48b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1a358b8f2">&#167;</a></small></p>
<li>行単位セキュリティ(RLS)に対して、ロールに依存したキャッシュされたプランを、ロール変更後に無効化するようになりました。(CVE-2026-14666)  (Ilya Staroverov, Shinya Kato, Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
ロールのメンバーシップや属性、データベース所有者の変更は、行単位セキュリティポリシーの振る舞いに影響がありますが、これまでは、キャッシュされた古い状態に基づくプランがそのまま使われていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=567286b76">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b12f56bf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1974acf23">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f5f2da795">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=17b6083db">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f4174aa84">&#167;</a></small></p>
<li>直接のSSL接続の後のGSSEncRequestメッセージを拒否するようになりました。(CVE-2026-14681)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
これまでサーバは、TLS暗号化接続が確立した後にもGSSAPI暗号化の要求を受け付けていました。これに成功すると、接続はTLS暗号化(SSL)を使っているけれども、pg_hba.confのルールとしてはGSS接続のように見えました。その結果、pg_hba.confでSSLを無効としていても、それを正しく強制できませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf1bb7e29">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=203a48209">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=067a64d40">&#167;</a></small></p>
<li>モックのSCRAM認証シークレットがより本物らしくなりました。(CVE-2026-14672)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
存在しないロールやSCRAMシークレットを持たないロールに対して、SCRAMログインが試みられた場合、PostgreSQLはモックのシークレットを生成して認証のハンドシェイクをとにかく行ない、攻撃者にそのことが分からないようにします。しかしながら、モックが固定のイテレーションカウントで作られていたため、観測可能な応答の差異がありました。
</p>
<p>
本修正で、モックにもscram_iterations設定パラメータの値を使って、より実際に使われているシークレットに似せるようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d192fa16">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=822143c4d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dec60e8ad">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fadbe882d">&#167;</a></small></p>
<li>ecpgアプリケーションでの範囲外書き込みが修正されました。サーバから不正なbytea型データを受け取ることで引き起こされます。(CVE-2026-16241)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
ecpgはbytea型の値は「\x」で始まることを検査せずに想定していました。壊れているか悪意のサーバは2バイトよりも短い文字列を送ってくるかもしれず、そのためにアプリケーションでのメモリ上書きが発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=457b8737a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a14ba29b1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c3c830272">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39f855e0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5737110b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74c59d062">&#167;</a></small></p>
<li>psqlの「\unrestrict」コマンドの引数でバッククォート展開をしないようになりました。(CVE-2026-18408)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
\restrict と \unrestrict は 17.6、16.10、15.14、14.19バージョンでのCVE-2025-8714の修正で導入されましたが、その中で見落としがありました。悪意のサーバからの応答で出力されたダンプにより、リストアを実行するユーザに意図せぬシェルコマンド実行をさせること（シェルコマンドインジェクション）ができました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0119aa30e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71ca694c7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0bfac9e1f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=33d0c63fb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=df245c374">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2006fca40">&#167;</a></small></p>
<li>pg_dumpにおいてpg_proc.protrftypesのエントリ数がFUNC_MAX_ARGSを超えないという前提が取り除かれました。(CVE-2026-19385)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
入力引数と出力引数の両方のエントリが存在する可能性があるため、この配列の長さがFUNC_MAX_ARGS（これは入力引数のみに制限するものです）を超えることは十分にあり得ます。仮にそうでは無いとしても、pg_dumpはサーバがpg_dumpと同じFUNC_MAX_ARGSの値でビルドされたと仮定することはできません。オーバーランが発生すると、pg_dump内部でのメモリ破壊を引き起こす可能性がありました。
</p>
<p>
pg_procシステムテーブルに関数定義が格納されて、protrftypes列にTRANSFORM句による変換のためのデータ型の配列が格納されます。FUNC_MAX_ARGSは実装内部の定数で、通常100です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86cd82bf4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3392cce5c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c2b16f5d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3299c2ba0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71ba5705d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57aa21f69">&#167;</a></small></p>
<li>tieされたPerlの配列やハッシュに対して、PL/Perlが堅牢化されました。(CVE-2026-14670)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
通常のオブジェクトとは異なる挙動をするtieされたオブジェクトは、メモリの上書きや、破損した結果配列の生成につながる可能性があり、その結果、後で問題が発生する可能性が高い状況でした。
</p>
<p>
tieは、配列やハッシュなどの変数に対して操作用のメソッド群を実装したオブジェクトに結びつける Perl の機能です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c48cd615">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=87c4b8219">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2d78c34f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=477a6bdb0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf4ae7c3b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d7fcfead3">&#167;</a></small></p>
<li>PL/PerlおよびPL/Tclにおけるメモリ割り当て計算時の整数オーバーフローが修正されました。(CVE-2026-14677)  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
これはコードの異なる個所で発生していたCVE-2026-6473と同様の問題で、同じ方法で修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1c1727cb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=028ee716a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b56cc7deb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bbdc0540">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1eb0d5380">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aff9dac1c">&#167;</a></small></p>
<li>contrib/amcheckの関数がインデックス式を実行する前にsearch_pathを制限するようになりました。(CVE-2026-14673)  (Noah Misch) (18)(17)(16)(15)(14)</li>
<p>
amcheckはそれらのインデックス式をテーブル所有者の権限で実行するため、呼び出し元がsearch_pathに依存する関数を乗っ取り、テーブル所有者の権限で任意のコードを実行できてしまう恐れがありました。デフォルトでは、amcheck関数の呼び出しはスーパーユーザーにのみ許可されているため、これは脆弱性には当たりません。しかし、もしその権限が他のユーザに付与されていた場合、ドキュメントで示されているよりも大きな危険が生じることになります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=557cc7186">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0a61fcde0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e41c72aff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2cc147318">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e43e74756">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39d792040">&#167;</a></small></p>
<li>contrib/fuzzystrmatchのlevenshtein()およびlevenshtein_less_equal()関数における整数オーバーフローが修正されました。(CVE-2026-15742)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
これらの関数に大きなコスト値を渡すと整数オーバーフローが発生し、無意味な結果が生じたり、場合によっては境界外書き込みを引き起こしたりする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=62c31b490">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e88eb4e76">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c4d51b627">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=61481aa0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74916136f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9505175f2">&#167;</a></small></p>
<li>contrib/pg_stat_statementsにおけるバッファオーバーランが修正されました。(CVE-2026-14676)  (Alvaro Herrera) (18)(17)(16)(15)(14)</li>
<p>
クエリの正規化処理において、正規化後の文字列が必要とするサイズが正確に考慮されていませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb02eba53">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a31ffc2d">&#167;</a></small></p>
<li>contrib/pg_trgmのGiST picksplit関数におけるデータ型エラーが修正されました。(CVE-2026-14678)  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
このエラーによりバッファの末尾を超えた読み取りを引き起こし、通常は不適切な分割判断の原因となっており、運が悪ければクラッシュに至る可能性もありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aa7b5815e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=849019a50">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1af08af69">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=24c88cd39">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7c82a88c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a74aa0854">&#167;</a></small></p>
<li>contrib/refintのプランキャッシュが削除されるようになりました。(CVE-2026-14671)  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
このキャッシュの挙動にはいくつかの深刻なバグがありました。特に、check_foreign_key()がカスケードUPDATEクエリに新しいキー値を埋め込んでしまうため、キャッシュされたプランでは、本来使用すべきキー値ではなく、最初に必要とされたキー値が再利用されてしまう問題がありました。最も簡単な解決策は、これを削除することです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=79a506228">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=66a5146dc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a572dd213">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b7b513d9a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5b72d0279">&#167;</a></small></p>
<li>並列GINインデックスの構築時に、テーブルのpg_class.reltuples値が正しく更新されるようになりました。  (Jan Nidzwetzki, Tomas Vondra) (18)</li>
<p>
並列ワーカーが処理した行数として初期化されていない値を報告する場合があり、その結果、reltuplesがInfinityやNaNといった不正な値になる可能性がありました。このような値が設定されると、その後のautovacuumやautoanalyze操作において、そのテーブルの処理が必要であると判断されなくなる可能性がありました。そうなると、この状態は自動的には解消されません。
</p>
<p>
reltuplesを正しい値にリセットするには、手動でANALYZEコマンドを実行するか、別のインデックスを作成する必要があります。  GINインデックスを持つテーブルがある場合は、reltuplesの値が妥当かどうかを確認することをお勧めします。以下のようなクエリが役立ちます。
</p>
<pre>
SELECT DISTINCT t.oid::regclass, t.reltuples
FROM pg_class t
  JOIN pg_index i ON t.oid = i.indrelid
  JOIN pg_class ic ON i.indexrelid = ic.oid
WHERE t.relhasindex AND ic.relam = 2742;
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5707d7517">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d4420a972">&#167;</a></small></p>
<li>非同期のAppendプランノードを再スキャンする際の、非同期読み取りの不適切な処理が修正されました。  (Alexander Korotkov, Gleb Kashkin, Etsuro Fujita) (18)(17)(16)(15)(14)</li>
<p>
上位のプランノードがAppendの出力をすべて読み取る前にAppendを再スキャンする場合、外部サーバー（例えばpostgres_fdwなど）に対して送信済の未完了リクエストをすべて破棄する必要があります。  サブプランのパラメータが変更された場合や、次回のスキャンでパーティションプルーニングによってサブプランが破棄される場合、この処理が正しく行われていませんでした。  その結果、クエリ結果が不正になったり、無限ループに陥ったり、アサート失敗が発生したりする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7d74b2644">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4ea497a92">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3704870b2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=894da35b3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7213cbfa0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cec48686a">&#167;</a></small></p>
<li>RANGEパーティションテーブルにおけるパーティションプルーニングの不具合が修正されました。  (David Rowley) (18)(17)(16)(15)(14)</li>
<p>
特定のケースにおいて、本来対象とすべきDEFAULTパーティションがスキップされ、その結果、クエリの結果から行が欠落して、誤った問い合わせ結果となる恐れがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9282a650">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=02e69be47">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=31f2acde5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9a0cd8e73">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5190732c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6098f35f4">&#167;</a></small></p>
<li>結果リレーションのプルーニング後に、ModifyTableプランノード内の外部データラッパーの状態を正しく更新するようになりました。  (Ayush Tiwari, Rafia Sabih) (18)</li>
<p>
以前は、実行時のパーティションプルーニングによって、対象のパーティションテーブルの一部のパーティションをスキャンする必要がないと判断された場合、そのテーブルに外部テーブルのパーティションが含まれていると、クラッシュや誤動作が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1ef917e3a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bba4e095d">&#167;</a></small></p>
<li>「BEFORE UPDATE」トリガーを持つテーブルに対して、「RETURNING OLD」を指定したUPDATE文で発生していた並行更新の処理漏れが修正されました。  (Dean Rasheed) (18)</li>
<p>
対象行が並行して更新された場合、「READ COMMITTED」分離レベルでは、RETURNING句で返される「OLD」値はすべて、更新後の行の値を反映している必要があります。しかし、トリガーが存在する場合、トリガー自体や最終的な出力行では正しい値が参照されていたにもかかわらず、古い値が返されてしまっていました。結果として、誤った問い合わせ結果が生じる可能性があります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7048e50f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4908225be">&#167;</a></small></p>
<li>複数の結合キーと多数のNULL値が存在する場合のハッシュ結合の性能問題が修正されました。  (David Rowley) (18)</li>
<p>
NULL値を持つタプルは他のどのタプルとも一致することはないため、ハッシュテーブルに挿入されるべきではありません。  これまでのコードでは、最後の結合列以外の列にNULL値が含まれる場合にこの処理が適切に行われていなかったため、NULL値を含む入力が多数あるとハッシュテーブルが著しく肥大化していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a71a348ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f70acc8a2">&#167;</a></small></p>
<li>RETURNING句の式における括弧で囲まれた「OLD」や「NEW」の解析処理が修正されました。  (Marko Grujic) (18)</li>
<p>
「(old).colname」や「(old).*」といった式が誤って処理され、実質的に「NEW」への参照に変換されていました。結果として、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9108fed3e">&#167;</a></small></p>
<li>value IN (array)式に対するプランナのNULL許容性および厳密性チェックが修正されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
これらのチェックは、配列オペランドが空でないことが既知である場合にのみ成功すべきですが、その点が考慮されておらず、本来適用されるべきではない最適化が適用されてしまう問題がありました。これにより、実際の配列が空であった場合、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9740c68ff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=277122036">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=26d6b7dc9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6fcee189b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=53470ffba">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=13b627a3e">&#167;</a></small></p>
<li>不適切な結合削除のロジックが修正されました。  (Matheus Alcantara, Richard Guo) (18)(17)(16)</li>
<p>
一部の特殊なケースにおいて、外部結合のNULL許容側由来の定数出力値が、本来NULLに置換されるべき場面でNULLに置換されない問題が発生し、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bc479627">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21f5e659e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cdcec567d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3e1fe25e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=72457f1df">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e40d07e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b308eb366">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d610d8e8b">&#167;</a></small></p>
<li>結合の削除処理において、PlaceHolderVarsのクリーンアップがより徹底されるようになりました。  (Richard Guo, Arne Roland) (18)</li>
<p>
この修正により、アサート失敗や誤った実行計画の生成（とそれに伴う誤った問い合わせ結果や予期せぬエラー）を招く可能性のあった様々なエッジケースが解消されます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e02526795">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aae47813a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18105e6db">&#167;</a></small></p>
<li>コンテナデータ型（配列、複合型、範囲型）の等価比較におけるハッシュ可能性に関する漏れていたチェックが追加されました。  (Andrei Lepikhov, Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
プランナは、ハッシュベースの実行計画を採用する前に、コンテナの構成要素の型のハッシュ化可能かどうかを検証する必要がありました。一部の箇所でこの手順が漏れていたため、実行時に「ERROR:  could not identify a hash function for type ...」という予期せぬエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=11aed8d19">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19152e3c2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf2bfe073">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=caebac5f1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=64778fac7">&#167;</a></small></p>
<li>プランナが、異なる等価性ルールを持つグループ化ステップより下位へ、WHERE句をプッシュダウンすることを避けるようになりました。  (Richard Guo) (18)</li>
<p>
非決定的照合順序でグループ化される列に対するテストは、その同じ照合順序を使用した比較である場合にのみ、安全にプッシュダウンできます。そうでない場合、グループ化によって統合されるはずだった行がフィルタリングされて、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=98d5d7ee6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe5d62951">&#167;</a></small></p>
<li>「EXCLUDE」句を指定している、または「ORDER BY」を指定していない、COUNTウィンドウ関数の誤った最適化が修正されました。  (Chengpeng Yan, David Rowley) (18)(17)(16)(15)</li>
<p>
これまで、このウィンドウ関数は該当しない場合でも単調増加するものとして扱われていました。そのため、誤った問い合わせ結果が生じる可能性がありました。
</p>
<pre>
（報告された誤動作例）
db1=# CREATE TABLE t41 (id int PRIMARY KEY, k int NOT NULL, v int);
db1=# INSERT INTO t41(id, k, v) VALUES
        (1, 1, 1), (2, 1, NULL), (3, 1, 1), (4, 2, 1);

db1=# SELECT id, count(v) OVER (
        ORDER BY k RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
        EXCLUDE CURRENT ROW) AS c FROM t41;
 id | c
----+---
  1 | 1
  2 | 2
  3 | 1
  4 | 2
(4 rows)

db1=# SELECT * FROM (
        SELECT id, count(v) OVER (
          ORDER BY k RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
          EXCLUDE CURRENT ROW) AS c FROM t41) s WHERE c &lt; 2;
 id | c
----+---
  1 | 1
(1 row)
→ 正しくは id=3 の行も出力されないといけない
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fcd58c6d9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf184ec77">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=be63b285e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a85732162">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=842e34efa">&#167;</a></small></p>
<li>プランナが"char"型の列の統計情報を参照する際に、予期せぬエラー「ERROR:  cache lookup failed for collation 0」が発生する障害が修正されました。  (Feng Wu) (18)</li>
<p>
"char"型は、一般的に使われるchar(n)型とは別の、主として内部的なシステムカタログで使用されるものです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fd1c3f28">&#167;</a></small></p>
<li>複数階層のパーティションが存在する場合でも、ALTER TABLEのALTER COLUMN ... DROP EXPRESSIONが正常に動作するよう修正されました。  (Alberto Piai) (18)(17)(16)(15)(14)</li>
<p>
ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSIONは、格納生成列を基本列に変換する構文です。複数階層の子パーティション／子テーブルを持つパーティションテーブルや継承ツリーの親テーブルに対して実行すると、「ERROR:  ALTER TABLE / DROP EXPRESSION must be applied to child tables too」というエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ce6e434ce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c374f2807">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18006c1bd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=34785a0d5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=785289de0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cad17745e">&#167;</a></small></p>
<li>排他制約であるインデックスのパーティションをアタッチする処理の不具合が修正されました。  (Japin Li) (18)(17)</li>
<p>
この誤りにより、排他制約を持つパーティションテーブルのダンプ/リストアが正常に動作しなくなっていました。
</p>
<p>
リストア時に以下のようなエラーが発生します。
</p>
<pre>
ERROR:  cannot attach index "..." as a partition of index "..."
DETAIL:  The index definitions do not match.
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2b2c2492c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19e3aa704">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d6c654c8">&#167;</a></small></p>
<li>ALTER CONSTRAINTを使用して、パーティションテーブルのNOT NULL制約にNO INHERITを設定することができないように修正されました。  (Andreas Karlsson) (18)</li>
<p>
本来、パーティションテーブルのNOT NULL制約は、すべてのパーティションに継承される仕様であるため、NO INHERITを指定することはできません。これまでは、この仕様は制約を新規作成する際には正しく適用されていましたが、「ALTER TABLE ... ALTER CONSTRAINT」では適用されておらず、NO NULL制約の有無がパーティションごとに異なるようにできました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41247cdf6">&#167;</a></small></p>
<li>ルールの名前を「_RETURN」に変更できないように修正されました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
「_RETURN」という名前は、ビューの「ON SELECT」ルール用に予約されています。これまでは「ON SELECT」以外のルールをALTER RULEで「_RETURN」に名前変更できてしまい、その後の処理で問題を引き起こしていました。
</p>
<p>
具体的には、ダンプ/リストアで「ERROR:  non-view rule for "..." must not be named "_RETURN"」というエラーを起こすことが報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80c7f5467">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7f7958ab">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e99fb3262">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a69503fb1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eada45dd8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b17a6e3c">&#167;</a></small></p>
<li>DROP OWNED BYにおいて、ロールメンバーシップへのロックの解放漏れが修正されました。  (Jeff Davis) (18)(17)(16)</li>
<p>
この不具合により、トランザクションが終了するまで、ロールメンバーシップ（pg_auth_membersシステムテーブルの対応するエントリであらわされる暗黙的なオブジェクト）へのロックが保持され続けていました。その結果、並行するDDL実行で警告メッセージが出ることがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9eccdae22">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a0daa0b41">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=25e54cec7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e61d44fde">&#167;</a></small></p>
<li>EXPLAINがSQL/JSONの集約関数をデパースするときに予期せぬエラーを出すことがあり、修正されました。  (Richard Guo) (18)(17)(16)</li>
<p>
実行プランの構造によっては、「ERROR:  invalid JsonConstructorExpr underlying node type」というエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eaa561fb6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=45364e496">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dcda1f07d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=485527190">&#167;</a></small></p>
<li>遅延一意性制約のインデックスに対してREINDEX CONCURRENTLYを使用した場合の不具合が修正されました。  (Nitin Motiani) (18)(17)(16)(15)(14)</li>
<p>
REINDEX CONCURRENTLYの実行中に一時的に作成されるインデックスのコピーが、誤って即時一意性制約として扱われていました。そのため、実際には制約違反ではない場合でも、制約違反が発生したと誤って報告することがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9f6fb1191">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4527519b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28269fed6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac222bea5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5b3712e31">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55adef7ab">&#167;</a></small></p>
<li>非決定論的照合順序でバックスラッシュ（\）を使用したLIKE句のマッチングの不具合が修正されました。  (Nitin Motiani, Tom Lane) (18)</li>
<p>
非決定論的照合順序において、LIKEがエスケープされたバックスラッシュ（\\）を誤って処理し、実質的にバックスラッシュが存在しないものとして扱っていました。
</p>
<p>
また、通常の文字の前にバックスラッシュが付いている場合も誤った処理をしていました。この場合、バックスラッシュは実質的に無視されるべきですが、実際には後続の通常の文字を完全一致として扱ってしまい、非決定論的照合順序にマッチするかを判断していませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=99775b388">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a99bd8d58">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=54d5947ef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51652c42d">&#167;</a></small></p>
<li>LIKE句や正規表現の完全一致パターンのインデックススキャン最適化の不具合が修正されました。  (Jelte Fennema-Nio) (18)</li>
<p>
非決定論的な照合順序におけるLIKEのリファクタリングによって、LIKE句や正規表現の完全一致パターンを、等価比較のインデックス条件に変換する最適化が誤って壊れていました。これはインデックスの照合順序と式の照合順序が一致しない場合に発生していました。この影響で、psql の「\d tablename」コマンドが大幅に遅くなっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=67cf73ddb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0bb49e61">&#167;</a></small></p>
<li>to_date() におけるローカライズされた月名、曜日名のマッチング処理が修正されました。  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
大文字・小文字の変換によって文字列のバイト長が変化する場合に、マッチング処理が誤動作していました。月名、曜日名が認識されずに予期せぬエラーが発生する可能性が考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55ea76426">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=011384ba4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8acfaa12a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b594efe52">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0de744cd5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=49a712f32">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5f003855e">&#167;</a></small></p>
<li>ギリシャ文字の語末形のシグマに対する大文字小文字の変換のルールが修正されました。  (Jeff Davis) (18)</li>
<p>
文字列の直前が大文字小文字を区別しない文字だけで構成されている場合、そのシグマを語末形のシグマとはみなさないようにしました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28d498e28">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=66ec24276">&#167;</a></small></p>
<li>ハングルU+11A7（TBASE）のNFC再合成における誤りが修正されました。  (Diego Frias, Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
この文字は有効なT音節として扱われていましたが、実際にはT音節ではないため、正規化処理中にこの文字が消えてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=273fe9485">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0c9cbbfb5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=82116023e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c391375ba">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bb935d61">&#167;</a></small></p>
<li>大文字小文字を区別しない類義語の辞書において、出力する語彙素が切り捨てられる不具合が修正されました。  (Jeff Davis) (18)(17)(16)(15)(14)</li>
<p>
小文字への変換によって語彙素のバイト長が増加した場合、出力時に元のバイト長に誤って切り捨てられていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=89e648498">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3805641cb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b32df590c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7e0e42a2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e0458172">&#167;</a></small></p>
<li>大文字小文字変換処理において、途中で途切れたUTF-8文字への対処が修正されました。  (Jeff Davis) (18)(17)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=05da336dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9021c8f3c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5e78ebca5">&#167;</a></small></p>
<li>hash_record_extended()のバグが修正されました。  (Man Zeng) (18)(17)(16)(15)(14)</li>
<p>
FunctionCallInvoke()に渡される2番目のisnull引数が初期化されていませんでした。既存の組み込み拡張ハッシュサポート関数では、この値を参照しないため問題はありません。しかし、拡張機能が提供するハッシュ関数が「PG_ARGISNULL(1)」を調べる場合、その影響を受ける可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3f13c032">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=203e238bb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8b5580a05">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=259b627d5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74d3482f4">&#167;</a></small></p>
<li>公開可能なテーブルが並行して削除された場合に、pg_get_publication_tables()が失敗する不具合が修正されました。  (Bharath Rupireddy) (18)(17)(16)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28c995948">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=73d63d1c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dcbc96685">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6c760f6b6">&#167;</a></small></p>
<li>VARIADIC NULL を指定した場合に、satisfies_hash_partition() がクラッシュする不具合が修正されました。  (Robert Haas) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2ddc45662">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0c06ebf12">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=52af6fef4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6de480156">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d39b9eed0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0115650de">&#167;</a></small></p>
<li>tsvector_filter() および関連する関数で、不正な重みに関するエラーを、より明確かつ一貫した形で報告するよう修正されました。  (Ewan Young) (18)(17)(16)(15)(14)</li>
<p>
具体的には、表示可能なASCII文字ではない重み文字については、charout()と同様に8進数形式（"\nnn"）で報告します。これにより、無効なエンコーディングを含むエラーメッセージが生成されるのを防ぎます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c5194139c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0626fbfeb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed5ca5828">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3a86eb6d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=262cc4df2">&#167;</a></small></p>
<li>uundv7()関数で範囲外のタイムスタンプとなるシフト値を拒絶するようになりました。  (Baji Shaik) (18)</li>
<p>
v7 UUIDで表現可能な範囲を超えたタイムスタンプになるシフト値は「ERROR:  timestamp out of range for UUID version 7」というエラーを出すようになります。有効なタイムスタンプ範囲は、1970-01-01 00:00から10889年くらいまでです。これまでは壊れたUUID値が作られていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a933deaa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c31b0fca0">&#167;</a></small></p>
<li>xpath()関数でnamestapeノードの処理が修正されました。  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
予期せぬ「ERROR:  could not copy node」エラーが出ていたものが修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c777d6dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6c08cbb7a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=174076601">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d8c72b2e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41876c8d7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0d145be2c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=940916549">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fac26fd41">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9618e790c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a17f39aa2">&#167;</a></small></p>
<li>jsonpathの「.decimal」メソッドが、精度やスケールの指定が正しくない場合でもERRORを出さないように、修正されました。  (Ewan Young) (18)(17)</li>
<p>
サイレントモード（json_path_*関数のsilent引数がtrue）では、エラーを抑止すべきですが、そのようになっていませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5bbc9b300">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=84001a04d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab35b8d25">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=90789900b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c768637d6">&#167;</a></small></p>
<li>「IS JSON」や「JSON()」等の構文が、text型へのキャストを持たない文字列型の引数を与えられたときの、NULLポインタによるクラッシュが修正されました。  (Ayush Tiwari) (18)(17)(16)</li>
<p>
PostgreSQL本体コードには該当するデータ型はありませんが、一部の拡張のデータ型で問題を引き起こす可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=35d9a6263">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0acd2535">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60abb3c73">&#167;</a></small></p>
<li>「SQL/JSON」の「ON EMPTY / ON ERROR DEFAULT」の値に正しい型修飾が確実に適用されるようになりました。  (Ewan Young) (18)(17)</li>
<p>
例えば、対象numeric型列の宣言された精度とスケールがデフォルト値に適用されませんでした。
</p>
<pre>
（誤動作例）
db1=# SELECT JSON_VALUE(jsonb '{"b":"1234.5"}', '$.a' 
        RETURNING numeric(4,1) DEFAULT 99999.9 ON EMPTY);
 json_value
------------
    99999.9
(1 row)

（以下エラーが出るのが正しい動作）
ERROR:  numeric field overflow
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d30bfcbdd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=441e4c8d6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71cd10cd2">&#167;</a></small></p>
<li>money型の最小値（64bit整数最小値）を-1で割ったときの、マシン依存の振る舞いが回避されました。  (Andrey Rachitskiy) (18)(17)(16)(15)(14)</li>
<p>
x86_64アーキテクチャでエラーになるものが、aarch64アーキテクチャではエラーになりませんでした。オーバーフローを起こした場合には必ず「ERROR:  money out of range」が出るようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7746f7492">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6298a41b4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1416f304d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86f42357c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d782c97e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fec40878c">&#167;</a></small></p>
<li>全文検索の辞書に対するキャッシュエントリの作成途中でメモリ不足が生じた後にクラッシュする障害が修正されました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=df8407d7d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=81b1e7916">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=634a8dcb8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=83336e3ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=025228104">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dda622edc">&#167;</a></small></p>
<li>誤ったispell/hunspell辞書ファイルに対する処理でメモリ安全性に問題があり、修正されました。  (Andrey Rachitskiy) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3fe4062cc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4689ea9ce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fdea3aa3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=444038bb7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0fb88979b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cfc720ef4">&#167;</a></small></p>
<li>他セッションの一時テーブルへのアクセスが防止されました。  (Jim Jones, Daniil Davydov, Alexander Korotkov) (18)(17)(16)</li>
<p>
基本的にそのようなアクセスは禁止されていますが、一部のコードパスで防止しきれておらず、干渉されたセッションで誤った問合せ結果が生じるおそれがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b0dd0815">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4dfae59a1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8021cdceb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3aaefe892">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e49f68b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cc3fe7e2a">&#167;</a></small></p>
<li>一時テーブルにアクセスするときの「ERROR: no empty local buffer available」エラーが防止されました。  (Melanie Plageman) (18)</li>
<p>
本修正でストリーミング読み取りの仕組みが使用可能なローカルバッファの数が制限されました。これまでは、effective_io_concurrency設定が大きな値の場合に単一のストリームで全バッファを利用可能であったため、本エラーが発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed8050370">&#167;</a></small></p>
<li>autovacuumがデータベースを処理する順番が修正されました。  (Rustam Khamidullin) (18)(17)</li>
<p>
最高スコアから最低スコアに向かう順で処理されるべきところで、意図せず逆順になっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3331578b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4cc49cb70">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=288d4e83f">&#167;</a></small></p>
<li>VACUUMのXID周回フェールセーフモードで、共有バッファプールを全使用するように動作が復旧されました。  (Melanie Plageman) (18)</li>
<p>
通常のVACUUMは、他の処理に大きな影響を与えないように、共有バッファを少しだけ使うように制限されています。しかしながら、フェールセーフモードではできるだけ早くトランザクションIDを回収する必要があるので、この制限は放棄されることになっていました。この振る舞いがv18のリファクタリングで壊れていて、復旧されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fd90c3221">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=585181e07">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55d01a10f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c25cdb1e">&#167;</a></small></p>
<li>パラレルVACUUMワーカーの処理でのメモリリークが修正されました。  (Baji Shaik) (18)(17)</li>
<p>
パラレルワーカーからの報告過程で報告ごとに1kB程度のリークがあり、これはワーカープロセスが生きている間は蓄積されていきました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4154a1482">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8ad414831">&#167;</a></small></p>
<li>問合せのキャンセルとVACUUM遅延が、GINインデックスのポスティングツリーのクリーンアップ中であっても、すぐに行なわれるようになりました。  (Paul Kim, Alexander Korotkov) (18)(17)(16)(15)(14)</li>
<p>
よくある値に対するポスティングツリーは大きくなることがあり、ここに割り込みの検査が欠けていたため、処理が長く継続してしまいました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=70dad584e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7becb647d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba5e46329">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=006ac761e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7123abab7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=15fd7a3e2">&#167;</a></small></p>
<li>GiSTおよびSP-GiSTのインデックスに対するIndex Only Scanで、インデックスタプルのデコーディングを誤る可能性があり、修正されました。  (Peter Geoghegan) (18)(17)(16)(15)(14)</li>
<p>
この障害で壊れたデータが出力されて、誤った問い合わせ結果や予期せぬエラーが発生する可能性がありました。本体コードで影響があるのは、GiSTの演算子クラスrange_opsのみで、その範囲列が最初のインデックス列でない場合にのみ、誤動作が発生します。
</p>
<pre>
（誤動作例）
db1=# CREATE TABLE t75 (a inet, r numrange);
db1=# INSERT INTO t75 VALUES 
      ('::1', numrange(repeat('1', 100)::numeric, repeat('2', 200)::numeric)));
db1=# CREATE INDEX ON t75 USING gist (a inet_ops, r range_ops);
db1=# VACUUM ANALYZE t75;
db1=# SET enable_seqscan TO off;
db1=# SELECT lower(r) = repeat('1', 100)::numeric,
             upper(r) = repeat('2', 200)::numeric FROM t75;
ERROR:  type with OID 860 does not exist
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d4c81ad6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=959b7fa2c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=355faed5a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e58192546">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=126141425">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4ad22eb0">&#167;</a></small></p>
<li>バルク拡張されたテーブルの新たな最終ブロックがフリースペースマップに即座に追加されるようになりました。  (Jingtang Zhang) (18)(17)(16)</li>
<p>
off-by-one（1つ足りない）誤りで、複数ブロックが追加されたときの最後のブロックがフリースペースマップに登録されませんでした。VACUUMによってやがては正しく登録されますが、それまでの間、最終ブロックが使われませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7a103928a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eabc9a9dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=768ae083e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0fd5595aa">&#167;</a></small></p>
<li>トランザクションのアボート時のリソース解放処理で、メモリの二重解放（クラッシュをひきおこします）、または、エラーの再帰的な無限ループが起きる可能性があり、修正されました。  (Tom Lane) (18)(17)</li>
<p>
巨大な入力値を伴うSQLがエラーになって、トランザクションアボートが行なわれたケースで問題が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac6a58a70">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=011eedcdc">&#167;</a></small></p>
<li>PostgreSQLの処理内でディレクトリを作成するとき、同じディレクトリの同時作成を許容するようになりました。  (Andrew Dunstan, Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
他プロセスが同じディレクトリを作っているのであれば、ディレクトリ作成に成功した扱いとすることで、これまで同時実行で発生する可能性のあった「ERROR:  could not create directory "...": File exists」といったエラーを回避できます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aa80c34c8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f0a831ef3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9951e3d38">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4647ac142">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4b3bc6b71">&#167;</a></small></p>
<li>JITコンパイルされたタプルデフォームを行うコードが、仮想生成列を正しく考慮するように修正されました。  (David Rowley) (18)</li>
<p>
NOT NULL制約のある仮想生成列を含むテーブルへの問合せで、誤った問い合わせ結果が生じる例が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e9692de1d">&#167;</a></small></p>
<li>依存されている全てのオブジェクトに共有ロックを取得することにより、宙に浮いたオブジェクト依存関係の生成が防止されました。  (Bertrand Drouvot) (18)(17)(16)(15)(14)</li>
<p>
共有ロックは依存されているオブジェクトの削除と衝突しますので、これまであった競合状態を排除することができます。
</p>
<p>
例えば、これまでは、空スキーマの削除とスキーマ内へのオブジェクト作成の同時実行が両方成功して、無効なオブジェクト定義が残ることがありましたが、これからはどちらかのトランザクションが失敗します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c8cd3d697">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3a9909eda">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9bc0d96c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fa137727">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5100bdbd3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9d5a52da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c1588f92a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d44cd4674">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ef3d7b15e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=36b6ed260">&#167;</a></small></p>
<li>SERIALIZABLE分離モードに対する衝突の検出での競合状態が修正されました。  (Peter Geoghegan) (18)(17)(16)(15)(14)</li>
<p>
初期の空のbtreeインデックスを検査するときに衝突が見過ごされる可能性があり、競合しているトランザクションのコミットを許してしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2aa3c6d1f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d560e730e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8434c9385">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e321faaae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5d18105ca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2fc3e1b44">&#167;</a></small></p>
<li>バリアイベントの処理で競合状態が修正されました。  (Masahiko Sawada) (18)(17)(16)(15)</li>
<p>
この誤りにより、プロセスがハングアップする可能性がありました。典型的には、その際に以下ログメッセージが出力されます。待機イベントとしてはIPC型のProcSignalBarrierの待機となります。
</p>
<pre>
LOG:  still waiting for backend with PID %d to accept ProcSignalBarrier
</pre>
<p>
近年追加されたオンラインWALレベル変更などの機能によって、この問題がより目立つようになっています。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1a9b1cc18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a651b8a89">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cdb9b2830">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=159324a73">&#167;</a></small></p>
<li>同じロックグループに属するプロセス集合が同時に終了したときの競合状態が修正されました。  (Vlad Lesin) (18)(17)(16)(15)(14)</li>
<p>
この誤りは「PANIC:  latch already owned by PID ..」によるサービスのPANIC終了を引き起こす可能性があります。PostgreSQL本体の通常のパラレル問合せでは、リーダープロセスがワーカープロセスの終了を待たずに終了することが無いため、この問題は起きませんが、何らかの拡張で該当する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ae08eb168">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d489c4439">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=65d04df60">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d5cc6df60">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8007d1185">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c9b8b42">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e14b4ea4a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e8edf53f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e786fb5aa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=db4d12fc9">&#167;</a></small></p>
<li>テーブルのビジビリティマップ(VM)でビットをクリアする操作のWAL出力が修正されました。  (Melanie Plageman, Andres Freund) (18)(17)</li>
<p>
このようなVM変更がWALサマライズ処理で見落とされていて、誤ったインクリメンタルバックアップをもたらす可能性がありました。また、このようなVMページの必要時のフルページイメージWAL出力も行なわれておらず、壊れたページ書き込みが修正されないままとなる可能性がありました。これは後にIndex Only Scanでの誤った問い合わせ結果が生じるなどの、誤動作を引き起こすおそれがあります。
</p>
<p>
既存のバックアップやアーカイブWALに潜在的にデータ破損が含まれていることに留意してください。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=56bf5fa5d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0fb1da21">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7edec8b57">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b01c31eef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f581fa729">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c0d9864f5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9171f77db">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d7feebfb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=067213430">&#167;</a></small></p>
<li>WALサマライズ処理でのタイムライン変更時のハングアップが防止されました。  (Robert Haas) (18)(17)</li>
<p>
スタンバイサーバで、以下のログメッセージがwalsummarizerプロセスから継続的に出力される動作が報告されました。
</p>
<pre>
ERROR:  could not read WAL from timeline .. at ...: invalid record length ...
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dfb96277d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18f0de6b8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=499d9eabb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bdcea66f0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d299d6ab">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d28cdf46e">&#167;</a></small></p>
<li>スタンバイ昇格のときのロジカルデコーディングのタイムライン選択で、競合状態が修正されました。  (Bertrand Drouvot) (18)(17)(16)</li>
<p>
スタンバイ側で実行中のロジカルデコーディングが「ERROR:  requested WAL segment has already been removed」で失敗する可能性がありました。再試行すれば成功するため恒久的な問題はありませんが、可用性としては有害でした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b4bd13850">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=16b89ff04">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cd687c44">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a04624da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4bff3aa51">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab5334d8b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9b49e5b4">&#167;</a></small></p>
<li>タイムラインを切替するときのwalreceiverの接続文字列の露出が回避されました。  (Chao Li) (18)(17)(16)(15)(14)</li>
<p>
pg_stat_wal_receiverビューは機微なデータを除いてサニタイズされた接続文字列を見せるべきです。しかし、タイムライン切替に際して既存のwalreceiverプロセスを再利用するときに、一時的に完全な接続文字列を見せてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b903d1792">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c89499a79">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e037a4199">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=065cbfb88">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e18b77153">&#167;</a></small></p>
<li>ロジカルレプリケーションで受け取ったタプルの列数が正しいかの検証を、アサートではなく実行時チェックで行うようになりました。  (Varik Matevosyan) (18)(17)(16)(15)(14)</li>
<p>
悪意の、または、壊れたパブリッシャは一貫性のない列数を送出するかもしれません。これによる深刻な悪影響をおよぼすシナリオは見つからなかったものの、より注意を払うべきと判断されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dc3db3a83">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=15f4e3d0c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=59759e1a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=871d4f5b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=510a05f07">&#167;</a></small></p>
<li>レプリケーションコマンド内の文字列パラメータへのクォート付加について、実装がクリーンアップされました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
レプリケーションコマンドを生成する様々な個所で、コマンドに挿入されるレプリケーションスロット名や他のパラメータのクォート付加について、十分な注意が払われていませんでした。そのため、レプリケーションコマンドで予期せぬエラーが発生するおそれがありました。
</p>
<p>
原理的には作りこまれたレプリケーションスロット名でSQLインジェクションも可能でした。ただし、ほとんどの場合、元からSQL実行が可能な管理者が行う操作であるため、実用的な害はないと考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=abb582555">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=14810cc0d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=26d6c19d0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=819e5b964">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a00840e8">&#167;</a></small></p>
<li>空のプリペアドトランザクションのロジカルデコーディングについて修正されました。  (Masahiko Sawada) (18)(17)(16)(15)(14)</li>
<p>
デコード可能な変更を起こさないプリペアドトランザクションは、先立つ「PREPARE」無しに、「COMMIT PREPARED」や「ROLLBACK PREPARED」を出力プラグインに送出していました。組み込みのサブスクライバでは、これはレプリケーションを壊します。他のプラグインでも同様に問題となると考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2289e65e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b563fc6bd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c4519c71">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=744618346">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0dbfb8520">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c2d34db0a">&#167;</a></small></p>
<li>スタンバイ昇格後のUNLOGGEDシーケンスのデータ破損が修正されました。  (Fujii Masao) (18)(17)(16)(15)</li>
<p>
これまでは、プライマリで作られてスタンバイにレプリケートされたUNLOGGEDシーケンスに、スタンバイ昇格後にアクセスすると、「ERROR:  bad magic number in sequence」などのエラーや、アサート失敗が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=22af34b98">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=627605713">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1ed6a9a0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=913d3b610">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d2980067b">&#167;</a></small></p>
<li>カスケードスタンバイでのWALアーカイブによるリカバリからストリーミングに復帰するときの再接続失敗が、修正されました。  (Marco Nenciarini) (18)(17)(16)(15)(14)</li>
<p>
このとき「ERROR:  requested starting point ... is ahead of the WAL flush position」が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bef46aed3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=331016322">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2cf28d1b9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5dbeb69bc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f64cc83f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fb3c6389">&#167;</a></small></p>
<li>WALリプレイが一貫性のあるデータベース状態に達する前にホットスタンバイ接続を受け付ける動作が防止されました。  (Nikhil Sontakke) (18)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7673dfe77">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=311e66df9">&#167;</a></small></p>
<li>スタンバイサーバで、ローカルにpg_database.dathasloginevtのクリアを試みないようになりました。  (Ayush Tiwari) (18)(17)</li>
<p>
スタンバイで実行が試みられていましたが、これは機能しておらず、また、プライマリでの変化がすぐに反映されて上書きされるので不要な動作でした。
</p>
<p>
loginのイベントトリガを削除した後にスタンバイに接続したときに、「FATAL:  cannot acquire lock mode AccessExclusiveLock on database objects while recovery is in progress」が出て接続できない動作が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=97b5c5aaa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4a375527a">&#167;</a></small></p>
<li>使われなくなったレプリケーションスロットを削除するときの競合状態が回避されました。  (Xuneng Zhou) (18)(17)</li>
<p>
削除直後のスロットの共有メモリエントリを他セッションが再利用した場合、誤ったロック解放と誤ったログメッセージ（異なるスロット名やデータベースOIDが使われる）が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08458bcae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ea834d747">&#167;</a></small></p>
<li>一時的なレプリケーションスロット（初期化途中の論理レプリケーションスロット）を削除するときの競合状態が回避されました。  (Zhijie Hou) (18)(17)(16)(15)(14)</li>
<p>
これまでの実装では、スロットを解放した後にスロットの共有メモリエントリにいくらか追加的な更新を実行していました。これは他セッションが直ちに再利用するかもしれないため、安全ではありません。本修正で、一時スロットには、この更新を行なわないようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f833c9207">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=080d61f07">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51e79222c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4eb59d40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=968c50845">&#167;</a></small></p>
<li>ロジカルレプリケーションのテーブル初期同期で、進捗報告が古い内容となっていた問題が修正されました。  (Shinya Kato) (18)(17)(16)(15)(14)</li>
<p>
これまでは、サブスクライバのpg_stat_progress_copyビューは、データコピーが終わった後でも、初期COPY操作をアクティブとして表示していました。同期がパブリッシャに追いつくまで、古いエントリが表示されたままでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9cd9b4d7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f2acab534">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d140237da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b5f7e7569">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e3c4e3746">&#167;</a></small></p>
<li>バックアップに失敗したなら、ベースバックアップの進捗がクリアされるようになりました。  (Chao Li) (18)(17)(16)(15)</li>
<p>
これまで、pg_stat_progress_basebackupビューは、レプリケーションクライアントが切断するまで、古い進捗情報を表示し続けていました。標準付属のpg_basebackupであれば、失敗した後に即座に切断しますが、他のバックアップを取得するクライアントはそうであるとは限りません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b70000837">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e7564ee8c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2ea6bfed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7cbd80340">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf7530cf7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2ad214dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a240e8cd2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fffa4d870">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a8fb98b7b">&#167;</a></small></p>
<li>設定track_functionsが有効であるとき、実行時統計情報(pgstats)のエントリの同時削除のためにPANICが生じる可能性があり、修正されました。  (Sami Imseih, Michael Paquier) (18)(17)(16)(15)</li>
<p>
「PANIC:  cannot abort transaction .., it was already committed」が出るケースが報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5cc59834b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2e0c61aed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf4616b59">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e9e62193">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a4f389dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39e649d44">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c457ea15">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=75aca8b93">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe464e9e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=afb076b29">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e34b1ff5d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e4771825">&#167;</a></small></p>
<li>対応する共有ハッシュテーブルのエントリに対するメモリ領域取得に失敗した後、壊れた実行時統計情報(pgstats)のローカルエントリをクリーンアップするようになりました。  (Niall Newman) (18)(17)(16)(15)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=89fc6a7c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2fd8d45ec">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc9283b21">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=636bcd6a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=10e20e59e">&#167;</a>これを行なっていなかったため、次にローカルエントリが使われたときに、NULLポインタ参照によるクラッシュが発生しました。
</p>
<p></small></p>
<li>読み込みや書き込みの失敗後に誤ったI/O操作統計が記録されないように、修正されました。  (Bertrand Drouvot) (18)</li>
<p>
各種のWAL読み書きに処理に失敗したときにエラーを意味する負の値がそのまま統計値のカウントに使われていて、pg_stat_ioビューなどで参照されるWALのI/O統計に誤った値が混入する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=13f940b4b">&#167;</a></small></p>
<li>PL/Perlで、不正なPostgreSQL::InServer::ARRAYオブジェクトを扱うときのNULLポインタ参照によるクラッシュが回避されるようになりました。  (Xing Guo) (18)(17)(16)(15)(14)</li>
<p>
PostgreSQL::InServer::ARRAYはPL/Perl関数に引数でPostgreSQLの配列を渡すときに使われるperlのオブジェクト型です。PL/Perl関数からPostgreSQLの配列を返すときにも使用できます。検査が不足していて、引数に由来せず適切な内部構造を持たないPostgreSQL::InServer::ARRAYオブジェクトを返すとクラッシュを引き起こせました。
</p>
<pre>
（クラッシュ発生例）
=# CREATE FUNCTION f102() RETURNS integer[] AS $$
     return bless {}, "PostgreSQL::InServer::ARRAY"; $$ LANGUAGE plperl;
=# SELECT f102();
server closed the connection unexpectedly
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e430ecc59">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d424d06ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3854f4afc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9b2a6ccc4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e520ad34b">&#167;</a></small></p>
<li>PL/Pythonで、Pythonのシーケンスオブジェクトとマッピングオブジェクトを扱うときにエラーを正しく検査するようになりました。  (Richard Guo) (18)(17)(16)(15)(14)</li>
<p>
hstore_plpython拡張やjsonb_plpython拡張を使って、PL/Python関数の戻り値をhsotre型やjsonb型に変換している場合に該当する問題です。これまでは、壊れたオブジェクトやハンドルされない例外によって、NULLポインタ参照によるクラッシュが発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=53482fcb9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3dc59c173">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e92f23bde">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12bff46ff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b7719f74">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=309dc4526">&#167;</a></small></p>
<li>libpqで、pqReadData()の実行中にSSLまたはGSSの復号バッファに残っている未処理バイトを常にすべて取り出すようになりました。  (Jacob Champion) (18)(17)(16)(15)(14)</li>
<p>
例外的なケースですが、大きなメッセージのサーバからの届き方によっては、バッファがいっぱいになることでlibpqがソケット到着を誤って待ち続けて、APIを呼び出すクライアントアプリケーションがハングアップしてしまう可能性がありました。
</p>
<p>
pqReadData()はサーバ側からデータを読むlibpqの内部実装関数です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eeb2940ae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2167302b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c162810a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d3f329656">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4ecba7fa3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b018b5d1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f8745543">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb0a54518">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=177a2a2e3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=477bc27a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=05908afcd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d3888c90a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=536512f34">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=27761c015">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0958c3ea4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6243ea6c3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21a6c69ea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f5f569713">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9eb70c9c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=87c3a79ea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bab0a2db7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=56988064b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5ba13f8c0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7532f2117">&#167;</a></small></p>
<li>libpqのメモリ不足状態の処理が改善されました。  (Anthonin Bonnefoy) (18)</li>
<p>
COPYデータ読み込みや関数呼び出しの途中に、非同期メッセージ処理でメモリ不足になった場合にも、直ちにエラーを出すようになりました。これまでは、セッション切断された状態で処理が継続されていて、エラー発生が遅れたり、不適切なエラーが出る可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8380013cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6b46a5d1b">&#167;</a></small></p>
<li>libpqのトレース機能が、新しい形式のBackendKeyDataメッセージとCancelRequestメッセージを正しく出力するようになりました。  (Anthonin Bonnefoy) (18)</li>
<p>
これらのプロトコルメッセージは固定長から可変長に仕様変更されましたが、トレース機能では固定長を想定したままとなっていたため、「mismatched message length」という警告が出力されていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0766bc57e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dd5eca055">&#167;</a></small></p>
<li>libpqが30000バイトを超えるParameterDescriptionメッセージを受け付けられるようになりました。  (Ning Sun) (18)(17)(16)(15)(14)</li>
<p>
libpqは受信メッセージの妥当性検査として、「長くなりうるメッセージ型」以外について長すぎるメッセージを弾きます。ParameterDescriptionは「長くなりうるメッセージ型」として扱われていなかったため、メッセージ長が30000バイトを超えるとエラーになっていました。この制限により、7498個を超えるパラメータを持つプリペアドステートメントに対するPQdescribePrepared()が失敗していました。この数のパラメータはまれな用法ですが仕様の範囲内です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b1ab4bc52">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4183c667">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8d516d2b9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0f63b74a4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b79c8d1a">&#167;</a></small></p>
<li>ecpgコンパイラのNULLポインタ参照によるクラッシュが修正されました。  (Jehan-Guillaume de Rorthais) (18)</li>
<p>
構造体の内側に入れ子になった共用体を含むDECLAREセクションをもつ.pgcコードを変換しようとすると、ecpgコマンド実行がクラッシュしました。
</p>
<pre>
（ecpgコマンドがクラッシュするコード例）
EXEC SQL BEGIN DECLARE SECTION;
    struct s1
    {
        char STR1[10];
        union u1
        {
             int NUM1;
             int NUM2;
        } U1;
    } S1;
EXEC SQL END DECLARE SECTION;
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=917fdbc63">&#167;</a></small></p>
<li>ecpgのGET DESCRIPTOR文とSET DESCRIPTOR文で、記述子ヘッダ項目を複数指定する構文が拒否されるようになりました。  (Masashi Kamura) (18)(17)(16)(15)(14)</li>
<p>
これまでも文法上はこの構文が許されていましたが、実装は実際には複数のヘッダ項目に対応できておらず、指定すると壊れたCコードが生成されていました。
</p>
<p>
本修正で構文解析処理でもドキュメント上でもヘッダ項目は1つだけに変更されました。これは非互換性を含む変更です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=081434b0f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe8c0a762">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d4b73cfd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bfeddcf09">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e8fd9f7a">&#167;</a></small></p>
<li>psqlのパイプラインモードにおける遅延エラーの問題が修正されました。  (Michael Paquier) (18)</li>
<p>
Syncメッセージへの応答としてサーバがエラーを報告する場面（遅延制約の違反など）で、psqlがハングアップしたり、アサート失敗したりする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e9bc4074">&#167;</a></small></p>
<li>psqlの拡張表示（expanded）の整形出力で、行の幅が揃うようになりました。  (Pavel Stehule) (18)(17)(16)(15)(14)</li>
<p>
テーブルのデータ行がレコードヘッダ行より狭い場合、データ行の幅がレコードヘッダ行に合わせられず、次のように桁のずれた出力になっていました。
</p>
<pre>
（ずれた出力の例）

+-[ RECORD 1 ]-+
| a | 10 |
| b | 20 |
+---+----+

（修正後の出力例）

+-[ RECORD 1 ]-+
| a | 10       |
| b | 20       |
+---+----------+
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=07a6c262b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=efd885d05">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1edbe6695">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=022ba5c61">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4ca91ea1">&#167;</a></small></p>
<li>psqlの特別変数WATCH_INTERVALについて、既定の上限が強制されるようになりました。  (Sven Klemm, Daniel Gustafsson) (18)</li>
<p>
大きすぎる値(1000000超)を設定しようとすると、psqlはエラーを報告するものの、その値を適用してしまっていました。修正後は、上限を超える値は拒否され、変数の値は変更されません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e0c641ebb">&#167;</a></small></p>
<li>psqlの「\l+」でデータベースサイズを表示する権限検査が修正されました。  (Christoph Berg) (18)(17)(16)(15)(14)</li>
<p>
サーバ側のpg_database_size()は、pg_read_all_statsロールの権限を持つ利用者に対して、対象データベースへのCONNECT権限がなくてもすべてのデータベースのサイズの参照を許します。しかしpsqlはこの仕組みを考慮せず、CONNECT権限を持つ利用者以外に対してはこの関数を呼び出していませんでした。
</p>
<p>
修正後は、「\l+」の権限検査にpg_read_all_statsロールの権限（USAGE）の確認が加わり、pg_database_size()の権限規則と一致するようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=77aeca802">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f2d6cf880">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41949c6f3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=844bc718a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e6e8a3078">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e19081da">&#167;</a></small></p>
<li>psqlの「\df」のタブ補完で、プロシージャも候補に含めるようになりました。  (Erik Wienhold) (18)(17)(16)(15)(14)</li>
<p>
「\df」コマンド自体はプロシージャも表示対象に含めるよう拡張されていましたが、タブ補完の候補は関数だけを表示し続けていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=558e0de6d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=598af79b1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=355a4fcf9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9afdb6d1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c25737c89">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2d44bb900">&#167;</a></small></p>
<li>pgbenchのスレッド安全性のバグが修正されました。  (Fujii Masao) (18)(17)(16)(15)</li>
<p>
pgbenchを複数スレッドで実行し、かつ「--verbose-errors」オプションを指定した場合、異なるスレッドが同じバッファを使ってエラーメッセージを組み立てようとし、ログ出力が壊れる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=98dd6c204">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=52b3e7001">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6432a4cd6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f18fcd9a4">&#167;</a></small></p>
<li>pg_combinebackupで、コピー元ファイルが想定より小さい場合に無限ループが発生することがあり、防止されました。  (Peter Eisentraut) (18)(17)</li>
<p>
「--copy-file-range」を指定して合成フルバックアップを再構築する過程で、ファイルが0バイトしかコピーできなかった場合をエラーとしていなかったため、試行が繰り返されてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d36b72894">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=090ce6934">&#167;</a></small></p>
<li>pg_createsubscriberで、エラー発生後にパブリッシャ側オブジェクトのクリーンアップが行なわれない場合があり、修正されました。  (Nisha Moond) (18)(17)</li>
<p>
pg_createsubscriberは、論理レプリケーションオブジェクトを作成した後にエラーを起こした場合、パブリッシャ上に作成したパブリケーションとレプリケーションスロットを削除する必要があります。一部のエラーケースでは削除が行われず、pg_createsubscriberの再実行のために手動での削除が必要でした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=196b4b5ae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c03784a21">&#167;</a></small></p>
<li>pg_recvlogicalの出力ファイルが、ソースクラスタのグループ読み取り権限に従って作成されるようになりました。  (Fujii Masao) (18)(17)(16)(15)(14)</li>
<p>
pg_recvlogicalはこの挙動についてドキュメントに記載されていたにもかかわらず、実際にはソースクラスタのグループ読み取り権限を反映した書き出しが行なわれず、常にファイル所有者の読み書きのみを許すモードが使われていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=89b4b3ae3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ddd12d1a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9590dcfca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba9833a75">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5552a15a3">&#167;</a></small></p>
<li>pg_restoreの「--statistics」および「--statistics-only」オプションの一貫しない挙動が修正されました。  (Chao Li, Michael Paquier) (18)</li>
<p>
「--schema」「--table」などの選択的リストアオプションと組み合わせた場合に意図通りの要素がリストアされませんでした。pg_dumpで対象選択オプションを組み合わせた場合と同様に動作するように修正されました。
</p>
<pre>
（誤動作例）
$ psql -d db1 &lt;&lt;EOS
CREATE TABLE t119 AS SELECT g id, g % 5 n FROM generate_series(1, 20) g;
CREATE STATISTICS s119 ON id, n FROM t119;
ANALYZE;
EOS

$ pg_dump --statistics -Fc db1 -f db1.dmp
（プランナ統計情報を含むダンプファイルを作る）

$ pg_restore --table t119 --statistics-only -f - db1.dmp
（→「t119テーブルの統計情報のみをリストア」の意図だが、リストア内容が空になる）

$ pg_restore --statistics --table t119 -f - db1.dmp
（→「統計情報を含めてt119テーブルをリストア」の意図だが、拡張統計情報が欠損する）
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42ffdedcf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=477efef08">&#167;</a></small></p>
<li>vacuumdbの「--missing-stats-only」が、パーティションテーブルに対する式インデックスを処理対象から除外するようになりました。  (Baji Shaik) (18)</li>
<p>
これまで、本オプションのvacuumdb実行では、パーティションテーブルに式インデックスがあると、常にそのパーティションテーブルにANALYZEを実行しようとしていました。しかし、統計情報は子パーティションのインデックスに作成されても、パーティションテーブルのインデックスには作成されないため、意味がありませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7e085aabd">&#167;</a></small></p>
<li>contrib/amcheckで、btreeインデックスのメタページの「allequalimage」フラグの破損が報告されない問題が修正されました。  (Chao Li) (18)</li>
<p>
btreeインデックスを検査する関数は、これまでインデックスキー列のいずれかにinterval_ops演算子クラスを含む場合のみ正しく動作していて、そうでないインデックスでこの破損が見逃される可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c32bbc8">&#167;</a></small></p>
<li>contrib/amcheckの GINインデックス検証関数でメモリリークが修正されました。問い合わせが終わるまで未開放メモリが蓄積します。  (Kirill Reshke) (18)</li>
<p>
大きなGINインデックスの検証でメモリ使用量が増大するおそれがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80cfd8aef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f8ab91c1">&#167;</a></small></p>
<li>contrib/amcheckで、ショートヘッダのvarlenaデータムが正しく扱われるように修正されました。  (Andrey Borodin) (18)(17)(16)(15)(14)</li>
<p>
この誤りで、btreeインデックス検証で無駄な処理が生じる可能性がありますが、それ以上の悪影響は無いと考えられます。
</p>
<p>
varlenaデータムとはPostgreSQL実装内で使われる長さとデータ本体からなるデータ構造です。ショートヘッダは長さをあらわすのに1バイトだけ使う形式です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=897e79486">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8abb8a155">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c89a1ca01">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4284476c0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=af09b18cb">&#167;</a></small></p>
<li>contrib/btree_gistで、float4とfloat8の演算子クラスにおける「NaN」の扱いが修正されました。  (Bill Kim, Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
各種の比較関数と、GiSTのpenalty関数、distance関数が「NaN」を考慮しておらず、「NaN」を渡されたときに誤った結果を返していました。
</p>
<p>
本修正の適用後、float列のbtree_gistインデックスに「NaN」のエントリが含まれる可能性がある場合は、それらのインデックスの再構築を推奨します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a47005f0b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e1d07792">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d215d2cc2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d569ccd40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=98dd4406f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=255bce448">&#167;</a></small></p>
<li>contrib/btree_gistで、GiSTインデックス構築時のbit型とvarbit型の値のソートが修正されました。  (Tom Lane) (18)</li>
<p>
これまでbit型の値がbytea型であるかのようにソートされていました。これは明白な誤動作を引き起こすことはありませんでしたが、型本来のソート順に一致しない並びで構築されるため、非効率なインデックスになりました。
</p>
<p>
本修正の適用後、bit列上のbtree_gistインデックスの再構築を推奨します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=11cb9c431">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=558c4ea9a">&#167;</a></small></p>
<li>contrib/btree_gistで、非等価（<>）演算子を使った検索が修正されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
可変長データ型の場合、非リーフインデックスページを走査するコードが誤った比較関数を適用していました。これは誤った問い合わせ結果、および場合によってはクラッシュにつながる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc6649abe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c519207">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86992769e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0663382c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f2a1b3d3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=286f9a3ce">&#167;</a></small></p>
<li>contrib/dblinkとcontrib/postgres_fdwで、use_scram_passthroughオプションについて、ユーザマッピングの設定が外部サーバの設定より優先されるよう修正されました。  (Matheus Alcantara) (18)</li>
<p>
これまでは外部サーバ側の設定が優先されていましたが、これは他の外部テーブルオプションの挙動と一貫していませんでした。他の接続オプション（sslcertやsslkeyなど）と同様に、外部サーバのオプションは共通のデフォルト値を提供し、ユーザマッピングのオプションがそれを上書きする扱いに統一されました。
</p>
<p>
これは非互換性を含む変更と言えます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=88d7748d2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=130396e6c">&#167;</a></small></p>
<li>contrib/dblinkの外部データラッパのuse_scram_passthroughオプションが拒否されるようになりました。  (Matheus Alcantara) (18)</li>
<p>
このオプションは外部サーバとユーザマッピングに対してのみ意味を持ちますが、dblinkは外部データラッパ（dblink_fdw）レベルでもこのオプションを受け付けていました（そして受け付けた設定を無視していました）。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cd777e27e">&#167;</a></small></p>
<li>contrib/hstore_plperl、contrib/jsonb_plperl、contrib/jsonb_plpythonで保護されていない再帰とループがあり、修正されました。  (Aleksander Alekseev) (18)(17)(16)(15)(14)</li>
<p>
深くネストしたjsonb値を扱うときのスタックオーバーフロー（によるクラッシュ）が防止されました。また、Perlのオブジェクト参照の循環チェーンをたどるときに生じる無限ループが割り込み可能になりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e3b7a43fa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3df0b7755">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b0f3465b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a6f23c3ad">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=639fff511">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d65cf6f80">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4efef9d18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60a1d712a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fbbabb0a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f6b2295f">&#167;</a></small></p>
<li>contrib/intarrayでプランナ統計情報のカタログキャッシュエントリの解放漏れが修正されました。  (Man Zeng) (18)(17)(16)(15)(14)</li>
<p>
この解放漏れにより、「WARNING:  resource was not closed: cache pg_statistic ..」のような警告が発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e7544c518">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=94b57ab54">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=273be484a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=702a6d5f6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a96b051a9">&#167;</a></small></p>
<li>contrib/ltreeで比較関数における整数オーバーフローが修正されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
約14,653個を超えるラベルを含むltree値は、オーバーフローによって誤った比較結果を返していました。btreeインデックスにそのような値が含まれている場合、破損している可能性があるため、本修正の適用後に再構築することを推奨します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c3e36a9a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c391c00d9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aca944e33">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1bec6b1c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f528a5606">&#167;</a></small></p>
<li>contrib/pgcryptoで、OSSLCipherオブジェクトの使用中にエラーが発生した後の二重解放によるクラッシュが回避されました。  (Yuelin Wang) (18)(17)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=020426268">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2aa6be6e6">&#167;</a></small></p>
<li>contrib/pg_prewarmのautoprewarmワーカの範囲外アクセスが修正されました。  (Matheus Alcantara) (18)</li>
<p>
このコードは、配列の末尾の1つ先から値を取り出そうとしており、セグメンテーション違反によるクラッシュを引き起こす可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3bf2cb225">&#167;</a></small></p>
<li>contrib/pg_surgeryのheap_force_kill関数とheap_force_freeze関数で、配列の範囲外書き込みが修正されました。  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
オフセット番号がMaxHeapTuplesPerPage（ページあたりの最大タプル数、291など）に等しいTIDを変更しようとすると、確保された配列の末尾の1バイト先に書き込み、サーバをクラッシュさせる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2b09f8a91">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0bcf19c9e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=daf8bc7d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51f63ba2b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1eda3eb07">&#167;</a></small></p>
<li>contrib/pg_surgeryで、64K要素を超えるTID配列による無限ループが回避されるようになりました。  (Andrey Rachitskiy) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f24c8237">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19f0391df">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b6c99d96">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb28b6f24">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=395700f48">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e9d53cf45">&#167;</a></small></p>
<li>contrib/spiのrefint拡張で、check_foreign_key()関数のNULLポインタ参照が回避されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
ON UPDATE CASCADEの場合、参照列の新しいキー値がNULLであると、クラッシュが発生していました。これはCVE-2026-6637の修正の見落しですが、その前からあったコードも正しいものではありませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed0c4d5af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6b4de201e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb93f10e2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=77b2d18e9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1de0a711d">&#167;</a></small></p>
<li>contrib/segで、確実性指示子「~」を持つセグメントの値が正しく出力されるように修正されました。  (Ewan Young) (18)(17)(16)(15)(14)</li>
<p>
seg型の出力関数seg_out()はセグメントの上限に付いた「~」を出力していませんでした。さらに悪いことに、下限に「~」があり上限に指示子がない場合、上限がまったく出力されませんでした。なお、文字列としての出力が不正であるだけで、演算結果に影響はありません。
</p>
<pre>
（誤動作例：2番目と3番目が誤動作）
db1=# SELECT '~1 .. ~5'::seg, '1 .. ~5'::seg, '~1 .. 5'::seg;
   seg    |  seg   |  seg
----------+--------+--------
 ~1 .. ~5 | 1 .. 5 | ~1 ..
(1 row)
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0004cab4d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bcbbd070d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=504ca0513">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3aa2083a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=58b91fc73">&#167;</a></small></p>
<li>contrib/xml2のxpath_nodeset()関数で名前空間ノードを問合せたときのクラッシュが修正されました。  (Andrey Chernyy, Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
以下のように、query引数に「//namespace::」を指定した場合にクラッシュするケースが報告されました。
</p>
<pre>
db1=# SELECT xpath_nodeset(
        '&lt;root xmlns:foo="http://example.com/foo"&gt;&lt;child/&gt;&lt;/root&gt;',
        '//namespace::*');
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=91b57eade">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4a49ab289">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18955d412">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bc5775149">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f3f901a53">&#167;</a></small></p>
<li>OpenSSL 4を使ったPostgreSQLのビルドに対応しました。  (Daniel Gustafsson) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=27cf3b5af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bcabfcce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fb8befa7b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7f70fa1b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=086652c02">&#167;</a></small></p>
<li>タイムゾーンデータファイルをtzdataリリース2026cに更新しました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
アルバータ州（America/Edmonton）は、2026年11月から年間を通したUTC-06（実質的に、恒久的なサマータイム）になります。このリリースでは、それ以降のタイムゾーン省略形は「CST」と仮定しています。この仮定は将来変更される可能性が高いのですが、新しい省略形に何が使われるかは明らかになっていません。
</p>
<p>
モロッコ（Africa/Casablanca）は、2026-09-20に、サマータイムの切り替えなしの恒久的なUTC+00に移行します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3c16aa293">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5f67124fa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=669438aed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=796c275a0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=af7be5672">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=812cc1a73">&#167;</a></small></p>
<li>古いマイナーバージョンが生成したWALのリプレイ時の自己デッドロックが修正されました。  (Andrey Borodin) (16)(15)(14)</li>
<p>
この不具合は前回のマイナーリリース(16.14、15.18、14.23)で導入されました。より古いマイナーバージョンのプライマリに追従するスタンバイサーバで、startupプロセスがハングアップしてレプリケーションが先に進まなくなりました。
</p>
<p>
共有行ロックで使われるマルチトランザクションに関するWALレコードのリプレイで問題が発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42a3194e5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2dfe75f98">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2bb60eb4f">&#167;</a></small></p>
<li>変数が1つも渡されていない場合でも、未定義のjsonpath変数をエラーとして扱うようになりました。  (Andrey Rachitskiy) (16)(15)(14)</li>
<p>
jsonbの「@?」演算子と「@@」演算子がjsonpath式の中で使う変数を渡せない、という場合のコードパスでは、未知のjsonpath変数が、本来の期待であるエラーの発生ではなく、JSONのnullとして誤って扱われていました。期待される動作でないことに加えて、この誤りは無制限のメモリ消費を引き起こす可能性がありました。
</p>
<pre>
（誤動作例）
db1=# select '{"A":1}'::jsonb @@ '$"no_such_var" == 1';
 ?column?
----------
 f
(1 row)

db1=# SELECT '{"A":1}'::jsonb @? '$"no_such_var"';
 ?column?
----------
 t
(1 row)

（修正後は以下のエラーが出る）
ERROR:  could not find jsonpath variable "no_such_var"
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1daeef6e0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8af173e28">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=364014327">&#167;</a></small></p>
<li>Visual Studio 2026を使ったPostgreSQLのビルドに対応しました。  (Andrew Dunstan) (16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bc5a873a8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eba7f1dc0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f1c579fc4">&#167;</a></small></p>
</ol>

<div>
<a href="https://www.sraoss.co.jp/prod_serv/support/pgsql-mainte/?utm_source=sraoss-techblog&utm_medium=referral&utm_campaign=under-article-pgsql" rel="noopener" style="color:initial;" target="_blank" class="no-ext"></p>
<div style="background-color:#DAEFF6; padding:20px; border-radius:8px; text-align:center;">
SRA OSSでは、PostgreSQL/Pgpool-II のサポートを提供しております。<br />
詳しくは<strong style="color:#2581c4;">弊社ホームページ</strong>をご覧ください。
</div>
<p></a>
</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PostgreSQL 15.19 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/15-19/</link>
		
		<dc:creator><![CDATA[データベース技術グループ]]></dc:creator>
		<pubDate>Tue, 01 Sep 2026 04:31:54 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 15]]></category>
		<category><![CDATA[PostgreSQL 15.18]]></category>
		<category><![CDATA[PostgreSQL 15.19]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=21098</guid>

					<description><![CDATA[このリリースは 15.18 からの修正リリース（2026年 8月 13日リリース）です。 15.X からのアップデートではダンプ、リストアは不要です。 しかしながら、最初の 3項目のセキュリティ修正は、設定の修正やデータ ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 15.18 からの修正リリース（2026年 8月 13日リリース）です。<br />
15.X からのアップデートではダンプ、リストアは不要です。</p>
<p>しかしながら、最初の 3項目のセキュリティ修正は、設定の修正やデータのクリーンアップが必要となるかもしれません。また、以下に記載の修正項目に該当する GiSTインデックスがある場合には、インデックス再構築が必要となります。</p>
<p>さらに、15.14 よりも前のバージョンからアップデートする場合には、<a href="/tech-blog/pgsql/15-14/" rel="noopener">15.14のリリース情報</a>も参照してください。</p>
<p><span id="more-21098"></span></p>
<h3>PostgreSQL 15.18 から 15.19 への変更点</h3>
<p>18.6, 17.11, 16.15, 15.19, 14.24 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<ol>
<li>ロジカルデコーディングの出力プラグインが厳格化されました。新たな設定パラメータoutput_plugin_librariesでの指定が必要となりました。(CVE-2026-6471)  (Jacob Champion) (18)(17)(16)(15)(14)</li>
<p>
これまでは、レプリケーションユーザがロジカルデコーディングむけに任意のライブラリを選ぶことができて（プラグイン名になどフルパス指定も可能）、さまざまな攻撃が可能でした。仕組みを変えずにこれを防げるようにするため、許可された出力プラグインのホワイトリストが導入されました。
</p>
<p>
PostgreSQL本体同梱のpgoutput（ロジカルレプリケーション用）とtest_decoding（単純なテキスト書き出し用）がデフォルトでoutput_plugin_librariesに含まれます。
</p>
<p>
加えて、pg_upgrade --checkで、新クラスタのoutput_plugin_librariesが 旧クラスタ（バージョン 17.x 以降）のレプリケーションスロットで使っているプラグインライブラリを許可していない場合、失敗するようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5d47df21e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a29b607d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=01992176e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e1252ee5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=99f205407">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf3842a64">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7082ce248">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=82fd68801">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fcccea97">&#167;</a></small></p>
<li>contrib/pgcryptoのPGP暗号化がサポートされない暗号化方式を検出するように、修正されました。(CVE-2026-14663)  (Daniel Gustafsson) (18)(17)(16)(15)(14)</li>
<p>
これまでは、OpenSSLが要求された暗号化方式を（例えば、FIPSモードであるため、あるいは、古いプロバイダがロードされていないために）拒否した場合に、pgcryptoはその失敗を知らせず、プレーンテキストを含む暗号化されないブロックに単にXORを適用していて、その「暗号化」は容易に解読可能でした。これは典型的には非推奨や非FIPSの暗号化アルゴリズム（cipher-algoオプション指定が blowfish/bf, twofish, cast5, 3des などの場合）で発生します。
</p>
<p>
これからはデフォルトでは、OpenSSLでサポートされない方式でのPGP暗号化がエラーになり、これまでの動作により不適切に暗号化されたメッセージの復号もエラーになります。pgp_pub_decrypt()関数、pgp_sym_decrypt()関数などのオプション引数の新たなオプションignore_cipher_failureに1を指定して実行すると、従来通りの振る舞いに戻ります。
</p>
<p>
前述の理由で不適切に暗号化されたメッセージを、'ignore-cipher-failure=1'オプションを指定して復号する場合には、OpenSSLの動作がそのメッセージを作成したときと同じでなければなりません。サポートされない暗号化方式が異なっている場合にはうまくいきません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba207f58f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe32b10fc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b05cfc693">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6ca6023ca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=472ef7e4a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7e29eb6f4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d97b3f58c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c5128ca0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7eed42aa8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba2a63faf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=953be116c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2c48c81f">&#167;</a></small></p>
<li>psqlがスクリプト化された「COPY ... FROM STDIN」コマンドに続くインラインデータを、COPY開始時のエラーであっても、読み飛ばすように修正されました。(CVE-2026-6464)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
これまでは「COPY」コマンドが行の読み込みを始める前に（例えば、対象のテーブルが無い、などで）エラーを起こした場合、psqlはこのことを認識できず、続くインラインデータを読んでSQLとして処理しました。これは良くて誤りであり、悪くするとSQLインジェクションを起こします。
</p>
<p>
これまでも、COPY開始処理が完了してサーバが「PGRES_COPY_IN」を返した後であれば、途中の行読み込みでエラーを起こしても、残りを読み飛ばすように動作していました。
</p>
<p>
本修正が実運用SQLスクリプトに影響を及ぼすことは無いと考えられますが、テスト用スクリプトでは意図的に「COPY ... FROM STDIN」コマンドが失敗するように作られている場合があります。そのような場合には各コマンドの後に「\.」というデータ区切り行を追加する必要があります。さもないと、読み飛ばす行が多すぎる結果になるかもしれません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6ab88d37">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=29921259e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=46fa1f6f3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2bdfd5cdc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3fdcfa8f7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5c51ae455">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cf01e213">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=900894d35">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dca6627de">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=db96e87f9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cdbabea7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7215c7e96">&#167;</a></small></p>
<li>EXECUTEやFETCHを実行するポータルの出力行型についてクロスチェックを行うようになりました。(CVE-2026-16239)  (Robert Haas) (18)(17)(16)(15)(14)</li>
<p>
EXECUTEとFETCHは2つのポータルを使います。外側の1つはそのステートメント自身のためで、内側の1つはクエリを代わって実行します。これまで、宣言された2つのポータルの行型を異なるものにできて、これを利用してサーバメモリ暴露や任意コード実行を引き起こせました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=64a65ead1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=37b8f3b0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60887d348">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7d150b5c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc933ce00">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f49beef2">&#167;</a></small></p>
<li>to_char()で、長いタイムゾーン省略形によるバッファオーバーランが修正されました。(CVE-2026-14669)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
これは容易にバックエンドプロセスのクラッシュができて、任意コード実行をもたらす攻撃も報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3294ab839">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fafe2380">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12a620686">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5dbeb69bc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f64cc83f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fb3c6389">&#167;</a></small></p>
<li>正規表現によるマッチ、分割の関数で、バッファオーバーランが修正されました。(CVE-2026-14664)  (Masahiko Sawada) (18)(17)(16)(15)(14)</li>
<p>
不正な文字エンコーディングのデータを渡すと、変換バッファの終端を過ぎた位置に書き込みが行なわれる可能性がありました。regexp_match()、regexp_matches()、regexp_split_to_table()、regexp_split_to_array()の各関数の動作が修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7df2aa8ef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b7e5c3f63">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e91dcfcca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3179253c2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=127a0673f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=890327639">&#167;</a></small></p>
<li>ascii()関数が不正な入力に対して頑健になりました。(CVE-2026-18024)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
不正な文字エンコーディングのデータが入力されることで、騙されて読むべきでない何バイトかを読んで返す可能性がありました。アサートが有効なビルドでは、アサート失敗も発生します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80ce920a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08e812c02">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=849da8210">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac450853d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3b925133b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42d333a78">&#167;</a></small></p>
<li>pg_restore_attribute_stats()関数でのマルチ範囲型の処理が修正されました。(CVE-2026-16238)  (OpenAI Security Research Team) (18)(17)(16)(15)(14)</li>
<p>
pg_restore_attribute_stats()はプランナ統計情報のダンプ、リストアで使われる関数です。
</p>
<p>
pg_restore_attribute_stats()はマルチ範囲型を元となる範囲型と単純に同様に扱っていました。これは境界ヒストグラムについては有効でしたが、他の種類の統計情報に対しては誤っていました。
</p>
<p>
誤った統計情報のリストアにより、不適切なプラン選択による問合せ実行の遅延や潜在的なプランナ誤動作の可能性が考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3d9262bb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08454e8b2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8d428c6e6">&#167;</a></small></p>
<li>scalarineqsel()が、tid型と想定される定数を実際にそうであるか検査するようになりました。(CVE-2026-14668)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
この想定は組み込みの演算子については成り立ちますが、悪意で作られた演算子には通用せず、クラッシュやサーバメモリ暴露を引き起こします。
</p>
<p>
scalarineqsel()は選択率の見積を返すプランナの内部実装関数の1つです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0d60ee717">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a2cb5a1cf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ebf896f4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=591192e2e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=005ffaa7f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=59205c7e9">&#167;</a></small></p>
<li>tsvector型とtsquery型の実装コードが（個々の要素、全体の長さの両面で）きわめて長い値に対して頑健になりました。(CVE-2026-14662)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
ドキュメントに記載されていた上限が、全てのコードパスで必ずしも強制されていませんでした。
</p>
<p>
本マイナーバージョンアップで、これまで許容されていたデータについて、以下のようなエラーが出るようになる可能性があり、仕様通りであるものの非互換変更ともいえます。
</p>
<pre>
ERROR:  lexeme is too long for tsvector ...
ERROR:  string is too long for tsvector ...
ERROR:  word is too long to be indexed ...
ERROR:  tsquery is too large
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cb947ca31">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e25135057">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe0b5bd6d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c1a8805a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f443d0a0a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c2ba321d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3b2238fbe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dddc8a69f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8e87bd473">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=84b6a7a06">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4f8b37b6b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e3014f37">&#167;</a></small></p>
<li>「FUNC_MAX_ARGS」を超える関数引数を処理する必要がない、と誤って想定していた様々な箇所が修正されました。(CVE-2026-14679)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
特に集約関数について、実際の引数の数の上限は「FUNC_MAX_ARGS - 1」ですが、パーサ段階では制限しておらず、後の処理で問題を引き起こしました。潜在的にバッファオーバーランの可能性がありました。
</p>
<p>
「FUNC_MAX_ARGS」はビルド時指定の定数でデフォルト100です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=92972e815">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f0e1aac7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=797e3cc4c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c67c4cf5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b417744a7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf44ff5e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42d9749b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a03f21da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a40f4b09">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=32e0d25d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb2fa2704">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7f462838">&#167;</a></small></p>
<li>internal型を引数や戻り値とする関数のSQLからの呼び出しを拒否するようになりました。(CVE-2026-14680)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
拒否するための既存の仕組みはありましたが、不十分であったため、明示的な検査が追加されました。
</p>
<p>
また、いくつかの集約関数のcombine処理で入力がNULLである場合に正しくSQLとしてのNULLを返すように修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21a00de43">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=54649de65">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb9e55297">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c0c1b2cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e926a9aac">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=155dacbc5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21d8cfb18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=722695db1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=83d0a083f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f308dd7c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6e861e19">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=913fe0c31">&#167;</a></small></p>
<li>ALTER TABLEコマンドで再構築されたとき、拡張統計オブジェクトの所有者が保たれるようになりました。(CVE-2026-6469)  (Masahiko Sawada) (18)(17)(16)(15)(14)</li>
<p>
これまでは拡張統計情報の対象テーブルに、列の型を変えるなどのALTER TABLEコマンドを実行したロールが、拡張統計オブジェクトの所有者になっていましたが、これは不適切な動作と判断されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=93b93f28f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1fa24127">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=75a03c569">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c3367ab5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fb6d1ca8d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=70a3b4e18">&#167;</a></small></p>
<li>EXTRACT()関数呼び出しを逆パースするときに、必要であればフィールド名をクォートするようになりました。(CVE-2026-15741)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
パーサはEXTRACT()のフィールド名としてどのような文字列リテラルも受け付け、検証は実行時まで先送りされます。関数呼び出しを格納して、解析する場合（例えばpg_dumpのとき）、文字列本体が逐語的に吐き戻されて、SQLインジェクションが可能でした。
</p>
<p>
逆パースはダンプ出力やpsqlでの定義表示で行なわれる処理です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a3832a757">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ddd9098a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5981fe370">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5e5ea74e3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=44ea6764b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=967acab87">&#167;</a></small></p>
<li>これまで検査ができていなかった個所について、データ型に対する「USAGE」権限を検査するようになりました。(CVE-2026-6470)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
「CREATE TYPE AS RANGE」、「ALTER TABLE OF」、および、格納される式を作成するコマンド（式を伴うビューやチェック制約の定義など）で、検査が行なわれていませんでした。これらの欠落により、「USAGE」権限を持たないロールでもデータ型に依存するオブジェクトを作成できて、データ型の所有者が後でデータ型を変更できなくなる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=efdb26072">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2e91f8548">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fd6d3e7e9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=24855357c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=97e277402">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=323af0a4e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb1bc525d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57f59ca1d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=671359605">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7a761fe40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c062734cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b6e45b4f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=424fb7160">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=278053843">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d1c8aa0b0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7ce056b17">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6dbedd48b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1a358b8f2">&#167;</a></small></p>
<li>行単位セキュリティ(RLS)に対して、ロールに依存したキャッシュされたプランを、ロール変更後に無効化するようになりました。(CVE-2026-14666)  (Ilya Staroverov, Shinya Kato, Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
ロールのメンバーシップや属性、データベース所有者の変更は、行単位セキュリティポリシーの振る舞いに影響がありますが、これまでは、キャッシュされた古い状態に基づくプランがそのまま使われていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=567286b76">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b12f56bf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1974acf23">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f5f2da795">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=17b6083db">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f4174aa84">&#167;</a></small></p>
<li>直接のSSL接続の後のGSSEncRequestメッセージを拒否するようになりました。(CVE-2026-14681)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
これまでサーバは、TLS暗号化接続が確立した後にもGSSAPI暗号化の要求を受け付けていました。これに成功すると、接続はTLS暗号化(SSL)を使っているけれども、pg_hba.confのルールとしてはGSS接続のように見えました。その結果、pg_hba.confでSSLを無効としていても、それを正しく強制できませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf1bb7e29">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=203a48209">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=067a64d40">&#167;</a></small></p>
<li>モックのSCRAM認証シークレットがより本物らしくなりました。(CVE-2026-14672)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
存在しないロールやSCRAMシークレットを持たないロールに対して、SCRAMログインが試みられた場合、PostgreSQLはモックのシークレットを生成して認証のハンドシェイクをとにかく行ない、攻撃者にそのことが分からないようにします。しかしながら、モックが固定のイテレーションカウントで作られていたため、観測可能な応答の差異がありました。
</p>
<p>
本修正で、モックにもscram_iterations設定パラメータの値を使って、より実際に使われているシークレットに似せるようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d192fa16">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=822143c4d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dec60e8ad">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fadbe882d">&#167;</a></small></p>
<li>ecpgアプリケーションでの範囲外書き込みが修正されました。サーバから不正なbytea型データを受け取ることで引き起こされます。(CVE-2026-16241)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
ecpgはbytea型の値は「\x」で始まることを検査せずに想定していました。壊れているか悪意のサーバは2バイトよりも短い文字列を送ってくるかもしれず、そのためにアプリケーションでのメモリ上書きが発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=457b8737a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a14ba29b1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c3c830272">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39f855e0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5737110b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74c59d062">&#167;</a></small></p>
<li>psqlの「\unrestrict」コマンドの引数でバッククォート展開をしないようになりました。(CVE-2026-18408)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
\restrict と \unrestrict は 17.6、16.10、15.14、14.19バージョンでのCVE-2025-8714の修正で導入されましたが、その中で見落としがありました。悪意のサーバからの応答で出力されたダンプにより、リストアを実行するユーザに意図せぬシェルコマンド実行をさせること（シェルコマンドインジェクション）ができました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0119aa30e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71ca694c7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0bfac9e1f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=33d0c63fb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=df245c374">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2006fca40">&#167;</a></small></p>
<li>pg_dumpにおいてpg_proc.protrftypesのエントリ数がFUNC_MAX_ARGSを超えないという前提が取り除かれました。(CVE-2026-19385)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
入力引数と出力引数の両方のエントリが存在する可能性があるため、この配列の長さがFUNC_MAX_ARGS（これは入力引数のみに制限するものです）を超えることは十分にあり得ます。仮にそうでは無いとしても、pg_dumpはサーバがpg_dumpと同じFUNC_MAX_ARGSの値でビルドされたと仮定することはできません。オーバーランが発生すると、pg_dump内部でのメモリ破壊を引き起こす可能性がありました。
</p>
<p>
pg_procシステムテーブルに関数定義が格納されて、protrftypes列にTRANSFORM句による変換のためのデータ型の配列が格納されます。FUNC_MAX_ARGSは実装内部の定数で、通常100です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86cd82bf4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3392cce5c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c2b16f5d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3299c2ba0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71ba5705d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57aa21f69">&#167;</a></small></p>
<li>tieされたPerlの配列やハッシュに対して、PL/Perlが堅牢化されました。(CVE-2026-14670)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
通常のオブジェクトとは異なる挙動をするtieされたオブジェクトは、メモリの上書きや、破損した結果配列の生成につながる可能性があり、その結果、後で問題が発生する可能性が高い状況でした。
</p>
<p>
tieは、配列やハッシュなどの変数に対して操作用のメソッド群を実装したオブジェクトに結びつける Perl の機能です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c48cd615">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=87c4b8219">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2d78c34f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=477a6bdb0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf4ae7c3b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d7fcfead3">&#167;</a></small></p>
<li>PL/PerlおよびPL/Tclにおけるメモリ割り当て計算時の整数オーバーフローが修正されました。(CVE-2026-14677)  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
これはコードの異なる個所で発生していたCVE-2026-6473と同様の問題で、同じ方法で修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1c1727cb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=028ee716a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b56cc7deb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bbdc0540">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1eb0d5380">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aff9dac1c">&#167;</a></small></p>
<li>contrib/amcheckの関数がインデックス式を実行する前にsearch_pathを制限するようになりました。(CVE-2026-14673)  (Noah Misch) (18)(17)(16)(15)(14)</li>
<p>
amcheckはそれらのインデックス式をテーブル所有者の権限で実行するため、呼び出し元がsearch_pathに依存する関数を乗っ取り、テーブル所有者の権限で任意のコードを実行できてしまう恐れがありました。デフォルトでは、amcheck関数の呼び出しはスーパーユーザーにのみ許可されているため、これは脆弱性には当たりません。しかし、もしその権限が他のユーザに付与されていた場合、ドキュメントで示されているよりも大きな危険が生じることになります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=557cc7186">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0a61fcde0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e41c72aff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2cc147318">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e43e74756">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39d792040">&#167;</a></small></p>
<li>contrib/fuzzystrmatchのlevenshtein()およびlevenshtein_less_equal()関数における整数オーバーフローが修正されました。(CVE-2026-15742)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
これらの関数に大きなコスト値を渡すと整数オーバーフローが発生し、無意味な結果が生じたり、場合によっては境界外書き込みを引き起こしたりする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=62c31b490">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e88eb4e76">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c4d51b627">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=61481aa0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74916136f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9505175f2">&#167;</a></small></p>
<li>contrib/pg_stat_statementsにおけるバッファオーバーランが修正されました。(CVE-2026-14676)  (Alvaro Herrera) (18)(17)(16)(15)(14)</li>
<p>
クエリの正規化処理において、正規化後の文字列が必要とするサイズが正確に考慮されていませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb02eba53">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a31ffc2d">&#167;</a></small></p>
<li>contrib/pg_trgmのGiST picksplit関数におけるデータ型エラーが修正されました。(CVE-2026-14678)  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
このエラーによりバッファの末尾を超えた読み取りを引き起こし、通常は不適切な分割判断の原因となっており、運が悪ければクラッシュに至る可能性もありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aa7b5815e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=849019a50">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1af08af69">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=24c88cd39">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7c82a88c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a74aa0854">&#167;</a></small></p>
<li>contrib/refintのプランキャッシュが削除されるようになりました。(CVE-2026-14671)  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
このキャッシュの挙動にはいくつかの深刻なバグがありました。特に、check_foreign_key()がカスケードUPDATEクエリに新しいキー値を埋め込んでしまうため、キャッシュされたプランでは、本来使用すべきキー値ではなく、最初に必要とされたキー値が再利用されてしまう問題がありました。最も簡単な解決策は、これを削除することです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=79a506228">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=66a5146dc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a572dd213">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b7b513d9a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5b72d0279">&#167;</a></small></p>
<li>並列GINインデックスの構築時に、テーブルのpg_class.reltuples値が正しく更新されるようになりました。  (Jan Nidzwetzki, Tomas Vondra) (18)</li>
<p>
並列ワーカーが処理した行数として初期化されていない値を報告する場合があり、その結果、reltuplesがInfinityやNaNといった不正な値になる可能性がありました。このような値が設定されると、その後のautovacuumやautoanalyze操作において、そのテーブルの処理が必要であると判断されなくなる可能性がありました。そうなると、この状態は自動的には解消されません。
</p>
<p>
reltuplesを正しい値にリセットするには、手動でANALYZEコマンドを実行するか、別のインデックスを作成する必要があります。  GINインデックスを持つテーブルがある場合は、reltuplesの値が妥当かどうかを確認することをお勧めします。以下のようなクエリが役立ちます。
</p>
<pre>
SELECT DISTINCT t.oid::regclass, t.reltuples
FROM pg_class t
  JOIN pg_index i ON t.oid = i.indrelid
  JOIN pg_class ic ON i.indexrelid = ic.oid
WHERE t.relhasindex AND ic.relam = 2742;
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5707d7517">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d4420a972">&#167;</a></small></p>
<li>非同期のAppendプランノードを再スキャンする際の、非同期読み取りの不適切な処理が修正されました。  (Alexander Korotkov, Gleb Kashkin, Etsuro Fujita) (18)(17)(16)(15)(14)</li>
<p>
上位のプランノードがAppendの出力をすべて読み取る前にAppendを再スキャンする場合、外部サーバー（例えばpostgres_fdwなど）に対して送信済の未完了リクエストをすべて破棄する必要があります。  サブプランのパラメータが変更された場合や、次回のスキャンでパーティションプルーニングによってサブプランが破棄される場合、この処理が正しく行われていませんでした。  その結果、クエリ結果が不正になったり、無限ループに陥ったり、アサート失敗が発生したりする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7d74b2644">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4ea497a92">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3704870b2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=894da35b3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7213cbfa0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cec48686a">&#167;</a></small></p>
<li>RANGEパーティションテーブルにおけるパーティションプルーニングの不具合が修正されました。  (David Rowley) (18)(17)(16)(15)(14)</li>
<p>
特定のケースにおいて、本来対象とすべきDEFAULTパーティションがスキップされ、その結果、クエリの結果から行が欠落して、誤った問い合わせ結果となる恐れがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9282a650">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=02e69be47">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=31f2acde5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9a0cd8e73">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5190732c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6098f35f4">&#167;</a></small></p>
<li>結果リレーションのプルーニング後に、ModifyTableプランノード内の外部データラッパーの状態を正しく更新するようになりました。  (Ayush Tiwari, Rafia Sabih) (18)</li>
<p>
以前は、実行時のパーティションプルーニングによって、対象のパーティションテーブルの一部のパーティションをスキャンする必要がないと判断された場合、そのテーブルに外部テーブルのパーティションが含まれていると、クラッシュや誤動作が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1ef917e3a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bba4e095d">&#167;</a></small></p>
<li>「BEFORE UPDATE」トリガーを持つテーブルに対して、「RETURNING OLD」を指定したUPDATE文で発生していた並行更新の処理漏れが修正されました。  (Dean Rasheed) (18)</li>
<p>
対象行が並行して更新された場合、「READ COMMITTED」分離レベルでは、RETURNING句で返される「OLD」値はすべて、更新後の行の値を反映している必要があります。しかし、トリガーが存在する場合、トリガー自体や最終的な出力行では正しい値が参照されていたにもかかわらず、古い値が返されてしまっていました。結果として、誤った問い合わせ結果が生じる可能性があります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7048e50f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4908225be">&#167;</a></small></p>
<li>複数の結合キーと多数のNULL値が存在する場合のハッシュ結合の性能問題が修正されました。  (David Rowley) (18)</li>
<p>
NULL値を持つタプルは他のどのタプルとも一致することはないため、ハッシュテーブルに挿入されるべきではありません。  これまでのコードでは、最後の結合列以外の列にNULL値が含まれる場合にこの処理が適切に行われていなかったため、NULL値を含む入力が多数あるとハッシュテーブルが著しく肥大化していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a71a348ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f70acc8a2">&#167;</a></small></p>
<li>RETURNING句の式における括弧で囲まれた「OLD」や「NEW」の解析処理が修正されました。  (Marko Grujic) (18)</li>
<p>
「(old).colname」や「(old).*」といった式が誤って処理され、実質的に「NEW」への参照に変換されていました。結果として、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9108fed3e">&#167;</a></small></p>
<li>value IN (array)式に対するプランナのNULL許容性および厳密性チェックが修正されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
これらのチェックは、配列オペランドが空でないことが既知である場合にのみ成功すべきですが、その点が考慮されておらず、本来適用されるべきではない最適化が適用されてしまう問題がありました。これにより、実際の配列が空であった場合、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9740c68ff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=277122036">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=26d6b7dc9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6fcee189b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=53470ffba">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=13b627a3e">&#167;</a></small></p>
<li>不適切な結合削除のロジックが修正されました。  (Matheus Alcantara, Richard Guo) (18)(17)(16)</li>
<p>
一部の特殊なケースにおいて、外部結合のNULL許容側由来の定数出力値が、本来NULLに置換されるべき場面でNULLに置換されない問題が発生し、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bc479627">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21f5e659e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cdcec567d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3e1fe25e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=72457f1df">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e40d07e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b308eb366">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d610d8e8b">&#167;</a></small></p>
<li>結合の削除処理において、PlaceHolderVarsのクリーンアップがより徹底されるようになりました。  (Richard Guo, Arne Roland) (18)</li>
<p>
この修正により、アサート失敗や誤った実行計画の生成（とそれに伴う誤った問い合わせ結果や予期せぬエラー）を招く可能性のあった様々なエッジケースが解消されます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e02526795">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aae47813a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18105e6db">&#167;</a></small></p>
<li>コンテナデータ型（配列、複合型、範囲型）の等価比較におけるハッシュ可能性に関する漏れていたチェックが追加されました。  (Andrei Lepikhov, Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
プランナは、ハッシュベースの実行計画を採用する前に、コンテナの構成要素の型のハッシュ化可能かどうかを検証する必要がありました。一部の箇所でこの手順が漏れていたため、実行時に「ERROR:  could not identify a hash function for type ...」という予期せぬエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=11aed8d19">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19152e3c2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf2bfe073">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=caebac5f1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=64778fac7">&#167;</a></small></p>
<li>プランナが、異なる等価性ルールを持つグループ化ステップより下位へ、WHERE句をプッシュダウンすることを避けるようになりました。  (Richard Guo) (18)</li>
<p>
非決定的照合順序でグループ化される列に対するテストは、その同じ照合順序を使用した比較である場合にのみ、安全にプッシュダウンできます。そうでない場合、グループ化によって統合されるはずだった行がフィルタリングされて、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=98d5d7ee6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe5d62951">&#167;</a></small></p>
<li>「EXCLUDE」句を指定している、または「ORDER BY」を指定していない、COUNTウィンドウ関数の誤った最適化が修正されました。  (Chengpeng Yan, David Rowley) (18)(17)(16)(15)</li>
<p>
これまで、このウィンドウ関数は該当しない場合でも単調増加するものとして扱われていました。そのため、誤った問い合わせ結果が生じる可能性がありました。
</p>
<pre>
（報告された誤動作例）
db1=# CREATE TABLE t41 (id int PRIMARY KEY, k int NOT NULL, v int);
db1=# INSERT INTO t41(id, k, v) VALUES
        (1, 1, 1), (2, 1, NULL), (3, 1, 1), (4, 2, 1);

db1=# SELECT id, count(v) OVER (
        ORDER BY k RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
        EXCLUDE CURRENT ROW) AS c FROM t41;
 id | c
----+---
  1 | 1
  2 | 2
  3 | 1
  4 | 2
(4 rows)

db1=# SELECT * FROM (
        SELECT id, count(v) OVER (
          ORDER BY k RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
          EXCLUDE CURRENT ROW) AS c FROM t41) s WHERE c &lt; 2;
 id | c
----+---
  1 | 1
(1 row)
→ 正しくは id=3 の行も出力されないといけない
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fcd58c6d9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf184ec77">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=be63b285e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a85732162">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=842e34efa">&#167;</a></small></p>
<li>プランナが"char"型の列の統計情報を参照する際に、予期せぬエラー「ERROR:  cache lookup failed for collation 0」が発生する障害が修正されました。  (Feng Wu) (18)</li>
<p>
"char"型は、一般的に使われるchar(n)型とは別の、主として内部的なシステムカタログで使用されるものです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fd1c3f28">&#167;</a></small></p>
<li>複数階層のパーティションが存在する場合でも、ALTER TABLEのALTER COLUMN ... DROP EXPRESSIONが正常に動作するよう修正されました。  (Alberto Piai) (18)(17)(16)(15)(14)</li>
<p>
ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSIONは、格納生成列を基本列に変換する構文です。複数階層の子パーティション／子テーブルを持つパーティションテーブルや継承ツリーの親テーブルに対して実行すると、「ERROR:  ALTER TABLE / DROP EXPRESSION must be applied to child tables too」というエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ce6e434ce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c374f2807">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18006c1bd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=34785a0d5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=785289de0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cad17745e">&#167;</a></small></p>
<li>排他制約であるインデックスのパーティションをアタッチする処理の不具合が修正されました。  (Japin Li) (18)(17)</li>
<p>
この誤りにより、排他制約を持つパーティションテーブルのダンプ/リストアが正常に動作しなくなっていました。
</p>
<p>
リストア時に以下のようなエラーが発生します。
</p>
<pre>
ERROR:  cannot attach index "..." as a partition of index "..."
DETAIL:  The index definitions do not match.
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2b2c2492c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19e3aa704">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d6c654c8">&#167;</a></small></p>
<li>ALTER CONSTRAINTを使用して、パーティションテーブルのNOT NULL制約にNO INHERITを設定することができないように修正されました。  (Andreas Karlsson) (18)</li>
<p>
本来、パーティションテーブルのNOT NULL制約は、すべてのパーティションに継承される仕様であるため、NO INHERITを指定することはできません。これまでは、この仕様は制約を新規作成する際には正しく適用されていましたが、「ALTER TABLE ... ALTER CONSTRAINT」では適用されておらず、NO NULL制約の有無がパーティションごとに異なるようにできました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41247cdf6">&#167;</a></small></p>
<li>ルールの名前を「_RETURN」に変更できないように修正されました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
「_RETURN」という名前は、ビューの「ON SELECT」ルール用に予約されています。これまでは「ON SELECT」以外のルールをALTER RULEで「_RETURN」に名前変更できてしまい、その後の処理で問題を引き起こしていました。
</p>
<p>
具体的には、ダンプ/リストアで「ERROR:  non-view rule for "..." must not be named "_RETURN"」というエラーを起こすことが報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80c7f5467">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7f7958ab">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e99fb3262">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a69503fb1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eada45dd8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b17a6e3c">&#167;</a></small></p>
<li>DROP OWNED BYにおいて、ロールメンバーシップへのロックの解放漏れが修正されました。  (Jeff Davis) (18)(17)(16)</li>
<p>
この不具合により、トランザクションが終了するまで、ロールメンバーシップ（pg_auth_membersシステムテーブルの対応するエントリであらわされる暗黙的なオブジェクト）へのロックが保持され続けていました。その結果、並行するDDL実行で警告メッセージが出ることがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9eccdae22">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a0daa0b41">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=25e54cec7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e61d44fde">&#167;</a></small></p>
<li>EXPLAINがSQL/JSONの集約関数をデパースするときに予期せぬエラーを出すことがあり、修正されました。  (Richard Guo) (18)(17)(16)</li>
<p>
実行プランの構造によっては、「ERROR:  invalid JsonConstructorExpr underlying node type」というエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eaa561fb6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=45364e496">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dcda1f07d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=485527190">&#167;</a></small></p>
<li>遅延一意性制約のインデックスに対してREINDEX CONCURRENTLYを使用した場合の不具合が修正されました。  (Nitin Motiani) (18)(17)(16)(15)(14)</li>
<p>
REINDEX CONCURRENTLYの実行中に一時的に作成されるインデックスのコピーが、誤って即時一意性制約として扱われていました。そのため、実際には制約違反ではない場合でも、制約違反が発生したと誤って報告することがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9f6fb1191">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4527519b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28269fed6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac222bea5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5b3712e31">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55adef7ab">&#167;</a></small></p>
<li>非決定論的照合順序でバックスラッシュ（\）を使用したLIKE句のマッチングの不具合が修正されました。  (Nitin Motiani, Tom Lane) (18)</li>
<p>
非決定論的照合順序において、LIKEがエスケープされたバックスラッシュ（\\）を誤って処理し、実質的にバックスラッシュが存在しないものとして扱っていました。
</p>
<p>
また、通常の文字の前にバックスラッシュが付いている場合も誤った処理をしていました。この場合、バックスラッシュは実質的に無視されるべきですが、実際には後続の通常の文字を完全一致として扱ってしまい、非決定論的照合順序にマッチするかを判断していませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=99775b388">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a99bd8d58">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=54d5947ef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51652c42d">&#167;</a></small></p>
<li>LIKE句や正規表現の完全一致パターンのインデックススキャン最適化の不具合が修正されました。  (Jelte Fennema-Nio) (18)</li>
<p>
非決定論的な照合順序におけるLIKEのリファクタリングによって、LIKE句や正規表現の完全一致パターンを、等価比較のインデックス条件に変換する最適化が誤って壊れていました。これはインデックスの照合順序と式の照合順序が一致しない場合に発生していました。この影響で、psql の「\d tablename」コマンドが大幅に遅くなっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=67cf73ddb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0bb49e61">&#167;</a></small></p>
<li>to_date() におけるローカライズされた月名、曜日名のマッチング処理が修正されました。  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
大文字・小文字の変換によって文字列のバイト長が変化する場合に、マッチング処理が誤動作していました。月名、曜日名が認識されずに予期せぬエラーが発生する可能性が考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55ea76426">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=011384ba4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8acfaa12a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b594efe52">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0de744cd5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=49a712f32">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5f003855e">&#167;</a></small></p>
<li>ギリシャ文字の語末形のシグマに対する大文字小文字の変換のルールが修正されました。  (Jeff Davis) (18)</li>
<p>
文字列の直前が大文字小文字を区別しない文字だけで構成されている場合、そのシグマを語末形のシグマとはみなさないようにしました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28d498e28">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=66ec24276">&#167;</a></small></p>
<li>ハングルU+11A7（TBASE）のNFC再合成における誤りが修正されました。  (Diego Frias, Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
この文字は有効なT音節として扱われていましたが、実際にはT音節ではないため、正規化処理中にこの文字が消えてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=273fe9485">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0c9cbbfb5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=82116023e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c391375ba">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bb935d61">&#167;</a></small></p>
<li>大文字小文字を区別しない類義語の辞書において、出力する語彙素が切り捨てられる不具合が修正されました。  (Jeff Davis) (18)(17)(16)(15)(14)</li>
<p>
小文字への変換によって語彙素のバイト長が増加した場合、出力時に元のバイト長に誤って切り捨てられていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=89e648498">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3805641cb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b32df590c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7e0e42a2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e0458172">&#167;</a></small></p>
<li>大文字小文字変換処理において、途中で途切れたUTF-8文字への対処が修正されました。  (Jeff Davis) (18)(17)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=05da336dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9021c8f3c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5e78ebca5">&#167;</a></small></p>
<li>hash_record_extended()のバグが修正されました。  (Man Zeng) (18)(17)(16)(15)(14)</li>
<p>
FunctionCallInvoke()に渡される2番目のisnull引数が初期化されていませんでした。既存の組み込み拡張ハッシュサポート関数では、この値を参照しないため問題はありません。しかし、拡張機能が提供するハッシュ関数が「PG_ARGISNULL(1)」を調べる場合、その影響を受ける可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3f13c032">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=203e238bb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8b5580a05">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=259b627d5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74d3482f4">&#167;</a></small></p>
<li>公開可能なテーブルが並行して削除された場合に、pg_get_publication_tables()が失敗する不具合が修正されました。  (Bharath Rupireddy) (18)(17)(16)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28c995948">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=73d63d1c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dcbc96685">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6c760f6b6">&#167;</a></small></p>
<li>VARIADIC NULL を指定した場合に、satisfies_hash_partition() がクラッシュする不具合が修正されました。  (Robert Haas) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2ddc45662">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0c06ebf12">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=52af6fef4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6de480156">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d39b9eed0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0115650de">&#167;</a></small></p>
<li>tsvector_filter() および関連する関数で、不正な重みに関するエラーを、より明確かつ一貫した形で報告するよう修正されました。  (Ewan Young) (18)(17)(16)(15)(14)</li>
<p>
具体的には、表示可能なASCII文字ではない重み文字については、charout()と同様に8進数形式（"\nnn"）で報告します。これにより、無効なエンコーディングを含むエラーメッセージが生成されるのを防ぎます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c5194139c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0626fbfeb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed5ca5828">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3a86eb6d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=262cc4df2">&#167;</a></small></p>
<li>uundv7()関数で範囲外のタイムスタンプとなるシフト値を拒絶するようになりました。  (Baji Shaik) (18)</li>
<p>
v7 UUIDで表現可能な範囲を超えたタイムスタンプになるシフト値は「ERROR:  timestamp out of range for UUID version 7」というエラーを出すようになります。有効なタイムスタンプ範囲は、1970-01-01 00:00から10889年くらいまでです。これまでは壊れたUUID値が作られていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a933deaa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c31b0fca0">&#167;</a></small></p>
<li>xpath()関数でnamestapeノードの処理が修正されました。  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
予期せぬ「ERROR:  could not copy node」エラーが出ていたものが修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c777d6dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6c08cbb7a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=174076601">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d8c72b2e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41876c8d7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0d145be2c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=940916549">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fac26fd41">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9618e790c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a17f39aa2">&#167;</a></small></p>
<li>jsonpathの「.decimal」メソッドが、精度やスケールの指定が正しくない場合でもERRORを出さないように、修正されました。  (Ewan Young) (18)(17)</li>
<p>
サイレントモード（json_path_*関数のsilent引数がtrue）では、エラーを抑止すべきですが、そのようになっていませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5bbc9b300">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=84001a04d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab35b8d25">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=90789900b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c768637d6">&#167;</a></small></p>
<li>「IS JSON」や「JSON()」等の構文が、text型へのキャストを持たない文字列型の引数を与えられたときの、NULLポインタによるクラッシュが修正されました。  (Ayush Tiwari) (18)(17)(16)</li>
<p>
PostgreSQL本体コードには該当するデータ型はありませんが、一部の拡張のデータ型で問題を引き起こす可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=35d9a6263">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0acd2535">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60abb3c73">&#167;</a></small></p>
<li>「SQL/JSON」の「ON EMPTY / ON ERROR DEFAULT」の値に正しい型修飾が確実に適用されるようになりました。  (Ewan Young) (18)(17)</li>
<p>
例えば、対象numeric型列の宣言された精度とスケールがデフォルト値に適用されませんでした。
</p>
<pre>
（誤動作例）
db1=# SELECT JSON_VALUE(jsonb '{"b":"1234.5"}', '$.a' 
        RETURNING numeric(4,1) DEFAULT 99999.9 ON EMPTY);
 json_value
------------
    99999.9
(1 row)

（以下エラーが出るのが正しい動作）
ERROR:  numeric field overflow
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d30bfcbdd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=441e4c8d6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71cd10cd2">&#167;</a></small></p>
<li>money型の最小値（64bit整数最小値）を-1で割ったときの、マシン依存の振る舞いが回避されました。  (Andrey Rachitskiy) (18)(17)(16)(15)(14)</li>
<p>
x86_64アーキテクチャでエラーになるものが、aarch64アーキテクチャではエラーになりませんでした。オーバーフローを起こした場合には必ず「ERROR:  money out of range」が出るようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7746f7492">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6298a41b4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1416f304d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86f42357c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d782c97e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fec40878c">&#167;</a></small></p>
<li>全文検索の辞書に対するキャッシュエントリの作成途中でメモリ不足が生じた後にクラッシュする障害が修正されました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=df8407d7d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=81b1e7916">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=634a8dcb8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=83336e3ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=025228104">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dda622edc">&#167;</a></small></p>
<li>誤ったispell/hunspell辞書ファイルに対する処理でメモリ安全性に問題があり、修正されました。  (Andrey Rachitskiy) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3fe4062cc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4689ea9ce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fdea3aa3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=444038bb7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0fb88979b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cfc720ef4">&#167;</a></small></p>
<li>他セッションの一時テーブルへのアクセスが防止されました。  (Jim Jones, Daniil Davydov, Alexander Korotkov) (18)(17)(16)</li>
<p>
基本的にそのようなアクセスは禁止されていますが、一部のコードパスで防止しきれておらず、干渉されたセッションで誤った問合せ結果が生じるおそれがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b0dd0815">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4dfae59a1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8021cdceb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3aaefe892">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e49f68b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cc3fe7e2a">&#167;</a></small></p>
<li>一時テーブルにアクセスするときの「ERROR: no empty local buffer available」エラーが防止されました。  (Melanie Plageman) (18)</li>
<p>
本修正でストリーミング読み取りの仕組みが使用可能なローカルバッファの数が制限されました。これまでは、effective_io_concurrency設定が大きな値の場合に単一のストリームで全バッファを利用可能であったため、本エラーが発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed8050370">&#167;</a></small></p>
<li>autovacuumがデータベースを処理する順番が修正されました。  (Rustam Khamidullin) (18)(17)</li>
<p>
最高スコアから最低スコアに向かう順で処理されるべきところで、意図せず逆順になっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3331578b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4cc49cb70">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=288d4e83f">&#167;</a></small></p>
<li>VACUUMのXID周回フェールセーフモードで、共有バッファプールを全使用するように動作が復旧されました。  (Melanie Plageman) (18)</li>
<p>
通常のVACUUMは、他の処理に大きな影響を与えないように、共有バッファを少しだけ使うように制限されています。しかしながら、フェールセーフモードではできるだけ早くトランザクションIDを回収する必要があるので、この制限は放棄されることになっていました。この振る舞いがv18のリファクタリングで壊れていて、復旧されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fd90c3221">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=585181e07">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55d01a10f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c25cdb1e">&#167;</a></small></p>
<li>パラレルVACUUMワーカーの処理でのメモリリークが修正されました。  (Baji Shaik) (18)(17)</li>
<p>
パラレルワーカーからの報告過程で報告ごとに1kB程度のリークがあり、これはワーカープロセスが生きている間は蓄積されていきました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4154a1482">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8ad414831">&#167;</a></small></p>
<li>問合せのキャンセルとVACUUM遅延が、GINインデックスのポスティングツリーのクリーンアップ中であっても、すぐに行なわれるようになりました。  (Paul Kim, Alexander Korotkov) (18)(17)(16)(15)(14)</li>
<p>
よくある値に対するポスティングツリーは大きくなることがあり、ここに割り込みの検査が欠けていたため、処理が長く継続してしまいました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=70dad584e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7becb647d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba5e46329">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=006ac761e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7123abab7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=15fd7a3e2">&#167;</a></small></p>
<li>GiSTおよびSP-GiSTのインデックスに対するIndex Only Scanで、インデックスタプルのデコーディングを誤る可能性があり、修正されました。  (Peter Geoghegan) (18)(17)(16)(15)(14)</li>
<p>
この障害で壊れたデータが出力されて、誤った問い合わせ結果や予期せぬエラーが発生する可能性がありました。本体コードで影響があるのは、GiSTの演算子クラスrange_opsのみで、その範囲列が最初のインデックス列でない場合にのみ、誤動作が発生します。
</p>
<pre>
（誤動作例）
db1=# CREATE TABLE t75 (a inet, r numrange);
db1=# INSERT INTO t75 VALUES 
      ('::1', numrange(repeat('1', 100)::numeric, repeat('2', 200)::numeric)));
db1=# CREATE INDEX ON t75 USING gist (a inet_ops, r range_ops);
db1=# VACUUM ANALYZE t75;
db1=# SET enable_seqscan TO off;
db1=# SELECT lower(r) = repeat('1', 100)::numeric,
             upper(r) = repeat('2', 200)::numeric FROM t75;
ERROR:  type with OID 860 does not exist
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d4c81ad6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=959b7fa2c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=355faed5a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e58192546">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=126141425">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4ad22eb0">&#167;</a></small></p>
<li>バルク拡張されたテーブルの新たな最終ブロックがフリースペースマップに即座に追加されるようになりました。  (Jingtang Zhang) (18)(17)(16)</li>
<p>
off-by-one（1つ足りない）誤りで、複数ブロックが追加されたときの最後のブロックがフリースペースマップに登録されませんでした。VACUUMによってやがては正しく登録されますが、それまでの間、最終ブロックが使われませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7a103928a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eabc9a9dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=768ae083e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0fd5595aa">&#167;</a></small></p>
<li>トランザクションのアボート時のリソース解放処理で、メモリの二重解放（クラッシュをひきおこします）、または、エラーの再帰的な無限ループが起きる可能性があり、修正されました。  (Tom Lane) (18)(17)</li>
<p>
巨大な入力値を伴うSQLがエラーになって、トランザクションアボートが行なわれたケースで問題が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac6a58a70">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=011eedcdc">&#167;</a></small></p>
<li>PostgreSQLの処理内でディレクトリを作成するとき、同じディレクトリの同時作成を許容するようになりました。  (Andrew Dunstan, Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
他プロセスが同じディレクトリを作っているのであれば、ディレクトリ作成に成功した扱いとすることで、これまで同時実行で発生する可能性のあった「ERROR:  could not create directory "...": File exists」といったエラーを回避できます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aa80c34c8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f0a831ef3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9951e3d38">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4647ac142">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4b3bc6b71">&#167;</a></small></p>
<li>JITコンパイルされたタプルデフォームを行うコードが、仮想生成列を正しく考慮するように修正されました。  (David Rowley) (18)</li>
<p>
NOT NULL制約のある仮想生成列を含むテーブルへの問合せで、誤った問い合わせ結果が生じる例が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e9692de1d">&#167;</a></small></p>
<li>依存されている全てのオブジェクトに共有ロックを取得することにより、宙に浮いたオブジェクト依存関係の生成が防止されました。  (Bertrand Drouvot) (18)(17)(16)(15)(14)</li>
<p>
共有ロックは依存されているオブジェクトの削除と衝突しますので、これまであった競合状態を排除することができます。
</p>
<p>
例えば、これまでは、空スキーマの削除とスキーマ内へのオブジェクト作成の同時実行が両方成功して、無効なオブジェクト定義が残ることがありましたが、これからはどちらかのトランザクションが失敗します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c8cd3d697">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3a9909eda">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9bc0d96c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fa137727">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5100bdbd3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9d5a52da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c1588f92a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d44cd4674">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ef3d7b15e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=36b6ed260">&#167;</a></small></p>
<li>SERIALIZABLE分離モードに対する衝突の検出での競合状態が修正されました。  (Peter Geoghegan) (18)(17)(16)(15)(14)</li>
<p>
初期の空のbtreeインデックスを検査するときに衝突が見過ごされる可能性があり、競合しているトランザクションのコミットを許してしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2aa3c6d1f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d560e730e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8434c9385">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e321faaae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5d18105ca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2fc3e1b44">&#167;</a></small></p>
<li>バリアイベントの処理で競合状態が修正されました。  (Masahiko Sawada) (18)(17)(16)(15)</li>
<p>
この誤りにより、プロセスがハングアップする可能性がありました。典型的には、その際に以下ログメッセージが出力されます。待機イベントとしてはIPC型のProcSignalBarrierの待機となります。
</p>
<pre>
LOG:  still waiting for backend with PID %d to accept ProcSignalBarrier
</pre>
<p>
近年追加されたオンラインWALレベル変更などの機能によって、この問題がより目立つようになっています。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1a9b1cc18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a651b8a89">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cdb9b2830">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=159324a73">&#167;</a></small></p>
<li>同じロックグループに属するプロセス集合が同時に終了したときの競合状態が修正されました。  (Vlad Lesin) (18)(17)(16)(15)(14)</li>
<p>
この誤りは「PANIC:  latch already owned by PID ..」によるサービスのPANIC終了を引き起こす可能性があります。PostgreSQL本体の通常のパラレル問合せでは、リーダープロセスがワーカープロセスの終了を待たずに終了することが無いため、この問題は起きませんが、何らかの拡張で該当する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ae08eb168">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d489c4439">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=65d04df60">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d5cc6df60">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8007d1185">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c9b8b42">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e14b4ea4a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e8edf53f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e786fb5aa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=db4d12fc9">&#167;</a></small></p>
<li>テーブルのビジビリティマップ(VM)でビットをクリアする操作のWAL出力が修正されました。  (Melanie Plageman, Andres Freund) (18)(17)</li>
<p>
このようなVM変更がWALサマライズ処理で見落とされていて、誤ったインクリメンタルバックアップをもたらす可能性がありました。また、このようなVMページの必要時のフルページイメージWAL出力も行なわれておらず、壊れたページ書き込みが修正されないままとなる可能性がありました。これは後にIndex Only Scanでの誤った問い合わせ結果が生じるなどの、誤動作を引き起こすおそれがあります。
</p>
<p>
既存のバックアップやアーカイブWALに潜在的にデータ破損が含まれていることに留意してください。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=56bf5fa5d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0fb1da21">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7edec8b57">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b01c31eef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f581fa729">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c0d9864f5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9171f77db">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d7feebfb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=067213430">&#167;</a></small></p>
<li>WALサマライズ処理でのタイムライン変更時のハングアップが防止されました。  (Robert Haas) (18)(17)</li>
<p>
スタンバイサーバで、以下のログメッセージがwalsummarizerプロセスから継続的に出力される動作が報告されました。
</p>
<pre>
ERROR:  could not read WAL from timeline .. at ...: invalid record length ...
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dfb96277d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18f0de6b8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=499d9eabb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bdcea66f0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d299d6ab">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d28cdf46e">&#167;</a></small></p>
<li>スタンバイ昇格のときのロジカルデコーディングのタイムライン選択で、競合状態が修正されました。  (Bertrand Drouvot) (18)(17)(16)</li>
<p>
スタンバイ側で実行中のロジカルデコーディングが「ERROR:  requested WAL segment has already been removed」で失敗する可能性がありました。再試行すれば成功するため恒久的な問題はありませんが、可用性としては有害でした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b4bd13850">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=16b89ff04">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cd687c44">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a04624da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4bff3aa51">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab5334d8b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9b49e5b4">&#167;</a></small></p>
<li>タイムラインを切替するときのwalreceiverの接続文字列の露出が回避されました。  (Chao Li) (18)(17)(16)(15)(14)</li>
<p>
pg_stat_wal_receiverビューは機微なデータを除いてサニタイズされた接続文字列を見せるべきです。しかし、タイムライン切替に際して既存のwalreceiverプロセスを再利用するときに、一時的に完全な接続文字列を見せてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b903d1792">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c89499a79">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e037a4199">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=065cbfb88">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e18b77153">&#167;</a></small></p>
<li>ロジカルレプリケーションで受け取ったタプルの列数が正しいかの検証を、アサートではなく実行時チェックで行うようになりました。  (Varik Matevosyan) (18)(17)(16)(15)(14)</li>
<p>
悪意の、または、壊れたパブリッシャは一貫性のない列数を送出するかもしれません。これによる深刻な悪影響をおよぼすシナリオは見つからなかったものの、より注意を払うべきと判断されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dc3db3a83">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=15f4e3d0c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=59759e1a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=871d4f5b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=510a05f07">&#167;</a></small></p>
<li>レプリケーションコマンド内の文字列パラメータへのクォート付加について、実装がクリーンアップされました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
レプリケーションコマンドを生成する様々な個所で、コマンドに挿入されるレプリケーションスロット名や他のパラメータのクォート付加について、十分な注意が払われていませんでした。そのため、レプリケーションコマンドで予期せぬエラーが発生するおそれがありました。
</p>
<p>
原理的には作りこまれたレプリケーションスロット名でSQLインジェクションも可能でした。ただし、ほとんどの場合、元からSQL実行が可能な管理者が行う操作であるため、実用的な害はないと考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=abb582555">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=14810cc0d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=26d6c19d0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=819e5b964">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a00840e8">&#167;</a></small></p>
<li>空のプリペアドトランザクションのロジカルデコーディングについて修正されました。  (Masahiko Sawada) (18)(17)(16)(15)(14)</li>
<p>
デコード可能な変更を起こさないプリペアドトランザクションは、先立つ「PREPARE」無しに、「COMMIT PREPARED」や「ROLLBACK PREPARED」を出力プラグインに送出していました。組み込みのサブスクライバでは、これはレプリケーションを壊します。他のプラグインでも同様に問題となると考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2289e65e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b563fc6bd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c4519c71">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=744618346">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0dbfb8520">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c2d34db0a">&#167;</a></small></p>
<li>スタンバイ昇格後のUNLOGGEDシーケンスのデータ破損が修正されました。  (Fujii Masao) (18)(17)(16)(15)</li>
<p>
これまでは、プライマリで作られてスタンバイにレプリケートされたUNLOGGEDシーケンスに、スタンバイ昇格後にアクセスすると、「ERROR:  bad magic number in sequence」などのエラーや、アサート失敗が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=22af34b98">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=627605713">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1ed6a9a0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=913d3b610">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d2980067b">&#167;</a></small></p>
<li>カスケードスタンバイでのWALアーカイブによるリカバリからストリーミングに復帰するときの再接続失敗が、修正されました。  (Marco Nenciarini) (18)(17)(16)(15)(14)</li>
<p>
このとき「ERROR:  requested starting point ... is ahead of the WAL flush position」が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bef46aed3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=331016322">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2cf28d1b9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5dbeb69bc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f64cc83f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fb3c6389">&#167;</a></small></p>
<li>WALリプレイが一貫性のあるデータベース状態に達する前にホットスタンバイ接続を受け付ける動作が防止されました。  (Nikhil Sontakke) (18)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7673dfe77">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=311e66df9">&#167;</a></small></p>
<li>スタンバイサーバで、ローカルにpg_database.dathasloginevtのクリアを試みないようになりました。  (Ayush Tiwari) (18)(17)</li>
<p>
スタンバイで実行が試みられていましたが、これは機能しておらず、また、プライマリでの変化がすぐに反映されて上書きされるので不要な動作でした。
</p>
<p>
loginのイベントトリガを削除した後にスタンバイに接続したときに、「FATAL:  cannot acquire lock mode AccessExclusiveLock on database objects while recovery is in progress」が出て接続できない動作が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=97b5c5aaa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4a375527a">&#167;</a></small></p>
<li>使われなくなったレプリケーションスロットを削除するときの競合状態が回避されました。  (Xuneng Zhou) (18)(17)</li>
<p>
削除直後のスロットの共有メモリエントリを他セッションが再利用した場合、誤ったロック解放と誤ったログメッセージ（異なるスロット名やデータベースOIDが使われる）が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08458bcae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ea834d747">&#167;</a></small></p>
<li>一時的なレプリケーションスロット（初期化途中の論理レプリケーションスロット）を削除するときの競合状態が回避されました。  (Zhijie Hou) (18)(17)(16)(15)(14)</li>
<p>
これまでの実装では、スロットを解放した後にスロットの共有メモリエントリにいくらか追加的な更新を実行していました。これは他セッションが直ちに再利用するかもしれないため、安全ではありません。本修正で、一時スロットには、この更新を行なわないようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f833c9207">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=080d61f07">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51e79222c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4eb59d40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=968c50845">&#167;</a></small></p>
<li>ロジカルレプリケーションのテーブル初期同期で、進捗報告が古い内容となっていた問題が修正されました。  (Shinya Kato) (18)(17)(16)(15)(14)</li>
<p>
これまでは、サブスクライバのpg_stat_progress_copyビューは、データコピーが終わった後でも、初期COPY操作をアクティブとして表示していました。同期がパブリッシャに追いつくまで、古いエントリが表示されたままでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9cd9b4d7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f2acab534">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d140237da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b5f7e7569">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e3c4e3746">&#167;</a></small></p>
<li>バックアップに失敗したなら、ベースバックアップの進捗がクリアされるようになりました。  (Chao Li) (18)(17)(16)(15)</li>
<p>
これまで、pg_stat_progress_basebackupビューは、レプリケーションクライアントが切断するまで、古い進捗情報を表示し続けていました。標準付属のpg_basebackupであれば、失敗した後に即座に切断しますが、他のバックアップを取得するクライアントはそうであるとは限りません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b70000837">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e7564ee8c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2ea6bfed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7cbd80340">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf7530cf7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2ad214dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a240e8cd2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fffa4d870">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a8fb98b7b">&#167;</a></small></p>
<li>設定track_functionsが有効であるとき、実行時統計情報(pgstats)のエントリの同時削除のためにPANICが生じる可能性があり、修正されました。  (Sami Imseih, Michael Paquier) (18)(17)(16)(15)</li>
<p>
「PANIC:  cannot abort transaction .., it was already committed」が出るケースが報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5cc59834b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2e0c61aed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf4616b59">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e9e62193">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a4f389dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39e649d44">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c457ea15">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=75aca8b93">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe464e9e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=afb076b29">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e34b1ff5d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e4771825">&#167;</a></small></p>
<li>対応する共有ハッシュテーブルのエントリに対するメモリ領域取得に失敗した後、壊れた実行時統計情報(pgstats)のローカルエントリをクリーンアップするようになりました。  (Niall Newman) (18)(17)(16)(15)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=89fc6a7c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2fd8d45ec">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc9283b21">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=636bcd6a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=10e20e59e">&#167;</a>これを行なっていなかったため、次にローカルエントリが使われたときに、NULLポインタ参照によるクラッシュが発生しました。
</p>
<p></small></p>
<li>読み込みや書き込みの失敗後に誤ったI/O操作統計が記録されないように、修正されました。  (Bertrand Drouvot) (18)</li>
<p>
各種のWAL読み書きに処理に失敗したときにエラーを意味する負の値がそのまま統計値のカウントに使われていて、pg_stat_ioビューなどで参照されるWALのI/O統計に誤った値が混入する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=13f940b4b">&#167;</a></small></p>
<li>PL/Perlで、不正なPostgreSQL::InServer::ARRAYオブジェクトを扱うときのNULLポインタ参照によるクラッシュが回避されるようになりました。  (Xing Guo) (18)(17)(16)(15)(14)</li>
<p>
PostgreSQL::InServer::ARRAYはPL/Perl関数に引数でPostgreSQLの配列を渡すときに使われるperlのオブジェクト型です。PL/Perl関数からPostgreSQLの配列を返すときにも使用できます。検査が不足していて、引数に由来せず適切な内部構造を持たないPostgreSQL::InServer::ARRAYオブジェクトを返すとクラッシュを引き起こせました。
</p>
<pre>
（クラッシュ発生例）
=# CREATE FUNCTION f102() RETURNS integer[] AS $$
     return bless {}, "PostgreSQL::InServer::ARRAY"; $$ LANGUAGE plperl;
=# SELECT f102();
server closed the connection unexpectedly
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e430ecc59">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d424d06ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3854f4afc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9b2a6ccc4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e520ad34b">&#167;</a></small></p>
<li>PL/Pythonで、Pythonのシーケンスオブジェクトとマッピングオブジェクトを扱うときにエラーを正しく検査するようになりました。  (Richard Guo) (18)(17)(16)(15)(14)</li>
<p>
hstore_plpython拡張やjsonb_plpython拡張を使って、PL/Python関数の戻り値をhsotre型やjsonb型に変換している場合に該当する問題です。これまでは、壊れたオブジェクトやハンドルされない例外によって、NULLポインタ参照によるクラッシュが発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=53482fcb9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3dc59c173">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e92f23bde">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12bff46ff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b7719f74">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=309dc4526">&#167;</a></small></p>
<li>libpqで、pqReadData()の実行中にSSLまたはGSSの復号バッファに残っている未処理バイトを常にすべて取り出すようになりました。  (Jacob Champion) (18)(17)(16)(15)(14)</li>
<p>
例外的なケースですが、大きなメッセージのサーバからの届き方によっては、バッファがいっぱいになることでlibpqがソケット到着を誤って待ち続けて、APIを呼び出すクライアントアプリケーションがハングアップしてしまう可能性がありました。
</p>
<p>
pqReadData()はサーバ側からデータを読むlibpqの内部実装関数です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eeb2940ae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2167302b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c162810a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d3f329656">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4ecba7fa3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b018b5d1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f8745543">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb0a54518">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=177a2a2e3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=477bc27a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=05908afcd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d3888c90a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=536512f34">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=27761c015">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0958c3ea4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6243ea6c3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21a6c69ea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f5f569713">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9eb70c9c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=87c3a79ea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bab0a2db7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=56988064b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5ba13f8c0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7532f2117">&#167;</a></small></p>
<li>libpqのメモリ不足状態の処理が改善されました。  (Anthonin Bonnefoy) (18)</li>
<p>
COPYデータ読み込みや関数呼び出しの途中に、非同期メッセージ処理でメモリ不足になった場合にも、直ちにエラーを出すようになりました。これまでは、セッション切断された状態で処理が継続されていて、エラー発生が遅れたり、不適切なエラーが出る可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8380013cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6b46a5d1b">&#167;</a></small></p>
<li>libpqのトレース機能が、新しい形式のBackendKeyDataメッセージとCancelRequestメッセージを正しく出力するようになりました。  (Anthonin Bonnefoy) (18)</li>
<p>
これらのプロトコルメッセージは固定長から可変長に仕様変更されましたが、トレース機能では固定長を想定したままとなっていたため、「mismatched message length」という警告が出力されていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0766bc57e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dd5eca055">&#167;</a></small></p>
<li>libpqが30000バイトを超えるParameterDescriptionメッセージを受け付けられるようになりました。  (Ning Sun) (18)(17)(16)(15)(14)</li>
<p>
libpqは受信メッセージの妥当性検査として、「長くなりうるメッセージ型」以外について長すぎるメッセージを弾きます。ParameterDescriptionは「長くなりうるメッセージ型」として扱われていなかったため、メッセージ長が30000バイトを超えるとエラーになっていました。この制限により、7498個を超えるパラメータを持つプリペアドステートメントに対するPQdescribePrepared()が失敗していました。この数のパラメータはまれな用法ですが仕様の範囲内です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b1ab4bc52">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4183c667">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8d516d2b9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0f63b74a4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b79c8d1a">&#167;</a></small></p>
<li>ecpgコンパイラのNULLポインタ参照によるクラッシュが修正されました。  (Jehan-Guillaume de Rorthais) (18)</li>
<p>
構造体の内側に入れ子になった共用体を含むDECLAREセクションをもつ.pgcコードを変換しようとすると、ecpgコマンド実行がクラッシュしました。
</p>
<pre>
（ecpgコマンドがクラッシュするコード例）
EXEC SQL BEGIN DECLARE SECTION;
    struct s1
    {
        char STR1[10];
        union u1
        {
             int NUM1;
             int NUM2;
        } U1;
    } S1;
EXEC SQL END DECLARE SECTION;
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=917fdbc63">&#167;</a></small></p>
<li>ecpgのGET DESCRIPTOR文とSET DESCRIPTOR文で、記述子ヘッダ項目を複数指定する構文が拒否されるようになりました。  (Masashi Kamura) (18)(17)(16)(15)(14)</li>
<p>
これまでも文法上はこの構文が許されていましたが、実装は実際には複数のヘッダ項目に対応できておらず、指定すると壊れたCコードが生成されていました。
</p>
<p>
本修正で構文解析処理でもドキュメント上でもヘッダ項目は1つだけに変更されました。これは非互換性を含む変更です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=081434b0f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe8c0a762">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d4b73cfd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bfeddcf09">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e8fd9f7a">&#167;</a></small></p>
<li>psqlのパイプラインモードにおける遅延エラーの問題が修正されました。  (Michael Paquier) (18)</li>
<p>
Syncメッセージへの応答としてサーバがエラーを報告する場面（遅延制約の違反など）で、psqlがハングアップしたり、アサート失敗したりする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e9bc4074">&#167;</a></small></p>
<li>psqlの拡張表示（expanded）の整形出力で、行の幅が揃うようになりました。  (Pavel Stehule) (18)(17)(16)(15)(14)</li>
<p>
テーブルのデータ行がレコードヘッダ行より狭い場合、データ行の幅がレコードヘッダ行に合わせられず、次のように桁のずれた出力になっていました。
</p>
<pre>
（ずれた出力の例）

+-[ RECORD 1 ]-+
| a | 10 |
| b | 20 |
+---+----+

（修正後の出力例）

+-[ RECORD 1 ]-+
| a | 10       |
| b | 20       |
+---+----------+
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=07a6c262b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=efd885d05">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1edbe6695">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=022ba5c61">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4ca91ea1">&#167;</a></small></p>
<li>psqlの特別変数WATCH_INTERVALについて、既定の上限が強制されるようになりました。  (Sven Klemm, Daniel Gustafsson) (18)</li>
<p>
大きすぎる値(1000000超)を設定しようとすると、psqlはエラーを報告するものの、その値を適用してしまっていました。修正後は、上限を超える値は拒否され、変数の値は変更されません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e0c641ebb">&#167;</a></small></p>
<li>psqlの「\l+」でデータベースサイズを表示する権限検査が修正されました。  (Christoph Berg) (18)(17)(16)(15)(14)</li>
<p>
サーバ側のpg_database_size()は、pg_read_all_statsロールの権限を持つ利用者に対して、対象データベースへのCONNECT権限がなくてもすべてのデータベースのサイズの参照を許します。しかしpsqlはこの仕組みを考慮せず、CONNECT権限を持つ利用者以外に対してはこの関数を呼び出していませんでした。
</p>
<p>
修正後は、「\l+」の権限検査にpg_read_all_statsロールの権限（USAGE）の確認が加わり、pg_database_size()の権限規則と一致するようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=77aeca802">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f2d6cf880">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41949c6f3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=844bc718a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e6e8a3078">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e19081da">&#167;</a></small></p>
<li>psqlの「\df」のタブ補完で、プロシージャも候補に含めるようになりました。  (Erik Wienhold) (18)(17)(16)(15)(14)</li>
<p>
「\df」コマンド自体はプロシージャも表示対象に含めるよう拡張されていましたが、タブ補完の候補は関数だけを表示し続けていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=558e0de6d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=598af79b1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=355a4fcf9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9afdb6d1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c25737c89">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2d44bb900">&#167;</a></small></p>
<li>pgbenchのスレッド安全性のバグが修正されました。  (Fujii Masao) (18)(17)(16)(15)</li>
<p>
pgbenchを複数スレッドで実行し、かつ「--verbose-errors」オプションを指定した場合、異なるスレッドが同じバッファを使ってエラーメッセージを組み立てようとし、ログ出力が壊れる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=98dd6c204">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=52b3e7001">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6432a4cd6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f18fcd9a4">&#167;</a></small></p>
<li>pg_combinebackupで、コピー元ファイルが想定より小さい場合に無限ループが発生することがあり、防止されました。  (Peter Eisentraut) (18)(17)</li>
<p>
「--copy-file-range」を指定して合成フルバックアップを再構築する過程で、ファイルが0バイトしかコピーできなかった場合をエラーとしていなかったため、試行が繰り返されてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d36b72894">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=090ce6934">&#167;</a></small></p>
<li>pg_createsubscriberで、エラー発生後にパブリッシャ側オブジェクトのクリーンアップが行なわれない場合があり、修正されました。  (Nisha Moond) (18)(17)</li>
<p>
pg_createsubscriberは、論理レプリケーションオブジェクトを作成した後にエラーを起こした場合、パブリッシャ上に作成したパブリケーションとレプリケーションスロットを削除する必要があります。一部のエラーケースでは削除が行われず、pg_createsubscriberの再実行のために手動での削除が必要でした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=196b4b5ae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c03784a21">&#167;</a></small></p>
<li>pg_recvlogicalの出力ファイルが、ソースクラスタのグループ読み取り権限に従って作成されるようになりました。  (Fujii Masao) (18)(17)(16)(15)(14)</li>
<p>
pg_recvlogicalはこの挙動についてドキュメントに記載されていたにもかかわらず、実際にはソースクラスタのグループ読み取り権限を反映した書き出しが行なわれず、常にファイル所有者の読み書きのみを許すモードが使われていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=89b4b3ae3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ddd12d1a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9590dcfca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba9833a75">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5552a15a3">&#167;</a></small></p>
<li>pg_restoreの「--statistics」および「--statistics-only」オプションの一貫しない挙動が修正されました。  (Chao Li, Michael Paquier) (18)</li>
<p>
「--schema」「--table」などの選択的リストアオプションと組み合わせた場合に意図通りの要素がリストアされませんでした。pg_dumpで対象選択オプションを組み合わせた場合と同様に動作するように修正されました。
</p>
<pre>
（誤動作例）
$ psql -d db1 &lt;&lt;EOS
CREATE TABLE t119 AS SELECT g id, g % 5 n FROM generate_series(1, 20) g;
CREATE STATISTICS s119 ON id, n FROM t119;
ANALYZE;
EOS

$ pg_dump --statistics -Fc db1 -f db1.dmp
（プランナ統計情報を含むダンプファイルを作る）

$ pg_restore --table t119 --statistics-only -f - db1.dmp
（→「t119テーブルの統計情報のみをリストア」の意図だが、リストア内容が空になる）

$ pg_restore --statistics --table t119 -f - db1.dmp
（→「統計情報を含めてt119テーブルをリストア」の意図だが、拡張統計情報が欠損する）
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42ffdedcf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=477efef08">&#167;</a></small></p>
<li>vacuumdbの「--missing-stats-only」が、パーティションテーブルに対する式インデックスを処理対象から除外するようになりました。  (Baji Shaik) (18)</li>
<p>
これまで、本オプションのvacuumdb実行では、パーティションテーブルに式インデックスがあると、常にそのパーティションテーブルにANALYZEを実行しようとしていました。しかし、統計情報は子パーティションのインデックスに作成されても、パーティションテーブルのインデックスには作成されないため、意味がありませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7e085aabd">&#167;</a></small></p>
<li>contrib/amcheckで、btreeインデックスのメタページの「allequalimage」フラグの破損が報告されない問題が修正されました。  (Chao Li) (18)</li>
<p>
btreeインデックスを検査する関数は、これまでインデックスキー列のいずれかにinterval_ops演算子クラスを含む場合のみ正しく動作していて、そうでないインデックスでこの破損が見逃される可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c32bbc8">&#167;</a></small></p>
<li>contrib/amcheckの GINインデックス検証関数でメモリリークが修正されました。問い合わせが終わるまで未開放メモリが蓄積します。  (Kirill Reshke) (18)</li>
<p>
大きなGINインデックスの検証でメモリ使用量が増大するおそれがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80cfd8aef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f8ab91c1">&#167;</a></small></p>
<li>contrib/amcheckで、ショートヘッダのvarlenaデータムが正しく扱われるように修正されました。  (Andrey Borodin) (18)(17)(16)(15)(14)</li>
<p>
この誤りで、btreeインデックス検証で無駄な処理が生じる可能性がありますが、それ以上の悪影響は無いと考えられます。
</p>
<p>
varlenaデータムとはPostgreSQL実装内で使われる長さとデータ本体からなるデータ構造です。ショートヘッダは長さをあらわすのに1バイトだけ使う形式です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=897e79486">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8abb8a155">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c89a1ca01">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4284476c0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=af09b18cb">&#167;</a></small></p>
<li>contrib/btree_gistで、float4とfloat8の演算子クラスにおける「NaN」の扱いが修正されました。  (Bill Kim, Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
各種の比較関数と、GiSTのpenalty関数、distance関数が「NaN」を考慮しておらず、「NaN」を渡されたときに誤った結果を返していました。
</p>
<p>
本修正の適用後、float列のbtree_gistインデックスに「NaN」のエントリが含まれる可能性がある場合は、それらのインデックスの再構築を推奨します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a47005f0b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e1d07792">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d215d2cc2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d569ccd40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=98dd4406f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=255bce448">&#167;</a></small></p>
<li>contrib/btree_gistで、GiSTインデックス構築時のbit型とvarbit型の値のソートが修正されました。  (Tom Lane) (18)</li>
<p>
これまでbit型の値がbytea型であるかのようにソートされていました。これは明白な誤動作を引き起こすことはありませんでしたが、型本来のソート順に一致しない並びで構築されるため、非効率なインデックスになりました。
</p>
<p>
本修正の適用後、bit列上のbtree_gistインデックスの再構築を推奨します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=11cb9c431">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=558c4ea9a">&#167;</a></small></p>
<li>contrib/btree_gistで、非等価（<>）演算子を使った検索が修正されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
可変長データ型の場合、非リーフインデックスページを走査するコードが誤った比較関数を適用していました。これは誤った問い合わせ結果、および場合によってはクラッシュにつながる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc6649abe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c519207">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86992769e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0663382c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f2a1b3d3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=286f9a3ce">&#167;</a></small></p>
<li>contrib/dblinkとcontrib/postgres_fdwで、use_scram_passthroughオプションについて、ユーザマッピングの設定が外部サーバの設定より優先されるよう修正されました。  (Matheus Alcantara) (18)</li>
<p>
これまでは外部サーバ側の設定が優先されていましたが、これは他の外部テーブルオプションの挙動と一貫していませんでした。他の接続オプション（sslcertやsslkeyなど）と同様に、外部サーバのオプションは共通のデフォルト値を提供し、ユーザマッピングのオプションがそれを上書きする扱いに統一されました。
</p>
<p>
これは非互換性を含む変更と言えます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=88d7748d2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=130396e6c">&#167;</a></small></p>
<li>contrib/dblinkの外部データラッパのuse_scram_passthroughオプションが拒否されるようになりました。  (Matheus Alcantara) (18)</li>
<p>
このオプションは外部サーバとユーザマッピングに対してのみ意味を持ちますが、dblinkは外部データラッパ（dblink_fdw）レベルでもこのオプションを受け付けていました（そして受け付けた設定を無視していました）。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cd777e27e">&#167;</a></small></p>
<li>contrib/hstore_plperl、contrib/jsonb_plperl、contrib/jsonb_plpythonで保護されていない再帰とループがあり、修正されました。  (Aleksander Alekseev) (18)(17)(16)(15)(14)</li>
<p>
深くネストしたjsonb値を扱うときのスタックオーバーフロー（によるクラッシュ）が防止されました。また、Perlのオブジェクト参照の循環チェーンをたどるときに生じる無限ループが割り込み可能になりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e3b7a43fa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3df0b7755">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b0f3465b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a6f23c3ad">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=639fff511">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d65cf6f80">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4efef9d18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60a1d712a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fbbabb0a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f6b2295f">&#167;</a></small></p>
<li>contrib/intarrayでプランナ統計情報のカタログキャッシュエントリの解放漏れが修正されました。  (Man Zeng) (18)(17)(16)(15)(14)</li>
<p>
この解放漏れにより、「WARNING:  resource was not closed: cache pg_statistic ..」のような警告が発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e7544c518">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=94b57ab54">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=273be484a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=702a6d5f6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a96b051a9">&#167;</a></small></p>
<li>contrib/ltreeで比較関数における整数オーバーフローが修正されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
約14,653個を超えるラベルを含むltree値は、オーバーフローによって誤った比較結果を返していました。btreeインデックスにそのような値が含まれている場合、破損している可能性があるため、本修正の適用後に再構築することを推奨します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c3e36a9a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c391c00d9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aca944e33">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1bec6b1c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f528a5606">&#167;</a></small></p>
<li>contrib/pgcryptoで、OSSLCipherオブジェクトの使用中にエラーが発生した後の二重解放によるクラッシュが回避されました。  (Yuelin Wang) (18)(17)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=020426268">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2aa6be6e6">&#167;</a></small></p>
<li>contrib/pg_prewarmのautoprewarmワーカの範囲外アクセスが修正されました。  (Matheus Alcantara) (18)</li>
<p>
このコードは、配列の末尾の1つ先から値を取り出そうとしており、セグメンテーション違反によるクラッシュを引き起こす可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3bf2cb225">&#167;</a></small></p>
<li>contrib/pg_surgeryのheap_force_kill関数とheap_force_freeze関数で、配列の範囲外書き込みが修正されました。  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
オフセット番号がMaxHeapTuplesPerPage（ページあたりの最大タプル数、291など）に等しいTIDを変更しようとすると、確保された配列の末尾の1バイト先に書き込み、サーバをクラッシュさせる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2b09f8a91">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0bcf19c9e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=daf8bc7d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51f63ba2b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1eda3eb07">&#167;</a></small></p>
<li>contrib/pg_surgeryで、64K要素を超えるTID配列による無限ループが回避されるようになりました。  (Andrey Rachitskiy) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f24c8237">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19f0391df">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b6c99d96">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb28b6f24">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=395700f48">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e9d53cf45">&#167;</a></small></p>
<li>contrib/spiのrefint拡張で、check_foreign_key()関数のNULLポインタ参照が回避されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
ON UPDATE CASCADEの場合、参照列の新しいキー値がNULLであると、クラッシュが発生していました。これはCVE-2026-6637の修正の見落しですが、その前からあったコードも正しいものではありませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed0c4d5af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6b4de201e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb93f10e2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=77b2d18e9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1de0a711d">&#167;</a></small></p>
<li>contrib/segで、確実性指示子「~」を持つセグメントの値が正しく出力されるように修正されました。  (Ewan Young) (18)(17)(16)(15)(14)</li>
<p>
seg型の出力関数seg_out()はセグメントの上限に付いた「~」を出力していませんでした。さらに悪いことに、下限に「~」があり上限に指示子がない場合、上限がまったく出力されませんでした。なお、文字列としての出力が不正であるだけで、演算結果に影響はありません。
</p>
<pre>
（誤動作例：2番目と3番目が誤動作）
db1=# SELECT '~1 .. ~5'::seg, '1 .. ~5'::seg, '~1 .. 5'::seg;
   seg    |  seg   |  seg
----------+--------+--------
 ~1 .. ~5 | 1 .. 5 | ~1 ..
(1 row)
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0004cab4d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bcbbd070d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=504ca0513">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3aa2083a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=58b91fc73">&#167;</a></small></p>
<li>contrib/xml2のxpath_nodeset()関数で名前空間ノードを問合せたときのクラッシュが修正されました。  (Andrey Chernyy, Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
以下のように、query引数に「//namespace::」を指定した場合にクラッシュするケースが報告されました。
</p>
<pre>
db1=# SELECT xpath_nodeset(
        '&lt;root xmlns:foo="http://example.com/foo"&gt;&lt;child/&gt;&lt;/root&gt;',
        '//namespace::*');
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=91b57eade">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4a49ab289">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18955d412">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bc5775149">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f3f901a53">&#167;</a></small></p>
<li>OpenSSL 4を使ったPostgreSQLのビルドに対応しました。  (Daniel Gustafsson) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=27cf3b5af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bcabfcce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fb8befa7b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7f70fa1b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=086652c02">&#167;</a></small></p>
<li>タイムゾーンデータファイルをtzdataリリース2026cに更新しました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
アルバータ州（America/Edmonton）は、2026年11月から年間を通したUTC-06（実質的に、恒久的なサマータイム）になります。このリリースでは、それ以降のタイムゾーン省略形は「CST」と仮定しています。この仮定は将来変更される可能性が高いのですが、新しい省略形に何が使われるかは明らかになっていません。
</p>
<p>
モロッコ（Africa/Casablanca）は、2026-09-20に、サマータイムの切り替えなしの恒久的なUTC+00に移行します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3c16aa293">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5f67124fa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=669438aed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=796c275a0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=af7be5672">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=812cc1a73">&#167;</a></small></p>
<li>古いマイナーバージョンが生成したWALのリプレイ時の自己デッドロックが修正されました。  (Andrey Borodin) (16)(15)(14)</li>
<p>
この不具合は前回のマイナーリリース(16.14、15.18、14.23)で導入されました。より古いマイナーバージョンのプライマリに追従するスタンバイサーバで、startupプロセスがハングアップしてレプリケーションが先に進まなくなりました。
</p>
<p>
共有行ロックで使われるマルチトランザクションに関するWALレコードのリプレイで問題が発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42a3194e5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2dfe75f98">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2bb60eb4f">&#167;</a></small></p>
<li>変数が1つも渡されていない場合でも、未定義のjsonpath変数をエラーとして扱うようになりました。  (Andrey Rachitskiy) (16)(15)(14)</li>
<p>
jsonbの「@?」演算子と「@@」演算子がjsonpath式の中で使う変数を渡せない、という場合のコードパスでは、未知のjsonpath変数が、本来の期待であるエラーの発生ではなく、JSONのnullとして誤って扱われていました。期待される動作でないことに加えて、この誤りは無制限のメモリ消費を引き起こす可能性がありました。
</p>
<pre>
（誤動作例）
db1=# select '{"A":1}'::jsonb @@ '$"no_such_var" == 1';
 ?column?
----------
 f
(1 row)

db1=# SELECT '{"A":1}'::jsonb @? '$"no_such_var"';
 ?column?
----------
 t
(1 row)

（修正後は以下のエラーが出る）
ERROR:  could not find jsonpath variable "no_such_var"
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1daeef6e0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8af173e28">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=364014327">&#167;</a></small></p>
<li>Visual Studio 2026を使ったPostgreSQLのビルドに対応しました。  (Andrew Dunstan) (16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bc5a873a8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eba7f1dc0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f1c579fc4">&#167;</a></small></p>
</ol>

<div>
<a href="https://www.sraoss.co.jp/prod_serv/support/pgsql-mainte/?utm_source=sraoss-techblog&utm_medium=referral&utm_campaign=under-article-pgsql" rel="noopener" style="color:initial;" target="_blank" class="no-ext"></p>
<div style="background-color:#DAEFF6; padding:20px; border-radius:8px; text-align:center;">
SRA OSSでは、PostgreSQL/Pgpool-II のサポートを提供しております。<br />
詳しくは<strong style="color:#2581c4;">弊社ホームページ</strong>をご覧ください。
</div>
<p></a>
</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PostgreSQL 14.24 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/14-24/</link>
		
		<dc:creator><![CDATA[データベース技術グループ]]></dc:creator>
		<pubDate>Tue, 01 Sep 2026 04:29:56 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 14]]></category>
		<category><![CDATA[PostgreSQL 14.23]]></category>
		<category><![CDATA[PostgreSQL 14.24]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=21102</guid>

					<description><![CDATA[このリリースは 14.23 からの修正リリース（2026年 8月 13日リリース）です。 14.X からのアップデートではダンプ、リストアは不要です。 しかしながら、最初の 3項目のセキュリティ修正は、設定の修正やデータ ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 14.23 からの修正リリース（2026年 8月 13日リリース）です。<br />
14.X からのアップデートではダンプ、リストアは不要です。</p>
<p>しかしながら、最初の 3項目のセキュリティ修正は、設定の修正やデータのクリーンアップが必要となるかもしれません。また、以下に記載の修正項目に該当する GiSTインデックスがある場合には、インデックス再構築が必要となります。</p>
<p>さらに、14.19 よりも前のバージョンからアップデートする場合には、<a href="/tech-blog/pgsql/14-19/" rel="noopener">14.19のリリース情報</a>も参照してください。</p>
<p><span id="more-21102"></span></p>
<h3>PostgreSQL 14.23 から 14.24 への変更点</h3>
<p>18.6, 17.11, 16.15, 15.19, 14.24 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<ol>
<li>ロジカルデコーディングの出力プラグインが厳格化されました。新たな設定パラメータoutput_plugin_librariesでの指定が必要となりました。(CVE-2026-6471)  (Jacob Champion) (18)(17)(16)(15)(14)</li>
<p>
これまでは、レプリケーションユーザがロジカルデコーディングむけに任意のライブラリを選ぶことができて（プラグイン名になどフルパス指定も可能）、さまざまな攻撃が可能でした。仕組みを変えずにこれを防げるようにするため、許可された出力プラグインのホワイトリストが導入されました。
</p>
<p>
PostgreSQL本体同梱のpgoutput（ロジカルレプリケーション用）とtest_decoding（単純なテキスト書き出し用）がデフォルトでoutput_plugin_librariesに含まれます。
</p>
<p>
加えて、pg_upgrade --checkで、新クラスタのoutput_plugin_librariesが 旧クラスタ（バージョン 17.x 以降）のレプリケーションスロットで使っているプラグインライブラリを許可していない場合、失敗するようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5d47df21e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a29b607d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=01992176e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e1252ee5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=99f205407">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf3842a64">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7082ce248">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=82fd68801">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fcccea97">&#167;</a></small></p>
<li>contrib/pgcryptoのPGP暗号化がサポートされない暗号化方式を検出するように、修正されました。(CVE-2026-14663)  (Daniel Gustafsson) (18)(17)(16)(15)(14)</li>
<p>
これまでは、OpenSSLが要求された暗号化方式を（例えば、FIPSモードであるため、あるいは、古いプロバイダがロードされていないために）拒否した場合に、pgcryptoはその失敗を知らせず、プレーンテキストを含む暗号化されないブロックに単にXORを適用していて、その「暗号化」は容易に解読可能でした。これは典型的には非推奨や非FIPSの暗号化アルゴリズム（cipher-algoオプション指定が blowfish/bf, twofish, cast5, 3des などの場合）で発生します。
</p>
<p>
これからはデフォルトでは、OpenSSLでサポートされない方式でのPGP暗号化がエラーになり、これまでの動作により不適切に暗号化されたメッセージの復号もエラーになります。pgp_pub_decrypt()関数、pgp_sym_decrypt()関数などのオプション引数の新たなオプションignore_cipher_failureに1を指定して実行すると、従来通りの振る舞いに戻ります。
</p>
<p>
前述の理由で不適切に暗号化されたメッセージを、'ignore-cipher-failure=1'オプションを指定して復号する場合には、OpenSSLの動作がそのメッセージを作成したときと同じでなければなりません。サポートされない暗号化方式が異なっている場合にはうまくいきません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba207f58f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe32b10fc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b05cfc693">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6ca6023ca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=472ef7e4a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7e29eb6f4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d97b3f58c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c5128ca0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7eed42aa8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba2a63faf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=953be116c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2c48c81f">&#167;</a></small></p>
<li>psqlがスクリプト化された「COPY ... FROM STDIN」コマンドに続くインラインデータを、COPY開始時のエラーであっても、読み飛ばすように修正されました。(CVE-2026-6464)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
これまでは「COPY」コマンドが行の読み込みを始める前に（例えば、対象のテーブルが無い、などで）エラーを起こした場合、psqlはこのことを認識できず、続くインラインデータを読んでSQLとして処理しました。これは良くて誤りであり、悪くするとSQLインジェクションを起こします。
</p>
<p>
これまでも、COPY開始処理が完了してサーバが「PGRES_COPY_IN」を返した後であれば、途中の行読み込みでエラーを起こしても、残りを読み飛ばすように動作していました。
</p>
<p>
本修正が実運用SQLスクリプトに影響を及ぼすことは無いと考えられますが、テスト用スクリプトでは意図的に「COPY ... FROM STDIN」コマンドが失敗するように作られている場合があります。そのような場合には各コマンドの後に「\.」というデータ区切り行を追加する必要があります。さもないと、読み飛ばす行が多すぎる結果になるかもしれません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6ab88d37">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=29921259e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=46fa1f6f3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2bdfd5cdc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3fdcfa8f7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5c51ae455">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cf01e213">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=900894d35">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dca6627de">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=db96e87f9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cdbabea7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7215c7e96">&#167;</a></small></p>
<li>EXECUTEやFETCHを実行するポータルの出力行型についてクロスチェックを行うようになりました。(CVE-2026-16239)  (Robert Haas) (18)(17)(16)(15)(14)</li>
<p>
EXECUTEとFETCHは2つのポータルを使います。外側の1つはそのステートメント自身のためで、内側の1つはクエリを代わって実行します。これまで、宣言された2つのポータルの行型を異なるものにできて、これを利用してサーバメモリ暴露や任意コード実行を引き起こせました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=64a65ead1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=37b8f3b0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60887d348">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7d150b5c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc933ce00">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f49beef2">&#167;</a></small></p>
<li>to_char()で、長いタイムゾーン省略形によるバッファオーバーランが修正されました。(CVE-2026-14669)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
これは容易にバックエンドプロセスのクラッシュができて、任意コード実行をもたらす攻撃も報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3294ab839">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fafe2380">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12a620686">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5dbeb69bc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f64cc83f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fb3c6389">&#167;</a></small></p>
<li>正規表現によるマッチ、分割の関数で、バッファオーバーランが修正されました。(CVE-2026-14664)  (Masahiko Sawada) (18)(17)(16)(15)(14)</li>
<p>
不正な文字エンコーディングのデータを渡すと、変換バッファの終端を過ぎた位置に書き込みが行なわれる可能性がありました。regexp_match()、regexp_matches()、regexp_split_to_table()、regexp_split_to_array()の各関数の動作が修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7df2aa8ef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b7e5c3f63">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e91dcfcca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3179253c2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=127a0673f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=890327639">&#167;</a></small></p>
<li>ascii()関数が不正な入力に対して頑健になりました。(CVE-2026-18024)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
不正な文字エンコーディングのデータが入力されることで、騙されて読むべきでない何バイトかを読んで返す可能性がありました。アサートが有効なビルドでは、アサート失敗も発生します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80ce920a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08e812c02">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=849da8210">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac450853d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3b925133b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42d333a78">&#167;</a></small></p>
<li>pg_restore_attribute_stats()関数でのマルチ範囲型の処理が修正されました。(CVE-2026-16238)  (OpenAI Security Research Team) (18)(17)(16)(15)(14)</li>
<p>
pg_restore_attribute_stats()はプランナ統計情報のダンプ、リストアで使われる関数です。
</p>
<p>
pg_restore_attribute_stats()はマルチ範囲型を元となる範囲型と単純に同様に扱っていました。これは境界ヒストグラムについては有効でしたが、他の種類の統計情報に対しては誤っていました。
</p>
<p>
誤った統計情報のリストアにより、不適切なプラン選択による問合せ実行の遅延や潜在的なプランナ誤動作の可能性が考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3d9262bb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08454e8b2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8d428c6e6">&#167;</a></small></p>
<li>scalarineqsel()が、tid型と想定される定数を実際にそうであるか検査するようになりました。(CVE-2026-14668)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
この想定は組み込みの演算子については成り立ちますが、悪意で作られた演算子には通用せず、クラッシュやサーバメモリ暴露を引き起こします。
</p>
<p>
scalarineqsel()は選択率の見積を返すプランナの内部実装関数の1つです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0d60ee717">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a2cb5a1cf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ebf896f4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=591192e2e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=005ffaa7f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=59205c7e9">&#167;</a></small></p>
<li>tsvector型とtsquery型の実装コードが（個々の要素、全体の長さの両面で）きわめて長い値に対して頑健になりました。(CVE-2026-14662)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
ドキュメントに記載されていた上限が、全てのコードパスで必ずしも強制されていませんでした。
</p>
<p>
本マイナーバージョンアップで、これまで許容されていたデータについて、以下のようなエラーが出るようになる可能性があり、仕様通りであるものの非互換変更ともいえます。
</p>
<pre>
ERROR:  lexeme is too long for tsvector ...
ERROR:  string is too long for tsvector ...
ERROR:  word is too long to be indexed ...
ERROR:  tsquery is too large
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cb947ca31">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e25135057">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe0b5bd6d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c1a8805a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f443d0a0a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c2ba321d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3b2238fbe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dddc8a69f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8e87bd473">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=84b6a7a06">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4f8b37b6b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e3014f37">&#167;</a></small></p>
<li>「FUNC_MAX_ARGS」を超える関数引数を処理する必要がない、と誤って想定していた様々な箇所が修正されました。(CVE-2026-14679)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
特に集約関数について、実際の引数の数の上限は「FUNC_MAX_ARGS - 1」ですが、パーサ段階では制限しておらず、後の処理で問題を引き起こしました。潜在的にバッファオーバーランの可能性がありました。
</p>
<p>
「FUNC_MAX_ARGS」はビルド時指定の定数でデフォルト100です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=92972e815">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f0e1aac7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=797e3cc4c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c67c4cf5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b417744a7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf44ff5e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42d9749b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a03f21da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a40f4b09">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=32e0d25d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb2fa2704">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7f462838">&#167;</a></small></p>
<li>internal型を引数や戻り値とする関数のSQLからの呼び出しを拒否するようになりました。(CVE-2026-14680)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
拒否するための既存の仕組みはありましたが、不十分であったため、明示的な検査が追加されました。
</p>
<p>
また、いくつかの集約関数のcombine処理で入力がNULLである場合に正しくSQLとしてのNULLを返すように修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21a00de43">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=54649de65">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb9e55297">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c0c1b2cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e926a9aac">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=155dacbc5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21d8cfb18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=722695db1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=83d0a083f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f308dd7c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6e861e19">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=913fe0c31">&#167;</a></small></p>
<li>ALTER TABLEコマンドで再構築されたとき、拡張統計オブジェクトの所有者が保たれるようになりました。(CVE-2026-6469)  (Masahiko Sawada) (18)(17)(16)(15)(14)</li>
<p>
これまでは拡張統計情報の対象テーブルに、列の型を変えるなどのALTER TABLEコマンドを実行したロールが、拡張統計オブジェクトの所有者になっていましたが、これは不適切な動作と判断されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=93b93f28f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1fa24127">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=75a03c569">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c3367ab5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fb6d1ca8d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=70a3b4e18">&#167;</a></small></p>
<li>EXTRACT()関数呼び出しを逆パースするときに、必要であればフィールド名をクォートするようになりました。(CVE-2026-15741)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
パーサはEXTRACT()のフィールド名としてどのような文字列リテラルも受け付け、検証は実行時まで先送りされます。関数呼び出しを格納して、解析する場合（例えばpg_dumpのとき）、文字列本体が逐語的に吐き戻されて、SQLインジェクションが可能でした。
</p>
<p>
逆パースはダンプ出力やpsqlでの定義表示で行なわれる処理です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a3832a757">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ddd9098a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5981fe370">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5e5ea74e3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=44ea6764b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=967acab87">&#167;</a></small></p>
<li>これまで検査ができていなかった個所について、データ型に対する「USAGE」権限を検査するようになりました。(CVE-2026-6470)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
「CREATE TYPE AS RANGE」、「ALTER TABLE OF」、および、格納される式を作成するコマンド（式を伴うビューやチェック制約の定義など）で、検査が行なわれていませんでした。これらの欠落により、「USAGE」権限を持たないロールでもデータ型に依存するオブジェクトを作成できて、データ型の所有者が後でデータ型を変更できなくなる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=efdb26072">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2e91f8548">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fd6d3e7e9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=24855357c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=97e277402">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=323af0a4e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb1bc525d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57f59ca1d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=671359605">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7a761fe40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c062734cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b6e45b4f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=424fb7160">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=278053843">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d1c8aa0b0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7ce056b17">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6dbedd48b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1a358b8f2">&#167;</a></small></p>
<li>行単位セキュリティ(RLS)に対して、ロールに依存したキャッシュされたプランを、ロール変更後に無効化するようになりました。(CVE-2026-14666)  (Ilya Staroverov, Shinya Kato, Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
ロールのメンバーシップや属性、データベース所有者の変更は、行単位セキュリティポリシーの振る舞いに影響がありますが、これまでは、キャッシュされた古い状態に基づくプランがそのまま使われていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=567286b76">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b12f56bf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1974acf23">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f5f2da795">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=17b6083db">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f4174aa84">&#167;</a></small></p>
<li>直接のSSL接続の後のGSSEncRequestメッセージを拒否するようになりました。(CVE-2026-14681)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
これまでサーバは、TLS暗号化接続が確立した後にもGSSAPI暗号化の要求を受け付けていました。これに成功すると、接続はTLS暗号化(SSL)を使っているけれども、pg_hba.confのルールとしてはGSS接続のように見えました。その結果、pg_hba.confでSSLを無効としていても、それを正しく強制できませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf1bb7e29">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=203a48209">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=067a64d40">&#167;</a></small></p>
<li>モックのSCRAM認証シークレットがより本物らしくなりました。(CVE-2026-14672)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
存在しないロールやSCRAMシークレットを持たないロールに対して、SCRAMログインが試みられた場合、PostgreSQLはモックのシークレットを生成して認証のハンドシェイクをとにかく行ない、攻撃者にそのことが分からないようにします。しかしながら、モックが固定のイテレーションカウントで作られていたため、観測可能な応答の差異がありました。
</p>
<p>
本修正で、モックにもscram_iterations設定パラメータの値を使って、より実際に使われているシークレットに似せるようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d192fa16">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=822143c4d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dec60e8ad">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fadbe882d">&#167;</a></small></p>
<li>ecpgアプリケーションでの範囲外書き込みが修正されました。サーバから不正なbytea型データを受け取ることで引き起こされます。(CVE-2026-16241)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
ecpgはbytea型の値は「\x」で始まることを検査せずに想定していました。壊れているか悪意のサーバは2バイトよりも短い文字列を送ってくるかもしれず、そのためにアプリケーションでのメモリ上書きが発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=457b8737a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a14ba29b1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c3c830272">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39f855e0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5737110b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74c59d062">&#167;</a></small></p>
<li>psqlの「\unrestrict」コマンドの引数でバッククォート展開をしないようになりました。(CVE-2026-18408)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
\restrict と \unrestrict は 17.6、16.10、15.14、14.19バージョンでのCVE-2025-8714の修正で導入されましたが、その中で見落としがありました。悪意のサーバからの応答で出力されたダンプにより、リストアを実行するユーザに意図せぬシェルコマンド実行をさせること（シェルコマンドインジェクション）ができました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0119aa30e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71ca694c7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0bfac9e1f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=33d0c63fb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=df245c374">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2006fca40">&#167;</a></small></p>
<li>pg_dumpにおいてpg_proc.protrftypesのエントリ数がFUNC_MAX_ARGSを超えないという前提が取り除かれました。(CVE-2026-19385)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
入力引数と出力引数の両方のエントリが存在する可能性があるため、この配列の長さがFUNC_MAX_ARGS（これは入力引数のみに制限するものです）を超えることは十分にあり得ます。仮にそうでは無いとしても、pg_dumpはサーバがpg_dumpと同じFUNC_MAX_ARGSの値でビルドされたと仮定することはできません。オーバーランが発生すると、pg_dump内部でのメモリ破壊を引き起こす可能性がありました。
</p>
<p>
pg_procシステムテーブルに関数定義が格納されて、protrftypes列にTRANSFORM句による変換のためのデータ型の配列が格納されます。FUNC_MAX_ARGSは実装内部の定数で、通常100です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86cd82bf4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3392cce5c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c2b16f5d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3299c2ba0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71ba5705d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57aa21f69">&#167;</a></small></p>
<li>tieされたPerlの配列やハッシュに対して、PL/Perlが堅牢化されました。(CVE-2026-14670)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
通常のオブジェクトとは異なる挙動をするtieされたオブジェクトは、メモリの上書きや、破損した結果配列の生成につながる可能性があり、その結果、後で問題が発生する可能性が高い状況でした。
</p>
<p>
tieは、配列やハッシュなどの変数に対して操作用のメソッド群を実装したオブジェクトに結びつける Perl の機能です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c48cd615">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=87c4b8219">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2d78c34f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=477a6bdb0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf4ae7c3b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d7fcfead3">&#167;</a></small></p>
<li>PL/PerlおよびPL/Tclにおけるメモリ割り当て計算時の整数オーバーフローが修正されました。(CVE-2026-14677)  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
これはコードの異なる個所で発生していたCVE-2026-6473と同様の問題で、同じ方法で修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1c1727cb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=028ee716a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b56cc7deb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bbdc0540">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1eb0d5380">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aff9dac1c">&#167;</a></small></p>
<li>contrib/amcheckの関数がインデックス式を実行する前にsearch_pathを制限するようになりました。(CVE-2026-14673)  (Noah Misch) (18)(17)(16)(15)(14)</li>
<p>
amcheckはそれらのインデックス式をテーブル所有者の権限で実行するため、呼び出し元がsearch_pathに依存する関数を乗っ取り、テーブル所有者の権限で任意のコードを実行できてしまう恐れがありました。デフォルトでは、amcheck関数の呼び出しはスーパーユーザーにのみ許可されているため、これは脆弱性には当たりません。しかし、もしその権限が他のユーザに付与されていた場合、ドキュメントで示されているよりも大きな危険が生じることになります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=557cc7186">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0a61fcde0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e41c72aff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2cc147318">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e43e74756">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39d792040">&#167;</a></small></p>
<li>contrib/fuzzystrmatchのlevenshtein()およびlevenshtein_less_equal()関数における整数オーバーフローが修正されました。(CVE-2026-15742)  (Nathan Bossart) (18)(17)(16)(15)(14)</li>
<p>
これらの関数に大きなコスト値を渡すと整数オーバーフローが発生し、無意味な結果が生じたり、場合によっては境界外書き込みを引き起こしたりする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=62c31b490">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e88eb4e76">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c4d51b627">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=61481aa0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74916136f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9505175f2">&#167;</a></small></p>
<li>contrib/pg_stat_statementsにおけるバッファオーバーランが修正されました。(CVE-2026-14676)  (Alvaro Herrera) (18)(17)(16)(15)(14)</li>
<p>
クエリの正規化処理において、正規化後の文字列が必要とするサイズが正確に考慮されていませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb02eba53">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a31ffc2d">&#167;</a></small></p>
<li>contrib/pg_trgmのGiST picksplit関数におけるデータ型エラーが修正されました。(CVE-2026-14678)  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
このエラーによりバッファの末尾を超えた読み取りを引き起こし、通常は不適切な分割判断の原因となっており、運が悪ければクラッシュに至る可能性もありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aa7b5815e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=849019a50">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1af08af69">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=24c88cd39">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7c82a88c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a74aa0854">&#167;</a></small></p>
<li>contrib/refintのプランキャッシュが削除されるようになりました。(CVE-2026-14671)  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
このキャッシュの挙動にはいくつかの深刻なバグがありました。特に、check_foreign_key()がカスケードUPDATEクエリに新しいキー値を埋め込んでしまうため、キャッシュされたプランでは、本来使用すべきキー値ではなく、最初に必要とされたキー値が再利用されてしまう問題がありました。最も簡単な解決策は、これを削除することです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=79a506228">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=66a5146dc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a572dd213">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b7b513d9a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5b72d0279">&#167;</a></small></p>
<li>並列GINインデックスの構築時に、テーブルのpg_class.reltuples値が正しく更新されるようになりました。  (Jan Nidzwetzki, Tomas Vondra) (18)</li>
<p>
並列ワーカーが処理した行数として初期化されていない値を報告する場合があり、その結果、reltuplesがInfinityやNaNといった不正な値になる可能性がありました。このような値が設定されると、その後のautovacuumやautoanalyze操作において、そのテーブルの処理が必要であると判断されなくなる可能性がありました。そうなると、この状態は自動的には解消されません。
</p>
<p>
reltuplesを正しい値にリセットするには、手動でANALYZEコマンドを実行するか、別のインデックスを作成する必要があります。  GINインデックスを持つテーブルがある場合は、reltuplesの値が妥当かどうかを確認することをお勧めします。以下のようなクエリが役立ちます。
</p>
<pre>
SELECT DISTINCT t.oid::regclass, t.reltuples
FROM pg_class t
  JOIN pg_index i ON t.oid = i.indrelid
  JOIN pg_class ic ON i.indexrelid = ic.oid
WHERE t.relhasindex AND ic.relam = 2742;
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5707d7517">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d4420a972">&#167;</a></small></p>
<li>非同期のAppendプランノードを再スキャンする際の、非同期読み取りの不適切な処理が修正されました。  (Alexander Korotkov, Gleb Kashkin, Etsuro Fujita) (18)(17)(16)(15)(14)</li>
<p>
上位のプランノードがAppendの出力をすべて読み取る前にAppendを再スキャンする場合、外部サーバー（例えばpostgres_fdwなど）に対して送信済の未完了リクエストをすべて破棄する必要があります。  サブプランのパラメータが変更された場合や、次回のスキャンでパーティションプルーニングによってサブプランが破棄される場合、この処理が正しく行われていませんでした。  その結果、クエリ結果が不正になったり、無限ループに陥ったり、アサート失敗が発生したりする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7d74b2644">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4ea497a92">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3704870b2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=894da35b3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7213cbfa0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cec48686a">&#167;</a></small></p>
<li>RANGEパーティションテーブルにおけるパーティションプルーニングの不具合が修正されました。  (David Rowley) (18)(17)(16)(15)(14)</li>
<p>
特定のケースにおいて、本来対象とすべきDEFAULTパーティションがスキップされ、その結果、クエリの結果から行が欠落して、誤った問い合わせ結果となる恐れがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9282a650">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=02e69be47">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=31f2acde5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9a0cd8e73">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5190732c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6098f35f4">&#167;</a></small></p>
<li>結果リレーションのプルーニング後に、ModifyTableプランノード内の外部データラッパーの状態を正しく更新するようになりました。  (Ayush Tiwari, Rafia Sabih) (18)</li>
<p>
以前は、実行時のパーティションプルーニングによって、対象のパーティションテーブルの一部のパーティションをスキャンする必要がないと判断された場合、そのテーブルに外部テーブルのパーティションが含まれていると、クラッシュや誤動作が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1ef917e3a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bba4e095d">&#167;</a></small></p>
<li>「BEFORE UPDATE」トリガーを持つテーブルに対して、「RETURNING OLD」を指定したUPDATE文で発生していた並行更新の処理漏れが修正されました。  (Dean Rasheed) (18)</li>
<p>
対象行が並行して更新された場合、「READ COMMITTED」分離レベルでは、RETURNING句で返される「OLD」値はすべて、更新後の行の値を反映している必要があります。しかし、トリガーが存在する場合、トリガー自体や最終的な出力行では正しい値が参照されていたにもかかわらず、古い値が返されてしまっていました。結果として、誤った問い合わせ結果が生じる可能性があります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7048e50f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4908225be">&#167;</a></small></p>
<li>複数の結合キーと多数のNULL値が存在する場合のハッシュ結合の性能問題が修正されました。  (David Rowley) (18)</li>
<p>
NULL値を持つタプルは他のどのタプルとも一致することはないため、ハッシュテーブルに挿入されるべきではありません。  これまでのコードでは、最後の結合列以外の列にNULL値が含まれる場合にこの処理が適切に行われていなかったため、NULL値を含む入力が多数あるとハッシュテーブルが著しく肥大化していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a71a348ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f70acc8a2">&#167;</a></small></p>
<li>RETURNING句の式における括弧で囲まれた「OLD」や「NEW」の解析処理が修正されました。  (Marko Grujic) (18)</li>
<p>
「(old).colname」や「(old).*」といった式が誤って処理され、実質的に「NEW」への参照に変換されていました。結果として、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9108fed3e">&#167;</a></small></p>
<li>value IN (array)式に対するプランナのNULL許容性および厳密性チェックが修正されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
これらのチェックは、配列オペランドが空でないことが既知である場合にのみ成功すべきですが、その点が考慮されておらず、本来適用されるべきではない最適化が適用されてしまう問題がありました。これにより、実際の配列が空であった場合、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9740c68ff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=277122036">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=26d6b7dc9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6fcee189b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=53470ffba">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=13b627a3e">&#167;</a></small></p>
<li>不適切な結合削除のロジックが修正されました。  (Matheus Alcantara, Richard Guo) (18)(17)(16)</li>
<p>
一部の特殊なケースにおいて、外部結合のNULL許容側由来の定数出力値が、本来NULLに置換されるべき場面でNULLに置換されない問題が発生し、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bc479627">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21f5e659e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cdcec567d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3e1fe25e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=72457f1df">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e40d07e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b308eb366">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d610d8e8b">&#167;</a></small></p>
<li>結合の削除処理において、PlaceHolderVarsのクリーンアップがより徹底されるようになりました。  (Richard Guo, Arne Roland) (18)</li>
<p>
この修正により、アサート失敗や誤った実行計画の生成（とそれに伴う誤った問い合わせ結果や予期せぬエラー）を招く可能性のあった様々なエッジケースが解消されます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e02526795">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aae47813a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18105e6db">&#167;</a></small></p>
<li>コンテナデータ型（配列、複合型、範囲型）の等価比較におけるハッシュ可能性に関する漏れていたチェックが追加されました。  (Andrei Lepikhov, Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
プランナは、ハッシュベースの実行計画を採用する前に、コンテナの構成要素の型のハッシュ化可能かどうかを検証する必要がありました。一部の箇所でこの手順が漏れていたため、実行時に「ERROR:  could not identify a hash function for type ...」という予期せぬエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=11aed8d19">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19152e3c2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf2bfe073">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=caebac5f1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=64778fac7">&#167;</a></small></p>
<li>プランナが、異なる等価性ルールを持つグループ化ステップより下位へ、WHERE句をプッシュダウンすることを避けるようになりました。  (Richard Guo) (18)</li>
<p>
非決定的照合順序でグループ化される列に対するテストは、その同じ照合順序を使用した比較である場合にのみ、安全にプッシュダウンできます。そうでない場合、グループ化によって統合されるはずだった行がフィルタリングされて、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=98d5d7ee6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe5d62951">&#167;</a></small></p>
<li>「EXCLUDE」句を指定している、または「ORDER BY」を指定していない、COUNTウィンドウ関数の誤った最適化が修正されました。  (Chengpeng Yan, David Rowley) (18)(17)(16)(15)</li>
<p>
これまで、このウィンドウ関数は該当しない場合でも単調増加するものとして扱われていました。そのため、誤った問い合わせ結果が生じる可能性がありました。
</p>
<pre>
（報告された誤動作例）
db1=# CREATE TABLE t41 (id int PRIMARY KEY, k int NOT NULL, v int);
db1=# INSERT INTO t41(id, k, v) VALUES
        (1, 1, 1), (2, 1, NULL), (3, 1, 1), (4, 2, 1);

db1=# SELECT id, count(v) OVER (
        ORDER BY k RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
        EXCLUDE CURRENT ROW) AS c FROM t41;
 id | c
----+---
  1 | 1
  2 | 2
  3 | 1
  4 | 2
(4 rows)

db1=# SELECT * FROM (
        SELECT id, count(v) OVER (
          ORDER BY k RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
          EXCLUDE CURRENT ROW) AS c FROM t41) s WHERE c &lt; 2;
 id | c
----+---
  1 | 1
(1 row)
→ 正しくは id=3 の行も出力されないといけない
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fcd58c6d9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf184ec77">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=be63b285e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a85732162">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=842e34efa">&#167;</a></small></p>
<li>プランナが"char"型の列の統計情報を参照する際に、予期せぬエラー「ERROR:  cache lookup failed for collation 0」が発生する障害が修正されました。  (Feng Wu) (18)</li>
<p>
"char"型は、一般的に使われるchar(n)型とは別の、主として内部的なシステムカタログで使用されるものです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fd1c3f28">&#167;</a></small></p>
<li>複数階層のパーティションが存在する場合でも、ALTER TABLEのALTER COLUMN ... DROP EXPRESSIONが正常に動作するよう修正されました。  (Alberto Piai) (18)(17)(16)(15)(14)</li>
<p>
ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSIONは、格納生成列を基本列に変換する構文です。複数階層の子パーティション／子テーブルを持つパーティションテーブルや継承ツリーの親テーブルに対して実行すると、「ERROR:  ALTER TABLE / DROP EXPRESSION must be applied to child tables too」というエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ce6e434ce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c374f2807">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18006c1bd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=34785a0d5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=785289de0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cad17745e">&#167;</a></small></p>
<li>排他制約であるインデックスのパーティションをアタッチする処理の不具合が修正されました。  (Japin Li) (18)(17)</li>
<p>
この誤りにより、排他制約を持つパーティションテーブルのダンプ/リストアが正常に動作しなくなっていました。
</p>
<p>
リストア時に以下のようなエラーが発生します。
</p>
<pre>
ERROR:  cannot attach index "..." as a partition of index "..."
DETAIL:  The index definitions do not match.
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2b2c2492c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19e3aa704">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d6c654c8">&#167;</a></small></p>
<li>ALTER CONSTRAINTを使用して、パーティションテーブルのNOT NULL制約にNO INHERITを設定することができないように修正されました。  (Andreas Karlsson) (18)</li>
<p>
本来、パーティションテーブルのNOT NULL制約は、すべてのパーティションに継承される仕様であるため、NO INHERITを指定することはできません。これまでは、この仕様は制約を新規作成する際には正しく適用されていましたが、「ALTER TABLE ... ALTER CONSTRAINT」では適用されておらず、NO NULL制約の有無がパーティションごとに異なるようにできました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41247cdf6">&#167;</a></small></p>
<li>ルールの名前を「_RETURN」に変更できないように修正されました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
「_RETURN」という名前は、ビューの「ON SELECT」ルール用に予約されています。これまでは「ON SELECT」以外のルールをALTER RULEで「_RETURN」に名前変更できてしまい、その後の処理で問題を引き起こしていました。
</p>
<p>
具体的には、ダンプ/リストアで「ERROR:  non-view rule for "..." must not be named "_RETURN"」というエラーを起こすことが報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80c7f5467">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7f7958ab">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e99fb3262">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a69503fb1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eada45dd8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b17a6e3c">&#167;</a></small></p>
<li>DROP OWNED BYにおいて、ロールメンバーシップへのロックの解放漏れが修正されました。  (Jeff Davis) (18)(17)(16)</li>
<p>
この不具合により、トランザクションが終了するまで、ロールメンバーシップ（pg_auth_membersシステムテーブルの対応するエントリであらわされる暗黙的なオブジェクト）へのロックが保持され続けていました。その結果、並行するDDL実行で警告メッセージが出ることがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9eccdae22">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a0daa0b41">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=25e54cec7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e61d44fde">&#167;</a></small></p>
<li>EXPLAINがSQL/JSONの集約関数をデパースするときに予期せぬエラーを出すことがあり、修正されました。  (Richard Guo) (18)(17)(16)</li>
<p>
実行プランの構造によっては、「ERROR:  invalid JsonConstructorExpr underlying node type」というエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eaa561fb6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=45364e496">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dcda1f07d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=485527190">&#167;</a></small></p>
<li>遅延一意性制約のインデックスに対してREINDEX CONCURRENTLYを使用した場合の不具合が修正されました。  (Nitin Motiani) (18)(17)(16)(15)(14)</li>
<p>
REINDEX CONCURRENTLYの実行中に一時的に作成されるインデックスのコピーが、誤って即時一意性制約として扱われていました。そのため、実際には制約違反ではない場合でも、制約違反が発生したと誤って報告することがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9f6fb1191">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4527519b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28269fed6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac222bea5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5b3712e31">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55adef7ab">&#167;</a></small></p>
<li>非決定論的照合順序でバックスラッシュ（\）を使用したLIKE句のマッチングの不具合が修正されました。  (Nitin Motiani, Tom Lane) (18)</li>
<p>
非決定論的照合順序において、LIKEがエスケープされたバックスラッシュ（\\）を誤って処理し、実質的にバックスラッシュが存在しないものとして扱っていました。
</p>
<p>
また、通常の文字の前にバックスラッシュが付いている場合も誤った処理をしていました。この場合、バックスラッシュは実質的に無視されるべきですが、実際には後続の通常の文字を完全一致として扱ってしまい、非決定論的照合順序にマッチするかを判断していませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=99775b388">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a99bd8d58">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=54d5947ef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51652c42d">&#167;</a></small></p>
<li>LIKE句や正規表現の完全一致パターンのインデックススキャン最適化の不具合が修正されました。  (Jelte Fennema-Nio) (18)</li>
<p>
非決定論的な照合順序におけるLIKEのリファクタリングによって、LIKE句や正規表現の完全一致パターンを、等価比較のインデックス条件に変換する最適化が誤って壊れていました。これはインデックスの照合順序と式の照合順序が一致しない場合に発生していました。この影響で、psql の「\d tablename」コマンドが大幅に遅くなっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=67cf73ddb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0bb49e61">&#167;</a></small></p>
<li>to_date() におけるローカライズされた月名、曜日名のマッチング処理が修正されました。  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
大文字・小文字の変換によって文字列のバイト長が変化する場合に、マッチング処理が誤動作していました。月名、曜日名が認識されずに予期せぬエラーが発生する可能性が考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55ea76426">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=011384ba4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8acfaa12a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b594efe52">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0de744cd5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=49a712f32">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5f003855e">&#167;</a></small></p>
<li>ギリシャ文字の語末形のシグマに対する大文字小文字の変換のルールが修正されました。  (Jeff Davis) (18)</li>
<p>
文字列の直前が大文字小文字を区別しない文字だけで構成されている場合、そのシグマを語末形のシグマとはみなさないようにしました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28d498e28">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=66ec24276">&#167;</a></small></p>
<li>ハングルU+11A7（TBASE）のNFC再合成における誤りが修正されました。  (Diego Frias, Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
この文字は有効なT音節として扱われていましたが、実際にはT音節ではないため、正規化処理中にこの文字が消えてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=273fe9485">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0c9cbbfb5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=82116023e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c391375ba">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bb935d61">&#167;</a></small></p>
<li>大文字小文字を区別しない類義語の辞書において、出力する語彙素が切り捨てられる不具合が修正されました。  (Jeff Davis) (18)(17)(16)(15)(14)</li>
<p>
小文字への変換によって語彙素のバイト長が増加した場合、出力時に元のバイト長に誤って切り捨てられていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=89e648498">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3805641cb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b32df590c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7e0e42a2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e0458172">&#167;</a></small></p>
<li>大文字小文字変換処理において、途中で途切れたUTF-8文字への対処が修正されました。  (Jeff Davis) (18)(17)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=05da336dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9021c8f3c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5e78ebca5">&#167;</a></small></p>
<li>hash_record_extended()のバグが修正されました。  (Man Zeng) (18)(17)(16)(15)(14)</li>
<p>
FunctionCallInvoke()に渡される2番目のisnull引数が初期化されていませんでした。既存の組み込み拡張ハッシュサポート関数では、この値を参照しないため問題はありません。しかし、拡張機能が提供するハッシュ関数が「PG_ARGISNULL(1)」を調べる場合、その影響を受ける可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3f13c032">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=203e238bb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8b5580a05">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=259b627d5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74d3482f4">&#167;</a></small></p>
<li>公開可能なテーブルが並行して削除された場合に、pg_get_publication_tables()が失敗する不具合が修正されました。  (Bharath Rupireddy) (18)(17)(16)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28c995948">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=73d63d1c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dcbc96685">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6c760f6b6">&#167;</a></small></p>
<li>VARIADIC NULL を指定した場合に、satisfies_hash_partition() がクラッシュする不具合が修正されました。  (Robert Haas) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2ddc45662">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0c06ebf12">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=52af6fef4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6de480156">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d39b9eed0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0115650de">&#167;</a></small></p>
<li>tsvector_filter() および関連する関数で、不正な重みに関するエラーを、より明確かつ一貫した形で報告するよう修正されました。  (Ewan Young) (18)(17)(16)(15)(14)</li>
<p>
具体的には、表示可能なASCII文字ではない重み文字については、charout()と同様に8進数形式（"\nnn"）で報告します。これにより、無効なエンコーディングを含むエラーメッセージが生成されるのを防ぎます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c5194139c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0626fbfeb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed5ca5828">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3a86eb6d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=262cc4df2">&#167;</a></small></p>
<li>uundv7()関数で範囲外のタイムスタンプとなるシフト値を拒絶するようになりました。  (Baji Shaik) (18)</li>
<p>
v7 UUIDで表現可能な範囲を超えたタイムスタンプになるシフト値は「ERROR:  timestamp out of range for UUID version 7」というエラーを出すようになります。有効なタイムスタンプ範囲は、1970-01-01 00:00から10889年くらいまでです。これまでは壊れたUUID値が作られていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a933deaa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c31b0fca0">&#167;</a></small></p>
<li>xpath()関数でnamestapeノードの処理が修正されました。  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
予期せぬ「ERROR:  could not copy node」エラーが出ていたものが修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c777d6dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6c08cbb7a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=174076601">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d8c72b2e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41876c8d7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0d145be2c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=940916549">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fac26fd41">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9618e790c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a17f39aa2">&#167;</a></small></p>
<li>jsonpathの「.decimal」メソッドが、精度やスケールの指定が正しくない場合でもERRORを出さないように、修正されました。  (Ewan Young) (18)(17)</li>
<p>
サイレントモード（json_path_*関数のsilent引数がtrue）では、エラーを抑止すべきですが、そのようになっていませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5bbc9b300">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=84001a04d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab35b8d25">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=90789900b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c768637d6">&#167;</a></small></p>
<li>「IS JSON」や「JSON()」等の構文が、text型へのキャストを持たない文字列型の引数を与えられたときの、NULLポインタによるクラッシュが修正されました。  (Ayush Tiwari) (18)(17)(16)</li>
<p>
PostgreSQL本体コードには該当するデータ型はありませんが、一部の拡張のデータ型で問題を引き起こす可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=35d9a6263">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0acd2535">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60abb3c73">&#167;</a></small></p>
<li>「SQL/JSON」の「ON EMPTY / ON ERROR DEFAULT」の値に正しい型修飾が確実に適用されるようになりました。  (Ewan Young) (18)(17)</li>
<p>
例えば、対象numeric型列の宣言された精度とスケールがデフォルト値に適用されませんでした。
</p>
<pre>
（誤動作例）
db1=# SELECT JSON_VALUE(jsonb '{"b":"1234.5"}', '$.a' 
        RETURNING numeric(4,1) DEFAULT 99999.9 ON EMPTY);
 json_value
------------
    99999.9
(1 row)

（以下エラーが出るのが正しい動作）
ERROR:  numeric field overflow
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d30bfcbdd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=441e4c8d6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71cd10cd2">&#167;</a></small></p>
<li>money型の最小値（64bit整数最小値）を-1で割ったときの、マシン依存の振る舞いが回避されました。  (Andrey Rachitskiy) (18)(17)(16)(15)(14)</li>
<p>
x86_64アーキテクチャでエラーになるものが、aarch64アーキテクチャではエラーになりませんでした。オーバーフローを起こした場合には必ず「ERROR:  money out of range」が出るようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7746f7492">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6298a41b4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1416f304d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86f42357c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d782c97e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fec40878c">&#167;</a></small></p>
<li>全文検索の辞書に対するキャッシュエントリの作成途中でメモリ不足が生じた後にクラッシュする障害が修正されました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=df8407d7d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=81b1e7916">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=634a8dcb8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=83336e3ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=025228104">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dda622edc">&#167;</a></small></p>
<li>誤ったispell/hunspell辞書ファイルに対する処理でメモリ安全性に問題があり、修正されました。  (Andrey Rachitskiy) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3fe4062cc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4689ea9ce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fdea3aa3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=444038bb7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0fb88979b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cfc720ef4">&#167;</a></small></p>
<li>他セッションの一時テーブルへのアクセスが防止されました。  (Jim Jones, Daniil Davydov, Alexander Korotkov) (18)(17)(16)</li>
<p>
基本的にそのようなアクセスは禁止されていますが、一部のコードパスで防止しきれておらず、干渉されたセッションで誤った問合せ結果が生じるおそれがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b0dd0815">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4dfae59a1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8021cdceb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3aaefe892">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e49f68b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cc3fe7e2a">&#167;</a></small></p>
<li>一時テーブルにアクセスするときの「ERROR: no empty local buffer available」エラーが防止されました。  (Melanie Plageman) (18)</li>
<p>
本修正でストリーミング読み取りの仕組みが使用可能なローカルバッファの数が制限されました。これまでは、effective_io_concurrency設定が大きな値の場合に単一のストリームで全バッファを利用可能であったため、本エラーが発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed8050370">&#167;</a></small></p>
<li>autovacuumがデータベースを処理する順番が修正されました。  (Rustam Khamidullin) (18)(17)</li>
<p>
最高スコアから最低スコアに向かう順で処理されるべきところで、意図せず逆順になっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3331578b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4cc49cb70">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=288d4e83f">&#167;</a></small></p>
<li>VACUUMのXID周回フェールセーフモードで、共有バッファプールを全使用するように動作が復旧されました。  (Melanie Plageman) (18)</li>
<p>
通常のVACUUMは、他の処理に大きな影響を与えないように、共有バッファを少しだけ使うように制限されています。しかしながら、フェールセーフモードではできるだけ早くトランザクションIDを回収する必要があるので、この制限は放棄されることになっていました。この振る舞いがv18のリファクタリングで壊れていて、復旧されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fd90c3221">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=585181e07">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55d01a10f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c25cdb1e">&#167;</a></small></p>
<li>パラレルVACUUMワーカーの処理でのメモリリークが修正されました。  (Baji Shaik) (18)(17)</li>
<p>
パラレルワーカーからの報告過程で報告ごとに1kB程度のリークがあり、これはワーカープロセスが生きている間は蓄積されていきました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4154a1482">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8ad414831">&#167;</a></small></p>
<li>問合せのキャンセルとVACUUM遅延が、GINインデックスのポスティングツリーのクリーンアップ中であっても、すぐに行なわれるようになりました。  (Paul Kim, Alexander Korotkov) (18)(17)(16)(15)(14)</li>
<p>
よくある値に対するポスティングツリーは大きくなることがあり、ここに割り込みの検査が欠けていたため、処理が長く継続してしまいました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=70dad584e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7becb647d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba5e46329">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=006ac761e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7123abab7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=15fd7a3e2">&#167;</a></small></p>
<li>GiSTおよびSP-GiSTのインデックスに対するIndex Only Scanで、インデックスタプルのデコーディングを誤る可能性があり、修正されました。  (Peter Geoghegan) (18)(17)(16)(15)(14)</li>
<p>
この障害で壊れたデータが出力されて、誤った問い合わせ結果や予期せぬエラーが発生する可能性がありました。本体コードで影響があるのは、GiSTの演算子クラスrange_opsのみで、その範囲列が最初のインデックス列でない場合にのみ、誤動作が発生します。
</p>
<pre>
（誤動作例）
db1=# CREATE TABLE t75 (a inet, r numrange);
db1=# INSERT INTO t75 VALUES 
      ('::1', numrange(repeat('1', 100)::numeric, repeat('2', 200)::numeric)));
db1=# CREATE INDEX ON t75 USING gist (a inet_ops, r range_ops);
db1=# VACUUM ANALYZE t75;
db1=# SET enable_seqscan TO off;
db1=# SELECT lower(r) = repeat('1', 100)::numeric,
             upper(r) = repeat('2', 200)::numeric FROM t75;
ERROR:  type with OID 860 does not exist
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d4c81ad6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=959b7fa2c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=355faed5a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e58192546">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=126141425">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4ad22eb0">&#167;</a></small></p>
<li>バルク拡張されたテーブルの新たな最終ブロックがフリースペースマップに即座に追加されるようになりました。  (Jingtang Zhang) (18)(17)(16)</li>
<p>
off-by-one（1つ足りない）誤りで、複数ブロックが追加されたときの最後のブロックがフリースペースマップに登録されませんでした。VACUUMによってやがては正しく登録されますが、それまでの間、最終ブロックが使われませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7a103928a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eabc9a9dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=768ae083e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0fd5595aa">&#167;</a></small></p>
<li>トランザクションのアボート時のリソース解放処理で、メモリの二重解放（クラッシュをひきおこします）、または、エラーの再帰的な無限ループが起きる可能性があり、修正されました。  (Tom Lane) (18)(17)</li>
<p>
巨大な入力値を伴うSQLがエラーになって、トランザクションアボートが行なわれたケースで問題が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac6a58a70">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=011eedcdc">&#167;</a></small></p>
<li>PostgreSQLの処理内でディレクトリを作成するとき、同じディレクトリの同時作成を許容するようになりました。  (Andrew Dunstan, Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
他プロセスが同じディレクトリを作っているのであれば、ディレクトリ作成に成功した扱いとすることで、これまで同時実行で発生する可能性のあった「ERROR:  could not create directory "...": File exists」といったエラーを回避できます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aa80c34c8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f0a831ef3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9951e3d38">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4647ac142">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4b3bc6b71">&#167;</a></small></p>
<li>JITコンパイルされたタプルデフォームを行うコードが、仮想生成列を正しく考慮するように修正されました。  (David Rowley) (18)</li>
<p>
NOT NULL制約のある仮想生成列を含むテーブルへの問合せで、誤った問い合わせ結果が生じる例が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e9692de1d">&#167;</a></small></p>
<li>依存されている全てのオブジェクトに共有ロックを取得することにより、宙に浮いたオブジェクト依存関係の生成が防止されました。  (Bertrand Drouvot) (18)(17)(16)(15)(14)</li>
<p>
共有ロックは依存されているオブジェクトの削除と衝突しますので、これまであった競合状態を排除することができます。
</p>
<p>
例えば、これまでは、空スキーマの削除とスキーマ内へのオブジェクト作成の同時実行が両方成功して、無効なオブジェクト定義が残ることがありましたが、これからはどちらかのトランザクションが失敗します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c8cd3d697">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3a9909eda">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9bc0d96c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fa137727">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5100bdbd3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9d5a52da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c1588f92a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d44cd4674">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ef3d7b15e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=36b6ed260">&#167;</a></small></p>
<li>SERIALIZABLE分離モードに対する衝突の検出での競合状態が修正されました。  (Peter Geoghegan) (18)(17)(16)(15)(14)</li>
<p>
初期の空のbtreeインデックスを検査するときに衝突が見過ごされる可能性があり、競合しているトランザクションのコミットを許してしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2aa3c6d1f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d560e730e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8434c9385">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e321faaae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5d18105ca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2fc3e1b44">&#167;</a></small></p>
<li>バリアイベントの処理で競合状態が修正されました。  (Masahiko Sawada) (18)(17)(16)(15)</li>
<p>
この誤りにより、プロセスがハングアップする可能性がありました。典型的には、その際に以下ログメッセージが出力されます。待機イベントとしてはIPC型のProcSignalBarrierの待機となります。
</p>
<pre>
LOG:  still waiting for backend with PID %d to accept ProcSignalBarrier
</pre>
<p>
近年追加されたオンラインWALレベル変更などの機能によって、この問題がより目立つようになっています。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1a9b1cc18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a651b8a89">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cdb9b2830">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=159324a73">&#167;</a></small></p>
<li>同じロックグループに属するプロセス集合が同時に終了したときの競合状態が修正されました。  (Vlad Lesin) (18)(17)(16)(15)(14)</li>
<p>
この誤りは「PANIC:  latch already owned by PID ..」によるサービスのPANIC終了を引き起こす可能性があります。PostgreSQL本体の通常のパラレル問合せでは、リーダープロセスがワーカープロセスの終了を待たずに終了することが無いため、この問題は起きませんが、何らかの拡張で該当する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ae08eb168">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d489c4439">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=65d04df60">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d5cc6df60">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8007d1185">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c9b8b42">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e14b4ea4a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e8edf53f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e786fb5aa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=db4d12fc9">&#167;</a></small></p>
<li>テーブルのビジビリティマップ(VM)でビットをクリアする操作のWAL出力が修正されました。  (Melanie Plageman, Andres Freund) (18)(17)</li>
<p>
このようなVM変更がWALサマライズ処理で見落とされていて、誤ったインクリメンタルバックアップをもたらす可能性がありました。また、このようなVMページの必要時のフルページイメージWAL出力も行なわれておらず、壊れたページ書き込みが修正されないままとなる可能性がありました。これは後にIndex Only Scanでの誤った問い合わせ結果が生じるなどの、誤動作を引き起こすおそれがあります。
</p>
<p>
既存のバックアップやアーカイブWALに潜在的にデータ破損が含まれていることに留意してください。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=56bf5fa5d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0fb1da21">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7edec8b57">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b01c31eef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f581fa729">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c0d9864f5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9171f77db">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d7feebfb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=067213430">&#167;</a></small></p>
<li>WALサマライズ処理でのタイムライン変更時のハングアップが防止されました。  (Robert Haas) (18)(17)</li>
<p>
スタンバイサーバで、以下のログメッセージがwalsummarizerプロセスから継続的に出力される動作が報告されました。
</p>
<pre>
ERROR:  could not read WAL from timeline .. at ...: invalid record length ...
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dfb96277d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18f0de6b8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=499d9eabb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bdcea66f0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d299d6ab">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d28cdf46e">&#167;</a></small></p>
<li>スタンバイ昇格のときのロジカルデコーディングのタイムライン選択で、競合状態が修正されました。  (Bertrand Drouvot) (18)(17)(16)</li>
<p>
スタンバイ側で実行中のロジカルデコーディングが「ERROR:  requested WAL segment has already been removed」で失敗する可能性がありました。再試行すれば成功するため恒久的な問題はありませんが、可用性としては有害でした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b4bd13850">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=16b89ff04">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cd687c44">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a04624da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4bff3aa51">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab5334d8b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9b49e5b4">&#167;</a></small></p>
<li>タイムラインを切替するときのwalreceiverの接続文字列の露出が回避されました。  (Chao Li) (18)(17)(16)(15)(14)</li>
<p>
pg_stat_wal_receiverビューは機微なデータを除いてサニタイズされた接続文字列を見せるべきです。しかし、タイムライン切替に際して既存のwalreceiverプロセスを再利用するときに、一時的に完全な接続文字列を見せてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b903d1792">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c89499a79">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e037a4199">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=065cbfb88">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e18b77153">&#167;</a></small></p>
<li>ロジカルレプリケーションで受け取ったタプルの列数が正しいかの検証を、アサートではなく実行時チェックで行うようになりました。  (Varik Matevosyan) (18)(17)(16)(15)(14)</li>
<p>
悪意の、または、壊れたパブリッシャは一貫性のない列数を送出するかもしれません。これによる深刻な悪影響をおよぼすシナリオは見つからなかったものの、より注意を払うべきと判断されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dc3db3a83">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=15f4e3d0c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=59759e1a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=871d4f5b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=510a05f07">&#167;</a></small></p>
<li>レプリケーションコマンド内の文字列パラメータへのクォート付加について、実装がクリーンアップされました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
レプリケーションコマンドを生成する様々な個所で、コマンドに挿入されるレプリケーションスロット名や他のパラメータのクォート付加について、十分な注意が払われていませんでした。そのため、レプリケーションコマンドで予期せぬエラーが発生するおそれがありました。
</p>
<p>
原理的には作りこまれたレプリケーションスロット名でSQLインジェクションも可能でした。ただし、ほとんどの場合、元からSQL実行が可能な管理者が行う操作であるため、実用的な害はないと考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=abb582555">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=14810cc0d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=26d6c19d0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=819e5b964">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a00840e8">&#167;</a></small></p>
<li>空のプリペアドトランザクションのロジカルデコーディングについて修正されました。  (Masahiko Sawada) (18)(17)(16)(15)(14)</li>
<p>
デコード可能な変更を起こさないプリペアドトランザクションは、先立つ「PREPARE」無しに、「COMMIT PREPARED」や「ROLLBACK PREPARED」を出力プラグインに送出していました。組み込みのサブスクライバでは、これはレプリケーションを壊します。他のプラグインでも同様に問題となると考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2289e65e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b563fc6bd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c4519c71">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=744618346">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0dbfb8520">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c2d34db0a">&#167;</a></small></p>
<li>スタンバイ昇格後のUNLOGGEDシーケンスのデータ破損が修正されました。  (Fujii Masao) (18)(17)(16)(15)</li>
<p>
これまでは、プライマリで作られてスタンバイにレプリケートされたUNLOGGEDシーケンスに、スタンバイ昇格後にアクセスすると、「ERROR:  bad magic number in sequence」などのエラーや、アサート失敗が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=22af34b98">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=627605713">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1ed6a9a0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=913d3b610">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d2980067b">&#167;</a></small></p>
<li>カスケードスタンバイでのWALアーカイブによるリカバリからストリーミングに復帰するときの再接続失敗が、修正されました。  (Marco Nenciarini) (18)(17)(16)(15)(14)</li>
<p>
このとき「ERROR:  requested starting point ... is ahead of the WAL flush position」が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bef46aed3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=331016322">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2cf28d1b9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5dbeb69bc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f64cc83f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fb3c6389">&#167;</a></small></p>
<li>WALリプレイが一貫性のあるデータベース状態に達する前にホットスタンバイ接続を受け付ける動作が防止されました。  (Nikhil Sontakke) (18)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7673dfe77">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=311e66df9">&#167;</a></small></p>
<li>スタンバイサーバで、ローカルにpg_database.dathasloginevtのクリアを試みないようになりました。  (Ayush Tiwari) (18)(17)</li>
<p>
スタンバイで実行が試みられていましたが、これは機能しておらず、また、プライマリでの変化がすぐに反映されて上書きされるので不要な動作でした。
</p>
<p>
loginのイベントトリガを削除した後にスタンバイに接続したときに、「FATAL:  cannot acquire lock mode AccessExclusiveLock on database objects while recovery is in progress」が出て接続できない動作が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=97b5c5aaa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4a375527a">&#167;</a></small></p>
<li>使われなくなったレプリケーションスロットを削除するときの競合状態が回避されました。  (Xuneng Zhou) (18)(17)</li>
<p>
削除直後のスロットの共有メモリエントリを他セッションが再利用した場合、誤ったロック解放と誤ったログメッセージ（異なるスロット名やデータベースOIDが使われる）が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08458bcae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ea834d747">&#167;</a></small></p>
<li>一時的なレプリケーションスロット（初期化途中の論理レプリケーションスロット）を削除するときの競合状態が回避されました。  (Zhijie Hou) (18)(17)(16)(15)(14)</li>
<p>
これまでの実装では、スロットを解放した後にスロットの共有メモリエントリにいくらか追加的な更新を実行していました。これは他セッションが直ちに再利用するかもしれないため、安全ではありません。本修正で、一時スロットには、この更新を行なわないようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f833c9207">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=080d61f07">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51e79222c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4eb59d40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=968c50845">&#167;</a></small></p>
<li>ロジカルレプリケーションのテーブル初期同期で、進捗報告が古い内容となっていた問題が修正されました。  (Shinya Kato) (18)(17)(16)(15)(14)</li>
<p>
これまでは、サブスクライバのpg_stat_progress_copyビューは、データコピーが終わった後でも、初期COPY操作をアクティブとして表示していました。同期がパブリッシャに追いつくまで、古いエントリが表示されたままでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9cd9b4d7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f2acab534">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d140237da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b5f7e7569">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e3c4e3746">&#167;</a></small></p>
<li>バックアップに失敗したなら、ベースバックアップの進捗がクリアされるようになりました。  (Chao Li) (18)(17)(16)(15)</li>
<p>
これまで、pg_stat_progress_basebackupビューは、レプリケーションクライアントが切断するまで、古い進捗情報を表示し続けていました。標準付属のpg_basebackupであれば、失敗した後に即座に切断しますが、他のバックアップを取得するクライアントはそうであるとは限りません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b70000837">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e7564ee8c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2ea6bfed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7cbd80340">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cf7530cf7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2ad214dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a240e8cd2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fffa4d870">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a8fb98b7b">&#167;</a></small></p>
<li>設定track_functionsが有効であるとき、実行時統計情報(pgstats)のエントリの同時削除のためにPANICが生じる可能性があり、修正されました。  (Sami Imseih, Michael Paquier) (18)(17)(16)(15)</li>
<p>
「PANIC:  cannot abort transaction .., it was already committed」が出るケースが報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5cc59834b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2e0c61aed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf4616b59">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e9e62193">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a4f389dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39e649d44">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c457ea15">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=75aca8b93">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe464e9e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=afb076b29">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e34b1ff5d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e4771825">&#167;</a></small></p>
<li>対応する共有ハッシュテーブルのエントリに対するメモリ領域取得に失敗した後、壊れた実行時統計情報(pgstats)のローカルエントリをクリーンアップするようになりました。  (Niall Newman) (18)(17)(16)(15)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=89fc6a7c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2fd8d45ec">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc9283b21">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=636bcd6a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=10e20e59e">&#167;</a>これを行なっていなかったため、次にローカルエントリが使われたときに、NULLポインタ参照によるクラッシュが発生しました。
</p>
<p></small></p>
<li>読み込みや書き込みの失敗後に誤ったI/O操作統計が記録されないように、修正されました。  (Bertrand Drouvot) (18)</li>
<p>
各種のWAL読み書きに処理に失敗したときにエラーを意味する負の値がそのまま統計値のカウントに使われていて、pg_stat_ioビューなどで参照されるWALのI/O統計に誤った値が混入する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=13f940b4b">&#167;</a></small></p>
<li>PL/Perlで、不正なPostgreSQL::InServer::ARRAYオブジェクトを扱うときのNULLポインタ参照によるクラッシュが回避されるようになりました。  (Xing Guo) (18)(17)(16)(15)(14)</li>
<p>
PostgreSQL::InServer::ARRAYはPL/Perl関数に引数でPostgreSQLの配列を渡すときに使われるperlのオブジェクト型です。PL/Perl関数からPostgreSQLの配列を返すときにも使用できます。検査が不足していて、引数に由来せず適切な内部構造を持たないPostgreSQL::InServer::ARRAYオブジェクトを返すとクラッシュを引き起こせました。
</p>
<pre>
（クラッシュ発生例）
=# CREATE FUNCTION f102() RETURNS integer[] AS $$
     return bless {}, "PostgreSQL::InServer::ARRAY"; $$ LANGUAGE plperl;
=# SELECT f102();
server closed the connection unexpectedly
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e430ecc59">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d424d06ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3854f4afc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9b2a6ccc4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e520ad34b">&#167;</a></small></p>
<li>PL/Pythonで、Pythonのシーケンスオブジェクトとマッピングオブジェクトを扱うときにエラーを正しく検査するようになりました。  (Richard Guo) (18)(17)(16)(15)(14)</li>
<p>
hstore_plpython拡張やjsonb_plpython拡張を使って、PL/Python関数の戻り値をhsotre型やjsonb型に変換している場合に該当する問題です。これまでは、壊れたオブジェクトやハンドルされない例外によって、NULLポインタ参照によるクラッシュが発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=53482fcb9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3dc59c173">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e92f23bde">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12bff46ff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b7719f74">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=309dc4526">&#167;</a></small></p>
<li>libpqで、pqReadData()の実行中にSSLまたはGSSの復号バッファに残っている未処理バイトを常にすべて取り出すようになりました。  (Jacob Champion) (18)(17)(16)(15)(14)</li>
<p>
例外的なケースですが、大きなメッセージのサーバからの届き方によっては、バッファがいっぱいになることでlibpqがソケット到着を誤って待ち続けて、APIを呼び出すクライアントアプリケーションがハングアップしてしまう可能性がありました。
</p>
<p>
pqReadData()はサーバ側からデータを読むlibpqの内部実装関数です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eeb2940ae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2167302b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c162810a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d3f329656">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4ecba7fa3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b018b5d1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f8745543">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb0a54518">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=177a2a2e3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=477bc27a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=05908afcd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d3888c90a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=536512f34">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=27761c015">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0958c3ea4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6243ea6c3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21a6c69ea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f5f569713">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9eb70c9c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=87c3a79ea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bab0a2db7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=56988064b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5ba13f8c0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7532f2117">&#167;</a></small></p>
<li>libpqのメモリ不足状態の処理が改善されました。  (Anthonin Bonnefoy) (18)</li>
<p>
COPYデータ読み込みや関数呼び出しの途中に、非同期メッセージ処理でメモリ不足になった場合にも、直ちにエラーを出すようになりました。これまでは、セッション切断された状態で処理が継続されていて、エラー発生が遅れたり、不適切なエラーが出る可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8380013cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6b46a5d1b">&#167;</a></small></p>
<li>libpqのトレース機能が、新しい形式のBackendKeyDataメッセージとCancelRequestメッセージを正しく出力するようになりました。  (Anthonin Bonnefoy) (18)</li>
<p>
これらのプロトコルメッセージは固定長から可変長に仕様変更されましたが、トレース機能では固定長を想定したままとなっていたため、「mismatched message length」という警告が出力されていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0766bc57e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dd5eca055">&#167;</a></small></p>
<li>libpqが30000バイトを超えるParameterDescriptionメッセージを受け付けられるようになりました。  (Ning Sun) (18)(17)(16)(15)(14)</li>
<p>
libpqは受信メッセージの妥当性検査として、「長くなりうるメッセージ型」以外について長すぎるメッセージを弾きます。ParameterDescriptionは「長くなりうるメッセージ型」として扱われていなかったため、メッセージ長が30000バイトを超えるとエラーになっていました。この制限により、7498個を超えるパラメータを持つプリペアドステートメントに対するPQdescribePrepared()が失敗していました。この数のパラメータはまれな用法ですが仕様の範囲内です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b1ab4bc52">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4183c667">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8d516d2b9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0f63b74a4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b79c8d1a">&#167;</a></small></p>
<li>ecpgコンパイラのNULLポインタ参照によるクラッシュが修正されました。  (Jehan-Guillaume de Rorthais) (18)</li>
<p>
構造体の内側に入れ子になった共用体を含むDECLAREセクションをもつ.pgcコードを変換しようとすると、ecpgコマンド実行がクラッシュしました。
</p>
<pre>
（ecpgコマンドがクラッシュするコード例）
EXEC SQL BEGIN DECLARE SECTION;
    struct s1
    {
        char STR1[10];
        union u1
        {
             int NUM1;
             int NUM2;
        } U1;
    } S1;
EXEC SQL END DECLARE SECTION;
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=917fdbc63">&#167;</a></small></p>
<li>ecpgのGET DESCRIPTOR文とSET DESCRIPTOR文で、記述子ヘッダ項目を複数指定する構文が拒否されるようになりました。  (Masashi Kamura) (18)(17)(16)(15)(14)</li>
<p>
これまでも文法上はこの構文が許されていましたが、実装は実際には複数のヘッダ項目に対応できておらず、指定すると壊れたCコードが生成されていました。
</p>
<p>
本修正で構文解析処理でもドキュメント上でもヘッダ項目は1つだけに変更されました。これは非互換性を含む変更です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=081434b0f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe8c0a762">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d4b73cfd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bfeddcf09">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e8fd9f7a">&#167;</a></small></p>
<li>psqlのパイプラインモードにおける遅延エラーの問題が修正されました。  (Michael Paquier) (18)</li>
<p>
Syncメッセージへの応答としてサーバがエラーを報告する場面（遅延制約の違反など）で、psqlがハングアップしたり、アサート失敗したりする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e9bc4074">&#167;</a></small></p>
<li>psqlの拡張表示（expanded）の整形出力で、行の幅が揃うようになりました。  (Pavel Stehule) (18)(17)(16)(15)(14)</li>
<p>
テーブルのデータ行がレコードヘッダ行より狭い場合、データ行の幅がレコードヘッダ行に合わせられず、次のように桁のずれた出力になっていました。
</p>
<pre>
（ずれた出力の例）

+-[ RECORD 1 ]-+
| a | 10 |
| b | 20 |
+---+----+

（修正後の出力例）

+-[ RECORD 1 ]-+
| a | 10       |
| b | 20       |
+---+----------+
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=07a6c262b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=efd885d05">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1edbe6695">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=022ba5c61">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4ca91ea1">&#167;</a></small></p>
<li>psqlの特別変数WATCH_INTERVALについて、既定の上限が強制されるようになりました。  (Sven Klemm, Daniel Gustafsson) (18)</li>
<p>
大きすぎる値(1000000超)を設定しようとすると、psqlはエラーを報告するものの、その値を適用してしまっていました。修正後は、上限を超える値は拒否され、変数の値は変更されません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e0c641ebb">&#167;</a></small></p>
<li>psqlの「\l+」でデータベースサイズを表示する権限検査が修正されました。  (Christoph Berg) (18)(17)(16)(15)(14)</li>
<p>
サーバ側のpg_database_size()は、pg_read_all_statsロールの権限を持つ利用者に対して、対象データベースへのCONNECT権限がなくてもすべてのデータベースのサイズの参照を許します。しかしpsqlはこの仕組みを考慮せず、CONNECT権限を持つ利用者以外に対してはこの関数を呼び出していませんでした。
</p>
<p>
修正後は、「\l+」の権限検査にpg_read_all_statsロールの権限（USAGE）の確認が加わり、pg_database_size()の権限規則と一致するようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=77aeca802">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f2d6cf880">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41949c6f3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=844bc718a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e6e8a3078">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e19081da">&#167;</a></small></p>
<li>psqlの「\df」のタブ補完で、プロシージャも候補に含めるようになりました。  (Erik Wienhold) (18)(17)(16)(15)(14)</li>
<p>
「\df」コマンド自体はプロシージャも表示対象に含めるよう拡張されていましたが、タブ補完の候補は関数だけを表示し続けていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=558e0de6d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=598af79b1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=355a4fcf9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9afdb6d1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c25737c89">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2d44bb900">&#167;</a></small></p>
<li>pgbenchのスレッド安全性のバグが修正されました。  (Fujii Masao) (18)(17)(16)(15)</li>
<p>
pgbenchを複数スレッドで実行し、かつ「--verbose-errors」オプションを指定した場合、異なるスレッドが同じバッファを使ってエラーメッセージを組み立てようとし、ログ出力が壊れる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=98dd6c204">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=52b3e7001">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6432a4cd6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f18fcd9a4">&#167;</a></small></p>
<li>pg_combinebackupで、コピー元ファイルが想定より小さい場合に無限ループが発生することがあり、防止されました。  (Peter Eisentraut) (18)(17)</li>
<p>
「--copy-file-range」を指定して合成フルバックアップを再構築する過程で、ファイルが0バイトしかコピーできなかった場合をエラーとしていなかったため、試行が繰り返されてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d36b72894">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=090ce6934">&#167;</a></small></p>
<li>pg_createsubscriberで、エラー発生後にパブリッシャ側オブジェクトのクリーンアップが行なわれない場合があり、修正されました。  (Nisha Moond) (18)(17)</li>
<p>
pg_createsubscriberは、論理レプリケーションオブジェクトを作成した後にエラーを起こした場合、パブリッシャ上に作成したパブリケーションとレプリケーションスロットを削除する必要があります。一部のエラーケースでは削除が行われず、pg_createsubscriberの再実行のために手動での削除が必要でした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=196b4b5ae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c03784a21">&#167;</a></small></p>
<li>pg_recvlogicalの出力ファイルが、ソースクラスタのグループ読み取り権限に従って作成されるようになりました。  (Fujii Masao) (18)(17)(16)(15)(14)</li>
<p>
pg_recvlogicalはこの挙動についてドキュメントに記載されていたにもかかわらず、実際にはソースクラスタのグループ読み取り権限を反映した書き出しが行なわれず、常にファイル所有者の読み書きのみを許すモードが使われていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=89b4b3ae3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ddd12d1a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9590dcfca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba9833a75">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5552a15a3">&#167;</a></small></p>
<li>pg_restoreの「--statistics」および「--statistics-only」オプションの一貫しない挙動が修正されました。  (Chao Li, Michael Paquier) (18)</li>
<p>
「--schema」「--table」などの選択的リストアオプションと組み合わせた場合に意図通りの要素がリストアされませんでした。pg_dumpで対象選択オプションを組み合わせた場合と同様に動作するように修正されました。
</p>
<pre>
（誤動作例）
$ psql -d db1 &lt;&lt;EOS
CREATE TABLE t119 AS SELECT g id, g % 5 n FROM generate_series(1, 20) g;
CREATE STATISTICS s119 ON id, n FROM t119;
ANALYZE;
EOS

$ pg_dump --statistics -Fc db1 -f db1.dmp
（プランナ統計情報を含むダンプファイルを作る）

$ pg_restore --table t119 --statistics-only -f - db1.dmp
（→「t119テーブルの統計情報のみをリストア」の意図だが、リストア内容が空になる）

$ pg_restore --statistics --table t119 -f - db1.dmp
（→「統計情報を含めてt119テーブルをリストア」の意図だが、拡張統計情報が欠損する）
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42ffdedcf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=477efef08">&#167;</a></small></p>
<li>vacuumdbの「--missing-stats-only」が、パーティションテーブルに対する式インデックスを処理対象から除外するようになりました。  (Baji Shaik) (18)</li>
<p>
これまで、本オプションのvacuumdb実行では、パーティションテーブルに式インデックスがあると、常にそのパーティションテーブルにANALYZEを実行しようとしていました。しかし、統計情報は子パーティションのインデックスに作成されても、パーティションテーブルのインデックスには作成されないため、意味がありませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7e085aabd">&#167;</a></small></p>
<li>contrib/amcheckで、btreeインデックスのメタページの「allequalimage」フラグの破損が報告されない問題が修正されました。  (Chao Li) (18)</li>
<p>
btreeインデックスを検査する関数は、これまでインデックスキー列のいずれかにinterval_ops演算子クラスを含む場合のみ正しく動作していて、そうでないインデックスでこの破損が見逃される可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c32bbc8">&#167;</a></small></p>
<li>contrib/amcheckの GINインデックス検証関数でメモリリークが修正されました。問い合わせが終わるまで未開放メモリが蓄積します。  (Kirill Reshke) (18)</li>
<p>
大きなGINインデックスの検証でメモリ使用量が増大するおそれがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80cfd8aef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f8ab91c1">&#167;</a></small></p>
<li>contrib/amcheckで、ショートヘッダのvarlenaデータムが正しく扱われるように修正されました。  (Andrey Borodin) (18)(17)(16)(15)(14)</li>
<p>
この誤りで、btreeインデックス検証で無駄な処理が生じる可能性がありますが、それ以上の悪影響は無いと考えられます。
</p>
<p>
varlenaデータムとはPostgreSQL実装内で使われる長さとデータ本体からなるデータ構造です。ショートヘッダは長さをあらわすのに1バイトだけ使う形式です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=897e79486">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8abb8a155">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c89a1ca01">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4284476c0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=af09b18cb">&#167;</a></small></p>
<li>contrib/btree_gistで、float4とfloat8の演算子クラスにおける「NaN」の扱いが修正されました。  (Bill Kim, Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
各種の比較関数と、GiSTのpenalty関数、distance関数が「NaN」を考慮しておらず、「NaN」を渡されたときに誤った結果を返していました。
</p>
<p>
本修正の適用後、float列のbtree_gistインデックスに「NaN」のエントリが含まれる可能性がある場合は、それらのインデックスの再構築を推奨します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a47005f0b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e1d07792">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d215d2cc2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d569ccd40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=98dd4406f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=255bce448">&#167;</a></small></p>
<li>contrib/btree_gistで、GiSTインデックス構築時のbit型とvarbit型の値のソートが修正されました。  (Tom Lane) (18)</li>
<p>
これまでbit型の値がbytea型であるかのようにソートされていました。これは明白な誤動作を引き起こすことはありませんでしたが、型本来のソート順に一致しない並びで構築されるため、非効率なインデックスになりました。
</p>
<p>
本修正の適用後、bit列上のbtree_gistインデックスの再構築を推奨します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=11cb9c431">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=558c4ea9a">&#167;</a></small></p>
<li>contrib/btree_gistで、非等価（<>）演算子を使った検索が修正されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
可変長データ型の場合、非リーフインデックスページを走査するコードが誤った比較関数を適用していました。これは誤った問い合わせ結果、および場合によってはクラッシュにつながる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc6649abe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c519207">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86992769e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0663382c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f2a1b3d3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=286f9a3ce">&#167;</a></small></p>
<li>contrib/dblinkとcontrib/postgres_fdwで、use_scram_passthroughオプションについて、ユーザマッピングの設定が外部サーバの設定より優先されるよう修正されました。  (Matheus Alcantara) (18)</li>
<p>
これまでは外部サーバ側の設定が優先されていましたが、これは他の外部テーブルオプションの挙動と一貫していませんでした。他の接続オプション（sslcertやsslkeyなど）と同様に、外部サーバのオプションは共通のデフォルト値を提供し、ユーザマッピングのオプションがそれを上書きする扱いに統一されました。
</p>
<p>
これは非互換性を含む変更と言えます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=88d7748d2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=130396e6c">&#167;</a></small></p>
<li>contrib/dblinkの外部データラッパのuse_scram_passthroughオプションが拒否されるようになりました。  (Matheus Alcantara) (18)</li>
<p>
このオプションは外部サーバとユーザマッピングに対してのみ意味を持ちますが、dblinkは外部データラッパ（dblink_fdw）レベルでもこのオプションを受け付けていました（そして受け付けた設定を無視していました）。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cd777e27e">&#167;</a></small></p>
<li>contrib/hstore_plperl、contrib/jsonb_plperl、contrib/jsonb_plpythonで保護されていない再帰とループがあり、修正されました。  (Aleksander Alekseev) (18)(17)(16)(15)(14)</li>
<p>
深くネストしたjsonb値を扱うときのスタックオーバーフロー（によるクラッシュ）が防止されました。また、Perlのオブジェクト参照の循環チェーンをたどるときに生じる無限ループが割り込み可能になりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e3b7a43fa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3df0b7755">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b0f3465b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a6f23c3ad">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=639fff511">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d65cf6f80">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4efef9d18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60a1d712a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fbbabb0a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f6b2295f">&#167;</a></small></p>
<li>contrib/intarrayでプランナ統計情報のカタログキャッシュエントリの解放漏れが修正されました。  (Man Zeng) (18)(17)(16)(15)(14)</li>
<p>
この解放漏れにより、「WARNING:  resource was not closed: cache pg_statistic ..」のような警告が発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e7544c518">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=94b57ab54">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=273be484a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=702a6d5f6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a96b051a9">&#167;</a></small></p>
<li>contrib/ltreeで比較関数における整数オーバーフローが修正されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
約14,653個を超えるラベルを含むltree値は、オーバーフローによって誤った比較結果を返していました。btreeインデックスにそのような値が含まれている場合、破損している可能性があるため、本修正の適用後に再構築することを推奨します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c3e36a9a5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c391c00d9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aca944e33">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1bec6b1c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f528a5606">&#167;</a></small></p>
<li>contrib/pgcryptoで、OSSLCipherオブジェクトの使用中にエラーが発生した後の二重解放によるクラッシュが回避されました。  (Yuelin Wang) (18)(17)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=020426268">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2aa6be6e6">&#167;</a></small></p>
<li>contrib/pg_prewarmのautoprewarmワーカの範囲外アクセスが修正されました。  (Matheus Alcantara) (18)</li>
<p>
このコードは、配列の末尾の1つ先から値を取り出そうとしており、セグメンテーション違反によるクラッシュを引き起こす可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3bf2cb225">&#167;</a></small></p>
<li>contrib/pg_surgeryのheap_force_kill関数とheap_force_freeze関数で、配列の範囲外書き込みが修正されました。  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
オフセット番号がMaxHeapTuplesPerPage（ページあたりの最大タプル数、291など）に等しいTIDを変更しようとすると、確保された配列の末尾の1バイト先に書き込み、サーバをクラッシュさせる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2b09f8a91">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0bcf19c9e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=daf8bc7d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51f63ba2b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1eda3eb07">&#167;</a></small></p>
<li>contrib/pg_surgeryで、64K要素を超えるTID配列による無限ループが回避されるようになりました。  (Andrey Rachitskiy) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f24c8237">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19f0391df">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b6c99d96">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb28b6f24">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=395700f48">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e9d53cf45">&#167;</a></small></p>
<li>contrib/spiのrefint拡張で、check_foreign_key()関数のNULLポインタ参照が回避されました。  (Ayush Tiwari) (18)(17)(16)(15)(14)</li>
<p>
ON UPDATE CASCADEの場合、参照列の新しいキー値がNULLであると、クラッシュが発生していました。これはCVE-2026-6637の修正の見落しですが、その前からあったコードも正しいものではありませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed0c4d5af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6b4de201e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb93f10e2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=77b2d18e9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1de0a711d">&#167;</a></small></p>
<li>contrib/segで、確実性指示子「~」を持つセグメントの値が正しく出力されるように修正されました。  (Ewan Young) (18)(17)(16)(15)(14)</li>
<p>
seg型の出力関数seg_out()はセグメントの上限に付いた「~」を出力していませんでした。さらに悪いことに、下限に「~」があり上限に指示子がない場合、上限がまったく出力されませんでした。なお、文字列としての出力が不正であるだけで、演算結果に影響はありません。
</p>
<pre>
（誤動作例：2番目と3番目が誤動作）
db1=# SELECT '~1 .. ~5'::seg, '1 .. ~5'::seg, '~1 .. 5'::seg;
   seg    |  seg   |  seg
----------+--------+--------
 ~1 .. ~5 | 1 .. 5 | ~1 ..
(1 row)
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0004cab4d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bcbbd070d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=504ca0513">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3aa2083a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=58b91fc73">&#167;</a></small></p>
<li>contrib/xml2のxpath_nodeset()関数で名前空間ノードを問合せたときのクラッシュが修正されました。  (Andrey Chernyy, Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
以下のように、query引数に「//namespace::」を指定した場合にクラッシュするケースが報告されました。
</p>
<pre>
db1=# SELECT xpath_nodeset(
        '&lt;root xmlns:foo="http://example.com/foo"&gt;&lt;child/&gt;&lt;/root&gt;',
        '//namespace::*');
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=91b57eade">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4a49ab289">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18955d412">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bc5775149">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f3f901a53">&#167;</a></small></p>
<li>OpenSSL 4を使ったPostgreSQLのビルドに対応しました。  (Daniel Gustafsson) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=27cf3b5af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bcabfcce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fb8befa7b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7f70fa1b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=086652c02">&#167;</a></small></p>
<li>タイムゾーンデータファイルをtzdataリリース2026cに更新しました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
アルバータ州（America/Edmonton）は、2026年11月から年間を通したUTC-06（実質的に、恒久的なサマータイム）になります。このリリースでは、それ以降のタイムゾーン省略形は「CST」と仮定しています。この仮定は将来変更される可能性が高いのですが、新しい省略形に何が使われるかは明らかになっていません。
</p>
<p>
モロッコ（Africa/Casablanca）は、2026-09-20に、サマータイムの切り替えなしの恒久的なUTC+00に移行します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3c16aa293">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5f67124fa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=669438aed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=796c275a0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=af7be5672">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=812cc1a73">&#167;</a></small></p>
<li>古いマイナーバージョンが生成したWALのリプレイ時の自己デッドロックが修正されました。  (Andrey Borodin) (16)(15)(14)</li>
<p>
この不具合は前回のマイナーリリース(16.14、15.18、14.23)で導入されました。より古いマイナーバージョンのプライマリに追従するスタンバイサーバで、startupプロセスがハングアップしてレプリケーションが先に進まなくなりました。
</p>
<p>
共有行ロックで使われるマルチトランザクションに関するWALレコードのリプレイで問題が発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42a3194e5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2dfe75f98">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2bb60eb4f">&#167;</a></small></p>
<li>変数が1つも渡されていない場合でも、未定義のjsonpath変数をエラーとして扱うようになりました。  (Andrey Rachitskiy) (16)(15)(14)</li>
<p>
jsonbの「@?」演算子と「@@」演算子がjsonpath式の中で使う変数を渡せない、という場合のコードパスでは、未知のjsonpath変数が、本来の期待であるエラーの発生ではなく、JSONのnullとして誤って扱われていました。期待される動作でないことに加えて、この誤りは無制限のメモリ消費を引き起こす可能性がありました。
</p>
<pre>
（誤動作例）
db1=# select '{"A":1}'::jsonb @@ '$"no_such_var" == 1';
 ?column?
----------
 f
(1 row)

db1=# SELECT '{"A":1}'::jsonb @? '$"no_such_var"';
 ?column?
----------
 t
(1 row)

（修正後は以下のエラーが出る）
ERROR:  could not find jsonpath variable "no_such_var"
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1daeef6e0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8af173e28">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=364014327">&#167;</a></small></p>
<li>Visual Studio 2026を使ったPostgreSQLのビルドに対応しました。  (Andrew Dunstan) (16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bc5a873a8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eba7f1dc0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f1c579fc4">&#167;</a></small></p>
</ol>

<div>
<a href="https://www.sraoss.co.jp/prod_serv/support/pgsql-mainte/?utm_source=sraoss-techblog&utm_medium=referral&utm_campaign=under-article-pgsql" rel="noopener" style="color:initial;" target="_blank" class="no-ext"></p>
<div style="background-color:#DAEFF6; padding:20px; border-radius:8px; text-align:center;">
SRA OSSでは、PostgreSQL/Pgpool-II のサポートを提供しております。<br />
詳しくは<strong style="color:#2581c4;">弊社ホームページ</strong>をご覧ください。
</div>
<p></a>
</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>70歳を超えてなお、OSS活動に情熱を注ぐ。「生涯現役」でコードを書き続ける意義とは？- 石井 達夫インタビュー</title>
		<link>https://www.sraoss.co.jp/tech-blog/info/interview-ishii-202607/</link>
		
		<dc:creator><![CDATA[sraoss]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 06:01:57 +0000</pubDate>
				<category><![CDATA[おしらせ]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[インタビュー]]></category>
		<category><![CDATA[コミュニティ]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=21054</guid>

					<description><![CDATA[Findy Media様にて、SRA OSS 顧問であり、PostgreSQL コミッターの石井 達夫へのインタビュー記事が公開されました。 本記事では、PostgreSQLの黎明期から現在に至るまで、どのような想いで技 ...]]></description>
										<content:encoded><![CDATA[<p>Findy Media様にて、SRA OSS 顧問であり、PostgreSQL コミッターの石井 達夫へのインタビュー記事が公開されました。</p>
<p>本記事では、PostgreSQLの黎明期から現在に至るまで、どのような想いで技術開発と組織運営を両立してきたのか、その軌跡と考え方をたどります。</p>
<p><span id="more-21054"></span></p>
<p>管理職への移行や、最新技術のキャッチアップの難しさなどから「プログラマ35歳定年説」がささやかれる中、今なおOSSへのコントリビューションを続ける石井が、<strong>技術者として開発に向き合う姿勢や、OSSに取り組む意義</strong>について語っています。</p>
<p>エンジニアの方はもちろん、OSSや技術コミュニティに関心のある方にもおすすめしたい内容です。</p>
<p>石井がコードを書き続ける理由とは――。ぜひ記事でご覧ください。</p>
<p>▼ 記事はこちら ▼<br />
<a href="https://findy-code.io/media/articles/interview-tatsuo-ishii" target="_blank" rel="noopener"><strong>70歳を超えてなお、OSS活動に情熱を注ぐ。「生涯現役」でコードを書き続ける意義とは？</strong></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Apache httpd 2.4.68 のリリースノート</title>
		<link>https://www.sraoss.co.jp/tech-blog/apache-httpd/rn-2-4-68/</link>
		
		<dc:creator><![CDATA[基盤技術グループ]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 04:26:18 +0000</pubDate>
				<category><![CDATA[Apache httpd]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Apache httpd 2.4]]></category>
		<category><![CDATA[Apache httpd 2.4.67]]></category>
		<category><![CDATA[Apache httpd 2.4.68]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=21042</guid>

					<description><![CDATA[このドキュメントは 2026 年 6 月 8 日にリリースされた Apache httpd 2.4.68 のリリースノートの日本語訳です。 ダウンロードは Apache httpd ダウンロードより行えます。 以下はリリ ...]]></description>
										<content:encoded><![CDATA[<p>このドキュメントは 2026 年 6 月 8 日にリリースされた <a href="https://downloads.apache.org/httpd/CHANGES_2.4" target="_blank" rel="noopener noreferrer">Apache httpd 2.4.68 のリリースノート</a>の日本語訳です。<br />
ダウンロードは <a href="https://httpd.apache.org/download.cgi#apache24" target="_blank" rel="noopener noreferrer">Apache httpd ダウンロード</a>より行えます。<br />
以下はリリースの詳細と、最新情報およびドキュメントを補足するその他情報について記載しています。</p>
<p><span id="more-21042"></span></p>
<h2>脆弱性修正</h2>
<ul>
<li>CVE-2026-49975: mod_http2 サービス運用妨害 (DoS)。Apache HTTP Server の mod_http における過大なサイズ値によるメモリ割り当ての脆弱性により、悪意のある HTTP リクエストを介してサービス運用妨害（DoS）が引き起こされる可能性があります。この問題は Apache HTTP Server 2.4.17 から 2.4.67 まで影響します。</li>
<li>CVE-2026-48913: ファイルハンドル枯渇時における mod_http2 のメモリ破損。ファイルハンドルがすでに枯渇している際、Apache HTTP Server モジュール mod_http2 において使用中メモリ解放（Use After Free）の脆弱性が発生します。この問題は Apache HTTP Server 2.4.55 から 2.4.67 まで影響します。</li>
<li>CVE-2026-44631: 符号付き文字のオーバーフローを介した ap_regname におけるヒープアンダーフロー。設定ファイル内の細工された正規表現により、Apache HTTP Server にバッファアンダーライト（境界未満への書き込み）の脆弱性が存在します。この問題は Apache HTTP Server 2.4.0 から 2.4.67 まで影響します。この問題を修正したバージョン 2.4.68 へのアップグレードを推奨します。</li>
<li>CVE-2026-44186: mod_proxy_ftp の proxy_ftp_handler における無限ループ。攻撃者が制御するバックエンド FTP サーバーを利用することで、Apache HTTP Server の mod_proxy_ftp モジュールにおいて到達不能な脱出条件（無限ループ）の脆弱性が存在します。この問題は 2.4.0 から 2.4.67 まで影響します。この問題を修正したバージョン 2.4.68 へのアップグレードを推奨します。</li>
<li>CVE-2026-44185: mod_ssl OCSP send_request におけるスタックバッファの過剰読み取り。攻撃者が制御する OCSP サーバーへのアウトバウンド OCSP リクエストを介して、Apache HTTP Server にバッファ過剰読み取りの脆弱性が存在します。この問題は Apache HTTP Server 2.4.0 から 2.4.67 まで影響します。この問題を修正したバージョン 2.4.68 へのアップグレードを推奨します。</li>
<li>CVE-2026-44119: 複数モジュールの .htaccess 内の式を介した権限昇格。Apache HTTP Server 2.4.67 以前において、不適切な権限管理の脆弱性により、ローカルの .htaccess 作成者が httpd ユーザーの権限でファイルを読み取れる可能性があります。この問題は 2.4.67 以前に影響します。この問題を修正したバージョン 2.4.68 へのアップグレードを推奨します。</li>
<li>CVE-2026-43951: merge_response_headers における領域外読み取り（OOB Read）によるクラッシュの可能性。mod_headers と mod_mime を使用し、複数のレスポンス言語が設定されている環境において、Apache HTTP Server に領域外読み取りの脆弱性が存在します。この問題は Apache HTTP Server 2.4.0 から 2.4.67 まで影響します。</li>
<li>CVE-2026-42536: mod_xml2enc のヒープオーバーフロー。信頼されていないコンテンツ、xml2StartParse、および mod_xml2enc を使用する環境において、Apache HTTP Server にヒープベースのバッファオーバーフローの脆弱性が存在します。この問題は Apache HTTP Server 2.4.0 から 2.4.67 まで影響します。この問題を修正したバージョン 2.4.68 へのアップグレードを推奨します。</li>
<li>CVE-2026-42535: mod_dav_fs の保護されたディレクトリへのアクセス。Apache 2.4.67 以前の mod_dav_fs におけるパス処理の問題により、WebDAV コンテンツの作成者が信頼された DAV プロパティデータベースを直接操作し、子プロセスをクラッシュさせる可能性があります。この問題を修正したバージョン 2.4.68 へのアップグレードを推奨します。</li>
<li>CVE-2026-34356: ProxyPassReverseCookieMap のバッファオーバーフロー。悪意のあるバックエンドサーバーと ProxyPassReverseCookie* の組み合わせにおいて、Apache HTTP Server にヒープベースのバッファオーバーフローの脆弱性が存在します。この問題は Apache HTTP Server 2.4.0 から 2.4.67 まで影響します。この問題を修正したバージョン 2.4.68 へのアップグレードを推奨します。</li>
<li>CVE-2026-34355: mod_proxy_html のバッファオーバーフロー。Apache HTTP Server 2.4.67 以前の mod_proxy_html において、信頼されていないバックエンドからの攻撃を許すバッファオーバーフローの脆弱性が存在します。この問題を修正したバージョン 2.4.68 へのアップグレードを推奨します。</li>
<li>CVE-2026-29170: mod_proxy_ftp のクロスサイトスクリプティング（XSS）。正方向（フォワード）または逆方向（リバース）プロキシ構成で FTP ディレクトリコンテンツをリスト表示する際、Apache HTTP Server 2.4.67 以前の mod_proxy_ftp が生成する HTML ディレクトリリストにクロスサイトスクリプティングの脆弱性が存在します。この問題を修正したバージョン 2.4.68 へのアップグレードを推奨します。</li>
<li>CVE-2026-29167: パーディレクトリ（ディレクトリ単位）構成における mod_ldap の使用中メモリ解放（Use After Free）。ディレクトリ単位の構成で mod_ldap を使用している際、Apache HTTP Server に使用中メモリ解放の脆弱性が発生します。この問題は Apache HTTP Server 2.4.0 から 2.4.67 まで影響します。この問題を修正したバージョン 2.4.68 へのアップグレードを推奨します。</li>
</ul>
<p>&nbsp;</p>
<h2>不具合修正</h2>
<ul>
<li>mod_ssl, ab: OpenSSL 4.0 のサポートが追加されました。</li>
<li>mod_ssl: SSL 識別名（DN）変数として、SerialNumber が認識可能な属性タイプとして追加されました。</li>
<li>mod_ssl: クライアント証明書認証が実行された際、認証タイプ（auth type）に &#8220;ClientCert&#8221; が設定されるようになりました。</li>
<li>mod_include: 条件評価がエラーを返した際、if/elsif/else のコンテンツを一切出力しないよう修正されました。</li>
<li>mod_unixd: FreeBSD 11 以降において、CoreDumpDirectory の利用にトレース（tracing）の有効化が必要になりました（PR 65819）。</li>
<li>mod_file_cache: スレッド化された MPM 環境下における、mmap されたファイルのクラッシュが修正されました（PR 69901）。</li>
<li>core: ErrorLogFormat において、従来のマイクロ秒（%{u}t）だけでなく、ミリ秒単位で時間を記録できる %{m}t が新たに利用可能になりました。</li>
<li>mod_unixd: chroot 構成において、有効ユーザー ID（EUID）がゼロであるかどうかのテスト（チェック）が削除されました（PR 69767）。</li>
<li>mod_proxy_balancer: XML 出力にノンス（nonce）が含まれるよう修正されました（PR 63074）。</li>
<li>mod_http2: バージョン 2.0.42 にアップデートされました。非 TLS のフロントエンド接続でファイルを送信する際、ファイル記述子（ファイルディスクリプタ）を過剰に消費する問題が修正されました。</li>
<li>mod_http2: バージョン 2.0.41 にアップデートされました。LimitRequestFields に対するクッキーヘッダーのカウント処理が修正されました。</li>
<li>mod_http2: バージョン 2.0.40 にアップデートされました。アップロードリクエストの処理中にサーバーのファイルハンドルが枯渇した際のエラー処理が修正されました。これにより、beam bucket のコールバックが残ってしまい、無効になった参照を呼び出す可能性があった問題が解消されました。この問題は、パイプライン処理が存在し、かつネットワークサーバーとして適切でないレベルでファイル記述子が制限されているプラットフォームにのみ適用されます。</li>
<li>mod_dav_fs: リソースがすでに存在しないことが原因で削除に失敗した場合、DELETE リクエストに対して 404 を返すよう修正されました（PR 60746）。</li>
<li>mod_proxy_hcheck: 更新中に子プロセスが再起動したことが原因で、ヘルスチェックが非有効化されてしまう問題が修正されました。</li>
</ul>
<p>詳細は以下をご覧ください。</p>
<p><a href="https://downloads.apache.org/httpd/CHANGES_2.4" target="_blank" rel="noopener">https://downloads.apache.org/httpd/CHANGES_2.4</a></p>
<div>
<a href="https://www.sraoss.co.jp/prod_serv/support/oss-pro-support/?utm_source=sraoss-techblog&utm_medium=referral&utm_campaign=under-article-oss" rel="noopener" style="color:initial;" target="_blank" class="no-ext"></p>
<div style="background-color:#DAEFF6; padding:20px; border-radius:8px; text-align:center;">
SRA OSSでは、各種OSS のサポートを提供しております。<br />
詳しくは<strong style="color:#2581c4;">弊社ホームページ</strong>をご覧ください。
</div>
<p></a>
</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>pgsql-hackersウォッチ（2026年7月）</title>
		<link>https://www.sraoss.co.jp/tech-blog/postgresql-development-trends/hackers-watch-2026-07/</link>
		
		<dc:creator><![CDATA[長田 悠吾 (Yugo Nagata)]]></dc:creator>
		<pubDate>Fri, 07 Aug 2026 01:15:49 +0000</pubDate>
				<category><![CDATA[PostgreSQL開発動向]]></category>
		<category><![CDATA[pgsql-hackersウォッチ]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[オープンソースソフトウェア]]></category>
		<category><![CDATA[コミュニティ]]></category>
		<category><![CDATA[開発]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=21022</guid>

					<description><![CDATA[今回は、PostgreSQL の開発者向けメーリングリストである pgsql-hackers で、2026年7月に行われた議論の中から、筆者が注目した話題を紹介します。網羅的なまとめではなく、筆者が追跡した範囲での内容と ...]]></description>
										<content:encoded><![CDATA[<p>今回は、PostgreSQL の開発者向けメーリングリストである <a href="https://www.postgresql.org/list/pgsql-hackers/" target="_blank" rel="noopener">pgsql-hackers</a> で、2026年7月に行われた議論の中から、筆者が注目した話題を紹介します。網羅的なまとめではなく、筆者が追跡した範囲での内容となります。</p>
<p><span id="more-21022"></span></p>
<h2>エグゼキュータ・プランナ関連</h2>
<p>SQL の実行を担当するエグゼキュータにおけるバッチ処理実装に関する進捗がありました。現在の PostgreSQL のエグゼキュータは、テーブルページからタプル（行）を1行ずつ取得して処理しています。しかし、この方式では関数呼び出しなどのオーバーヘッドが大きいという課題があります。一方、ページ内の複数タプルをまとめて取得するバッチ処理に対応できれば、CPU の SIMD （1つの命令で複数のデータを同時に処理する）命令を利用した最適化なども可能となり、大きな性能向上が期待されています。</p>
<p>この提案は2025年から議論が続いていますが、その間にアーキテクチャも変化してきました。当初はバッチ処理用にタプルを格納する「タプルスロット」を複数を用いる設計でしたが、管理コストが課題となり、その後はスロットを1つだけ用いて複数タプルを参照する方式へ変更されました。そして7月には、新しいデータ構造を導入する代わりに既存のタプルスロットへバッチ管理機能を追加する、よりシンプルな設計が提案されています。この実装では、ワークロードによって20〜40%程度の性能向上が報告されています。さらに、別の開発者からは API の変更を伴わない別アプローチも提案されるなど議論が続いています。</p>
<p>同じく性能改善に関する提案として、ブルームフィルタ（Bloom Filter）を利用したハッシュ結合の高速化も議論されました。ハッシュ結合は、結合先テーブルから構築したハッシュ表を利用して結合相手を高速に探す結合アルゴリズムです。また、ブルームフィルタは、集合に要素が含まれていないことを高速に判定できる確率的データ構造です。この性質を利用して、ハッシュ表に結合先が存在しないことが分かるタプルを、ハッシュ結合より前の順スキャンやインデックススキャンの段階で除外することで、処理対象行数を大幅に削減できます。さらに、実行計画の改善やキャッシュ効率の向上、外部キー制約との組み合わせなどについても議論されており、ワークロードによっては1.5倍から最大10倍程度の性能向上が報告されています。複数の開発者が共同でパッチを改善していく形で活発に議論が進められています。</p>
<h2>論理レプリケーション</h2>
<p>論理レプリケーション関連では、競合（conflict）情報を専用テーブルへ保存する機能に動きがありました。本格的なサポートに向けた基盤として、競合ログテーブルを作成する機能が先行してコミットされています。CREATE SUBSCRIPTION の新しい conflict_log_destination オプションに table または all を指定すると、pg_conflict スキーマ内に pg_conflict_log_&lt;subid&gt; という名前のログテーブルが自動的に作成されるようになりました。</p>
<p>一方で、実際に競合情報をテーブルに書き込む機能については引き続き議論が続いています。現在の設計では、一意性制約違反などで発生した ERROR を一旦捕捉し、競合情報を記録した後に再度エラーを発生させる方式となっています。しかし、このような例外処理によるトランザクション終了方法に対して安全性の懸念が示され、設計の見直しが議論されています。</p>
<p>また、PostgreSQL 19 の新機能であるシーケンス同期について不具合が見つかり、Open Item として議論されました。ALTER SUBSCRIPTION &#8230; REFRESH SEQUENCES コマンドは、サブスクライバ側のシーケンス値をパブリッシャ側と同期する機能ですが、シーケンス同期の実行中に再度コマンドが実行されると、新しい要求が反映されない競合状態がありました。一度は同期実行中のコマンド実行を禁止する修正がコミットされましたが、ユーザビリティの観点から見直され、最終的には実行中の同期処理を中断して、新しい要求に基づいて同期をやり直す、という方法で解決されました。</p>
<h2>SQL構文関連</h2>
<p>SQL 構文に関する話題もいくつかありました。</p>
<p>まず、PostgreSQL 19 でサポート予定だった GROUP BY ALL 構文が見送られることになりました。これは、SELECT 文において集約関数やウィンドウ関数に含まれない項目を自動的に GROUP BY 対象とする便利な構文ですが、ORDER BY USING と組み合わせた場合にセマンティクス上の問題が見つかったため、PostgreSQL 19 への導入は断念され、PostgreSQL 20 以降で改めて検討されることになりました。</p>
<p>また、次期 SQL 標準に採用された INSERT BY NAME 構文の提案も行われました。これは、「INSERT INTO tbl (x, y) BY NAME SELECT 1 AS y, 2 AS x FROM &#8230;」のように列の位置ではなく列名を基準に挿入される列の対応付けを行う構文で、Oracle や DuckDB などでも同様の機能がサポートされています。</p>
<p>少し変わった提案として、「FROM tbl SELECT *」のように FROM 句を SELECT 句より前に記述する「FROM ファースト構文」も投稿されました。このパッチは PostgreSQL の開発者向け教育課題として作成されたもので、投稿者自身も本当の動機は 「ただ楽しいから（&#8221;just for fun&#8221;）」 と説明しています。しかしその一方で、SQL の記述が簡潔になることや、psql コマンドのタブ補完を改善しやすいこと、DuckDB や ClickHouse など他の DBMS との互換性といった利点も挙げられており、予想以上に盛り上がりを見せた議論となっていました。</p>
<div>
<a href="https://www.sraoss.co.jp/prod_serv/support/pgsql-mainte/?utm_source=sraoss-techblog&utm_medium=referral&utm_campaign=under-article-pgsql" rel="noopener" style="color:initial;" target="_blank" class="no-ext"></p>
<div style="background-color:#DAEFF6; padding:20px; border-radius:8px; text-align:center;">
SRA OSSでは、PostgreSQL/Pgpool-II のサポートを提供しております。<br />
詳しくは<strong style="color:#2581c4;">弊社ホームページ</strong>をご覧ください。
</div>
<p></a>
</div>

<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Zabbix 7.4.13 のリリースノート</title>
		<link>https://www.sraoss.co.jp/tech-blog/zabbix/rn-7-4-13/</link>
		
		<dc:creator><![CDATA[基盤技術グループ]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 01:25:57 +0000</pubDate>
				<category><![CDATA[Zabbix]]></category>
		<category><![CDATA[zabbix .7.4.12]]></category>
		<category><![CDATA[Zabbix 7.4]]></category>
		<category><![CDATA[Zabbix 7.4.13]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=20998</guid>

					<description><![CDATA[このドキュメントは 2026年07月29日 にリリースされた Zabbix 7.4.13 のリリースノートの日本語訳です。 ダウンロードは Zabbix ダウンロードより行えます。 以下はリリースの詳細と、最新情報および ...]]></description>
										<content:encoded><![CDATA[<p>このドキュメントは 2026年07月29日 にリリースされた <a href="https://www.zabbix.com/jp/rn/rn7.4.13" target="_blank" rel="noopener noreferrer">Zabbix 7.4.13 のリリースノート</a>の日本語訳です。<br />
ダウンロードは <a href="https://www.zabbix.com/download" target="_blank" rel="noopener noreferrer">Zabbix ダウンロード</a>より行えます。<br />
以下はリリースの詳細と、最新情報およびドキュメントを補足するその他情報について記載しています。</p>
<p><span id="more-20998"></span></p>
<h2>不具合修正</h2>
<ul>
<li style="margin: 12px 0;">vCenter へのネットワーク接続の問題によって引き起こされる可能性のある VMware コレクターのクラッシュが修正されました。[Proxy] [Server]（ZBX-27975）</li>
<li style="margin: 12px 0;">RabbitMQ テンプレートにおける重複したディスカバリキーと JavaScript の保存前処理が修正されました。[Templates]（ZBX-21745）</li>
<li style="margin: 12px 0;">ホストウィザードで検索フィールドをクリアした後にテンプレートが誤って表示される問題が修正されました。[Frontend]（ZBX-26583）</li>
<li style="margin: 12px 0;">ディスカバリルール、ディスカバリプロトタイプ、ホストプロトタイプ、Web シナリオ、およびマップのリダイレクト機能が修正されました。[Frontend]（ZBX-26953）</li>
<li style="margin: 12px 0;">ターゲットホストがプロキシグループによって監視されている場合に、トリガーアクション操作でのリモートコマンドの実行が失敗する問題が修正されました。[Server]（ZBX-27665）</li>
<li style="margin: 12px 0;">ホストの Web 監視リストにおける一括アクションの権限チェックが修正されました。[Frontend]（ZBX-27689）</li>
<li style="margin: 12px 0;">永続バッファの書き込みにリトライ処理が追加されました。[Agent]（ZBX-27922）</li>
<li style="margin: 12px 0;">一部の Web サイトで証明書にアクセスできない問題が修正されました。[Agent]（ZBX-26916）</li>
<li style="margin: 12px 0;">Zabbix web service のビルドスクリプトが修正されました。[Agent]（ZBX-27724）</li>
<li style="margin: 12px 0;">Zabbix agent 2 における誤解を招くコメントが修正されました。[Agent]（ZBX-18840）</li>
<li style="margin: 12px 0;">system.run の失敗と競合状態が解決されました。[Agent]（ZBX-27024）</li>
<li style="margin: 12px 0;">GCP の DB インスタンス取得スクリプトが修正されました。[Templates]（ZBX-25578）</li>
<li style="margin: 12px 0;">MSSQL by Zabbix agent 2 テンプレートにおける PLE トリガーの命名と説明が修正されました。[Templates]（ZBX-27139）</li>
<li style="margin: 12px 0;">値を破棄する前の冗長な保存前処理が修正されました。[Templates]（ZBX-26704）</li>
<li style="margin: 12px 0;">DBL_MAX 入力を扱う際に inf 値が生成されるのを防ぐため、平均トレンドの計算が修正されました。また、閾値に到達できずヒストリが DBL_MAX に近づいた場合に DBL_MAX を返すように timeleft() 関数が更新されました。[Server]（ZBX-27453）</li>
</ul>
<h2>機能追加・改良</h2>
<ul>
<li style="margin: 12px 0;">TimescaleDB の最大サポートバージョンが 2.28 に更新されました。[API] [Server]（ZBXNEXT-10669）</li>
<li style="margin: 12px 0;">Veeam Backup and Replication および Veeam Backup Enterprise Manager by HTTP テンプレートが更新されました。[Templates]（ZBXNEXT-10558）</li>
</ul>
<p>詳細は以下をご覧ください。</p>
<p><a href="https://www.zabbix.com/jp/rn/rn7.4.13" target="_blank" rel="noopener">https://www.zabbix.com/jp/rn/rn7.4.13</a></p>
<p>&nbsp;</p>
<div>
<a href="https://www.sraoss.co.jp/zabbix_lp/?utm_source=sraoss-techblog&utm_medium=referral&utm_campaign=under-article-zabbix" rel="noopener" style="color:initial;" target="_blank" class="no-ext"></p>
<div style="background-color:#DAEFF6; padding:20px; border-radius:8px; text-align:center;">
SRA OSSでは、Zabbix のサポートを提供しております。<br />
詳しくは<strong style="color:#2581c4;">弊社ホームページ</strong>をご覧ください。
</div>
<p></a>
</div>

]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
