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

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

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

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

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

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PostgreSQL 13.21 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/13-21/</link>
		
		<dc:creator><![CDATA[データベース技術グループ]]></dc:creator>
		<pubDate>Fri, 23 May 2025 00:00:44 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 13]]></category>
		<category><![CDATA[PostgreSQL 13.20]]></category>
		<category><![CDATA[PostgreSQL 13.21]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=17701</guid>

					<description><![CDATA[このリリースは 13.20 からの修正リリース（2025年 5月 8日リリース）です。 13.X からのアップデートではダンプ、リストアは不要です。 ただし、パーティションテーブルに自己参照の外部キー制約がある場合には、 ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 13.20 からの修正リリース（2025年 5月 8日リリース）です。<br />
13.X からのアップデートではダンプ、リストアは不要です。</p>
<p>ただし、パーティションテーブルに自己参照の外部キー制約がある場合には、これらの制約を再作成する必要があります。下記の2番の項目を参照してください。</p>
<p>また、13.17 よりも前のバージョンからアップデートする場合には、<a href="/tech-blog/pgsql/13-17/" rel="noopener">13.17のリリース情報</a>も参照してください。</p>
<p><span id="more-17701"></span></p>
<h3>PostgreSQL 13.20 から 13.21 への変更点</h3>
<p>17.5, 16.9, 15.13, 14.18, 13.21 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン番号を項目末尾に括弧書きで記載しています。</p>
<ol>
<li>不正にエンコードされた文字列の検査で、1バイトのバッファ超過読み取りが防止されました。  (Noah Misch, Andres Freund) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
文字エンコーディングGB18030であるものとして文字列を検査するときに発生します。可能性は低いですが、メモリの末尾で非互換のマルチバイト文字が現れた場合に、SIGSEGVのクラッシュが発生するおそれがあります。サーバとlibpqを用いたクライアントアプリケーションの両方で該当します。(CVE-2025-4207)
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ec5f89e8a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d1264948f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=44ba3f55f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3f2ab7393">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cbadeaca9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=617d34908">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f3bb0b2c4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=45fe7e08f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=258cde839">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7279e5820">&#167;</a></small></p>
<li>パーティションテーブルで自己参照の外部キーを正しく扱えるようになりました。  (Álvaro Herrera) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
制約に参照されたテーブルが同じパーティションテーブルであるとき、子パーティションを作成または付加するときに外部キー制約に対するカタログエントリの作成に失敗していました。この結果、制約が完全には強制されませんでした。これは12.13、13.9、14.6時点の修正で混入したバグです。
</p>
<p>
パーティションテーブル上に自己参照外部キー制約を作成した後に、子パーティションの作成や付加を行っていた場合、不適切なカタログ内容を修正するために、このような外部キー制約を削除して作成し直すべきです。制約に違反している行が既にあるかもしれず、そのような場合、制約の再作成はエラーになり、データ修正の対応が必要となることに、注意してください。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f51ae3187">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1817d62ec">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6ba979cf5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1649d153a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b3a9c536d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cb0ad70b8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ebcc799a7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e064b770c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6be02bbc8">&#167;</a></small></p>
<li>BRIN のサポートプロシージャ brin_bloom_union() で圧縮されたBRIN のサマリをマージするときにデータ損失を回避するように修正されました。  (Tomas Vondra) (17.5)(16.9)(15.13)(14.18)</li>
<p>
当該コードでは圧縮したものの展開結果が入力と同一でないことを考慮しておらず、インデックス検索をしたときに行数が少なく返り、誤った問い合わせ結果が生じる可能性がありました。
</p>
<p>
この誤りはBRIN bloomインデックスが導入されたv14時点から存在しましたが、当該のコードパスは使われることが稀でした。v17でパラレルインデックス作成が導入されて、問題が顕在化しやすくなりました。
</p>
<li>FROMのビューや関数に対する行全体のテーブル参照を使うUPDATE、DELETE、MERGEの問い合わせで、予期せぬエラー「ERROR:  attribute ... has wrong type」が生じることがあり、修正されました。  (Tom Lane) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<pre>
（エラー発生例）
db1=# CREATE TABLE t4 (f1 int, f2 int);
db1=# INSERT INTO t4 VALUES (1, 10), (2, 20), (3, 30);
db1=# CREATE VIEW v4 AS SELECT * FROM t4 OFFSET 0;
db1=# UPDATE t4 SET f2 = v4.f2 FROM v4 WHERE v4.f1 = t4.f1 RETURNING v4;
ERROR:  attribute 3 of type record has wrong type
DETAIL:  Table has type record, but query expects v4.
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ca0830e5a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fec43428c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ae0be2f0b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d3a29ae6a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=39af32f78">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=317aba70e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=584f17a90">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=28a7e31d0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7713f4592">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1a20bc946">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b200180de">&#167;</a></small></p>
<li>「DO NOTHING」アクションのパーティションテーブルに対するMERGEが修正されました。  (Tender Wang) (17.5)(16.9)(15.13)</li>
<p>
一部の場合に予期せぬエラー「ERROR:  unknown action in MERGE WHEN clause」が発生していました。
</p>
<pre>
（エラー発生例 - マッチしないので 1行挿入されるのが正しい動作）
db1=# CREATE TABLE pt5 (a int, b int) PARTITION BY LIST(a);
db1=# CREATE TABLE p51 PARTITION OF pt5 FOR VALUES IN (1);
db1=# CREATE TABLE p52 PARTITION OF pt5 FOR VALUES IN (2);
db1=# MERGE INTO pt5 USING (SELECT 2 AS a) AS q ON pt5.a = q.a
      WHEN NOT MATCHED THEN INSERT VALUES (1, 2)
      WHEN MATCHED THEN DO NOTHING;
ERROR:  unknown action in MERGE WHEN clause
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=25303678a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8d4cd3b4a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=14a33d3f0">&#167;</a></small></p>
<li>INSERTコマンドで、テーブルがNULLを禁止する制約を伴うドメインデータ型の生成列（GENERATED）を持つときのエラーが防止されました。  (Jian He) (17.5)(16.9)(15.13)(14.18)</li>
<p>
生成式が問題ない値を返す場合でも制約違反のエラーになっていました。
</p>
<pre>
（エラー発生例 - 値が NULL ではないのにドメイン制約違反のエラーになる）
db1=# CREATE DOMAIN d6 AS int CHECK (VALUE IS NOT NULL);
db1=# CREATE TABLE t6 (a int, b d6 GENERATED ALWAYS AS (a * 2) STORED);
db1=# INSERT INTO t6 (a) VALUES (2);
ERROR:  value for domain d6 violates check constraint "d6_check"
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3c39c000c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f04e0faa3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=97d671672">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4604928ed">&#167;</a></small></p>
<li>WITH句の内にあるINSERT、UPDATE、DELETE、MERGEコマンドに付加された外側のCTE名の参照を正しく扱えるようになりました。  (Tom Lane) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
このような場合にパーサは、再帰が許されない場合であることを検出できず、CTEを使用可能な順序に並べ替える際にそのような参照を考慮することもできませんでした。
</p>
<p>
本来エラーになるべき問い合わせで、何らか結果が返ったり、アサート失敗が生じる動作が報告されました。潜在的にはクラッシュを引き起こす可能性があります。
</p>
<pre>
（修正後の正常動作例 - このエラーが出ないというのがバグ）
db1=# CREATE TABLE t7 (id int);
db1=# INSERT INTO t7 VALUES (1),(2);
db1=# WITH RECURSIVE out_cte(n) AS 
      (WITH sub_cte AS (SELECT * FROM out_cte) DELETE FROM t7 RETURNING id)
      SELECT * FROM out_cte;
ERROR:  recursive query "out_cte" must not contain data-modifying statements
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5e7be43f4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1980ec2bc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ede29a1e4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=754a3d82d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e276b5829">&#167;</a></small></p>
<li>JSONコンストラクタ式のキーでのキャストの誤った処理が修正されました。  (Amit Langote) (17.5)</li>
<p>
以下のようにキーがjsonに暗黙キャストされる場合に、非スカラーのキーであることが検査されず、クラッシュを引き起こすことが報告されました。
</p>
<pre>
（修正後の動作例 - 最後のSELECTでクラッシュすることがあった）
db1=# CREATE TYPE typ8 AS ENUM ('happy', 'sad', 'neutral');
db1=# CREATE FUNCTION f8_to_json(typ8) RETURNS json LANGUAGE sql IMMUTABLE
        AS $$ SELECT to_json($1::text); $$;
db1=# CREATE CAST (typ8 AS json) WITH FUNCTION f8_to_json(typ8) AS IMPLICIT;
db1=# SELECT JSON_OBJECT('happy'::typ8 : '123'::jsonb);
ERROR:  key value must be scalar, not array, composite, or json
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8b2392ae3">&#167;</a></small></p>
<li>引数が無名レコード型であるとき、array_agg()の並列化を行わないようになりました。  (Richard Guo, Tom Lane) (17.5)(16.9)</li>
<p>
パラレルワーカーとの通信プロトコルでは、返されたレコードの型を特定することに対応していないためです。これまでパラレル実行時に「ERROR:  input of anonymous composite types is not implemented」が発生することがありました。
</p>
<pre>
（障害発生例 - 例でarray_dimsを使っているのは成功時の出力を小さくするため）
db1=# CREATE TABLE t9 (id int, v text);
db1=# INSERT INTO t9 SELECT g, md5(g::text) FROM generate_series(1, 400000) g;
db1=# VACUUM ANALYZE t9;
db1=# SET debug_parallel_query TO on;
db1=# SELECT array_dims(array_agg(s)) FROM (SELECT * FROM t9) s;
ERROR:  input of anonymous composite types is not implemented
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=43847dd5e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7aa9f21f">&#167;</a></small></p>
<li>入力がint2vector型、またはoidvector型であるとき、配列コンストラクタのARRAY(subquery)とARRAY[expression, ...]が正常に配列を生成できるように修正されました。  (Tom Lane) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
以下のように、生成した配列をunnest関数に与えるとクラッシュが発生していました。
</p>
<pre>
（障害発生例 - oidv列を指定した場合も同様にクラッシュする）
db1=# CREATE TABLE t10 (i2v int2vector, oidv oidvector);
db1=# INSERT INTO t10 VALUES ('1', '10000');
db1=# SELECT ARRAY(SELECT i2v) FROM t10;
      array
------------------
 [1:1][0:0]={{1}}
(1 row)

db1=# SELECT unnest(ARRAY(SELECT i2v)) FROM t10;
server closed the connection unexpectedly
</pre>
<p>
この修正はPostgreSQL 9.5より前の振る舞いに戻すものです。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c826cd1b1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0405982c7">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=13dd6f772">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f7ae51312">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=474aee3df">&#167;</a></small></p>
<li>Ispell辞書のパース時に、無効な接辞が誤って報告される可能性が修正されました。  (Jacob Brazeal) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=99c01aadf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=61513da08">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2921c0e9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=da85544ae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f1c1bafcd">&#167;</a></small></p>
<li>デフォルトを持つドメイン型の場合を正しく処理するようにALTER TABLE ADD COLUMNが修正されました。  (Jian He, Tom Lane, Tender Wang) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
ドメイン型にデフォルトがある場合、（明示的なDEFAULT句を指定せずに）その型の列を追加すると、既存の行にドメインのデフォルト値が設定されず、新しい列はNULLのままになっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d6dd2a02b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=edc3bccd0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1d180931c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c75c830e2">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aac07b562">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0941aadcd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=053222a97">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2d6cfb0cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d31d39cfe">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=dd34cbfce">&#167;</a></small></p>
<li>外部キー制約のON DELETE SET DEFAULTまたはSET NULLアクションで重複した列名がある場合の不正動作が修正されました。  (Tom Lane) (17.5)(16.9)(15.13)</li>
<p>
本障害でアサート失敗やメモリエラーが出る動作が報告されました。クラッシュを引き起こす可能性もあります。
</p>
<pre>
（報告された障害発生例）
db1=# CREATE TABLE t13 (c01 INT, c02 TEXT);
db1=# CREATE INDEX i13 ON t13 (c01);
db1=# INSERT INTO t13 (c01, c02) VALUES (0, 'abc');
db1=# CREATE LOCAL TEMP TABLE IF NOT EXISTS v878825600 ( c878825601 INT
  COMPRESSION DEFAULT CONSTRAINT cons_878825602 REFERENCES v878825600 MATCH
  SIMPLE ON UPDATE NO ACTION ON DELETE SET DEFAULT ( c878825601, c878825601,
  c878825601, c878825601, c878825601, c878825601, c878825601 ) PRIMARY KEY )
  ON COMMIT DELETE ROWS;
db1=# CREATE LOCAL TEMP TABLE IF NOT EXISTS v878825601 ( c878825601 INT
  COMPRESSION DEFAULT CONSTRAINT cons_878825602 REFERENCES v878825600 MATCH
  SIMPLE ON UPDATE NO ACTION ON DELETE SET DEFAULT ( c878825601, c878825601,
  c878825601, c878825601, c878825601, c878825601, c878825601 ) PRIMARY KEY )
  ON COMMIT DELETE ROWS;
ERROR:  pfree called with invalid pointer 0x103e61f (header 0x0000006000000001)
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5e6e97fbf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fb3a77fd9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f5069f026">&#167;</a></small></p>
<li>外部キー制約のプロパティ変更が許可されなかった場合のエラーメッセージが改善されました。  (Álvaro Herrera) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<pre>
（報告された不適切なエラーメッセージ）
db1=# CREATE TABLE pk14 (a int PRIMARY KEY);
db1=# CREATE TABLE fk14 (a int REFERENCES pk14);
db1=# ALTER TABLE fk14 ALTER CONSTRAINT fk14_a_fkey DEFERRABLE,
      ALTER CONSTRAINT fk14_a_fkey NO INHERIT;
ERROR:  ALTER CONSTRAINT statement constraints cannot be marked NO INHERIT

（本来出力されるべきエラーメッセージ）
ERROR:  FOREIGN KEY constraints cannot be marked NO INHERIT
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4e026be5f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9ea5fe5b6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bf1e2d2db">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=931a1c023">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0f354e080">&#167;</a></small></p>
<li>ON COMMIT DELETE ROWSとマークされた一時テーブルのrelhassubclassフラグをリセットする際のエラーが回避されました。  (Noah Misch) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<pre>
（報告されたエラー発生例）
db1=# CREATE TEMPORARY TABLE p15 (a int PRIMARY KEY) ON COMMIT DELETE ROWS;
db1=# CREATE TEMPORARY TABLE c15 () INHERITS (p15);
db1=# ANALYZE;
db1=# DROP TABLE c15;
db1=# ANALYZE;
ERROR:  tuple to be updated was already modified by an operation triggered by the current command
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0a049987">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5905e9935">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e0f53e669">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a61b67cd0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d34b671a6">&#167;</a></small></p>
<li>XMLSERIALIZE()のINDENTオプションで不足していた逆解析が追加されました。  (Jim Jones) (17.5)(16.9)</li>
<p>
以前は、XMLSERIALIZE(... INDENT)を使用するビューまたはルールがINDENT句なしでダンプされ、リストア後に誤った問い合わせ結果が発生していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2e0f93d7c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0af3ae468">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=310907aaf">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=514d47dfb">&#167;</a></small></p>
<li>FILTERオプションとORDER BY（またはDISTINCT）の両方のオプションを持つ集約関数の引数を早期評価しないようになりました。  (David Rowley) (17.5)(16.9)</li>
<p>
ORDER BYまたはDISTINCTが指定されている場合、Aggプランノード内でソートを行うのではなく、集約入力値を事前にソートすることを検討します。しかし、集約入力に失敗する可能性のある式（例えば、入力の除数の一部が0になる可能性がある除算など）が含まれ、そのような失敗を防ぐためのFILTER句がある場合、これは問題となります。事前にソートすると、式の評価がFILTERテストの前に押し出され、いずれにせよエラーが発生する可能性があります。FILTERがあり、入力式が単純なVarやConstよりも複雑なものである場合は、事前ソートを行わないようにすることで、これを回避するようになりました。
</p>
<pre>
（報告された障害発生例）
db1=# CREATE TABLE t17 (id int, data jsonb);
db1=# INSERT INTO t17 (id, data) VALUES
      (1,'{"a": null}'), (2,'{"a": "2"}'), (3,'{"a": "2"}'), (4,'{"a": ""}');
db1=# SELECT array_agg(distinct (data->>'a')::int)
        FILTER (WHERE data->>'a' IS NOT NULL AND data->>'a' != '') FROM t17;
ERROR:  invalid input syntax for type integer: ""
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=065ce49a1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=887a23237">&#167;</a></small></p>
<li>外部結合が存在する場合のNOT NULL制約列からの誤った推論が修正されました。  (Richard Guo) (17.5)</li>
<p>
外部結合の後に適用されるので冗長ではない（外部結合で NULL が生じうる）にもかかわらず、場合によってはプランナが問い合わせ条件「IS NOT NULL」を破棄していました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bc5a08af3">&#167;</a></small></p>
<li>複合型の値に適用される「IS [NOT] NULL」テストに基づく誤った最適化が回避されました。  (Bruce Momjian) (17.5)</li>
<p>
要素がNULLである複合型の値は、NOT NULL制約では排除されませんが、IS NULL／IS NOT NULL式ではNULLとして扱われます。そうではない一貫性に欠けた振る舞いがあり、誤った問い合わせ結果が生じていました。ドキュメントにも複合型についてはNOT NULL制約とCHECK (VALUE IS NOT NULL)制約は同じでは無いことが明記されました。
</p>
<pre>
（修正前バージョンでの誤動作例 - id=1 の行のみ選択されるのが正しい動作）
db1=# CREATE TYPE typ19 AS (m1 int, m2 int);
db1=# CREATE TABLE t19 (id int, v typ19 NOT NULL);
db1=# INSERT INTO t19 VALUES (1, '(10,20)'), (2, '(,)');
db1=# SELECT id, v, (v IS NULL) AS isnull FROM t19 WHERE v IS NOT NULL;
 id |    v    | isnull
----+---------+--------
  1 | (10,20) | f
  2 | (,)     | t
(2 rows)
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b8b1e87b7">&#167;</a></small></p>
<li>プランナがトップレベルの式内で複数のハッシュ可能なScalarArrayOpExpr部分式を認識できない問題が修正されました。  (David Geier) (17.5)(16.9)(15.13)(14.18)</li>
<p>
この結果、ハッシュテーブルで処理できるはずの追加の部分式（すなわち、右辺が全て定数のIN、NOT IN、= ANY）が不必要に非効率的に実行されることがありました。
</p>
<p>
内部でハッシュテーブルを使うかどうかはEXPLAINの出力には現れませんが本修正で性能改善が期待できます。以下のような形状の問い合わせが該当します。
</p>
<pre>
SELECT * FROM t20
  WHERE c1 IN ('certainstring1', 'certainstring3', 《...多数の項...》)
     OR c1 IN ('certainstring2', 'certainstring4', 《...多数の項...》);
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5672a8399">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5a0840b76">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a7f213b11">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b68f664bb">&#167;</a></small></p>
<li>低いfillfactor設定値による誤ったテーブルサイズの推定値が修正されました。  (Tomas Vondra) (17.5)</li>
<p>
まだANALYZEが実行されていないテーブルの行数をプランナが推定する時、テーブルのfillfactor設定を推定に使用しますが、その結果を少なくとも1ページあたり1行に制限する処理が省略されていました。fillfactorの値が低い場合、推定値が不当に小さくなる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=587b6aa3f">&#167;</a></small></p>
<li>Bitmap Heap Scanにおけるskip fetch最適化が無効になりました。  (Matthias van de Meent) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
この最適化を使用すると、並行して実行されるVACUUM処理がページをall-visibleとマークした時に、デッドタプルが返されることがあることが判明しました。これにより誤った問い合わせ結果が生じる可能性があります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=78cb2466f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=980727b84">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=77d90d6d6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4934d3875">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b9ec8125d">&#167;</a></small></p>
<li>多数の検索キーがある場合のGINインデックス検索起動時の性能問題が修正されました。  (Tom Lane, Vinod Sridharan) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
多くのキーを持つインデックス可能な句（例えば、配列要素が数万個ある「jsonbcol ?| array[...]」）は、クエリの開始に O(N2) の時間を要しており、またその処理中にキャンセルもできませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9094eb25b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d52221cf0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2d313375c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2a6934a8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=308d0d443">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8c153fcfa">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4b65b085a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9a8c16aec">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1b47a112a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7597a1d3">&#167;</a></small></p>
<li>BRINインデックスの演算子クラスでサポートされてないプロシージャを検出して、エラーが報告されるようになりました。 (Álvaro Herrera) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>これまでクラッシュが生じていました。</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ade976f8b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e0d8f49a3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5d8c58800">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5144e1f8f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f5b4a0b49">&#167;</a>
</p>
<p></small></p>
<li>Appendプランノードの非同期サブプランの待機中に、クエリキャンセルなどの割り込みに応答できるようになりました。  (Heikki Linnakangas) (17.5)(16.9)(15.13)(14.18)</li>
<p>
以前の動作では、サブプランのいずれかが準備完了するまで何も処理されませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e731e9d5e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=004dbbd72">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d4d34c08c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d2fb076be">&#167;</a>
</p>
<p></small></p>
<li>稼働中のwal senderのI/O統計をより高頻度に報告するようになりました。  (Bertrand Drouvot) (17.5)(16.9)</li>
<p>
これまでは、pg_stat_ioビューはwal senderによるI/O実行をプロセス終了まで集計していませんでした。 これからはそのようなI/Oも最大1秒遅れで報告されます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5cbbe70a9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2a82cd23">&#167;</a></small></p>
<li>起動直後のsynchronous_standby_names設定の扱いについて、競合状態が修正されました。  (Melnikov Maksim, Michael Paquier) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
起動後の短時間において、synchronous_standby_namesが有効であるのに、バックエンドプロセスが同期コミットを待機しない場合があり得ました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3339847cc">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c922ae2c4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ec59500a1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=873aff945">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e2f42f812">&#167;</a></small></p>
<li>問い合わせ内での設定パラメータio_combine_limitの変更が有効になりました。  (Thomas Munro) (17.5)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e27346807">&#167;</a></small></p>
<li>設定パラメータscram_iterationsがINT_MAX（2147483647）に設定されている場合の無限ループが回避されました。  (Kevin K Biju) (17.5)(16.9)</li>
<p>
「ALTER ROLE role1 WITH PASSWORD 'pass'」などで応答がなくなります。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=34fbfe1f5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=de1484736">&#167;</a></small></p>
<li>json_array()関数の副問い合わせの二重変換によりクラッシュを起こす可能性があり、回避されました。  (Tom Lane) (17.5)(16.9)</li>
<p>
json_array()関数にWITH句を伴う問い合わせを渡した場合にアサート失敗や予期せぬエラーが生じる動作が報告されました。
</p>
<pre>
（エラー発生例）
db1=# SELECT json_array( WITH x AS (SELECT 1) VALUES (TRUE) );
ERROR:  unexpected utility statement in WITH

（修正後バージョンでの出力）
 json_array
------------
 [true]
(1 row)
</pre>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=717e8a1e5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ca54f9b70">&#167;</a></small></p>
<li>内部関数pg_strtof()の引数endptrがNULLの場合にクラッシュする問題が修正されました。  (Alexander Lakhin, Tom Lane) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
引数endptrにNULLが指定されているコードはリリース済のPostgreSQLには存在しないので、通常影響はありません。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d69c78108">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5c64ece8a">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c7303f01c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=76fbb38ef">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ebe919e95">&#167;</a></small></p>
<li>GUCパラメータの一部設定において、メモリ不足発生後にクラッシュする問題が修正されました。  (Daniel Gustafsson) (17.5)(16.9)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8afec4ef6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8d48e84c5">&#167;</a></small></p>
<li>Snowball語幹処理でメモリ不足が発生した場合にクラッシュする問題が修正されました。  (Maksim Korotkov) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7edd2cbc5">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c0c364fa1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9c46d902b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8388cae55">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=197427fb3">&#167;</a></small></p>
<li>実行計画作成時に、メモリ解放してはいけないSpecialJoinInfo構造体まで解放してしまう問題が修正されました。  (Richard Guo) (17.5)</li>
<p>
これにより、パーティションワイズ結合が有効な場合に、クラッシュすることがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=727bc6ac3">&#167;</a></small></p>
<li>無効化済のレプリケーションスロットがコピーできないようになりました。  (Shlok Kyal) (17.5)(16.9)</li>
<p>
これまでは、削除済みのWALを指している無効なスロットをコピーできてしまい、意図しないエラーやデータ破損につながる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a4309e85f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=87e8599e0">&#167;</a></small></p>
<li>ホットスタンバイではないスタンバイサーバ上で論理レプリケーションスロットをリストアできないようになりました。  (Masahiko Sawada) (17.5)(16.9)</li>
<p>
wal_levelがlogicalより低く設定されていると、スロットが有効なまま残り、昇格後にアサート失敗する可能性がありました。
</p>
<p>
ここでの「リストア」はPostgreSQLサービス起動時にファイルに記録されていたスロットを読み込んで有効化することを指します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=174952ece">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cc628f661">&#167;</a></small></p>
<li>論理デコーディングでデコーディング位置を指定の位置まで進める処理で、レプリケーションスロットのcatalog_xminが過剰に進められてしまう問題が修正されました。  (Zhijie Hou) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
本来WAL読取処理に必要なはずのカタログ情報がVACUUMで削除され、誤動作やデータの不整合を引き起こす可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=36148b22e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=21a7caeeb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f6429bd7d">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1f63b3626">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d65485b02">&#167;</a></small></p>
<li>強いロックを取らないDDL操作が論理レプリケーションの対象テーブルである場合にデータ破損を起こす可能性があり、修正されました。  (Shlok Kyal, Hayato Kuroda) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
ALTER PUBLICATION ADD TABLEやALTER TYPEなど、強いロックを取らないDDLによりカタログが更新された場合、WALをデコードする処理がその情報を取得できず、古いカタログ情報を使ってデコードしてしまうことで、結果としてデータが破損してしまう可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cadaf0ac4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9a2f8b4f0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9f21be08e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0434033e8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=247ee9415">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d96206f25">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9987c9466">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=90bc4523f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=bb1bc9fa9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4164d6976">&#167;</a></small></p>
<li>apply workerがエラーに遭遇したものの、PL/pgSQLの関数などでエラー処理された場合に、レプリケーションオリジンを誤ってリセットする問題が修正されました。  (Hayato Kuroda) (17.5)(16.9)</li>
<p>
この結果、同じデータが再度適用されデータが重複してしまうことがありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=05676d87e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0de091a4b">&#167;</a></small></p>
<li>サブスクライバ側のパーティションテーブルにBRINインデックスが存在する場合に、論理レプリケーションのapply workerプロセスがクラッシュすることがあり、修正されました。  (Tom Lane) (17.5)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=788baa9a2">&#167;</a></small></p>
<li>論理レプリケーションのインデックス検索で重複したスナップショットの作成を回避するようになりました。  (Heikki Linnakangas) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>この誤りによる実害はありません。</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c1dd3a944">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8171d2dae">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=50c589992">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2ef048855">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9b3914f18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f1ef111a0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=324e0b656">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d765226cb">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=136e68b46">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6c1e79589">&#167;</a></small></p>
<li>サブスクリプション作成時に、オリジンが混在している場合の検知が改良されました。  (Hou Zhijie, Shlok Kyal) (17.5)(16.9)</li>
<p>
サブスクリプション作成時に、サブスクライブ先のテーブルが他のパブリケーションを追随している場合、重複したデータの受信につながる可能性があるため、警告が表示されます。今回の変更では、パーティションの親テーブルまたは子テーブルが別のパブリケーションを追随している場合も警告が出力されるようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0ae1245e0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1c2a2354c">&#167;</a></small></p>
<li>リカバリタイムラインの選択が不適切である場合、エラーメッセージに誤ったチェックポイントに関する情報が出力されていましたが、修正されました。  (David Steele) (17.5)(16.9)(15.13)</li>
<p>
要求されたリカバリタイムラインに到達できない場合、報告されるチェックポイントとタイムラインは、存在する場合、backup_labelから読み取られた値になります。このメッセージは以前はpg_controlファイルから値を報告していましたが、これはbackup_labelのない制御ファイルからリカバリする場合は正しいのですが、backup_labelがある場合には正しくありませんでした。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=29cce279b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b4969a296">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=62bed7bb0">&#167;</a></small></p>
<li>smgropen()内の操作順序が修正されました。  (Andres Freund) (17.5)</li>
<p>
smgr_openコールバックを呼び出す前にSMgrRelationオブジェクトが完全に初期化されていることを確認するようになりました。これにより、コールバックが失敗した場合でも適切にクリーンアップされます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ee578921b">&#167;</a></small></p>
<li>pgstat_report_stat()内の誤ったアサートが削除されました。  (Michael Paquier) (17.5)(16.9)(15.13)</li>
<p>
pgstat_report_stat()は、実行中のプロセスが自身の統計情報を定期的にサーバに報告するための関数です。特にPostgreSQL 16以降では、WAL senderは定期的に自身のI/O統計情報を報告するようになりましたが、このレポート処理が、他の状況で発生する可能性のあるpgstat_report_stat()の呼び出しと競合するケースが発生しました。また、非常に稀ではありますが、15.xでもバックグラウンドワーカーなどのプロセスによるpgstat_report_stat()の同時呼び出しによって同様の競合が引き起こされる可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=4b6331e0f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e9ab8677b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c1201ffcf">&#167;</a></small></p>
<li>gistFindCorrectParent()の過度に厳密なアサートが修正されました。  (Heikki Linnakangas) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6526d0794">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=419321398">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3c0fe75c4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a749c6f18">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b92482dc3">&#167;</a></small></p>
<li>maintenance_work_memの値が非常に小さい場合、並列バキュームでのアサート失敗が回避されるようになりました。  (Masahiko Sawada) (17.5)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a38dce3c4">&#167;</a></small></p>
<li>プライマリサーバの再起動時にスタンバイサーバで稀に発生するアサート失敗が修正されました。  (Heikki Linnakangas) (17.5)(16.9)(15.13)(14.18)</li>
<p>
内部関数が、古いトランザクションを「実行中でなくなった」とマークする際に、トランザクションの実行状況に関する変数を更新しておらず、ホットスタンバイ中にアサート失敗が発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=302ce5bd9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2f33de3cd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b30c77a0e">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=66235baab">&#167;</a></small></p>
<li>PL/pgSQLで、単純なSELECT式クエリでスクロール可能なカーソルが定義されている場合に発生するエラー「ERROR:  unexpected plan node type」を回避するようになりました。  (Andrei Lepikhov) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=1353b1161">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a28c1fb61">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5e56efa7c">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=c196c610b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0f60e1fba">&#167;</a></small></p>
<li>pg_dumpの--cleanモードで、個々のインデックスパーティションを削除しようとしないようになりました。  (Jian He) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
サーバはこのようなDROPコマンドを拒否します。パーティションは、親テーブルまたはパーティションインデックスのいずれかの後続のDROPで、いずれにせよ削除されるため、実際には何の影響もありません。ただし、エラーは発生するため、psqlの--single-transactionモードでリストアする際にはリストアのトランザクション全体が失敗するため、問題を引き起こしました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3424c1075">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a25f21d99">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7144cd538">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=148cc0105">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6a3e57865">&#167;</a></small></p>
<li>pg_dumpallにおいて、pg_auth_membersに無効なロールのOIDが含まれている場合、無効なロールに対するGRANTコマンドが出力されないようになりました。  (Tom Lane) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
代わりに警告を出して該当エントリをスキップするようになりました。これは、GRANTとDROP ROLEが競合するタイミングで発生する可能性があったカタログ破損への対策です。過去のバージョンではこのような破損が確認されていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=16eff4261">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d850a6600">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6df3be415">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ce1475acd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5302ff95c">&#167;</a></small></p>
<li>pg_amcheckおよびpg_upgradeにおいて、libpqが確保したメモリを解放する際に正しい関数が使用されるようになりました。  (Michael Paquier, Ranier Vilela) (17.5)(16.9)(15.13)(14.18)</li>
<p>
これまで、Windows環境の特定のビルド構成、たとえばlibpqがデバッグビルドで、それを使用するアプリケーションが非デバッグビルドである場合などに、クラッシュが発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ee78823ff">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9ca2145b0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0851b6573">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57467ec7b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f903d4da9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=816149dc6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ec741d480">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=35a591a04">&#167;</a></small></p>
<li>reindexdbコマンドの並列リインデックス処理におけるスケジューリング  (Alexander Korotkov) (17.5)</li>
<p>の問題が修正されました。従来は、指定した並列数にならない場合がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=09ef2f8df">&#167;</a></small></p>
<li>contrib/pageinspectのheap_page_items()関数において、破損したページを読み込んでもクラッシュしないようになりました。  (Dmitry Kovalenko) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=ecb8e5641">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=2d33cf7b8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=90a3fd811">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3c2ea65bd">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3f9132ed2">&#167;</a></small></p>
<li>contrib/pg_freespacemapのpg_freespacemap()関数が、ビューなどストレージを持たないリレーションを指定するとアサート失敗する問題が修正されました。  (Tender Wang) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
このような対象を指定した場合は、エラーとして拒否されるようになりました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=51d038da8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=41ed749e4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0e86bad38">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5ff827389">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=db8238da4">&#167;</a></small></p>
<li>contrib/postgres_fdwで、サブクエリからの制限条件を引き出さないようになりました。  (Alexander Pyhalov) (17.5)</li>
<p>
この修正により、稀に発生するエラー「ERROR: expected expression in subquery output」が回避されます。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=729fe699e">&#167;</a></small></p>
<li>システムのインクルードディレクトリに古いバージョンのlibpq_fe.hが存在する場合にビルドが失敗する問題が修正されました。  (Tom Lane) (17.5)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=f186f90e5">&#167;</a></small></p>
<li>macOS 15.4でビルドが失敗する問題が修正されました。  (Tom Lane, Peter Eisentraut) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
このmacOSアップデートにより、strchrnul()関数の設定プローブが機能しなくなっていました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=915e88968">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a39eb9c77">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0de9560ba">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=71790aef1">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e4440a73c">&#167;</a></small></p>
<li>読み込みストリームのバッファ単位データのvalgrindラベル付けが修正されました。  (Thomas Munro) (17.5)</li>
<p>
これはPostgreSQLのリリース版のコアコードには影響しませんが、バッファ単位のデータ機能を使用する拡張がvalgrindでのテスト中に誤ったエラーが発生する可能性がありました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=57dca6faa">&#167;</a></small></p>
<li>文字列ハッシュコードに関するvalgrindの警告がでないようになりました。  (John Naylor) (17.5)</li>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fde7c0164">&#167;</a></small></p>
<li>タイムゾーンデータファイルが tzdata release 2025b に更新されました。  (Tom Lane) (17.5)(16.9)(15.13)(14.18)(13.21)</li>
<p>
中国の夏時間法の変更とイランの歴史的修正が含まれます。また、チリのアイセン州のタイムゾーンが年間を通じて UTF-03 に変更されてAmerica/Santiago から分離したため、新たに America/Coyhaique が追加されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5d5970b9f">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e076120d9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a144cf145">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=fa4244a43">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9da548df3">&#167;</a></small></p>
<li>contrib/dblinkの問い合わせがキャンセルできるようになりました。  (Noah Misch) (16.9)(15.13)(14.18)(13.21)</li>
<p>
これは17.xバージョンむけの変更の後方適用です。デッドロック検出の失敗のためにCREATE DATABASEとDROP DATABASEで起こりうるハングアップを防止します。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=82a8f0f46">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=63f6ecb6b">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a8a918937">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=186c586c3">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=9e129a224">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=aa435d7c4">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=5a3d5c083">&#167;</a></small></p>
<li>スナップショット作成で起きるアサート失敗が修正されました。  (Masahiko Sawada) (15.13)(14.18)</li>
<p>
ロジカルレプリケーションで問題が報告されました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=0f404c581">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=7be51eb4e">&#167;</a></small></p>
<li>アーカイブからリストアされたWALファイルの破損を防ぐため、アーカイブリカバリ時にはWALファイルの再利用と事前割り当てを行わないようになりました。  (Noah Misch, Arun Thirupathi) (14.18)(13.21)</li>
<p>
これは15.x以降バージョンむけの修正の後方適用です。当初は外観的な修正と考えられていましたが、その後の修正を通してデータ破損の防止に有効と判明しました。
</p>
<p><small> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=3635a0a35">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=69a498eb6">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=014a50800">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=a5b0c06da">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=675b771ca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=cbed472a9">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=b494640e8">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=d0b6acaf0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=8967dddf0">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=20e5ef3ca">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=6b168c129">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=df8ec9634">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=47d2d2982">&#167;</a> <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;h=e77d9cd4f">&#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>
