<?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>PostgreSQL 13.22 &#8211; SRA OSS Tech Blog</title>
	<atom:link href="https://www.sraoss.co.jp/tech-blog/tag/postgresql-13-22/feed/index.xml" rel="self" type="application/rss+xml" />
	<link>https://www.sraoss.co.jp/tech-blog/</link>
	<description>OSS専門の技術ブログ。PostgreSQL、Zabbixを中心に10種類以上のOSSの解説、アップデート情報、運用ヒントを提供。</description>
	<lastBuildDate>Fri, 23 Oct 2026 06:55:44 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2018/07/blog-icon-150x150.png</url>
	<title>PostgreSQL 13.22 &#8211; SRA OSS Tech Blog</title>
	<link>https://www.sraoss.co.jp/tech-blog/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>PostgreSQL 13.23 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/13-23/</link>
		
		<dc:creator><![CDATA[データベース技術グループ]]></dc:creator>
		<pubDate>Mon, 15 Dec 2025 03:00:05 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 13]]></category>
		<category><![CDATA[PostgreSQL 13.22]]></category>
		<category><![CDATA[PostgreSQL 13.23]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=19092</guid>

					<description><![CDATA[このリリースは 13.22 からの修正リリース（2025年 11月 13日リリース）です。 13.X バージョン系列は本リリースが最終リリースとなります。 13.X からのアップデートではダンプ、リストアは不要です。 ま ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 13.22 からの修正リリース（2025年 11月 13日リリース）です。<br />
13.X バージョン系列は本リリースが最終リリースとなります。</p>
<p>13.X からのアップデートではダンプ、リストアは不要です。<br />
また、13.21 よりも前のバージョンからアップデートする場合には、<a href="/tech-blog/pgsql/13-21/" rel="noopener">13.21のリリース情報</a>も参照してください。</p>
<p><span id="more-19092"></span></p>
<h3>PostgreSQL 13.22 から 13.23 への変更点</h3>
<p>18.1, 17.7, 16.11, 15.15, 14.20, 13.23 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<ol>
<li>CREATE STATISTICSで、スキーマに対する「CREATE」権限の検査を行うようになりました。  (Jelte Fennema-Nio) (18)(17)(16)(15)(14)(13)</li>
<p>
これまでこの検査が省略されており、テーブル所有者は任意のスキーマに拡張統計情報を作ることができて、予期せぬ名前衝突をもたらすおそれがありました。(CVE-2025-12817)
</p>
<pre>
（バージョンアップ後は最後のuser1によるCREATE STATISTICSはエラーになる）
db1=# CREATE SCHEMA scm1;
db1=# CREATE TABLE public.tbl1 (id int, c1 text, c2 text);
db1=# ALTER TABLE public.tbl1 OWNER TO user1;
db1=# \c db1 user1
You are now connected to database "db1" as user "user1".
db1=> CREATE STATISTICS scm1.tbl1_c1_c2_stat ON c1, c2 FROM public.tbl1;
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=00eb646ea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2fb3dfa8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d20abb587">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2393d374a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=95cce5669">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a2530ebc">&#167;</a></small></p>
<li>libpqで、メモリ割り当てサイズ計算での整数オーバーフローを回避するようになりました。  (Jacob Champion) (18)(17)(16)(15)(14)(13)</li>
<p>
libpqのいくつかの個所で検査が欠けていました。巨大な入力に対して整数オーバーフローが起きると小さすぎるバッファ確保となって、バッファ終端を超えた書き出しを引き起こしました。(CVE-2025-12818)
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7eb8fcad8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f5999f018">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=585fd9b3c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=91421565f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=96d2c7e96">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6f0c0d6d">&#167;</a></small></p>
<li>JSON_VALUEなどのSQL/JSON関数がCOLLATE式を含むDEFAULT句を持つときの、内部エラー発生が防止されました。  (Jian He) (18)(17)</li>
<pre>
（エラー発生例）
db1=# SELECT JSON_VALUE('{"a":"1","b":"2"}', '$.c' RETURNING text 
                        DEFAULT '0' COLLATE "C" ON EMPTY);
ERROR:  unrecognized node type: 31
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dc9125111">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=09f86a42f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1baae827e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e6dfdaa0">&#167;</a></small></p>
<li>グルーピングセットを伴った列指定の無いHAVING句での不正な最適化が回避されました。  (Richard Guo) (18)</li>
<p>
ここでのグルーピングセットはGROUPING SETS、ROLLUP、CUBEを含みます。また、列指定の無いHAVING句とは「HAVING false」のような指定です。本障害で誤った問い合わせ結果が発生します。
</p>
<pre>
（誤動作例：この場合の正しいSELECT結果は0行です）
db1=# CREATE TABLE t4 (id int, c1 int, c2 int);
db1=# INSERT INTO t4 VALUES (1,1,10), (2,2,20), (3,3,30), (4,4,40);
db1=# SELECT c1, c2, count(*) c FROM t4 GROUP BY CUBE(c1, c2) HAVING false;
 c1 | c2 | c
----+----+---
    |    | 0
(1 row)
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=40c242830">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ee49f2cf4">&#167;</a></small></p>
<li>Hash Right Semi Joinでパラレル処理を行なわないようになりました。  (Richard Guo) (18)</li>
<p>
この場合、結合で共有されるハッシュテーブルの更新で競合状態が生じるため、信頼できる動作が得られないと判断されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ef6168baf">&#167;</a></small></p>
<li>ソートされたAppend（ordered-append）プランの作成で起こりうるゼロ除算が回避されました。  (Richard Guo) (18)</li>
<p>
この誤りにより、劣ったプランが選択されたり、デバッグ用ビルドであればアサート失敗が発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=500f64636">&#167;</a></small></p>
<li>ソート順のアクセスが可能であるけれどもインデックスオンリースキャンはできないインデックスタイプに対して、プランナでのエラー発生が修正されました。  (Maxime Schoemans) (18)</li>
<p>
本障害で予期せぬエラー「ERROR:  no data returned for index-only scan」が発生しました。これは組み込みのインデックスタイプでは発生しませんが、一部の拡張で問題となりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=74197bdc8">&#167;</a></small></p>
<li>Btreeインデックスのクリーンアップ処理で過度なアサートを除去しました。  (Peter Geoghegan) (18)(17)(16)(15)(14)(13)</li>
<p>
インデックススキャンでのアサート失敗が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=61de81a49">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ae15cebc2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c160fd469">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ca0c93908">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=314004021">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=af302ff6b">&#167;</a></small></p>
<li>パラレルGINインデックスの作成で発生するおそれのあったメモリ不足エラー(「ERROR:  out of memory」)や「ERROR:  invalid memory alloc request size」エラーを回避するようになりました。  (Tomas Vondra) (18)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a26b753a0">&#167;</a></small></p>
<li>BRINの自動サマライズが必要なインデックス式のスナップショットを確実に提供するようになりました。  (Álvaro Herrera) (18)(17)(16)(15)(14)(13)</li>
<p>
これまでは、VACUUM時の自動サマライズが式インデックスで失敗して、プレースホルダのインデックスタプルが置き去りになって、BRINインデックスが時間とともに肥大化する原因となりました。
</p>
<p>
自動VACUUMで以下のエラーが発生するケースが報告されました。
</p>
<pre>
ERROR:  cannot execute SQL without an outer snapshot or portal
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=419ffde23">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f4b68b033">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6ef33c805">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=23ddadf68">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f0ad41716">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3c7b47974">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8733f0b54">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3b5007347">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=20442cf50">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bcfbd3f74">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=65b0d1f74">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ef81697fe">&#167;</a></small></p>
<li>テーブルサイズが2の32乗ページ近くなる場合、BRINインデックススキャンで整数オーバーフローが発生する可能性があり、修正されました。  (Sunil S) (18)(17)(16)(15)(14)(13)</li>
<p>
この問題により、無限ループに陥ったり、不要なページを余計にスキャンしてしまう可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=715983a81">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c4f5a59ab">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ef915bf93">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=810aaf7f2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eea24eb0a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c28f8ca29">&#167;</a></small></p>
<li>JITが生成するタプルデフォーミングのコードで、格納データを誤ってゼロ拡張してしまう問題が修正されました。  (David Rowley) (18)(17)(16)(15)(14)(13)</li>
<p>
JITを使用しない場合はゼロ拡張ではなく符号拡張が行われるため、小さい整数データ型のDatumの表現がJIT使用時と一致しない場合がありました。多くの場合は問題になりませんが、プランノードがMemoizeの場合にエラー「ERROR:  could not find memoization table entry」が発生する事例が確認されています。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ceb51d09b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=10945148e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3398b0d02">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b8ecfbe5a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4316ec4d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4afab175b">&#167;</a></small></p>
<li>ハッシュ化されたGROUPING SETSの処理中に、まれにクラッシュする問題が修正されました。  (David Rowley) (18)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b6a02f03">&#167;</a></small></p>
<li>ハッシュ結合において、ハッシュテーブルのサイズ選択ロジックが誤っていた問題が修正されました。  (Tomas Vondra) (18)</li>
<p>
これにより、ハッシュ結合が必要以上のメモリを消費したり、メモリの割り当てが非効率になることがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aa151022e">&#167;</a></small></p>
<li>統計情報を操作する関数について、テーブルを参照する際のロジックが改善されました。  (Nathan Bossart) (18)</li>
<p>
テーブルにロックを取得する前に権限チェックが行われるようになりました。対象は以下の関数です。
</p>
<pre>
pg_restore_relation_stats()
pg_clear_relation_stats()
pg_restore_attribute_stats()
pg_clear_attribute_stats()
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c8af5019b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=15d7dded0">&#167;</a></small></p>
<li>トリガーで使用される結果リレーション情報(ResultRelInfo)のキャッシュ処理に存在した誤ったロジックによるクラッシュが修正されました。  (David Rowley, Amit Langote) (18)(17)(16)(15)</li>
<p>
パーティションとその親テーブルで列構成が物理的に一致していない場合に、クラッシュする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a2387c32f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0d3074615">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a546964db">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2992b9a07">&#167;</a></small></p>
<li>パーティションテーブルに対してEvalPlanQualが再チェックを行う際にクラッシュする問題が修正されました。  (David Rowley, Amit Langote) (18)</li>
<p>
EvalPlanQualによる再チェックは主としてREAD COMMITTED隔離レベルの問合せで使われる処理です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1296dcf18">&#167;</a></small></p>
<li>EvalPlanQual用の代替となるローカルでの結合プランを持たないforeign結合またはカスタム結合を、EvalPlanQualが適切に扱えない問題が修正されました。  (Masahiko Sawada, Etsuro Fujita) (18)(17)(16)(15)(14)(13)</li>
<p>
本来は、代替プランが用意されていない場合、FDWまたはカスタムのアクセスメソッドを通常どおり呼び出す必要がありますが、それが行われずクラッシュすることがありました。
</p>
<p>
EvalPlanQualによる再チェックは主としてREAD COMMIMTTED隔離レベルの問合せで使われる処理です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b14144325">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2bb84ea7e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5a9af4868">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4a08603a2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=24e74b962">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12b0c0e51">&#167;</a></small></p>
<li>DETACH CONCURRENTLY実行時に、ハッシュパーティションの制約が重複して追加されてしまう問題が修正されました。  (Haiyang Li) (18)(17)(16)(15)(14)</li>
<p>
従来はALTER TABLE DETACH PARTITION CONCURRENTLYは、DETACHされた側のパーティションにパーティション制約のコピーを追加していました。この動作は、ハッシュパーティションの場合、DETACH後には関係がなくなったパーティションテーブルのOIDを保持したままとなるため問題がありました。具体的には、pg_dumpで取得したデータのリストアに失敗したり、パーティションテーブル削除後にDETACHしたテーブルへの操作が失敗するなどの問題が発生しました。
</p>
<p>
予期せぬ「ERROR:  could not open relation with OID 16384」や「ERROR: could not open relation with OID 16990」というエラーの発生が報告されています。
</p>
<p>
次期メジャーバージョンであるPostgreSQL 19以降では、これらの制約コピーは一切行われないようにする予定ですが、18以前では、影響を最小化するためハッシュパーティションの場合のみ制約のコピーをスキップするよう修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=08c037dff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ea06f97ee">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b835759ec">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bdae98495">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b753be38a">&#167;</a></small></p>
<li>パーティションキーに生成列が利用できないようになりました。  (Jian He, Ashutosh Bapat) (18)(17)(16)(15)(14)(13)</li>
<p>
もともと生成列をパーティションキーに使うことは許可されていませんでしたが、行全体を参照させた場合など一部ケースでチェック漏れがあり、それらも禁止されるようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba99c9491">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b44f2443">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7180d56c5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=643a5e96c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=04345d7a4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f239c72a">&#167;</a></small></p>
<li>COPY ... FROM ... WHERE句で生成列が使用できないようになりました。  (Peter Eisentraut, Jian He) (18)(17)(16)(15)(14)(13)</li>
<p>
これまでは、そのような列を参照しようとすると、不正な動作か分かりにくいエラー「ERROR:  unexpected virtual generated column reference」が発生していました。これは、生成列がまだ計算されていない段階でWHEREフィルタが実行されていたためです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0f9e0068b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=07f787e57">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=26958f4d9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8278737bf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ccfe28eb4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3717849e6">&#167;</a></small></p>
<li>無効とマークされているNOT NULL制約が付いた列を、識別列として設定できないようにされました。  (Jian He) (18)</li>
<p>
識別列はNOT NULLである必要がありますが、そのチェックがこの特殊なケースを見逃していました。修正後は以下のようにエラーメッセージが表示されるようになりました。
</p>
<pre>
(18.1での実行例)
db1=# CREATE TABLE notnull_tbl (a int, b int);
db1=# INSERT INTO notnull_tbl VALUES (NULL, 1), (200, 2);
db1=# ALTER TABLE notnull_tbl ADD CONSTRAINT nn NOT NULL a NOT VALID;
ALTER TABLE
db1=# ALTER TABLE notnull_tbl ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY;
ERROR:  incompatible NOT VALID constraint "nn" on relation "notnull_tbl"
HINT:  You might need to validate it using ALTER TABLE ... VALIDATE CONSTRAINT.
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9ffc2729">&#167;</a></small></p>
<li>並列VACUUMにおいて、解放済みメモリ使用（use-after-free）が発生する可能性が回避されました。  (Kevin Oommen Anish) (18)(17)</li>
<p>
このバグは通常のビルドでは影響が生じないようですが、理論的には危険となり得るものです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=76613b539">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3549ffb6a">&#167;</a></small></p>
<li>pg_temp内の統計オブジェクトに対する可視性チェックが修正されました。  (Noah Misch) (18)(17)(16)(15)(14)(13)</li>
<p>
一時スキーマにある統計オブジェクトは、スキーマ修飾なしでは名前を指定できませんが、pg_statistics_obj_is_visible()はこの点を見落としており、状況に関わらずtrueを返す可能性がありました。その結果、psqlの\dXが誤ってpg_temp内の統計オブジェクトを一覧表示したり、pg_describe_object()などの関数が期待されるようにオブジェクト名をスキーマ修飾できないことがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d024160ff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6778fbca6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab16418ee">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d202ec1fb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5816baa9b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=afb2cce74">&#167;</a></small></p>
<li>データベース作成のWALリプレイ時に発生していた軽微なメモリリークが修正されました。  (Nathan Bossart) (18)(17)(16)(15)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=33e7b4a7c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9993ac64">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c72b5c536">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=23b316c36">&#167;</a></small></p>
<li>pg_stat_replicationビューにおけるレプリケーション遅延の誤った報告が修正されました。  (Fujii Masao) (18)(17)(16)(15)(14)(13)</li>
<p>
いずれかのスタンバイサーバのリプレイLSNが進まなくなった場合、write_lagおよびflush_lag列が、最終的に更新されなくなることがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9670032cc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=62d5ee75b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2e55cf4ef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=59b215f72">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7ab6ce6a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7d7ebdb80">&#167;</a></small></p>
<li>無効なprimary_slot_name設定に関する重複したログメッセージが出力されないようにされました。  (Fujii Masao) (18)(17)(16)(15)(14)(13)</li>
<p>
以前は、primary_slot_nameに無効なスロット名が設定された状態で設定ファイルをリロードすると、postmasterだけでなく、すべてのバックエンドプロセスがWARNINGを出力してしまい、大量の重複ログが生成される可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6ff7ba9fe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1db2870bb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fd916eab">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=caf529aba">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f106f53df">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b00a16bae">&#167;</a></small></p>
<li>synchronized_standby_slotsが存在しないレプリケーションスロットを参照している場合の障害が回避されました。  (Shlok Kyal) (18)(17)</li>
<p>
以前は、サーバ起動時に存在しないスロットを指定してもチェックされず、後でパラレルクエリ実行時にエラーとなる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b45a8d7d8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0024f5a10">&#167;</a></small></p>
<li>レプリケーションスロットの状態をディスクへ書き込む際に失敗した場合、未完成のスロット状態ファイルが削除されるようにされました。  (Michael Paquier) (18)(17)(16)(15)(14)(13)</li>
<p>
これまでは、ディスク容量不足などで書き込みに失敗すると、一時ファイルであるstate.tmpが残されてしまいました。これは、その後の状態書き込みをすべて妨げ、手動でのクリーンアップが必要になるという問題を引き起こしていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9a6ea00ac">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=42348839d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bfdd1a12d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0adf424b4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f57f2760e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c878d9808">&#167;</a></small></p>
<li>論理レプリケーションの並列適用ワーカにおけるロックタイムアウトシグナルの誤処理が修正されました。  (Hayato Kuroda) (18)(17)(16)</li>
<p>
これまでは、同じシグナル番号がワーカのシャットダウンとロックタイムアウトの両方に使用されており、混乱を招いていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=37fc5de43">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2f6e1a490">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a54c7a113">&#167;</a></small></p>
<li>ストリーミングWALからアーカイブWALへ切り替える際に、不要なWAL受信プロセスのシャットダウンを回避するよう修正されました。  (Xuneng Zhou) (18)(17)(16)(15)(14)(13)</li>
<p>
タイムライン変更中、スタンバイサーバのWALレシーバは新しいWALストリーミングの開始点を待機するために稼働し続ける必要があります。ところが、以前はシャットダウンと再起動を繰り返していたため、pg_stat_wal_receiverのstatus列が正しく出力されないなどのレプリケーション状態を正しく把握できない問題が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a14201073">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e7340b484">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9b6109607">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=da5ea6c70">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1b8b3b2e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=25b484080">&#167;</a></small></p>
<li>pgoutputの論理デコーディング中にエラーが起きた際に、既に解放されたキャッシュメモリにアクセスしてクラッシュする問題が修正されました。  (Vignesh C, Masahiko Sawada) (18)(17)(16)(15)</li>
<p>
論理デコーディング中にエラーが発生すると、同じセッション内での次回以降の論理デコーディング実行時にクラッシュが起こる可能性がありました。この問題は、pgoutputをpg_logical_slot_get_binary_changes()のようなSQL関数経由で呼び出した場合にのみ発生します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=32b95fc71">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a61592253">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b07682bce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c40761759">&#167;</a></small></p>
<li>ロジカルレプリケーションスロットの不必要に無効化されていたのが修正されました。  (Bertrand Drouvot) (18)(17)(16)</li>
<p>
以前は、スロットが競合状態から非競合状態に移行しても無効化が行われる場合があり、不要な無効化が発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf3dba508">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f3fb6bc9f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e3714dc05">&#167;</a></small></p>
<li>ロケール設定において、C照合順序の特殊ケースが再度有効化されました。  (Jeff Davis) (18)</li>
<p>
この修正により、データベース選択前のバックエンド起動初期に共有カタログへアクセスする際にエラーが発生してしまう問題が修正されました。PostgreSQLのコアコードで問題は確認されていませんが、一部の拡張では問題となっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3ebea75f9">&#167;</a></small></p>
<li>Windows管理者権限の確認処理で失敗した際のメッセージ出力が正しく行われるように修正されました。  (Bryan Green) (18)(17)(16)(15)(14)(13)</li>
<p>
以前は、この処理でクラッシュするか、少なくとも役に立たないメッセージが表示される可能性がありました。ただし、実際にこのようなケースが報告されたことはないため、この問題が発生するのは極めて稀です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b48ae226e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c53519e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9883e3cd1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f91666c83">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e91eb4ad6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=75a555d61">&#167;</a></small></p>
<li>libsanitizer使用時に発生する可能性のあるクラッシュを回避するよう修正されました。  (Emmanuel Sibi, Jacob Champion) (18)(17)(16)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6d8acb777">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a9515f294">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c775bf048">&#167;</a></small></p>
<li>64bit Windowsのデバッグビルドで発生していた、誤ったメモリコンテキストチェック警告が修正されました。  (David Rowley) (18)(17)(16)(15)(14)(13)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=af3a79e08">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bd6f986c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cdc04a6c3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f3420e006">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86bd9497f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7b955c227">&#167;</a></small></p>
<li>PL/pgSQLの代入文でGROUP BY DISTINCTが正しく処理されるように修正されました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
DISTINCTオプションがパーサで記録されず、コマンドが通常のGROUP BYと同じように扱われていました。今回の修正により、DISTINCTが正しく認識されるようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=78a284b0b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3fc9aa5b0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b7f6798c0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9ca79896a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0be39b4b1">&#167;</a></small></p>
<li>PL/Python内でSQLエラーを処理する際のメモリリークが修正されました。  (Tom Lane) (18)(17)(16)(15)(14)(13)</li>
<p>
以前のマイナーリリースで導入された修正によって、セッション存続期間メモリが解放されない問題がありました。今回の修正でメモリリークが回避されるようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=447a794f6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fbc41a145">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cbfd4d0f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4cde73259">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7fb8c9240">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d90c92d1c">&#167;</a></small></p>
<li>libpqのGSSAPI処理におけるWindows上のソケット関連エラーの扱いが修正されました。  (Ning Wu, Tom Lane) (18)(17)(16)(15)(14)(13)</li>
<p>
以前は、GSSAPIを使ったデータの暗号化／復号処理で、接続ソケットのエラーを正しく認識できず、Windows上で接続に失敗する場合がありました。今回の修正により、Windows特有のエラー報告に対応し、接続が正しく行われるようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d83879a32">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1c4671f7b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=46c4478db">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=771b106d1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f46d77377">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc287cf3c">&#167;</a></small></p>
<li>継承子テーブルの列に対する非継承の（子テーブル固有の）NOT NULL制約が、正しくダンプされるよう修正されました。  (Dilip Kumar) (18)(17)</li>
<p>18より前のバージョンのサーバからのダンプで、そのような制約定義の出力が欠損していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0fe07fa11">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c945b06d5">&#167;</a></small></p>
<li>pg_dumpにおいて外部キー制約の並び順について修正されました。  (Álvaro Herrera) (18)</li>
<p>
これにより、他のオブジェクト種別と同様に、外部キー制約も一貫した順序で出力されるようになりました。これまでは制約名ではなくOID番号の順になっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=162e70ea0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7419c99a2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=06c1ee6b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4cc3b4445">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6062c3db3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d20df9590">&#167;</a></small></p>
<li>pg_dumpおよびpg_restoreにおけるデータ圧縮ロジックについて、各種のエラーが修正されました。  (Daniel Gustafsson, Tom Lane) (18)(17)(16)(15)(14)(13)</li>
<p>
いくつかの箇所でエラーチェックが欠落または不正確であり、さらに、ビッグエンディアンのハードウェア環境下では移植性の問題が発生することもありました。
</p>
<p>
この問題は、ディレクトリ形式ダンプ内のTOCファイルを手動で圧縮した場合にのみ発生します。そのため、通常の利用ではほとんど遭遇しないはずです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=92268b35d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ec017a305">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6a4009747">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf18e9bd7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1518b7d76">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aa1fcd087">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2efca1633">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c865f5b9f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8b9924bce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=40dc710a6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=33276cd02">&#167;</a></small></p>
<li>pgbenchで「COPY」操作が開始された場合に正しくエラーを返すようになりました。  (Anthonin Bonnefoy) (18)(17)(16)(15)(14)(13)</li>
<p>
pgbenchは仕様としてCOPYに対応していませんが、これまでエラー処理が完備されておらず、無限ループに陥っていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c00637b5f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=de6de069d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=640590bb4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b5cefc197">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9b3beb7c6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f1a2f3a0c">&#167;</a></small></p>
<li>pgbenchにおける複数エラーの報告が修正されました。  (Yugo Nagata) (18)(17)(16)(15)(14)(13)</li>
<p>
これまでは2回連続でPQgetResult呼び出しが失敗した場合、pgbenchが誤ったエラーメッセージを報告する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=29aabbc43">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a912118c6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=36c4d30c8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bdccb6302">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cb21e1f92">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7d7e81d1e">&#167;</a></small></p>
<li>pgbenchのパイプラインモードにおいて、エラー処理に関する不正確なアサートが修正されました。  (Yugo Nagata) (18)(17)(16)(15)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c736808e0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f39d9164b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8b2e290bd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=704f51771">&#167;</a></small></p>
<li>pg_combinebackupでファイルごとのメモリリークが修正されました。  (Tom Lane) (18)(17)</li>
<p>
テーブル等のオブジェクト数が多いときに影響があります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2072b47b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4eb6992af">&#167;</a></small></p>
<li>contrib/pg_buffercacheの関数が確実にキャンセルできるようになりました。  (Satyanarayana Narlapuram, Yuhang Qiu) (18)(17)(16)(15)(14)(13)</li>
<p>
これまで一部のコードパスで、割り込みを確認せずに長時間処理が続く可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71aa2e114">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b6090ed96">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=815fcfb20">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb9ee4d18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=79643105a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7d8d36289">&#167;</a></small></p>
<li>contrib/pg_prewarmで、インデックスの権限チェックが修正されました。  (Ayush Vatsa, Nathan Bossart) (18)(17)(16)(15)(14)(13)</li>
<p>
pg_prewarm()関数は、プリウォーム対象のリレーションに対して「SELECT」権限を必要とします。しかし、インデックス自体にはSQL権限が存在しないため、非スーパーユーザーはインデックスをプリウォームできませんでした。これを解決するために、今後はインデックスが属するテーブルに対する「SELECT」権限を確認するようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3ccf8e9ac">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a0551bc57">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fae0ce5e3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6c03ae8d6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f146eb45c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19a64f567">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c29d32d27">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d4e8c37cc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c26a8eaf6">&#167;</a></small></p>
<li>contrib/pg_stat_statementsで、SQL文のテキスト内で複数の定数が同じ位置に割り当てられた場合にクラッシュする不具合が修正されました。  (Sami Imseih, Dmitry Dolgov) (18)</li>
<p>
特に「WHERE x IN ($1 /*, ... */)」のようにカンマ区切りの値の列挙を短縮している場合に問題が発生しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b1635c166">&#167;</a></small></p>
<li>contrib/pgstattupleで、すべてゼロのページ、無効なインデックスページについて、より頑健な動作になりました。  (Nitin Motiani) (18)(17)(16)(15)(14)(13)</li>
<p>
すべてゼロのページは空き領域として数え、無効なインデックスページ（ページの特殊領域サイズチェックに基づいて判断される）は無視するようになりました。
</p>
<p>
これまでは、すべてゼロのページは、Btreeインデックスでは空き領域として数え、hashとGiSTインデックスではエラーが発生し、一貫性がありませんでした。また、無効なインデックスページではエラーが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc295beb7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=036decbba">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c0f9fe877">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=49b5f0b53">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ee2dbcad0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c207bf473">&#167;</a></small></p>
<li>Clangコンパイラの仕様に合わせて、読み取りと書き込みのバリアマクロが強化されました。  (Thomas Munro) (18)(17)(16)(15)(14)(13)</li>
<p>
Cコンパイラによるメモリアクセスの並べ替えを防ぐために、メモリバリアとして__atomic_thread_fence()関数が利用できると想定されていましたが、Clangでは十分なバリアになりませんでした。
</p>
<p>
少なくともRISC-V、MIPS、LoongArchのマシンで誤ったコードが生成される可能性がありました。本修正でClangでも問題なく利用できる明示的なコンパイラバリアが追加されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f8ccab0e9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=03d9140cb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2f76ffe5e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1c7cba4c5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d8ba910b0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=77b5b2c6f">&#167;</a></small></p>
<li>PGXS拡張構築基盤が各国語対応のpoファイルのビルドに対応するように修正されました。  (Ryo Matsumura) (18)(17)(16)(15)(14)(13)</li>
<p>
これまで「make USE_PGXS=1 update-po」が正しく動作しませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6aa04a60c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a8933194e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a506b0c0a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=33202cba8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=56cd332f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f768f5a7d">&#167;</a></small></p>
<li>JSON作成関数（JSON_OBJECT()など）を非STRICTとして正しく処理するようになりました。  (Tender Wang, Richard Guo) (17)(16)</li>
<p>
これらの関数は、1つ以上のnull入力があっても、null以外の結果を返す場合があるので非STRICTです。これまでプランナはこれらの関数をSTRICTであると誤って分類してクエリ変換を行う可能性がありました。そのため、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d719e2ecb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=62397bb18">&#167;</a></small></p>
<li>「SIMILAR TO」正規表現内の文字クラスの処理の不具合が修正されました。  (Laurenz Albe) (17)(16)(15)(14)(13)</li>
<p>
「SIMILAR TO」パターンマッチング式からPOSIX形式の正規表現への変換について、直近前バージョンでの修正において特殊なケースについて不具合がありました。
</p>
<p>
不具合により、開き括弧の直後にエスケープ文字があり、エスケープシーケンスの直後に閉じ括弧がある場合（例：[\w]）、閉じ括弧が文字クラスの終了として認識されなくなっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e09adb5b9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=281ad4ed1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9fd531534">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f75ff1b14">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=308773617">&#167;</a></small></p>
<li>集約関数の引数に含まれるサブクエリが、スコープ外のCTEをFROMで参照している場合の解析が修正されました。  (Tom Lane) (17)(16)(15)(14)(13)</li>
<p>
このようなCTE参照は、外側のクエリの列参照のように動作する必要がありますが、それが考慮されておらず、プランナやエグゼキュータで不明瞭なエラーを引き起こしていました。
</p>
<p>
「ERROR:  could not find CTE ...」が発生するケース、クラッシュするケース、アサート失敗するケースが報告されました。また、誤った問い合わせ結果が生じる場合もありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e830896c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7df74e635">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=afd18f276">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=31bf09632">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b649ef244">&#167;</a></small></p>
<li>プランナがSubPlanのコストを見積もる際に、稀にエラー「ERROR:  no relation entry for relid」が発生する不具合が修正されました。  (Richard Guo) (17)(16)(15)(14)(13)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f34202f51">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=79ade5873">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=53e35fb56">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=160ef51c8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c02d92c6">&#167;</a></small></p>
<li>プランナがパーティションテーブルを展開する際に解放済みメモリ使用(use-after-free)の脆弱性が生じる可能性があり、修正されました。  (Bernd Reiß) (17)(16)(15)</li>
<p>
発生するケースは、パーティションを展開する際に最後の有効なパーティションが並行する別プロセスから同時に削除(DROP)された場合に限られます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed394c4bd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f0fe1da50">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8286bce0a">&#167;</a></small></p>
<li>複数のスキャン条件を持つGINインデックススキャンで無限ループに陥る可能性があり、修正されました。  (Tom Lane) (17)(16)(15)(14)(13)</li>
<p>
GINインデックスは一致しないエントリを除くスキャン条件（例えば、tsqueryの「!term」句など）を処理できます。これまで、そのような条件がスキャン条件の配列の先頭にあると、そのような条件と通常の条件が混在するクエリが無限ループになることがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=456c6a05d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d532069c3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=34249b3b5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4a593043e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3e0f5f00b">&#167;</a></small></p>
<li>GINインデックススキャンを割り込みでキャンセルできるようになりました。  (Tom Lane) (17)(16)(15)(14)(13)</li>
<p>
一部のコードパスで長時間割り込みを検査せずに実行される可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d17abaea8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=25eadfd0f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a9c1b9c1c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7da746c1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b2d71c455">&#167;</a></small></p>
<li>プランノードTID ScanおよびTID Range Scanに、欠けていたEvalPlanQual再チェックが追加されました。  (Sophie Alpert, David Rowley) (17)(16)(15)(14)(13)</li>
<p>
この遺漏により、同時UPDATEでctid条件が再評価されない可能性があり、その時に選択されたプランタイプに応じて、UPDATEの振る舞いが変わる可能性がありました。
</p>
<p>
EvalPlanQual再チェックは主としてREAD COMMITTED隔離レベルの問い合わせで実行される内部処理です。ctidは現在の物理的なタプル位置をあらわすテーブルのシステム列です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0fb06e893">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ba0203880">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f00ad440a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f78a69034">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3d939a9b1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6539f88b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=005770203">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2eb7ea97d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=940f3cd5d">&#167;</a></small></p>
<li>pg_event_trigger_dropped_objects()関数の戻り値のis_temporary列の挙動が修正されました。  (Antoine Violin, Tom Lane) (17)(16)(15)</li>
<p>
is_temporaryはオブジェクトが一時オブジェクトであるかどうかを示すものです。一時テーブルに属している列のデフォルト値、トリガ、RLS ポリシーが削除された場合にもtrueを返すように修正されました。このような場合にこれまでfalseを返していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c0c8ee23c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8856f1acc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=451373dc5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a220e40d1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f6c8e7824">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=33e49ee01">&#167;</a></small></p>
<li>ハッシュ化されたサブプラン(hashed SubPlan)でのメモリリークが修正されました。  (Haiyang Li) (17)(16)(15)(14)(13)</li>
<p>
タプルのハッシュの計算で使われた全てのメモリが問合せ終了まで残り続けるメモリリークとなっていました。一例として、ハッシュされる値がTOAST展開を要求する時にこの不具合が発生すると考えられます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=862980f92">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e1da9c072">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5ac973892">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5eab9b0a4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8b6c29afd">&#167;</a></small></p>
<li>スタンバイサーバの起動プロセスでのSMgrRelationオブジェクトのメモリリーク不具合が修正されました。  (Jingtang Zhang) (17)</li>
<p>
長時間実行されるスタンバイサーバでは、不要になったエントリを解放する処理がなかったため、これらのオブジェクトを保持するハッシュテーブルが大幅に肥大化する可能性がありました。
</p>
<p>
SMgrRelationはファイルハンドルを管理する実装コード内の構造体です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2dd7b2ac">&#167;</a></small></p>
<li>メモリ不足エラー後に統計情報を管理する共有テーブルが破損する不具合が修正されました。  (Mikhail Kot) (17)(16)(15)</li>
<p>
新しいハッシュテーブルエントリの作成中にメモリ不足エラーが発生すると、壊れたエントリが残され、その後の他のセッションで予期せぬエラーやクラッシュが発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3e6dfcfb0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12f57681c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1852ec5db">&#167;</a></small></p>
<li>MERGEにおける同時更新の問題が修正されました。  (Yugo Nagata) (17)(16)(15)</li>
<p>
MERGE UPDATE実行時に、対象行に対して複数の同時更新が発生した場合、ロックとリトライの処理が対象タプルの最新バージョンを誤って識別し、誤った結果を返すことがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6195afbe5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21a61b87f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f871fbae9">&#167;</a></small></p>
<li>MERGEおよびINSERT ... ON CONFLICT DO UPDATEに不足しているレプリカアイデンティティチェックが追加されました。  (Zhijie Hou) (17)(16)(15)(14)(13)</li>
<p>
MERGEで更新または削除動作が必要になり、かつ更新または削除のターゲットテーブルが論理レプリケーションのパブリケーション対象である場合、そのテーブルにREPLICA IDENTITYが定義されている必要があります。これを必須としないと、レプリケーションが静かに中断される可能性があります。同様に、UPDATEオプション付きのINSERTでは、ターゲットテーブルが挿入または更新を発行するならばREPLICA IDENTITYが必須となります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=76f45be93">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=421d7a157">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5481cc332">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b934d399">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0c4d5a45d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=451b22efd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5fd569ef2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0610b843c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57dfb64ec">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d37694b97">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4624929d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ea65c8823">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dbef9cbaa">&#167;</a></small></p>
<li>パブリッシャがサブスクライバと同一サーバ上にある場合に発生するDROP SUBSCRIPTION実行時のデッドロックが回避されました。  (Dilip Kumar) (17)(16)(15)(14)(13)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=288a817bc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7ece76129">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e41137155">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ef7750274">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0a98f24a6">&#167;</a></small></p>
<li>通常のテーブルと一時テーブルとの間でファイル番号が偶然衝突することによる論理レプリケーションの失敗が回避されました。  (Vignesh C) (17)(16)(15)(14)(13)</li>
<p>
この発生確率の低い問題は、エラー「ERROR:  unexpected duplicate for tablespace X, relfilenode Y」のような一時的なエラーとして発生していました。contrib/autoprewarmも影響を受けていました。この修正の副作用として、SQL関数のpg_filenode_relation()は一時テーブルを無視するようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dcdc95cb4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab874faaa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ec471008c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=222130edd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=30b32b08c">&#167;</a></small></p>
<li>シングルユーザーモードでレプリケーションスロットを解放しようとする際のアサート失敗が回避されました。  (Hayato Kuroda) (17)(16)(15)(14)(13)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=07a302387">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fea1cc3f7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=818be9b73">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=32d388d00">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8ed079cad">&#167;</a></small></p>
<li>macOSおよびBSDプラットフォームで、既存のセマフォセットとの競合が発生した場合の起動失敗が回避されました。  (Tom Lane) (17)(16)(15)(14)(13)</li>
<p>
既存のセットが要求したセマフォ数より少ない場合、これらのプラットフォームはコードが期待するEEXISTではなくEINVALを返すため、データベースの起動に失敗していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab92f0e7f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e67d5f7ba">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f4c088344">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3d6e8b63">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e3b3fa863">&#167;</a></small></p>
<li>libpqのトレース出力関数PQtrace()について、最上位ビットが設定された場合の出力が修正されました。  (Ran Benita) (17)(16)(15)(14)</li>
<p>
charが符号付きとみなされるプラットフォームでは、出力に余計な\xffffffが含まれていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0fedb3a27">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=701a0bd56">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b274c475">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0cc540f0d">&#167;</a></small></p>
<li>pg_dumpでサブスクリプションとイベントトリガのセキュリティラベルがダンプされるようになりました。  (Jian He, Fujii Masao) (17)(16)(15)(14)(13)</li>
<p>
これらのオブジェクトタイプのラベルは、これまで除外されていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=968141898">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=20b23784f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=165b07efe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=295c0a644">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dff7591a7">&#167;</a></small></p>
<li>pg_dumpのデフォルトACLと外部キー制約のソートが修正されました。  (Kirill Reshke, Álvaro Herrera) (17)(16)(15)(14)(13)</li>
<p>
他のオブジェクトタイプと同様に、これらのデータベースオブジェクトタイプの一貫した順序付けが確保されるようになりました。以前は順序が不安定であるほか、アサート失敗する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e8d22095e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e68fa9a83">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fbf967e99">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4948bb9df">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=05341b2e9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=49a09c6c5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=412d29fd2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=090c9c960">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=22c6a44f0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fb75e1ef7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=162e70ea0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7419c99a2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=06c1ee6b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4cc3b4445">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6062c3db3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d20df9590">&#167;</a></small></p>
<li>pg_dumpで別々にダンプされたドメイン制約のコメントに、適切な依存関係を示すラベルが付与されるようになりました。  (Noah Misch) (17)(16)(15)(14)(13)</li>
<p>
以前は制約に対するコメントはドメインに依存させていました。このためpg_restoreを並列に実行した場合、 制約が復元される前にコメントの復元を試行してしまい、リストアが失敗する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e127764b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3cf328eca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0773f3a87">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=85d6ed31f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a685c057a">&#167;</a></small></p>
<li>pg_restoreでリストア対象外のパブリケーションおよびサブスクリプションのコメントとセキュリティラベルがスキップされるようになりました。  (Jian He, Fujii Masao) (17)(16)(15)(14)(13)</li>
<p>
--no-publicationsまたは--no-subscriptionsが指定されている場合、これらのオブジェクトに対するCOMMENTまたはSECURITY LABELコマンドは出力されません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f7f9c5d65">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=97527a5e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c8ed16050">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=db900ec35">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8fbd1f8ea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dc8aa2f58">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0870397cc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5f42008f9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bc476f8b8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4dbb11bb">&#167;</a></small></p>
<li>LLVMバージョン21以降でビルドが可能なように修正されました。  (Holger Hoffstätte) (17)(16)(15)(14)(13)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=755f01ad7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2670881af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=72a24bebc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fbfc36e94">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=59d6e843e">&#167;</a></small></p>
<li>mesonでビルドする場合、makefileビルドと同様に特別な最適化フラグをnumeric.cとchecksum.cに適用するようになりました。  (Nathan Bossart, Jeff Davis) (17)(16)</li>
<p>
makefileが長年おこなってきたことと一致させるため、両ファイルで-ftree-vectorizeを使用し、checksum.cでは-funroll-loopsを使用します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=15f9eeef6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=509c77929">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e25453a36">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2de24ca6c">&#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 13.22 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/13-22/</link>
		
		<dc:creator><![CDATA[データベース技術グループ]]></dc:creator>
		<pubDate>Sun, 07 Sep 2025 23:30:03 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 13]]></category>
		<category><![CDATA[PostgreSQL 13.21]]></category>
		<category><![CDATA[PostgreSQL 13.22]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=18589</guid>

					<description><![CDATA[このリリースは 13.21 からの修正リリース（2025年 8月 14日リリース）です。 13.X からのアップデートではダンプ、リストアは不要です。 ただし、13.21 よりも前のバージョンからアップデートする場合には ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 13.21 からの修正リリース（2025年 8月 14日リリース）です。<br />
13.X からのアップデートではダンプ、リストアは不要です。</p>
<p>ただし、13.21 よりも前のバージョンからアップデートする場合には、<a href="/tech-blog/pgsql/13-21/" rel="noopener">13.21のリリース情報</a>も参照してください。</p>
<p><span id="more-18589"></span></p>
<h3>PostgreSQL 13.21 から 13.22 への変更点</h3>
<p>17.6, 16.10, 15.14, 14.19, 13.22 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<ol>
<li>プランナの見積もり関数におけるセキュリティチェックが強化されました。  (Dean Rasheed) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
CVE-2017-7484に対する修正およびその後の追加修正は、呼び出し元ユーザーに読み取り権限のない列の統計データに対して、情報漏洩の可能性がある関数が適用されるのを防ぐことを目的としていました。しかし、その対策には見落とされていた点が2つありました。
</p>
<p>
1つ目の見落としは、パーティションや継承階層に関するもので、テーブルに設定されたRLSポリシーが統計データへのアクセスを制限すべき状況で、実際には制限されていませんでした。
</p>
<p>
2つ目は、クエリがビューを介してテーブルにアクセスするケースです。この場合、ビューの所有者はビューの基になるテーブルの読み取り権限を持っていても、呼び出し元のユーザーがそのビューに対する権限を持っていないことがあります。これまでの実装では、ビューの所有者の権限がセキュリティチェックを通過させてしまい、その結果、呼び出し元ユーザーのビューに対する権限を確認する前に、基になるテーブルの統計情報に情報漏洩の可能性がある関数が適用されることがありました。この問題は、プランニングの開始時点でビューに対するセキュリティチェックを行うようにすることで修正されました。これにより、以前よりも早い段階で権限エラーが発生する可能性があります。(CVE-2025-8713)
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=64f77c6a6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a85eddab2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7e86da539">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=415badc13">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=afe38fb6a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=533211ded">&#167;</a></small></p>
<li>pg_dumpスクリプトが、リストアを実行するユーザーへの攻撃に使われるのが防止されました。  (Nathan Bossart) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
ダンプ／リストア操作では通常、SQLコマンドがスーパーユーザーとして実行されるため、ターゲットのデータベース環境は、ソースサーバーを信頼している必要があります。しかしそれは、リストアを実行するためにpsqlを使うOS上のユーザーが、ソースサーバーを信頼しなければならないことを意味するわけではありません。ここでのリスクは、攻撃者がソースサーバー上でスーパーユーザー権限を得ていた場合に、psqlのメタコマンドとして解釈されるようなテキストを出力させることができる点です。これにより、ターゲットデータベースへのアクセスとは無関係に、リストアを実行しているユーザーのアカウントに対し、シェルレベルのアクセスが可能になる恐れがあります。
</p>
<p>
このような事態が発生しないことを確実にするため、psqlに\restrictコマンドを追加し、それ以降のメタコマンドの実行を禁止できるようにしました。また、pg_dumpがソースサーバーからのデータよりも前にこのコマンドを出力するようにしました。(CVE-2025-8714)
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=67a2fbb8f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=575f54d4c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7ad8e7909">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=424040506">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4998d089">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c204bd39f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8967c33c6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=27d3dee68">&#167;</a></small></p>
<li>pg_dumpの出力にあるコメント内の名前に含まれる改行がスペースに変換されるようになりました。  (Noah Misch) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
改行文字を含むオブジェクト名があると、出力スクリプト内に任意のSQLコマンドを挿入することが可能になってしまう問題がありました。（CVE-2025-8714の修正がなければ、psqlのメタコマンドをこの方法で注入することも可能でした。）この種の問題は、CVE-2012-0868によって過去に修正されていましたが、その後の開発によって、いくつかのケースが再び入り込んでしまっていました。(CVE-2025-8715)
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=13a67ce60">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9b92f115b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=850caae60">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9751f934a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0f5838438">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2179e6005">&#167;</a></small></p>
<li>BRINの組み込み演算子クラスnumeric_minmax_multi_opsが誤った距離計算をしてしまう問題が修正されました。  (Peter Eisentraut, Tom Lane) (17.6)(16.10)(15.14)(14.19)</li>
<p>
この関数の結果は、64ビット環境では時々誤りが生じ、32ビット環境では大きく誤った値を返すことがありました。ただし、このロジックはあくまで値をどのように範囲へ統合するかを決定するために使われているだけなので、明確なエラーとして現れることはありませんでした。最悪の場合でも、インデックスの効率が悪くなり、サイズが肥大化する程度です。それでも、numeric_minmax_multi_ops演算子クラスを使用しているBRINインデックスについては再インデックスを行うことが推奨されます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9b681e239">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b0d3c19b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b9279058a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=835c9374d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5b0c8e328">&#167;</a></small></p>
<li>元々は存在しなかった受け入れ可能なXML入力サイズに関する上限がなくなりました。  (Michael Paquier, Erik Wienhold) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
libxml2の2.13系の初期リリースに存在したバグへの回避策として、10MBを超えるテキストチャンクを拒否するコードパスを使用していましたが、以前のコードではそのような制限はありませんでした。これら初期リリースは現在では実環境で使用されている可能性は低いため、以前のコードに戻しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=637ead2e1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fd4ad33fe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6d5e493b4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ffbd345e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0395464af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=589d6e640">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d5f014d89">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7571e0f6e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=762c6d8d2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0928e18eb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cdcdabce5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ae824704">&#167;</a></small></p>
<li>同時更新によるMERGEの不具合が修正されました。  (Dean Rasheed) (17.6)</li>
<p>
MERGEがCTEの内部で実行され、かつ対象のテーブルにBEFORE ROWトリガが定義されている場合に、同時に別のUPDATEやDELETEによって対象行が変更されると、MERGEコマンドが失敗することがありました。具体的には、UPDATEの場合はクラッシュを引き起こし、DELETEの場合は誤ったアクションが実行される可能性がありました。
</p>
<p>
以下、DELETE実行で誤ったアクションが実行される実行例です。
</p>
<pre>
db1=# SELECT * FROM mergetbl;
 id | num | val
----+-----+------
  1 |  50 | init
(1 row)

(セッション1で上記のデータをUPDATE) 
db1=# BEGIN;
db1=*# UPDATE mergetbl SET num = 150, val = 'updated1' WHERE id = 1;
NOTICE:  UPDATE: (1,50,init) -> (1,150,updated1)

(セッション2から、CTEの内部からMERGEを実行する)
db1=# BEGIN;
db1=*# WITH m AS (
  MERGE INTO mergetbl m
  USING (SELECT 1 as id) s
  ON s.id = m.id
  WHEN MATCHED AND num < 100 THEN
    DELETE
  WHEN MATCHED AND num < 200 THEN
    UPDATE SET val = 'updated2'
  RETURNING *
)
SELECT * FROM m;

(セッション1を閉じる)
db1=*# COMMIT;

(セッション2で以下が返る)
NOTICE:  DELETE: (1,150,updated1)
 id | id | num | val
----+----+-----+------
  1 |  1 |  50 | init
(1 row)
→セッション1でnum = 150にしているので、正しくはUPDATEアクションが実行されるべき

(17.6では正しいアクションが実行される)
NOTICE:  UPDATE: (1,150,updated1) (1,150,updated2)
 id | id | num |   val
----+----+-----+----------
  1 |  1 | 150 | updated2
(1 row)
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=27c7c1136">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=91ad1bdef">&#167;</a></small></p>
<li>継承の親テーブルへのMERGEが修正されました。  (Dean Rasheed) (17.6)(16.10)(15.14)</li>
<p>
継承の親テーブルへの挿入は、WITH CHECK OPTIONおよびRETURNINGアクションの処理に失敗することで、クラッシュを引き起こしたり、不正確なクエリ結果を生成したりする可能性がありました。
</p>
<pre>
db1=# CREATE TABLE merge_parent (
  id int, value int);
db1=# CREATE TABLE merge_child () INHERITS (merge_parent);
db1=# CREATE VIEW merge_view WITH (security_barrier) AS
SELECT * FROM merge_parent WHERE value >= 0
WITH CHECK OPTION;

(17.5以前は、以下のようにエラーは返ってこず0行として返ってくる)
MERGE INTO merge_view tgt
USING (VALUES (2, -5)) AS src(id, value)
ON tgt.id = src.id
WHEN NOT MATCHED THEN
  INSERT (id, value) VALUES (src.id, src.value)
  RETURNING *;
 id | value | id | value
----+-------+----+-------
(0 rows)

MERGE 0

(17.6では以下のエラーが返ってくる)
ERROR:  new row violates check option for view "merge_view"
DETAIL:  Failing row contains (2, -5).
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab52f6b5b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3611794af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6a3f3272">&#167;</a></small></p>
<li>文レベルのトリガを持つテーブルが、パーティションまたは継承の子テーブルになれるように修正されました。  (Etsuro Fujita) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
遷移テーブルを伴う行レベルのトリガは、パーティションや継承の子テーブルでは許可されていません。なぜなら、継承ツリー全体に対する操作では、各子テーブルごとに個別の遷移テーブルを管理しなければならないためです。しかし、この問題は文レベルのトリガには当てはまりません。文レベルのトリガは親テーブルのものだけが実行されるからです。それにもかかわらず、既存のテーブルがパーティションや継承の子テーブルになれるかを判断するコードは、両方の種類のトリガを一律に拒否していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bba6a6faf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e028ce911">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3863c6fb6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f39a7f32a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=73eb6afa1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=afdb4cde1">&#167;</a></small></p>
<li>子テーブルである外部テーブルからの遷移タプルの収集を禁止するよう修正されました。  (Etsuro Fujita) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
PostgreSQLでは、外部テーブルに対して遷移テーブル付きのトリガはサポートされていません。しかし、パーティションや継承の子テーブルが外部テーブルである場合については、これまで見落とされていました。親テーブルに遷移テーブル付きのトリガがあると、外部テーブルである子テーブルから誤った遷移タプルが収集されてしまうことがありました。このようなケースはサポートされていないため、明示的に禁止するようにしました。この修正により、このような場合は、エラー「ERROR:  cannot collect transition tuplesfrom child foreign tables」が発生するようになりました。
</p>
<p>
以下に再現例を示します。
</p>
<pre>
(パーティションの子テーブルが外部テーブルである場合)
db1=# \d
                  List of relations
 Schema |     Name     |       Type        |  Owner
--------+--------------+-------------------+----------
 public | foreigntable | foreign table     | postgres
 public | parenttable  | partitioned table | postgres
(2 rows)

db1=# ALTER TABLE parenttable ATTACH PARTITION foreigntable FOR VALUES IN ('AAA');

(parenttable に対してAFTER INSERT 文レベルトリガ作成)
db1=# CREATE FUNCTION trigger_func() RETURNS trigger AS $$
BEGIN
  RAISE NOTICE 'trigger fired';
  RETURN NULL;
END;
$$ LANGUAGE plpgsql;

db1=# CREATE TRIGGER parenttable_insert_trig
  AFTER INSERT ON parenttable
  REFERENCING NEW TABLE AS new_table
  FOR EACH STATEMENT
  EXECUTE PROCEDURE trigger_func();

db1=# INSERT INTO parenttable VALUES ('AAA', 100);
ERROR:  cannot collect transition tuples from child foreign tables

(17.5 で実行するとエラーは発生しない)
db1=# INSERT INTO parenttable VALUES ('AAA', 100);
NOTICE:  trigger fired
INSERT 0 1
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ce8817022">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9048a83c7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9cca445df">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d642d2306">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e94fc1a8a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b6641f7b0">&#167;</a></small></p>
<li>予約済みプレフィックス付きの不明なカスタムパラメータのリセットを許可するようになりました。  (Nathan Bossart) (17.6)(16.10)(15.14)</li>
<p>
以前は、ALTER DATABASEやALTER ROLE、ALTER SYSTEMを使って保存されたパラメータ設定について、そのパラメータが不明なパラメータであっても、予約済みのプレフィックスを持っていた場合、その設定を削除することができませんでした。このようなケースは、拡張がかつて使用していたパラメータが、拡張のアップグレードで削除された場合などに発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7b9674a8b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39ff05636">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b998ce327">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f79ca73d7">&#167;</a></small></p>
<li>ALTER SUBSCRIPTION ... DROP PUBLICATION実行時に発生しうるデッドロックが修正されました。  (Ajin Cherian) (17.6)(16.10)(15.14)(14.19)</li>
<p>
レプリケーションのオリジンを削除する時に、サーバープロセスがカタログロックを一貫した順序で取得するようにして、デッドロックの可能性を防ぐようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d9f01a287">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c298324a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=adfd80219">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=434d2d147">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41fb3f51c">&#167;</a></small></p>
<li>競合する名前を持つインデックスを作成する際に、競合状態となる時間が短縮されました。  (Tom Lane) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
インデックスの自動生成名を決定する際、すでに有効なエントリとの競合と同様に、未コミットのエントリとの競合も回避するようになりました。これにより、他のトランザクションで並行してCREATE INDEXが実行されている場合に、まだインデックスの作成中であったり、作成は完了していてもトランザクションがコミットされていない場合に、同じインデックス名を誤って選んでしまう可能性を防げるようになりました。依然として競合が発生する可能性はありますが、これは新しいインデックスのパラメータを検証し、pg_classへの行挿入が完了するまでの短時間だけです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fdd826922">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e24ea160">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=75b8982ea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=27af8b9be">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4b66cb188">&#167;</a></small></p>
<li>1つのコマンドで複数のテーブルをVACUUMする場合に、VACUUMオプションが間違って適用されてしまう問題が修正されました。  (Nathan Bossart, Michael Paquier) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
あるテーブルに対して指定されたTRUNCATE、INDEX_CLEANUPオプションが、他のテーブルにも誤って適用されてしまうことがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2e0b5d252">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d187cabdd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=354944663">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c079ba3fc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=65c3223f9">&#167;</a></small></p>
<li>インデックスのないテーブルをVACUUMする際に、そのテーブルの空き領域マップが適切なタイミングで更新されるようになりました。  (Masahiko Sawada) (17.6)</li>
<p>
以前の最適化により、そインデックスのないテーブルでは空き領域マップのVACUUM処理がスキップされてしまうことがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c6ededac">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=792238c8b">&#167;</a></small></p>
<li>SIMILAR TO正規表現内の文字クラスの処理が修正されました。  (Laurenz Albe) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
SIMILAR TOパターンマッチング式をPOSIX形式の正規表現に変換するコードは、角括弧 [] がネストされ得ることを考慮していませんでした。例として、[[:alpha:]%_]というパターンでは、%と_の文字がリテラルとして扱われるべきですが、コードはそれらをメタ文字として扱っていました。
</p>
<pre>
(17.6では[[:digit:]%]で t が返る)
db=# SELECT '%' SIMILAR TO '[[:digit:]%]',
            '%' SIMILAR TO '[%[:digit:]]';
 ?column? | ?column?
----------+----------
 t        | t
(1 row)

(17.5では f が返る)
db=# SELECT '%' SIMILAR TO '[[:digit:]%]',
            '%' SIMILAR TO '[%[:digit:]]';
 ?column? | ?column?
----------+----------
 f        | t
(1 row)
</pre>
<p>
[%_[:alpha:]]のように前に%_を記述した場合は、修正以前も期待どおりの結果が返ってきていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e3ffc3e91">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e9e535d61">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3e99115e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1fe15d25e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9481d1614">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a3c6d92f3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=52d08620e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4dc642e75">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0c09922c0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=31ee5ec69">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=54c05292b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=92a9ba3b9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=72fe74ca5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0420b24fe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7ee00918f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4da7b0cf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=558ea446a">&#167;</a></small></p>
<li>pg_dumpなどでビューや関数の定義を取得するため、問い合わせを逆解析する際、「FETCH FIRST 式 ROWS WITH TIES」句の式部分を常に括弧で囲むように修正されました。  (Heikki Linnakangas) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
単純でない式は括弧で囲む必要がありますが、型キャスト付きの値などを誤って単純な式と見なし、括弧で囲まず、構文として誤ったSQLを生成する可能性がありました。
</p>
<pre>
(エラー発生例)
$ psql -c "CREATE VIEW v1 AS SELECT * FROM generate_series(1, 10) AS c1 ORDER BY c1 FETCH FIRST (5::bigint) ROWS WITH TIES;" db1
$ createdb db2
$ pg_dump db1 | psql db2
(省略)
ERROR:  syntax error at or near "::"
行 5:  FETCH FIRST (5)::bigint ROWS WITH TIES;
                      ^
</pre>
<li>checkpointerプロセスのfsyncリクエストキューのサイズを制限するように修正されました。  (Alexander Korotkov, Xuneng Zhou) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
shared_buffersの設定が非常に大きい場合、checkpointerプロセスがfsyncリクエストキューに1GBを越える領域を割り当てようとし、「invalid memory alloc request size」エラーが発生し、リトライを繰り返し、無限ループが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bae507821">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=13559de95">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f0cdc2afd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b248a3ba4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=50026136c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f32a47161">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5cfbff48a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=605890034">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2ac50f118">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=73f897ba5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c5d66fc12">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f872ae70">&#167;</a></small></p>
<li>ロジカルデコーディングで不完全なWALレコードの読み取り時に無限に待機し続けないように修正されました。  (Vignesh C) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
複数ページにまたがるWALレコードの最初の部分を書き込んだ後にサーバがクラッシュした場合、ロジカルデコーティングではWALストリームから次ページのデータが到着するのを待機します。しかし、データが到着することはなく、無限に待機し続けていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5449d5b7a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c9f4e7520">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b485e1c89">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9f270f48f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bedfdb85b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=762f352ca">&#167;</a></small></p>
<li>「MultiXactOffsetSLRU」と「MultiXactMemberSLRU」のLWLock待機イベント名の表記ゆれが修正されました。  (Bertrand Drouvot) (17.6)</li>
<p>
pg_wait_eventsとpg_stat_activityで待機イベント名が異なっており、これらのビューを結合する監視問い合わせが機能しない可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4fcbe06aa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3abec0ad">&#167;</a></small></p>
<li>pg_classのrelaclなど、データベースオブジェクトのアクセス権限を表す、ACL文字列内のロール名の引用符付けの一貫性のなさが修正されました。  (Tom Lane) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
引用符の付け方はロケールに依存していたため、異なる環境に移行する際に移植性の問題が発生する可能性がありました。(pg_dumpではこの問題の影響はありませんが、他のツールでは影響する可能性があります。)一貫性を確保するため、出力時に非ASCII文字を常に引用符で囲むようになりました。ただし、下位互換性を維持するため、入力時に非ASCII文字を引用符で囲む必要はありません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ccacaf4fa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=50959f96e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=53a936b61">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=de73cb3ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac8cdb249">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=093d3d745">&#167;</a></small></p>
<li>テーブルと外部テーブルのオプション名に等号 (=) を使用できないように修正されました。  (Tom Lane) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
このようなオプション名に明確な使用例はなく、許容すると「name=value」という内部形式で格納する際に曖昧さが発生するため、使用できないように修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d4046125d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab758ec4d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e76097124">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eb4234647">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cd31eaaeb">&#167;</a></small></p>
<li>LZ4圧縮されたアーカイブデータの解凍が特定の条件下で失敗する問題が修正されました。  (Mikhail Gribkov) (17.6)(16.10)(15.14)</li>
<p>
この問題は圧縮率の低い入力データのみで発生するようで、これまで検出されなかった可能性があります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d09d13793">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=074003431">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5c639523f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d44efe87e">&#167;</a></small></p>
<li>btreeインデックスのスキャン処理で稀にインデックスエントリを誤って削除済みとして扱ってしまう問題が修正されました。  (Peter Geoghegan) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
この問題は、マージ結合に伴うスキャンで、同じページに同時に挿入・削除されたエントリがある場合に発生する可能性があり、正しい行が取得できないことや不要なリソースが保持されることがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=40aa5ddea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7f25feb3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d2ec67109">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c7c0a77d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=38c8d2987">&#167;</a></small></p>
<li>論理レプリケーションで他プロセスからのキャッシュ無効化メッセージを再送信しないように修正されました。  (vignesh C) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
以前のマイナーリリースでプロセス間のキャッシュ無効化メッセージに正しく応答するように修正され、更新適用中に古いカタログを参照しないようになりました。しかし、その際に意図せずメッセージを再送信してしまい、メッセージ数が急増し、メモリ割り当てエラーが発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=45c357e0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b2ae07720">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fc0fb77c5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=983b36362">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1230be12f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=87819f766">&#167;</a></small></p>
<li>レプリケーションスロットの同期設定が誤っていても、サーバが予期せず停止しないように修正されました。  (Fujii Masao) (17.6)</li>
<p>
sync_replication_slotsがtrue、かつ、wal_levelがlogical未満の場合、postmasterプロセスはエラーを報告し、停止していました。本来の意図は単にスロット同期を無効にするだけのため、エラーメッセージのレベルを下げ、postmasterプロセスが停止しないようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2d81a246f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f71fa981c">&#167;</a></small></p>
<li>チェックポイント処理中の早過ぎる古いWALファイル削除が回避されました。  (Vitaly Davydov) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
チェックポイント処理中にレプリケーションスロットのリスタートポイントが進行すると、不要になったWALセグメントの早まった削除がなされ、その後すぐにデータベースがクラッシュした場合、リカバリに失敗する可能性がありました。 WALセグメントをチェックポイント1サイクル分、追加で保持するよう修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2090edc6f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cea8f2c3e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dd9bc1a17">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2832bd96">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dd3df0b85">&#167;</a></small></p>
<li>レプリケーションスロットの確定済みフラッシュ位置を後方に移動しないようになりました。  (Shveta Malik) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
場合によっては、レプリケーションクライアントが永続的に保存したLSNよりも過去のLSNを確認し、再起動後に古いLSNを送信する可能性がありました。 クライアントが2つのポイント間のWALに対して何もする必要がないなら、これはバグとは言えません。ただし、データ重複を避けるため、そのWALを再送信すべきではありません。そのため、作成されたスロットに対しては常に最新の確認済みLSNを信頼するようになりました。
</p>
<p>
論理レプリケーションで予期せぬデータ重複コンフリクトが出る障害例が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7318f241d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c0f51fde5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9d1a62359">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e68459489">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e323d9df0">&#167;</a></small></p>
<li>新しい論理レプリケーションワーカを起動する前に過剰な遅延が発生しないようになりました。  (Tom Lane) (17.6)(16.10)</li>
<p>
場合によっては、論理レプリケーションランチャーが新しいワーカを起動する前に、設定されたwal_retrieve_retry_intervalよりもかなり長い時間スリープすることがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9f33300e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=87c8ed3db">&#167;</a></small></p>
<li>INSERT ... ON CONFLICTの論理レプリケーション中のメモリ解放後使用（use-after-free）が修正されました。  (Ethan Mertz, Michael Paquier) (17.6)(16.10)</li>
<p>
これにより、進捗状況の報告が不正確になる可能性があり、非常に運が悪ければ、wal senderプロセスがクラッシュする可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=11de339aa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e0b4b1ab">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ec96e8812">&#167;</a></small></p>
<li>スタンバイサーバでのトランザクション待機を中断できるようになりました。  (Kevin K Biju) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
スタンバイサーバでのレプリケーションスロットの作成には、プライマリサーバでのアクティブなトランザクションが終了し、その後スタンバイサーバでリプレイされるまで待機する必要がある場合がありました。これは無期限の待機となる可能性があるため、操作をキャンセルできるようにすることが望ましいのですが、ループ内でクエリのキャンセルがチェックされていませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=24c5ad5be">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=63fa7caa9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=405cca9da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9130d8eee">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=706344f06">&#167;</a></small></p>
<li>物理レプリケーションのスタンバイサーバで動作する論理wal senderが、スタンバイサーバでリプレイ済のデータのみ送信するようになりました。  (Alexey Makhmutov) (17.6)(16.10)</li>
<p>
以前は未リプレイでもフラッシュ済のデータを送信しようとしていました。そのためにスタンバイサーバのシャットダウンに際して、startupプロセスが停止してWALリプレイがそれ以上進まないために、論理wal senderが無限に待機することがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=87be749c7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5e6d561bc">&#167;</a></small></p>
<li>自動VACUUMにおけるリレーションごとのメモリリークが修正されました。  (Tom Lane) (17.6)(16.10)(15.14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cd3064f98">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e087b5b79">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=13d21b48a">&#167;</a></small></p>
<li>XMLSERIALIZE(... INDENT) でのセッション存続期間のメモリリークが修正されました。  (Dmitry Kovalenko, Tom Lane) (17.6)(16.10)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=075554ec6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=95cf1a181">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=abb517d61">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=20bae0690">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ee58de100">&#167;</a></small></p>
<li>「バンプ」アロケータを使用して大きなメモリブロックを割り当てる際、メモリ不足となった後に発生する可能性のあるクラッシュが修正されました。  (Tom Lane) (17.6)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a05cf22e0">&#167;</a></small></p>
<li>スナップショットなしでシステムカタログのTOASTされたフィールドを取得しようとする箇所が修正されました。  (Nathan Bossart) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
これにより、アサート失敗が発生したり、エラー「ERROR:  cannot fetch toast data without an active snapshot」が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fe8ea7a2a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=24135398f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ddfcfb7ce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b65be6ef0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b7ba2c030">&#167;</a></small></p>
<li>複数のテーブルまたがる制約がある場合に、制約を更新するとアサート失敗する問題が修正されました。  (Tom Lane, Jian He) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
例えば、アサートを有効にした環境では以下のクエリを実行するとアサート失敗が発生していました。
</p>
<pre>
(修正前のアサート失敗発生例)

=# CREATE TABLE t1(a int);
=# CREATE TABLE t2(b t1 CHECK ((b).a IS NOT NULL));
=# ALTER TABLE t1 ALTER COLUMN a TYPE numeric;
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bbfcbc4cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c15798cf9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=614ffb26d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=25cab4473">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=13f1e9f26">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3d7a96871">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6d4395b40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d36980b71">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e6dd6e6ee">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e902f8181">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9ba071cc">&#167;</a></small></p>
<li>内部実装関数PortalRunMulti() の終了時点で必ずコマンドタグが決定されているとする誤ったアサートが削除されました。  (Álvaro Herrera) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
このアサートは、空のプリペアドステートメントの実行などの特殊なケースで失敗していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e0d3f3cfb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0c466f5e0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4871c1e9c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c2720ac60">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b9a896828">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=43cd85962">&#167;</a></small></p>
<li>XMLTABLEのパース処理でアサート失敗する問題が修正されました。  (Richard Guo) (17.6)(16.10)(15.14)</li>
<p>
XMLTABLE式では、列にNOT NULLを指定することが可能であり、これを表現するために、パーサーは内部的に「is_not_null」というオプション名を生成していました。しかし、パーサーはユーザーが任意のオプション名を指定できるようにもしているため、ユーザーが同名の「is_not_null」を明示的に使い、真偽値以外の値を割り当てた場合、内部の前提が崩れてアサートが失敗してしまう問題が発生していました。
</p>
<p>
今回の修正では、ユーザーが指定したオプション名が内部の予約名と衝突していないかをチェックし、衝突していた場合はエラーを出すようになりました。さらに、内部で使うオプション名を「__pg__is_not_null」に変更することで、ユーザー定義名との衝突リスクも低減されています。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2f48b4f07">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d3716d4b1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=666103090">&#167;</a></small></p>
<li>PL/pgSQLで式を並列実行できる機能が復元されました。  (Dipesh Dhameliya) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
この機能は以前は利用可能でしたが、過去のバグ修正によって意図せず無効化されてしまっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=440c5ee20">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a553a2289">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3bbc1c4a7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c65c36ab5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=602c91cf2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ae693c0bf">&#167;</a></small></p>
<li>PL/Pythonにおけるエラー報告処理で発生する特殊なケースのメモリリークが修正されました。  (Tom Lane) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
Pythonからのエラーを報告する際にメモリ不足が発生すると、Python オブジェクトの参照カウントを適切に減らす処理が失敗する可能性がありました。その結果、セッション全体にわたってメモリが解放されずに残存してしまう問題が起こることがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7559a16e2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5c7fd5976">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b56a92651">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=31a3a15fa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1c78d5553">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6f724fcf8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ecc8fd2b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b898bb2a7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d4556f592">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=93aca1246">&#167;</a></small></p>
<li>hostaddrを使ってサーバのアドレスを指定した場合に、libpqのPQcancelCreate()関数が正しく動作するよう修正されました。  (Sergei Kornilov) (17.6)</li>
<p>
これまではPQcancelCreate()が生成したキャンセル用のオブジェクトを実際に使用するとlibpq がセグメンテーション違反によりクラッシュする問題がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5d0800000">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=445bd37b1">&#167;</a></small></p>
<li>libpqのPQport()関数が修正され、引数として渡された接続がNULL でない限りこの関数はNULLを返さないようになりました。  (Daniele Varrazzo) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
これは仕様として文書化されていますが、バージョン10以降のlibpq ではユーザーがポートを指定しなかった場合にNULL を返すケースがありました。この挙動が仕様どおりに戻され、NULLを渡された場合には空文字列""を返すようになりました。 ただし、バージョン18以降では、コンパイル時に設定されたデフォルトのポート番号として、通常は5432が返されるようになります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bfa9b25c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3f10d2b66">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=009c20a3d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a372a64db">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d5cba7746">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9dcd1aa81">&#167;</a></small></p>
<li>GSSAPI認証で16kBを超えるパケットが必要な場合に、認証処理が失敗しないよう修正されました。  (Jacob Champion, Tom Lane) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
Active Directoryのグループに多数所属しているユーザーでは、より大きな認証パケットが必要ですが、16kBをパケットサイズの上限としていました。 この制限により、エラー 「GSSAPI context establishment error:The routine must be called again to complete its function: Unknownerror」などが発生し、接続が失敗するケースがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8b0aa7a6b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ca70ee6ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39b1d1907">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7da7914c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c81cdffa1">&#167;</a></small></p>
<li>SSLおよびGSSAPIによるデータ送信におけるタイミング依存の失敗が修正されました。  (Tom Lane) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
SSLまたはGSSAPIでの暗号化をノンブロッキングモードで使用している場合、エラー「SSL error: bad length」または、エラー「GSSAPI callerfailed to retransmit all data needing to be retried」というメッセージを出力し、処理が失敗することがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=30e0d9ee9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3f37400cf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6a4d93eda">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0703c9385">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f09fea386">&#167;</a></small></p>
<li>ECPGアプリケーションにおける接続の検索時に、NULLポインタ参照が発生しないよう修正されました。  (Aleksander Alekseev) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
この問題は、接続名がNULLの接続と非NULL接続少なくとも2つの接続が存在する状況で発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ded7615d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2805e1c1e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=313d3102f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0123922f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=408fe659a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c934d5673">&#167;</a></small></p>
<li>psqlのタブ補完がCOPYおよび\copy のオプションについて改善されました。  (Atsushi Torikoshi) (17.6)(16.10)(15.14)(14.19)</li>
<p>
COPY FROM とCOPY TOで同じオプションが提示されていましたが、これからは FROMかTO かを区別して、適したオプションだけ提示するようになります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=765a4c94c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c1c6169eb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d69836b13">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e3584e457">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0514616f0">&#167;</a></small></p>
<li>pgbench で、複数のパイプライン同期メッセージを受けたときのアサート失敗が回避されました。  (Fujii Masao) (17.6)(16.10)(15.14)</li>
<p>
これはパイプラインモードを使用する場合の問題です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fee46ab4f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=398e07162">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d3ded521">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6914a330f">&#167;</a></small></p>
<li>pg_createsubscriberコマンドでサブスクリプションを初期化するときの、トランザクションリプレイの重複が修正されました。  (Shlok Kyal) (17.6)</li>
<p>
サブスクライバのリカバリ中に処理された最後のトランザクションが、通常のレプリケーションが開始されたときに再送されてしまう可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=33f74b806">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=967309116">&#167;</a></small></p>
<li>pg_dumpがドメイン型におけるNOT NULL制約のコメントを確実にダンプするようになりました。  (Jian He, Alvaro Herrera) (17.6)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9545e95c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6b755d8d7">&#167;</a></small></p>
<li>pg_dumpがドメイン型の制約のコメントを有効な順序で出力するようになりました。  (Jian He) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
これまで、制約を作成する前にそのコメントを付与するコマンドがあらわれる場合がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dca0e9693">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d07bc7c2b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cef998ef8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5a261c135">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e04aca1c4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57949cea5">&#167;</a></small></p>
<li>全ての種類のデータベースオブジェクトについて、pg_dumpで安定したソート順を保つようになりました。  (Noah Misch, Andreas Karlsson) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
pg_dumpは依存性に基づく並び替えをする前に、オブジェクトをその論理名でソートしますが、ルールや制約などいくつかのオブジェクト種別については、OIDでのソートが行なわれており、論理的に同じデータベースで異なる出力順になる可能性がありました。このため、ダンプ出力を比較してオブジェクト差異を調べることが難しくなっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c0ae03384">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1ca1889ea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ac1581c3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=22f126da6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7ee7c1cd3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=04bc2c42f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5dd4957b2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9affed263">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e99010cbd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=25388fb2c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cc9a62c51">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0d2734eac">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28e7252e4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=216683296">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=70637d7ae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7846f4709">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bc05590c7">&#167;</a></small></p>
<li>pg_dumpのフィルタファイルでオブジェクトタイプの誤った解析が修正されました。  (Fujii Masao) (17.6)</li>
<p>
キーワードとして次の空白文字までを解釈すべきところ、次にアルファベット、数字、アンダースコア以外の文字が現れるところまでを解釈していました。このため、「table_data」を誤って「table-data」と書いた場合にエラーにならずに「table」と解釈される、といった動作が生じていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e3764229e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7dafc4a41">&#167;</a></small></p>
<li>pg_restoreが、PostgreSQL 12より前のバージョンの pg_dumpで作られたディレクトリ形式のダンプからのラージオブジェクトのリストアにできない障害が修正されました。  (Pavel Stehule) (17.6)</li>
<pre>
（修正前のエラー発生例）
$ pg_restore -d db1 db1.d
pg_restore: error: could not open large object TOC file "db1.d/3210.dat" for input: No such file or directory
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=839802792">&#167;</a></small></p>
<li>pg_upgradeで一貫しない継承されたNOT NULL制約を検査するようになりました。  (Ali Akbar) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
PostgreSQL 18 より前のバージョンでは、継承された列のNOT NULL制約を除去できました。しかしながら、これはリストア不能な定義をもたらし、pg_upgradeが失敗しました。このような場合をpg_upgradeが事前検査で検出できるようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=07da2985d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b8b2e6052">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f63e408e8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0f4958685">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ea3386cc7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b0f0e2221">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1e007722f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bcb8d47cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f943e2339">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bd48455d8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=94dc2b37b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=708469281">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1084e76f3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=930e1faec">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=05b367bea">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=63c79a6fc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a00eb374c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=160131033">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=22d783350">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f9f6595e3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7406a7d82">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=06f444816">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a8b31b160">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ed2bb0cdd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=de7fd83cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18d2d8ae4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bef2c2a4e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=095e83d09">&#167;</a></small></p>
<li>pg_upgrade でターゲットデータベースクラスタの postgresql.conf の max_slot_wal_keep_size に設定があるときエラーが発生していたものが、修正されました。  (Dilip Kumar) (17.6)</li>
<p>
これまではデフォルトの -1 であることが必要でした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f36e57745">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=24f6c1bd4">&#167;</a></small></p>
<li>initdb実行時に（すなわち-cで指定して）、track_commit_timestampが有効であるときのアサート失敗が回避されました。  (Hayato Kuroda, Andy Fan) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=29a4b63c6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ae20c105f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7e7059abf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dcbbd4331">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b61ddcaf4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bca4476f">&#167;</a></small></p>
<li>pg_waldumpが「PREPARE TRANSACTION」のWALレコードで、不正な情報（削除された統計）を表示していたものが、修正されました。  (Daniil Davydov) (17.6)(16.10)(15.14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=11efaaffa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0d2063585">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0e0174b49">&#167;</a></small></p>
<li>contrib/dblink の接続確立のときに接続リークの可能性があり、回避されました。  (Tom Lane) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
新たな接続オブジェクトを作るときにout of memoryエラーを起こした場合に、オープンされたリモートサーバへの接続がローカルサーバへのセッションが終了するまでの間、リークして、リモートサーバ上でアイドルセッションが残りました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e20b3256a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8eef55db1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=09c9ae8f6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2cd2222ca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e7d3d4ed4">&#167;</a></small></p>
<li>contrib/pg_prewarmで巨大なshared_buffers設定に対処できるようになりました。  (Daria Shanina) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
これまではshared_buffersがおよそ5000万ページ（400GB）を超えるとき、自動プレウォームでメモリ割り当てエラーが発生して動作しませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4b8f925a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=169429264">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d59ff3be2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4b9707c4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4adbaa36c">&#167;</a></small></p>
<li>contrib/pg_prewarm において、アサート失敗が発生しないよう修正されました。  (Masahiro Ikeda) (17.6)</li>
<p>
ストレージを持たないビューなどのリレーションに対してpg_prewarm()を実行すると、アサート付きビルドでは失敗していました。非アサートビルド時では実害はありませんでしたが、このようなケースをエラーとして拒否するよう修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b64c585fd">&#167;</a></small></p>
<li>contrib/pg_stat_statementsで、正規化されたクエリの$1、$2などのパラメータ番号に欠番が生じないよう修正されました。  (Sami Imseih) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<pre>
(欠番が発生する例)
=# SELECT WHERE '1' IN ('2'::int, '3'::int::text);
=# SELECT query from pg_stat_statements WHERE query LIKE '%SELECT WHERE%';
                            query
--------------------------------------------------------------
 SELECT WHERE $1 IN ($3::int, $4::int::text)
(1 row)
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=290e8ab32">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7e8b44f4e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=130300a15">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8a1459f62">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3c03b8cd7">&#167;</a></small></p>
<li>contrib/postgres_fdwのメモリリークが修正されました。  (Tom Lane) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
DirectModifyメソッドの呼び出しの途中でクエリが失敗した場合に、リモート側の更新コマンドの結果を保持するPGresultがセッション終了まで解放されないメモリリークが発生していました。これはRETURNING句でデータを処理する際に起こる可能性がありました。
</p>
<p>
なお、DirectModifyメソッドとは外部テーブルにUPDATE等のDMLコマンドを実行できるようにする内部実装コードです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9339c85af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2b92dc4ee">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3c31594f5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4a07c0961">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=271cb7eaa">&#167;</a></small></p>
<li>configureの--with-includesおよび--with-librariesオプションで指定されたディレクトリが、システム標準ディレクトリよりも先に検索されるようになりました。  (Tom Lane) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
これらのオプションを利用する一般的な理由は、ユーザがビルドしたライブラリをシステムが提供するライブラリより優先して使えるようにするためです。しかし、makefileが発行するコマンドのオプション順序が不適切だったため、一部の環境ではこの目的のために使えませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8e5e3ff55">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a644f5fc6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bbc20c8a9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19857437b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2dee95bd0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c5bd803e5">&#167;</a></small></p>
<li>configureでの__cpuid()および__cpuidex()のチェックが修正されました。  (Lukas Fittl, Michael Paquier) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
これらのWindows固有の関数をconfigureが正しく検出できなかったために利用されず、ハードウェア命令の利用可否を確認できずにCRC計算が本来より遅くなる問題がありました。ただし、Windowsでの商用環境向けのビルドでは、通常はAutoconfツールチェーンを使用しないため、この不具合の影響は限定的です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cd2d52cc6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8de56323c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c1984be23">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6ffc43f9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60953d4cb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=612f5b806">&#167;</a></small></p>
<li>Solaris系プラットフォームで--with-pamオプションを指定した場合ビルドが失敗する問題が修正されました。  (Tom Lane) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
Solarisでは、PAM認証のAPIが他のUNIX系プラットフォームと異なっており、その結果inconsistent pointerというコンパイラ警告が出力されていました。これまでは警告であるため対応されていませんでしたが、GCC 14以降では警告ではなくデフォルトでエラー扱いとなるため、修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3d039b53a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=635a85627">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4d585455">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b252ce311">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=868b39a54">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1ccb3851d">&#167;</a></small></p>
<li>GNU Hurdへ移植できるようコードが修正されました。  (Michael Banck, Christoph Berg, Samuel Thibault) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
GNU Hurdでは、他のUnix系OSで一般的に定義されているIOV_MAXやO_RDONLYが存在しない点が考慮されていませんでした。IOV_MAXが未定義の場合には16とみなす旧来の処理を復活させるなど、GNU Hurd環境に対応する修正が行われました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=581305a46">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0991249d7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d25d392e8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=45c527662">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=29c54ea7b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3a2617e4f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0fb496c70">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71d71ac4d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0a695cf4">&#167;</a></small></p>
<li>memset_s()の使用をC11標準に厳密に準拠するよう修正されました。  (Tom Lane) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
これにより一部のプラットフォームでのコンパイル失敗が回避されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5355a2400">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=253cf661c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4b53cb493">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=00652b3c9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1e0e7076">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9bc2d37cc">&#167;</a></small></p>
<li>MSVCでMesonを利用してビルドする際に、互換性に関する警告が出力されていたものが修正されました。  (Peter Eisentraut) (17.6)(16.10)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2499c3490">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=629cc1623">&#167;</a></small></p>
<li>JSONBの比較を行う内部実装関数compareJsonbContainers()で、未初期化値に関するコンパイラ警告が出力されないよう修正されました。  (Tom Lane) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0b6dfce0c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5a2139a90">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5db55e13f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f32e45641">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8254b7e33">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6c93bf735">&#167;</a></small></p>
<li>libxml2 2.14以上を利用してビルドした際に、deprecatedである旨の警告が出力されていたものが、修正されました。  (Michael Paquier) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8d1071e7d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c911e7802">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d24a96ce2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=75c1eb60b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ac166b19a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e688cfc2b">&#167;</a></small></p>
<li>pg_locale.hをC++ でコンパイルする際の問題が修正されました。  (John Naylor) (17.6)(16.10)(15.14)(14.19)(13.22)</li>
<p>
PostgreSQLのヘッダファイルは、C++で書かれた拡張からインクルードできるように、通常は「extern "C" { ... }」 で囲む必要がありますが、pg_locale.hではlibicuのヘッダを使用しているためにこれが失敗していました。libicuヘッダ内のC++専用の宣言を利用しないようにすることで修正されました。
</p>
<p>
C++で書かれた拡張でlibicuのC++ API を利用したい場合は、pg_locale.hより前にlibicuのヘッダをインクルードする必要があります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dd2926207">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21ae8fc5f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aae9aad19">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=baacfb9e6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4f891b96">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9560c1ec1">&#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>
	</channel>
</rss>
