<?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 14.20 &#8211; SRA OSS Tech Blog</title>
	<atom:link href="https://www.sraoss.co.jp/tech-blog/tag/postgresql-14-20/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, 30 Oct 2026 08:40:46 +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 14.20 &#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 14.21 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/14-21/</link>
		
		<dc:creator><![CDATA[データベース技術グループ]]></dc:creator>
		<pubDate>Fri, 27 Feb 2026 05:01:30 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 14]]></category>
		<category><![CDATA[PostgreSQL 14.20]]></category>
		<category><![CDATA[PostgreSQL 14.21]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=20021</guid>

					<description><![CDATA[このリリースは 14.20 からの修正リリース（2026年 2月 12日リリース）です。 14.X からのアップデートではダンプ、リストアは不要です。 しかしながら、14.19 よりも前のバージョンからアップデートする場 ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 14.20 からの修正リリース（2026年 2月 12日リリース）です。<br />
14.X からのアップデートではダンプ、リストアは不要です。<br />
しかしながら、14.19 よりも前のバージョンからアップデートする場合には、<a href="/tech-blog/pgsql/14-19/" rel="noopener">14.19のリリース情報</a>も参照してください。</p>
<p><span id="more-20021"></span></p>
<h3>PostgreSQL 14.20 から 14.21 への変更点</h3>
<p>18.2, 17.8, 16.12, 15.16, 14.21 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<ol>
<li>予期せぬ次元のoidvectorやint2vectorを防止するようになりました。(CVE-2026-2003)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
これらのデータ型はNULLを含まない1次元配列を想定していますが、それを破るキャスト経路がありました。これによりクラッシュやサーバメモリ暴露を含む誤動作を引き起こす可能性がありました。
</p>
<pre>
（誤動作例：本来はエラーになるべき）
db1=# SELECT ARRAY[ARRAY[1,2,3],ARRAY[4,5,6]]::int2vector;
 array
-------
 1 0
(1 row)
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3b6588cd9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3d160401b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=595956fc7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=429aeaebd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b39d38139">&#167;</a></small></p>
<li>予期せぬデータ型を受け入れる演算子に付加される選択率推定が厳格化されました。(CVE-2026-2004)  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
contrib/intarray拡張に含まれる選択率推定関数は、入力が想定したデータ型であるか検査していなかったため、任意コード実行のために悪用される恐れがありました。サードパーティ拡張は類似の危険に備えて、intarrayと同様の技法で検査し防御を加えるべきです。
</p>
<p>
そのような拡張で対応が行なわれるまで時間がかかるため、今後は、演算子に非組み込みの選択率推定関数を付加するためにスーパーユーザ―権限が必要になりました。
</p>
<p>
そのため、新たなデータ型や演算子を導入する拡張を一般ユーザで導入（CREATE EXTENSION）する運用をしている場合に、これからはスーパーユーザで行う必要が生じるかもしれません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=66ddac698">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bbf5bcf58">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=91d7c0bfd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b764b26f2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ea3bf3498">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b69af3dda">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dd3ad2a4d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c0887b39d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=deb464a40">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7e82d9a04">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dbb09fd8e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d484bc260">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3ecc84cce">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9fa38c572">&#167;</a></small></p>
<li>contrib/pgcryptoのPGP復号化関数でバッファオーバーランが修正されました。(CVE-2026-2005)  (Michael Paquier) (18)(17)(16)(15)(14)</li>
<p>
作りこまれたメッセージを長すぎるセッションキーで復号化すると、バッファオーバーランが起きて、これによる任意コード実行も可能でした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=209f387b8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7a7d9693c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=527b730f4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9a9982ec6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=01de2e32d">&#167;</a></small></p>
<li>マルチバイト文字長の不十分な検証が修正されました。(CVE-2026-2006)  (Thomas Munro, Noah Misch) (18)(17)(16)(15)(14)</li>
<p>
いくつかのバグのため、攻撃者が作りこまれたSQLを発行して文字列のバッファオーバーランを起こすことができて、これによる任意コード実行も可能でした。
</p>
<p>
本修正後は、文字列関数がデータベース内に既に格納されている不正なテキストを処理するときに「ERROR:  invalid byte sequence for encoding」のエラーが発生するようになります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=df0852fe0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=838248b1b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=70ff9ede5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b2c81ac86">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2a53db21e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=efef05ba9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7a522039f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b0e3f5cf9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=50863be0b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6ed116046">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7b5fc85be">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=319e8a644">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d837fb029">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fd82ddb67">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cecedb912">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b0f5d25bc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=10ebc4bd6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c08960d9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=757bf8145">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e7591254c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b42709194">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dc072a09a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0c33d5608">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8f8b1ffac">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8373ed094">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4543b02af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=955433ebd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=763671b74">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6f741bcb6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5301b2b7d">&#167;</a></small></p>
<li>contrib/pg_trgmで文字列の小文字化の振る舞いについて厳格化されました。(CVE-2026-2007)  (Heikki Linnakangas) (18)</li>
<p>
PostgreSQL 18以降では、一部のロケールにおいて文字列の小文字化で（バイト数でなく）文字数が増えることがあります。それによる潜在的なバッファオーバーランの危険性があり、修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e0965fb1a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18548681d">&#167;</a></small></p>
<li>contrib/ltreeで大文字小文字を区別しないマッチの一貫性の欠如が修正されました。  (Jeff Davis) (18)</li>
<p>
ltreeのインデックス関係ルーチンはケースフォールドに元となる演算子とは異なる実装を使っていました。これらが一致した動作をするのは、デフォルト照合順序プロバイダがlibcのシングルバイト文字エンコーディングのときだけでした。
</p>
<p>
データベースのデフォルト照合順序のケースフォールドを使うように修正されました。データベースが照合順序プロバイダにlibcのシングルバイト文字エンコーディングを使っていないなら、本修正を含むバージョンアップ後に、インデックスアクセスメソッドが何であれ、ltree型の列を含むインデックスを再構築する必要があります。さもないと、誤った検索結果が生じるおそれがあります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=806555e30">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8993bf099">&#167;</a></small></p>
<li>「ALTER TABLE ... ADD CONSTRAINT」で名前を付けてNOT NULL制約を加えるときに、その列に別の名前のNOT NULL制約が既にあった場合にはエラーを出すようになりました。  (Alvaro Herrera, Srinath Reddy Sadipiralla) (18)</li>
<p>
これまでは、NOT NULL制約名は元のままで何も行われませんが、エラーも出ませんでした。同名のNOT NULL制約を加えようとした場合には、これまで通り、何も行われず、エラーも出ない動作をします。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=492a69e14">&#167;</a></small></p>
<li>副問合せでのCTE参照が集約関数のセマンティックレベルを決定することが禁止されました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
本修正で、外側の集約では入れ子のCTEを使用できないものとして「ERROR: outer-level aggregate cannot use a nested CTE」エラーを出すようになりました。これまでは予期せぬ「ERROR:  unexpected outer reference in CTE query」エラーが場合によっては出るという動作でした。
</p>
<p>
本修正は以前のマイナーリリースでの変更（<a href="https://www.sraoss.co.jp/tech-blog/pgsql/17-7/">17.7等の 56番</a>）を取り消すものです。標準SQLでは集約内の副問合せは完全に禁止されているため、このようなケースはエラーとして扱えば十分と判断されました。
</p>
<pre>
（問題が生じる問合せ形状の例：これからは以下のSELECT文はエラーになる）
CREATE TABLE t8 (c1 int);
INSERT INTO t8 VALUES (1), (2), (3);
SELECT c1, (WITH cte1(x,y) AS (SELECT 1,2) 
  SELECT count((SELECT t8.c1 FROM cte1))) AS ss FROM t8;
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12bc32917">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=075a763e2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1c8c3206f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9f5a58aac">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b85397481">&#167;</a></small></p>
<li>CTE問合せでのMERGEの変更内容取得について、トリガの遷移表が修正されました。  (Dean Rasheed) (18)(17)(16)(15)</li>
<p>
文単位のAFTERトリガを伴うテーブルに対し、MERGEと別のDML操作の両方を含みデータ変更を行うCTE問合せを実行すると、トリガに渡される遷移表には、MERGEで変更される行が含まれず、他のDML操作で変更される行だけが含まれました。
</p>
<pre>
（以下のWITH句付きMERGE文は2行のINSERTが生じるが、これまでは、
  t9テーブルのINSERT文のトリガに渡される遷移表には1行しか含まれなかった。)
CREATE TABLE t9 (a int);
WITH cte1 AS (INSERT INTO t9 VALUES (1))
  MERGE INTO t9 USING (VALUES (2)) AS v(a) ON t9.a = v.a
    WHEN NOT MATCHED THEN INSERT VALUES (v.a);
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c6ce4dcf9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c5fc17dda">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e7391bbf1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c5824536e">&#167;</a></small></p>
<li>エグゼキュータで、副問い合わせなどテーブル以外の処理対象エントリに属するrowmarkの誤った除外が修正されました。  (Dean Rasheed) (18)</li>
<p>
rowmarkは行ロックや可視性制御のための内部的に使われるメタデータです。
</p>
<p>
この誤りにより、問合せ対象テーブルの更新が並行している場合に、VALUESやCTE（WITH句）、サブクエリを伴う、MERGEやUPDATE、DELETEで、誤った問い合わせ結果が生じる可能性がありました。想定される行の更新について、EvalPlanQual再チェックを要する場合に該当します。
</p>
<p>
EvalPlanQual再チェックは主としてREAD COMMITTEDトランザクション分離レベルで実行される内部処理です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f335457e8">&#167;</a></small></p>
<li>UPDATEまたはDELETEの対象となるパーティションテーブルのすべての子テーブルが除外されている場合に発生するエラーが修正されました。  (Amit Langote) (18)(17)(16)(15)(14)</li>
<p>
このような場合、何もする必要がないにもかかわらず、エクゼキュータが「ERROR:  could not find junk ctid column」を報告する可能性がありました。
</p>
<p>
外部テーブルを子テーブルとしている場合に現象が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9f4b7bfc5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=933f67fb6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fab386f74">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=687533b39">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6d2fa44d2">&#167;</a></small></p>
<li>配列添字内の副問い合わせに対する式評価の誤りが修正されました。  (Andres Freund) (18)</li>
<p>
不具合により、誤った問い合わせ結果が返ったり、バックエンドプロセスのクラッシュが生じることがありました。
</p>
<pre>
（障害を起こす問合せ例 - いずれも 18.1 ではクラッシュする）
db1=#  SELECT (array[1,2])[(SELECT g.i)] FROM generate_series(1, 1) g(i);
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.

db1=# SELECT (array[1,2])[(SELECT g.i):(SELECT g.i + 1)] FROM generate_series(1, 1) g(i);
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bdc5dedfc">&#167;</a></small></p>
<li>非決定論的照合順序におけるテキストの部分文字列検索が修正されました。  (Laurenz Albe) (18)</li>
<p>
非決定論的照合順序を使用する場合、検索文字列の末尾で発生する一致を検出できませんでした。
</p>
<pre>
（誤動作例： 'testx'の末尾の'x'がマッチせず、'y'への置換に失敗する）
db1=# CREATE COLLATION test_nondeterministic (
        provider = icu, locale = 'und-u-ks-level2', deterministic = false);
db1=# SELECT replace(
        'testx' COLLATE "test_nondeterministic",
        'x'     COLLATE "test_nondeterministic", 'y') AS res1;
 res1
-------
 testx
(1 row)
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=18b349315">&#167;</a></small></p>
<li>クエリに重複したウィンドウ関数呼び出しが含まれる場合に発生する可能性のある、プランナエラーが回避されました。  (Meng Zhang, David Rowley) (18)(17)(16)</li>
<p>
このような呼び出しの重複排除に関する混乱により、「ERROR:  WindowFunc with winref 2 assigned to WindowAgg with winref 1」といったエラーを引き起こす可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ccde5be68">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cae812741">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4297a3519">&#167;</a></small></p>
<li>集合を返す関数とグルーピングセットに関するプランナのエラーが修正されました。  (Richard Guo) (18)</li>
<p>
ProjectSetプランノードを構築するとき、グループ化式を含む部分式が入力プランによって既に計算済みであることを検出できませんでした。これにより、非効率的なプランや、「ERROR:  variable not found in subplan target list」などのエラーが発生していました。
</p>
<pre>
（障害動作例）
db1=# CREATE TABLE t18 (id int, brands text[], markets text[]);
db1=# INSERT INTO t18 VALUES (1, '{Brand A,Brand B}', '{Market A}'),
                             (2, '{Brand B,Brand C}', '{Market B}'),
                             (3, '{Brand A}', '{Market A,Market B}');
db1=# SELECT brands, unnest(markets) AS market, count(DISTINCT id) FROM t18
        GROUP BY GROUPING SETS (brands, market, ())
        ORDER BY brands ASC, market ASC;
ERROR:  variable not found in subplan target list

（正しい結果）
        brands         |  market  | count
-----------------------+----------+-------
 {"Brand A"}           |          |     1
 {"Brand A","Brand B"} |          |     1
 {"Brand B","Brand C"} |          |     1
                       | Market A |     2
                       | Market B |     2
                       |          |     3
(6 rows)
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=382ce9cb7">&#167;</a></small></p>
<li>副問い合わせのGROUPING句にVOLATILE関数または集合を返す関数が含まれる場合の、誤った最適化が回避されました。  (Richard Guo) (18)</li>
<p>
プランナが、このようなグループ化された列を参照する外部クエリの制約をプッシュダウンしようとしたため、VOLATILE関数の多重評価による不正な動作や、副問い合わせのWHERE/HAVING句に集合を返す関数の導入することによるエラーが発生していました。
</p>
<pre>
（誤動作例）
db1=# CREATE TABLE t16 (id serial8, j json);
db1=# INSERT INTO t16 (j) VALUES ('[{"animal": "cats"}, {"animal": "dogs"}]');
db1=# SELECT animal FROM (
        SELECT json_array_elements(j) ->> 'animal' animal,
		  count(*) FROM t16 GROUP BY 1) x WHERE animal LIKE 'c%';
ERROR:  set-valued function called in context that cannot accept a set

（正しい結果）
 animal
--------
 cats
(1 row)
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7650eabb6">&#167;</a></small></p>
<li>式に関する統計情報を検索するときに、PlaceHolderVarノードを詳しく調べるようになりました。  (Richard Guo) (18)</li>
<p>
この変更により、プランナは副問い合わせからプルアップされた式やGROUP BYで使われる式について関連する統計情報を見つけられるようになり、デフォルト推定値で代用することを回避できます。
</p>
<p>
これまで、式の統計情報を見つけられず実行プランが劣化することがありえました。この制限は古くからあるものの、以前のバージョンで問題の報告が無いため、18.x系列以降のみが修正対象となりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7e9f852a7">&#167;</a></small></p>
<li>式をインデックスと照合する際に、no-op（何もしない）のPlaceHolderVarノードを調べるようになりました。  (Richard Guo) (18)</li>
<p>
PostgreSQL 18では、PlaceHolderVarが以前より多用されるため、従来インデックスを使用できた一部のクエリでインデックスを使用できなくなっていました。この退行を防ぐためにロジックが追加されました。
</p>
<p>
PlaceHolderVarはPostgreSQLのプランナの実装で使われている構造体変数です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b4cf74420">&#167;</a></small></p>
<li>プランナのOR句からScalarArrayOpインデックス条件への変換が修正されました。  (Tender Wang, Tom Lane) (18)</li>
<p>
コードがRelabelTypeノードを正しく処理せず、無効な式を生成したり、有効な変換を実行できなかったりすることがありました。潜在的に予期せぬエラーや誤った問い合わせ結果が生じる可能性があります。
</p>
<pre>
（問題が生じる問い合わせ例）
db1=# CREATE TYPE typ19 AS (r float8, i float8);
db1=# CREATE TABLE t19 (f1 typ19 PRIMARY KEY);
db1=# INSERT INTO t19 SELECT (x, x+1)::typ19 FROM generate_series(1,10000) x;
db1=# ANALYZE t19;
db1=# EXPLAIN SELECT * FROM t19 WHERE f1 = (1,2)::typ19 OR f1 = (3,4)::typ19;
                                QUERY PLAN
---------------------------------------------------------------------------
 Index Only Scan using t19_pkey on t19  (cost=0.29..12.61 rows=2 width=37)
   Index Cond: (f1 = ANY ('{"(1,2)","(3,4)"}'::typ19[]))
(2 rows)

　→ 修正前バージョンでは Bitmap Heap/Index Scan と BitmapOr のプランになり、
　　 上記のように効率的な配列へのインデックス検索に変換されない。
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf5b13a8a">&#167;</a></small></p>
<li>インデックスの述語がWHERE句が真であることを暗示する場合でも、部分ハッシュインデックスでのIndex Scanができるようになりました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
通常、プランナは述語によって暗黙的に示されるWHERE句を削除します。なぜなら、すべてのインデックスエントリに対して必ず成立するため、テストする意味がないからです。しかし、ハッシュインデックスのように先頭インデックスキーにWHERE句を必要とするインデックスの場合、この処理がIndex Scanプランの作成を妨げる可能性がありました。  このようなインデックスを検討するときにはWHERE句を削除しないようになりました。
</p>
<pre>
（問題が生じる問い合わせ例）
db1=# CREATE TABLE t20 AS SELECT generate_series(1, 1000)::int x;
db1=# CREATE INDEX idx20 ON t20 USING hash (x) WHERE x = 1;
db1=# ANALYZE t20;
db1=# EXPLAIN SELECT x FROM t20 WHERE x = 1;
                           QUERY PLAN
-----------------------------------------------------------------
 Index Scan using idx20 on t20  (cost=0.00..8.02 rows=1 width=4)
   Index Cond: (x = 1)
(2 rows)

　→ 修正前バージョンでは、これが Seq Scan の実行プランになってしまう
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a212877dc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e79b27662">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b497766a8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f19502f04">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e77323fc">&#167;</a></small></p>
<li>UNLOGGEDのBRINインデックスに対してWALを出力しないようになりました。  (Kirill Reshke) (18)(17)(16)(15)(14)</li>
<p>
めったに使用されないコードパスの1つで、インデックスがUNLOGGEDとマークされている場合でも、BRINインデックスに関連するWALレコードが誤って出力されていました。その結果、クラッシュリカバリで「FATAL:  could not create file "base/5/32819": File exists」といったエラーが発生して、WALレコードのリプレイに失敗していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d77a5f981">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4b6d096a0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a5277700e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=460d97020">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab4256869">&#167;</a></small></p>
<li>並列GINインデックス構築で正しい順序付け関数を使用するようになりました。  (Tomas Vondra) (18)</li>
<p>
並列コードでは、デフォルトの順序付け演算子（列のデータ型のbtree演算子クラスによって決定される）が使用されていましたが、gin演算子クラスで指定された順序付け関数を（それがあるなら）使用する必要がありました。これにより、データ型にbtree演算子クラスが存在しない場合はエラーになり、演算子クラスが適合しない順序付け関数を指定している場合には無効なインデックスが生成される問題が発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eee71a66c">&#167;</a></small></p>
<li>未読のNOTIFYメッセージによってまだ必要とされるCLOGの切り捨てが防止されました。  (Joel Jacobson, Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
これまで、バックエンドによるNOTIFYメッセージの吸い上げが遅いときに「ERROR:  could not access status of transaction」エラーが発生することがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=321ec5462">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d02c03ddc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=053e1868b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1a469d7b5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=eba917d36">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7b069a187">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c2682810a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=44e8c60be">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0c862646c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c2e58c071">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=82fa6b78d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d80d5f099">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0e8eaa218">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21a9014cf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=84f1bf4af">&#167;</a></small></p>
<li>NOTIFYメッセージ処理中のエラー発生を、FATALにエスカレートする、すなわち、コネクション切断するようになりました。  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
以前は、バックエンドがNOTIFYメッセージの受信中にエラーを検出すると、そのメッセージを読み飛ばし、クライアントにエラーを報告して処理を続行していました。
</p>
<p>
しかし、この動作には多くの問題がありました。大きな懸念点の一つは、クライアントが通知の喪失を知る適切な手段がなく、ましてやその内容を知る手段がないことです。アプリケーションロジックによっては、通知が失われるとアプリケーションが待機状態になってしまう可能性がありました。また、残りのメッセージは誰かが新しいNOTIFYを送信するまで処理されません。さらに、NOTIFY信号受信時に接続がアイドル状態の場合、無関係な理由によりERRORは常にFATALにエスカレートされていました。
</p>
<p>
一貫性を保ち、アプリケーションに通知が失われた可能性があることを明確に伝えるため、本修正が選択されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aab4a84bb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b821c9292">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c1a5bde00">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b1da37de2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7cb05dd2d">&#167;</a></small></p>
<li>クエリIDのハッシュを計算する際に、グループ化式を考慮するようになりました。  (Jian He) (18)</li>
<p>
以前は、GROUP BYの式を除いて同一の2つのクエリが、contrib/pg_stat_statementsやその他のクエリIDを利用ツールにおいて、誤って統合されていました。
</p>
<pre>
（pg_stat_statementsの問題となる動作例）
db1=# CREATE TABLE t25 (id int, g1 int, g2 int)
db1=# SELECT count(*), max(g1) g1, max(g2) g2 FROM t25 GROUP BY g1;
db1=# SELECT count(*), max(g1) g1, max(g2) g2 FROM t25 GROUP BY g2;
db1=# SELECT queryid, query, calls FROM pg_stat_statements WHERE query ~ 't25 GROUP BY';
       queryid       |                            query                             | calls
---------------------+--------------------------------------------------------------+-------
 2402898342116734224 | SELECT count(*), max(g1) g1, max(g2) g2 FROM t25 GROUP BY g1 |     2
(1 row)
　→ 修正後は異なるステートメントと解釈されて2行が出力される
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9c3caad02">&#167;</a></small></p>
<li>同時の更新と共に「EXPLAIN ANALYZE MERGE ...」を行なった際に、更新回数が誤ってカウントされる問題が修正されました。  (Dean Rasheed) (18)(17)</li>
<p>
EXPLAINの出力でスキップされた(skipped)タプルの数が誤っていたり、アサートが有効なビルドではアサート失敗が発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5749d95d4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6c415c4b">&#167;</a></small></p>
<li>タプルをロックするときの後続のupdate chainにおける不具合が修正されました。  (Jasper Smit) (18)(17)(16)(15)(14)</li>
<p>
このコードパスでは、update chain内の最初の新しいタプルのxmin値の確認が省略されていたため、元の更新処理が中止され、その領域がVACUUMによってすぐに回収されて再利用された場合、無関係なタプルがロックされることがありました。これにより、予期せぬトランザクションの遅延やデッドロックが生じる可能性がありました。
</p>
<p>
本障害による以下の予期せぬエラーも確認されています。
</p>
<pre>
ERROR:  t_xmin ... is uncommitted in tuple ... to be updated in table ...
</pre>
<p>
update chainは、インデックス更新をしないHOT UPDATE処理を実現するためのデータ構造です。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3e3a80f62">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb87d7fef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7efef18ff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5d5487cd2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b6201c76e">&#167;</a></small></p>
<li>大規模テーブルの増分バックアップにおける誤った処理が修正されました。  (Robert Haas, Oleg Tkachenko) (18)(17)</li>
<p>
ベースバックアップと増分バックアップの間に、セグメントサイズ（通常1GB）を超えるテーブルがVACUUMで切り詰められた場合、pg_combinebackupが「file ... has truncation block length ... in excess of segment size」というエラーで失敗する可能性がありました。これにより増分バックアップのリストアが妨げられていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c80b0c9d6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ad569b54a">&#167;</a></small></p>
<li>動的共有メモリにロックを取得していたバックエンドプロセスが、FATAL発生時にクラッシュする可能性があり、修正されました。  (Rahila Syed) (18)(17)(16)(15)(14)</li>
<p>
トランザクションコンテキスト外でFATALエラーが発生した際に、動的共有メモリセグメントがデタッチされ既にマップされていない領域に対してロックの解除処理が実行されて、バックエンドプロセスのクラッシュが発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1943ceb38">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4071fe900">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=980b7c736">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b926ff137">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f6df78173">&#167;</a></small></p>
<li>非同期I/Oコードの競合状態が修正されました。  (Andres Freund) (18)</li>
<p>
非同期I/O操作の結果コードが取得される前に上書きされる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7f1b3a4ce">&#167;</a></small></p>
<li>クラッシュ後にマルチトランザクションの有効なSLRUセグメントが誤って切り詰めされる可能性があり、防止されました。  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
該当コードはVACUUM処理の中で実行されます。問題が生じうるケースでは切り詰め処理をスキップするように変更されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=09532a78b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d3ad4cef6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7946e6f3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a563ac619">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=46be454ca">&#167;</a></small></p>
<li>pg_stat_get_backend_activity() の結果が誤ってエンコーディングされる問題が修正されました。  (Chao Li) (18)(17)(16)(15)(14)</li>
<p>
セッションのアクティビティ文字列を保持する共有メモリバッファは、不完全なマルチバイト文字で終わることがあります。そのような不完全な文字は読み取り時に切り詰めることになっていますが、この関数ではその処理が行われていませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=06907e864">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=52b27f585">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c48829ed8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=300575fe2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ea3524cff">&#167;</a></small></p>
<li>メモリコンテクストのログ出力の再帰的な実行が防止されました。  (Fujii Masao) (18)(17)(16)(15)(14)</li>
<p>
メモリコンテクストのログ出力を要求するシグナルが継続的に送られた場合に、ログ出力コードが再帰的に実行されてしまうことがあり、これにより理論上はスタックオーバーフローが発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b863d8d87">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=699293d27">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3853f6168">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0fc2f533a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1a9a49699">&#167;</a></small></p>
<li>並列実行コンテクストを再初期化する際のメモリコンテクストの使用方法が修正されました。  (Jakub Wartak, Jeevan Chalke) (18)(17)(16)(15)(14)</li>
<p>
補助的なデータ構造の寿命が並列コンテキストよりも短いために、クラッシュが発生することがありました。この問題は、PostgreSQLコアのみを使用している場合には到達可能であることは確認されていませんが、拡張機能において問題が発生したことが報告がされています。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57df5ab80">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d0fc2499">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=12c2f843c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bd2726d3e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d9f7fbba">&#167;</a></small></p>
<li>新しいmultixid（マルチトランザクションID）を生成する際に、次のmultixidのオフセットを設定するように変更し、コーナーケースで必要だった待機ループが削除されました。  (Andrey Borodin) (18)(17)(16)(15)(14)</li>
<p>
以前のロジックでは、発生しない更新を待ち続けて動作が止まってしまうことがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e46041fd9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8ba61bc06">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=635166913">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8cfb174a6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=81416e101">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=02ba5e3be">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cad40cec2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d689a176">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b9a02b978">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=489695554">&#167;</a></small></p>
<li>データ変更を伴うCTEの複数回書き換えが回避されました。  (Bernice Southey, Dean Rasheed) (18)(17)(16)(15)(14)</li>
<p>
以前は、自動更新可能ビューやルール付きのリレーションを更新するときに、元の問合せにデータ変更を伴うCTEが含まれていると、リライタが再帰的にそのCTEを複数回書き換えしていました。この動作は非効率であるうえ、CTE内にALWAYS指定の生成列の更新が含まれている場合には、偽性のエラーを引き起こす可能性がありました。
</p>
<pre>
（障害動作例 - エラーにならない動作が正しい）
db1=# CREATE TABLE t36 (i int GENERATED ALWAYS AS IDENTITY);
db1=# CREATE TABLE t36b (j int);
db1=# CREATE VIEW v36 AS SELECT * FROM t36b;
db1=# WITH cte AS (INSERT INTO t36 DEFAULT VALUES RETURNING i) 
        DELETE FROM v36 USING cte WHERE j = i;
ERROR:  cannot insert a non-DEFAULT value into column "i"
DETAIL:  Column "i" is an identity column defined as GENERATED ALWAYS.
HINT:  Use OVERRIDING SYSTEM VALUE to override.
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b880d9a02">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c09096503">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4d288e33b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=134a8ee22">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2d5b97b8c">&#167;</a></small></p>
<li>DSM（動的共有メモリ）レジストリのエントリの初期化を再試行できるように修正されました。  (Nathan Bossart) (18)(17)</li>
<p>
動的共有メモリ（DSM）のエントリの初期化途中で失敗したとしても、次にそのエントリの使用を試みる際に初期化を再度試行できるようになりました。これまで一度初期化が失敗したエントリは、失敗した状態のままで残り続けていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b83bcc0df">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2fc5c5062">&#167;</a></small></p>
<li>ページがスワップアウトされている場合でも、NUMAステータスビューの取得が失敗しないように修正されました。  (Tomas Vondra) (18)</li>
<p>
pg_shmem_allocations_numaビューの参照時でそのような場合に、これまでは「ERROR:  invalid NUMA node id ...」エラーを出していましたが、取得できない値にNULLを返すようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9796c4f56">&#167;</a></small></p>
<li>古いバージョンのlibnumaを使用してNUMAページ状態を問い合わせた際に、権限不足エラーが発生しないように修正されました。  (Tomas Vondra) (18)</li>
<p>
2.0.19より前のlibnumaで以下のようなエラー発生が報告されました。
</p>
<pre>
db1=# SELECT * FROM pg_shmem_allocations_numa;
ERROR:  failed NUMA pages inquiry status: Operation not permitted
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=482e98ac4">&#167;</a></small></p>
<li>チェックポイントレコードが示すREDOポイントまで遡るWALが存在しない場合、リカバリを失敗させるように修正されました。  (Nitin Jadhav) (18)(17)(16)(15)(14)</li>
<p>
リカバリ開始前に、チェックポイントレコードが示すREDOポイントまで遡るWALが存在するかどうかを明示的に検査して、存在しなければ以下のようなPANICを出すようになりました。
</p>
<pre>
PANIC:  could not find redo location ... referenced by checkpoint record at ...
</pre>
<p>
以前は、この状況でリカバリを行うプロセスがクラッシュしたり、データ破損を引き起こしたりする能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=68ebdf2b0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f5927da4f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1aa57e9ed">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=95ef6f490">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=14161bca4">&#167;</a></small></p>
<li>ALTER PUBLICATION文を処理するときに元のクエリツリーが書き換えられてしまう問題が修正されました。  (Sunil S) (18)(17)(16)(15)(14)</li>
<p>
この誤りによる実害としては、ALTER PUBLICATIONに対して駆動されたイベントトリガが複数指定されたpublishオプションの最初の1つしか認識できませんでした。また、ALTER PUBLICATIONがプリペアドステートメントとして用意されていた場合、その再実行時に同様にオプション指定が失われました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bea57a6b4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb08ac7ac">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0687a6eb0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f20b79059">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ae45c7296">&#167;</a></small></p>
<li>「CREATE SUBSCRIPTION ... CONNECTION」で指定された接続オプションを、パブリッシャ側の walsender に渡すように修正されました。  (Fujii Masao) (18)(17)(16)(15)</li>
<p>
この修正以前は、接続オプションのうち「options」が無視されていました。そのため、たとえば walsender セッション内でカスタムのサーバーパラメータを設定することができませんでした。これは PostgreSQL 15 でのリファクタリングによって壊れる前までは実際に動作していた挙動であり、今回の修正で以前の挙動が復元されます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=797fc5d1b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7a990e801">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=75f3428f2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f7eb44e0f">&#167;</a></small></p>
<li>新たに作成または同期されたレプリケーションスロットが無効化される不具合があり、修正されました。  (Zhijie Hou) (18)(17)(16)(15)(14)</li>
<p>
同時実行中のチェックポイント処理との競合状態にあるときに、レプリケーションスロットが必要としているWALが削除されてしまう可能性があり、その結果、そのスロットが即座に無効化されてしまう問題がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=919c9fa13">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3243c0177">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1c60f7236">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9649f1adf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d3ceb2084">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3510ebeb0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=24cce33c3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aae05622a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7406df605">&#167;</a></small></p>
<li>レプリケーションスロットのデータベースに保持させる必要のある最も古いXID（xmin）を計算するときの競合状態が修正されました。  (Zhijie Hou) (18)(17)(16)(15)(14)</li>
<p>
この不具合により、論理レプリケーションスロット作成時に「ERROR:  cannot build an initial slot snapshot as oldest safe xid follows snapshot's xmin」エラーが発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fd7c86cfa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=123b851ab">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=821466722">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fa557d300">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57048d6e1">&#167;</a></small></p>
<li>論理レプリケーションのサブスクリプションの初期同期において、データコピーを開始する前にpg_replication_originエントリの追加をコミットするように修正されました。  (Zhijie Hou) (18)(17)(16)(15)(14)</li>
<p>
これまでは、コピー処理が失敗した場合、新しく追加された pg_replication_originエントリがトランザクションのロールバックによって失われていました。その結果、共有メモリ内の状態が不整合になっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b07c32619">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e063ccc72">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e22e9ab0c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=90d1beef6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=25a04aa52">&#167;</a></small></p>
<li>パラレルワーカによるアプライ処理が失敗した後に、論理レプリケーションの進捗を進めないように修正されました。  (Zhijie Hou) (18)(17)(16)</li>
<p>
これまでは、パラレルワーカのアプライ処理が失敗すると、サブスクライバ側でトランザクションが失われることがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2f7ffe124">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ed8f1afb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=63a65adf4">&#167;</a></small></p>
<li>論理レプリケーションのスロット同期（slotsync）ワーカプロセスが、LOCK_TIMEOUTを知らせるシグナルを正しく処理するように修正されました。  (Zhijie Hou) (18)(17)</li>
<p>
これまではタイムアウトのシグナルが事実上無視されていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6c61c69d5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f2818868a">&#167;</a></small></p>
<li>ストリーミングレプリケーションのスタンバイサーバの再起動時に「ERROR:  unexpected data beyond EOF in block ... of relation ...」エラーが発生することがあり、修正されました。  (Anthonin Bonnefoy) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9ed411e08">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c3770181c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a2eeb04f3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ef8465588">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2514f1c77">&#167;</a></small></p>
<li>SQL/JSON pathの型不一致に関するエラーメッセージが正しい内容を示すように修正されました。  (Jian He) (18)(17)</li>
<p>
これまでは、型が正しくない場合に本来出すべきエラーの代わりに、「ERROR:  cache lookup failed for type 0」という誤ったエラーが発生していました。
</p>
<pre>
（修正前に誤ったエラーが出るケースの正常動作例）
db1=# CREATE TABLE t49 (path) AS SELECT '$'::text;
db1=# SELECT json_value('"aaa"', t49 RETURNING json) FROM t49;
ERROR:  JSON path expression must be of type jsonpath, not of type t49
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=15ba0702c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b5511fed5">&#167;</a></small></p>
<li>パーティション範囲の境界を解析する際に、列の位置の追跡を誤る問題が修正されました。  (myzhen) (18)(17)(16)(15)(14)</li>
<p>
これまでは、例えばパーティション境界の値を列のデータ型にキャストする際のエラーで、誤った列名が表示されることがありました。
</p>
<pre>
（誤動作例: b列の型不一致なのにエラーでa列を出している)
db1=# CREATE TABLE t50 (a int, b int, c int) PARTITION BY RANGE (a, b);
db1=# CREATE TABLE t50_p1 PARTITION OF t50
        FOR VALUES FROM (minvalue, now()) TO (100, 100);
ERROR:  specified value cannot be cast to type integer for column "a"
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c35e5dd9a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=84b787ae6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=821c4d27b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3ad05640b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a65995947">&#167;</a></small></p>
<li>エラーメッセージ内の軽微な誤りがいくつか修正されました。  (Man Zeng, Tianchen Zhang) (18)(17)(16)(15)(14)</li>
<p>
例えば、バックアップマニフェスト内のタイムライン番号が不一致でエラーが発生した場合、本来、終了タイムライン番号を表示すべきところで、開始タイムライン番号を表示する誤りがあり、修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=acfa422c3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=67ad4387b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=977a17a3e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4ec943f7d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d32e17160">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2ca4464b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=263af458e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ab61f0087">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5995135f1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=69ee81932">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=05ef2371a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e8fd6c9fd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fbf8df580">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f1dc7a5b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cff2ef984">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5449fd261">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7bdbbada">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9dcd0b3de">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3e7bb39df">&#167;</a></small></p>
<li>LLVMバージョン17以降で、JITコンパイル時に関数をインライン化できない問題が修正されました。  (Anthonin Bonnefoy) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f1c6b153c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0bb0e5b3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7600dc79c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cbdd09ae1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=de8081c30">&#167;</a></small></p>
<li>LLVMバージョン21で動作するようにJITコードが修正されました。  (Holger Hoffstatte) (18)(17)(16)(15)(14)</li>
<p>
これまではaarch64マシンでコンパイルに失敗しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=912cfa314">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=60215eae7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=600acd34b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=55164852d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=035a1f5ac">&#167;</a></small></p>
<li>古い（RHEL7時代の）システムヘッダーファイルでビルドできるよう、aarch64固有のコードが修正されました。  (Tom Lane) (18)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=db4eba152">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6a5170755">&#167;</a></small></p>
<li>autotoolsによるconfigureスクリプトでio_uring_queue_init_mem()が使えるか否かの判定が修正されました。  (Masahiko Sawada) (18)</li>
<p>
これまでは、この判定が間違っていたため、非同期I/Oバッファの最適化に失敗していました。その結果、バックエンドプロセスの終了が必要以上に遅くなっていました。
</p>
<p>
mesonビルドの場合には問題は発生しません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=640772c6d">&#167;</a></small></p>
<li>新たな設定パラメータfile_extend_methodが追加されました。これはposix_fallocate()の使用を制御します。  (Thomas Munro) (18)(17)(16)</li>
<p>
PostgreSQL16以降ではプラットフォームで提供されているなら、posix_fallocate()を使用してリレーションファイルを拡張します。しかし、posix_fallocate()が使えたとしても、一部のファイルシステムでは不具合がありました。
</p>
<p>
BTRFSの圧縮が無効化されたり、古いLinuxカーネルバージョンのXFSで偽性のENOSPC（空き領域なし）が生じることがありました。
</p>
<p>
その回避策として、file_extend_methodパラメータを「write_zeros」に設定することで、旧方式（ゼロのブロックを書き込む）でのファイル拡張ができるようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=33e3de6d7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4dac22aa1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e37b59802">&#167;</a></small></p>
<li>Windowsでもopen()の「O_CLOEXEC」フラグを参照するように修正されました。  (Bryan Green, Thomas Munro) (18)(17)(16)</li>
<p>
Windowsで「COPY TO/FROM PROGRAM」などで子プロセスを起動する際、子プロセスにファイルハンドルがリークしていました。大きな被害はありませんが望ましくありませんでした。修正によりPOSIXと同様の動作になりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bebb281b0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f24af0e04">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d62a258cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7d06e74d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=045185913">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0666ccc16">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4da5c33a3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3c8119e2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=80e8ec772">&#167;</a></small></p>
<li>Solaris上でmesonを使ってビルドしたpostgresコマンドがロングオプション（--XXX形式）の解析に失敗しており、修正されました。  (Tom Lane) (18)(17)(16)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5eac1d68f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=59c2f7efa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7369656fa">&#167;</a></small></p>
<li>GNU/Hurdでもプロセスタイトルの変更が可能になりました。  (Michael Banck) (18)(17)(16)(15)(14)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bcfca332f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d66a922f9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a1407dade">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3995e4a9d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=29a3e22f3">&#167;</a></small></p>
<li>psqlでVACUUMのオプションをタブ補完する際の不具合が修正されました。  (Yugo Nagata) (18)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e1376900">&#167;</a></small></p>
<li>psqlのプロンプトエスケープ「%P」の表示が修正されました。  (Chao Li) (18)</li>
<p>
サーバーに未接続の場合、%P（パイプラインステータス）が他のプロンプトエスケープと同様に何も表示されないように修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d42735b1e">&#167;</a></small></p>
<li>pg_dumpのシーケンスを収集するロジックが修正されました。  (Nathan Bossart) (18)</li>
<p>
これまでは、pg_dumpの実行と同時にシーケンスが削除された場合、それがダンプ対象ではない場合でも、エラーとなっていましたが、エラーにならないように修正されました。
</p>
<p>
また、pg_dumpの実行でシーケンスの読み取り権限がない場合、誤った値をバックアップに出力していましたが、正しくエラーになるように修正されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39d555576">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=56e1f5010">&#167;</a></small></p>
<li>pg_dumpでoauth_validator_libraries設定値を引用符で正しくクォートするように修正されました。  (ChangAo Chen) (18)</li>
<p>
この設定の値をダンプする必要がある場合、pg_dumpは間違った引用符ルールを適用していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=61c78e1f4">&#167;</a></small></p>
<li>pg_dumpの--binary-upgradeオプションでアサート失敗が起きる問題が修正されました。  (Vignesh C) (18)(17)</li>
<p>
サブスクリプション関連のオブジェクトの処理でアサート失敗が起きていました。アサートを無効にした実運用むけビルドでは障害の悪影響は特にありません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=573e679a2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1cdc07ad5">&#167;</a></small></p>
<li>pgbenchのパイプラインモードで複数の\syncpipelineを使用した場合に発生する誤ったエラー処理が修正されました。  (Yugo Nagata) (18)(17)</li>
<p>
パイプラインモードで問合せのエラーが発生した後に複数の\syncpipelineコマンドが実行された場合、これまでは「ERROR:  failed to exit pipeline mode」と誤ったエラーメッセージを表示するか、アサートを有効ビルドではアサート失敗となっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=00e64e35c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5bc251b28">&#167;</a></small></p>
<li>pg_resetwalでOldestXIDを変更したときに、変更後の値を表示するように修正されました。  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
他の変更できる変数では、変更後の値を表示するようになっています。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19594271c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f2e0ca0af">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=890cc81b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7c494072b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=11cc0f452">&#167;</a></small></p>
<li>pg_upgradeで、次のマルチトランザクションIDに0を設定することと、次のマルチトランザクションオフセットにUINT32_MAXの値を設定することが、可能になりました。  (Maxim Orlov) (18)(17)(16)(15)</li>
<p>
これらが有効な値であるのに設定ができないために、マルチトランザクションIDが周回するタイミングでpg_upgradeが失敗する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8747b969f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cb2ef0e92">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e039b09f8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=97cd4b65a">&#167;</a></small></p>
<li>contrib/amcheckでBTreeインデックスの親ページ検査で正しいスナップショットを使うように修正されました。  (Mihail Nikalayeu) (18)(17)(16)(15)(14)</li>
<p>
このために「CREATE INDEX CONCURRENTLY」で作成されたインデックスに対して、誤ってエラーを報告していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=df93f94dd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ce2f575b7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3c83a2a0a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e1a327dc4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=098a1fab8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dcddd6987">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=607a67c5e">&#167;</a></small></p>
<li>contrib/amcheckでBTreeインデックスの「half-dead」ページを正しく処理するように修正されました。  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
これまでは、half-deadページに親のダウンリンクが存在しない状態を「ERROR:  mismatch between parent key and child high key ...」と誤ってエラー報告していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=19e786727">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e8ae59445">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=182901626">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7792bdc45">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fbb4b6078">&#167;</a></small></p>
<li>contrib/amcheckでBTreeインデックスのルートページ分割が未完了の状態を正しく処理するように修正されました。  (Heikki Linnakangas) (18)(17)(16)(15)(14)</li>
<p>
これまでは「ERROR:  block ... is not true root」エラーを誤って報告していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=50c63ebb0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5a2d1df00">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f2a6df9fd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=721b58fbe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4cb21ea9">&#167;</a></small></p>
<li>contrib/pg_buffercacheで、メモリを必要以上に使ってしまう問題が修正されました。  (David Geier) (18)</li>
<p>
これまでは、NUMAページの状態を保存する配列の要素サイズを、本来はintで十分なところをuint64として扱っていたため、必要な量の2倍のメモリを確保していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=580b5c2f3">&#167;</a></small></p>
<li>contrib/intarrayの「@@」演算子用の選択度推定において、特定の条件下で整数オーバーフローが発生する問題が修正されました。  (Chao Li) (18)(17)(16)(15)(14)</li>
<p>
プランナ統計情報に整数最大値（INT_MAX）が含まれる場合にオーバーフローが発生して、不正確な選択度推定による劣ったプランが作成される可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=07c1c6ec5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a5f2dc421">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=54f82c4aa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c89510431">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=67a6fd507">&#167;</a></small></p>
<li>conrib/ltreeにおけるマルチバイトエンコーディング処理の問題が修正されました。  (Jeff Davis) (18)(17)(16)(15)(14)</li>
<p>
従来の実装では、不完全なマルチバイト文字が内部実装上のlower()関数に引数として渡されるケースがあり、その結果、文字エンコーディングに関する予期せぬエラーや、誤った問い合わせ結果がもたらされる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f79e239e0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b8cfe9dc2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b80227c0a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=335b2f30b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=898991966">&#167;</a></small></p>
<li>contrib/pg_stat_statementsを使用しているときに、IN句内に定数と非定数式が混在している場合に、そのSQLを実行するバックエンドプロセスのクラッシュやアサート失敗が発生しており、修正されました。  (Sami Imseih) (18)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3304e97b1">&#167;</a></small></p>
<li>タイムゾーンデータファイルがtzdata release 2025cへ更新されました。  (Tom Lane) (18)(17)(16)(15)(14)</li>
<p>
今回の変更は1976年以前のバハ・カリフォルニアの歴史的データのみです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6574bee64">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f87c0b84e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d852d105e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=00410b76d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8bbf28191">&#167;</a></small></p>
<li>インプレイスによるカタログ更新に関する問題が修正されました。  (Noah Misch) (17)(16)(15)(14)</li>
<p>
インプレイス（データを直接書き換える形）での更新はトランザクションのロールバックでも保持されるため、非トランザクション型の無効化メッセージを送信するようになりました。また、他のセッションが更新内容を参照できるようになる前に、更新内容をWALに記録することを保証されるようになりました。これらの修正により、リレーションのfrozen-XID属性が不整合になるシナリオを防止されます。frozen-XID属性の不整合が発生すると、CLOG（コミットログ）の早期切り捨てや、その後の「could not access status of transaction」エラーの原因となる可能性があります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0f69bedde">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d7b02711">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=05d605b6c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=811422471">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d3e5d8950">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=720e9304f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=20a48c156">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4b1986b9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bcb784e7d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=27e4fad98">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=86091202a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0dfbd191a">&#167;</a></small></p>
</ol>

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

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PostgreSQL 14.20 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/14-20/</link>
		
		<dc:creator><![CDATA[データベース技術グループ]]></dc:creator>
		<pubDate>Mon, 15 Dec 2025 03:01:22 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 14]]></category>
		<category><![CDATA[PostgreSQL 14.19]]></category>
		<category><![CDATA[PostgreSQL 14.20]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=19090</guid>

					<description><![CDATA[このリリースは 14.20 からの修正リリース（2025年 11月 13日リリース）です。 14.X からのアップデートではダンプ、リストアは不要です。 また、14.19 よりも前のバージョンからアップデートする場合には ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 14.20 からの修正リリース（2025年 11月 13日リリース）です。<br />
14.X からのアップデートではダンプ、リストアは不要です。</p>
<p>また、14.19 よりも前のバージョンからアップデートする場合には、<a href="/tech-blog/pgsql/14-19/" rel="noopener">14.19のリリース情報</a>も参照してください。</p>
<p><span id="more-19090"></span></p>
<h3>PostgreSQL 14.19 から 14.20 への変更点</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>
	</channel>
</rss>
