<?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 11.15 &#8211; SRA OSS Tech Blog</title>
	<atom:link href="https://www.sraoss.co.jp/tech-blog/tag/postgresql-11-15/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:40:32 +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 11.15 &#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 11.16 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/11-16/</link>
		
		<dc:creator><![CDATA[データベース技術グループ]]></dc:creator>
		<pubDate>Fri, 03 Jun 2022 00:39:13 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 11]]></category>
		<category><![CDATA[PostgreSQL 11.15]]></category>
		<category><![CDATA[PostgreSQL 11.16]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=10129</guid>

					<description><![CDATA[このリリースは 11.15 からの修正リリース（2022年5月12日リリース）です。 11.X からのアップデートではダンプ、リストアは不要です。 また、11.14 よりも前のバージョンからアップデートする場合には、11 ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 11.15 からの修正リリース（2022年5月12日リリース）です。<br />
11.X からのアップデートではダンプ、リストアは不要です。<br />
また、11.14 よりも前のバージョンからアップデートする場合には、<a href="/tech-blog/pgsql/11-14/ ">11.14 のリリース情報</a>も参照してください。</p>
<p><span id="more-10129"></span></p>
<h3>PostgreSQL 11.15 から 11.16 への変更点</h3>
<p>14.3、13.7、12.11、11.16、10.21 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<ol>
<li>「セキュリティ限定された操作」のサンドボックス内では追加操作を制限するようにしました。  (Sergey Shinderuk, Noah Misch) (14)(13)(12)(11)(10)</li>
<p>
自動VACUUM、CLUSTER、CREATE INDEX、REINDEX、REFRESH MATERIALIZED VIEW、pg_amcheck では「セキュリティ限定された操作」による保護が有効化されるのが遅すぎたり、全く働かなかったりしていました。
</p>
<p>
データベース内に永続オブジェクトを作成する権限を持ったユーザは、スーパーユーザ権限で任意の SQLコードを実行するオブジェクトを定義できました。仕込まれた SQLコードは、次に自動VACUUM が行われるときに、あるいは、スーパーユーザがそのオブジェクトに作用するいずれかのコマンドを実行したときに、実行されます。
</p>
<p>
本脆弱性は CVE-2022-1552 として登録されています。
</p>
<li>gist_ltree_ops のインデックスについて、デフォルトのシグネチャ長が修正されました。  (Tomas Vondra, Alexander Korotkov) (14)(13)</li>
<p>
ltree拡張を演算子クラスパラメータをサポートするようにアップグレードするときに、ltree列に対する GiSTインデックスのデフォルトのシグネチャ長（ハッシュサイズ）が、意図せず変更されてしまいました。最初から ltree をバージョン 1.2 にアップグレードしている場合を除き、このようなインデックスに何らか操作が行われた場合、シグネチャ長が 8バイトではなく 28バイトと見做されて動作します。したがって、おそらくそのインデックスは壊れています。安全のためバージョンアップ後に全ての ltree の列に対する GiSTインデックスを再作成（REINDEX）することを推奨します。なお、ltree[] 配列の列に対する GiSTインデックスには影響しません。
</p>
<li>素のテーブルを参照する行全体の値の列に対して、問い合わせで指定された列の別名を使わないようにしました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
選択リストの最上位以外での tbl.*などの行全体変数から作られたタプルの列名は、今後は、もしあるなら常に関連して名前付けされた複合型の要素名になります。これまでは FROM のエントリに適用された全ての列の別名を追跡させるように試みていました。しかし、これは意味がないと判断されました。
</p>
<p>
従来実装では、行全体をあらわす列を使用したテーブルを作った後、行全体の列の元となるテーブルの列名を付け直した場合に、そのようなテーブルのSELECT で予期せぬエラーが発生して、格納したデータが読めなくなってしまうことがありました。
</p>
<pre>
（報告された障害発生ケース）
db=# CREATE TABLE t3 (data int);
db=# CREATE VIEW v3 AS SELECT t3 FROM t3;
db=# CREATE TABLE t3_log (ts timestamp, what v3);

（列名を付け直す操作）
db=# ALTER TABLE t3 ADD big_data bigint;
db=# UPDATE t3 SET big_data = data;
db=# UPDATE t3_log SET what.t3.big_data = (what).t3.data;
db=# ALTER TABLE t3 DROP data;
db=# ALTER TABLE t3 RENAME big_data TO data;
db=# INSERT INTO t3 VALUES (123456);
db=# INSERT INTO t3_log SELECT now(), v3 FROM v3;

（この時は正しく出力）
db=# SELECT * FROM t3_log;
             ts             |     what
----------------------------+--------------
 2022-05-16 13:49:54.862458 | ("(123456)")
(1 row)
db=# \c

（接続し直した後にはエラーになる）
db=# SELECT * FROM t3_log;
ERROR:  record type has not been registered
</pre>
<p>
列名を付け直したい場合の本障害の回避策は、副問い合わせの階層を追加して、行全体の変数が副問い合わせの出力を参照して、素のテーブルを参照しないようにすることです。これは上記のエラー発生例で言えば「CREATE VIEW ...」を「CREATE VIEW v3 AS SELECT v::t3 AS t3 FROM (SELECT * FROM t3) v(d);」と記述することです。
</p>
<li>interval型からエポック値を抽出するときの誤った丸めが修正されました。  (Peter Eisentraut) (14)</li>
<p>
numeric型を返すようになった新しい EXTRACT の実装コードで、誤って DAYS_PER_YEAR 定数を整数型に変換して切り捨てていたため、13.x バージョン以前の float型を返すコードと戻り値が異なっていました。
</p>
<li>pg_stat_get_replication_slot(NULL) 実行時のクラッシュが防止されました。  (Andres Freund) (14)</li>
<p>
この関数はカタログデータで STRICT と定義されるべきでしたが、バージョン14 ではこれが指定されていなかったため、代替策として、関数実装に実行時のチェックが追加されました。
</p>
<li>table_to_xmlschema() などの XML関数における timestamptz型、timetz型の誤った出力が修正されました。  (Renan Soares Lopes) (14)(13)(12)(11)(10)</li>
<p>
これらのデータ型に対する XMLスキーマ出力では文字列パターンの正規表現が壊れていました。
</p>
<li>列数がゼロの「VALUES」句のパーサ処理のクラッシュが回避されました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<pre>
（報告された障害発生ケース）
db=# CREATE TEMP TABLE nocols();
db=# INSERT INTO nocols DEFAULT VALUES;
db=# SELECT * FROM nocols n, LATERAL (VALUES(n.*)) v;
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.
</pre>
<li>プランノードの Result が Append ノードのすぐ下にあらわれる場合のプランナのエラーやクラッシュが修正されました。  (Etsuro Fujita) (14)</li>
<p>
非同期リモートクエリをサポートするために最近追加されたコードは、このケースを処理できず、クラッシュや「ERROR:  unrecognized node type ..」などの認識されないノードタイプに関するエラーが引き起こされました。
</p>
<li>「SEARCH」句または「CYCLE」句を使用するクエリに重複するテーブル式の名前が含まれている場合のプランナのエラーやクラッシュが修正されました。  (Tom Lane, Kyotaro Horiguchi) (14)</li>
<p>
再帰的な WITH クエリの名前が自身の中で再利用されると、プランナがクラッシュしたり、奇妙なエラーを報告したりする可能性がありました。
</p>
<pre>
（障害発生例）
db=# WITH RECURSIVE x(col) as (
       SELECT 1 UNION (
	     WITH x AS (SELECT * FROM x)
           SELECT * FROM x)
     ) SEARCH DEPTH FIRST BY col SET seq
     SELECT * FROM x;
ERROR:  could not find attribute 2 in subquery targetlist
</pre>
<li>外側のクエリ階層を参照する GROUPING() 構文のプランナエラーが修正されました。  (Richard Guo, Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
奇妙なエラーやアサート失敗が報告されました。
</p>
<pre>
（エラー発生例）
db=# SELECT (SELECT GROUPING(v1)) FROM (VALUES ((SELECT 1))) v(v1) GROUP BY v1;
ERROR:  plan should not reference subplan's variable
</pre>
<li>返却可能な列と返却不可能な列の両方を持つインデックスに対するインデックスオンリースキャンのプラン生成が修正されました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
以前のコーディングでは、返却可能な列に加え、返却不可能な列も読み取ろうとする可能性がありました。 これは実際には無効な値に対して何も行わなかったためおよそ無害でしたが、最近追加されたエラーチェックでそのようなプランを拒否して、下記のエラーメッセージを出していました。
</p>
<pre>
ERROR:  XX000: variable not found in subplan target list
</pre>
<li>EvalPlanQual の実行中に古いタプルをロックしようとする際に、ピン(PIN)で固定されなくなった共有バッファにアクセスしないようになりました。  (Tom Lane) (14)(13)(12)</li>
<p>
EvalPlanQual は READ COMMITTED 隔離レベルの問い合わせにおける内部的な処理です。
</p>
<p>
従来コードはピンを解放した後、さらに数回バッファにアクセスしていました。理論的には別プロセスがピンがなくなった時点ですぐにバッファを再利用し（あるいは、より可能性が高いのは、その空き領域をデフラグしようとし）、タプルの新しいバージョンを見つけるのに失敗する可能性があります。
</p>
<li>再並べ替えを実行している IndexScanノードでの、クエリ存続期間におけるメモリリークが修正されました。  (Aliaksandr Kalenik) (14)(13)(12)(11)(10)</li>
<li>関数の並列性属性と「SET」変数リストを同じコマンドで変更できるように ALTER FUNCTION が修正されました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
一つの ALTER FUNCTION コマンドで関数の「SET」句も更新した場合、並列性属性の変更が失われていました。
</p>
<pre>
（誤動作例／「PARALLEL safe」を指定したので proparallel は 「s」が正しい）
db=# CREATE FUNCTION public.f14() RETURNS int LANGUAGE sql AS 'SELECT 1';
db=# ALTER FUNCTION public.f14() SET timezone TO 'UTC' PARALLEL safe;
db=# SELECT proname, proparallel, proconfig FROM pg_proc WHERE proname = 'f14';
 proname | proparallel |   proconfig
---------+-------------+----------------
 f14     | u           | {TimeZone=UTC}
(1 row)
</pre>
</p>
<li>制約に「所有されている」インデックスの検出が厳格化されました。  (Tom Lane, Japin Li) (14)</li>
<p>
一部のコードパスで、外部キー制約が依存しているインデックスを、ユニーク制約または主キー制約によって所有されているインデックスと取り違えていました。その結果、外部キー制約を持つテーブルに対する特定の ALTER TABLE 操作に際して、下記のような奇妙なエラーが発生していました。
</p>
<pre>
 ERROR:  relation 145678 has multiple clustered indexes 
または
 ERROR:  "t15_pkey" is not an index for table "t15" 
</pre>
<li>ALTER TABLE でテーブルのシステム列を変更しようとすると、間違ったエラーが発生する問題が修正されました。  (Tom Lane) (14)(13)(12)</li>
<p>
システムは「ERROR:  cannot alter system column "cmax"」などと、それができないことを通知するべきですが、代わりに「ERROR:  no owned sequence found」を報告する場合がありました。
</p>
<li>先頭キーが式であるインデックスを使用して CLUSTER 処理を行った場合に、テーブルの行が誤った並べ替えになる問題が修正されました。  (Peter Geoghegan, Thomas Munro) (14)(13)(12)(11)(10)</li>
<p>
テーブルは正しいデータで再構築されますが、インデックスの順序とはほとんど関係のない順序になりました。
</p>
<li>ソートされた GiSTインデックスのビルド直後にシステムクラッシュが発生した場合のデータ損失が防止されました。  (Heikki Linnakangas) (14)</li>
<p>
ソートを使用して GiSTインデックスを構築するコードパスは、完了時にファイルの fsync を怠っていました。このため、その後すぐにオペレーティングシステムがクラッシュした場合、インデックスが破損する可能性がありました。
</p>
<li>パーティション化されたインデックスを削除する際にデッドロックエラーのリスクがあり、修正されました。  (Jimmy Yih, Gaurab Dey, Tom Lane) (14)(13)(12)(11)</li>
<p>
必要なテーブルとインデックスのロックが確実に標準的な順序（子の前に親、インデックスの前にテーブル）で取られるようになりました。DROP INDEX の以前のコーディングでは、これとは異なる方法でロックを取っていたため、標準的な順序でこれらのロックを取る同時実行の問い合わせに対してデッドロックが発生する可能性がありました。
</p>
<li>DROP TABLESPACE とチェックポイントの間の競合状態が修正されました。  (Nathan Bossart) (14)(13)(12)(11)(10)</li>
<p>
DROP TABLESPACE によって強制されるチェックポイントが、テーブルスペースのディレクトリからすべてのデッドファイルを削除することに失敗して、以下のような偽のエラーが発生する場合がありました。
</p>
<pre>
ERROR:  tablespace "tblspc20" is not empty
</pre>
<li>チェックポイント実行と並行して TRUNCATEコマンドを実行した後に、クラッシュリカバリが失敗する可能性があり、修正されました。  (Kyotaro Horiguchi, Heikki Linnakangas, Robert Haas) (14)(13)(12)(11)(10)</li>
<p>
チェックポイントが完了できるようになる前に、テーブルのディスクファイルが全削除されることをTRUNCATE は保証しなければなりません。そうでないと、そのチェックポイントから開始したリプレイが、削除されているはずのページの予期せぬデータを見つけて、リプレイ失敗を引き起こすおそれがありました。
</p>
<li>一時オブジェクト削除中における安全でないTOASTデータアクセスが修正されました。  (Andres Freund) (14)(13)(12)(11)(10)</li>
<p>
サーバプロセス終了時に「FATAL: cannot fetch toast data without an active snapshot」のエラーを出して、一時オブジェクトの削除に失敗することがありました。次に一時スキーマを使う際に正常にクリーンアップされるため、通常は無害です。
</p>
<li>カスタム設定名の最初の文字に「_」が再度使えるようになりました。  (Japin Li) (14)</li>
<p>
バージョン14 ではそのような名前が意図せず使えなくなってしまっていました。
</p>
<li>compute_query_id 設定に指定可能な値として「regress」が追加されました。  (Michael Paquier) (14)</li>
<p>
これはリグレッションテストを容易にすることを目的としており、クエリID が計算されるけれども EXPLAIN の出力には表示されません。
</p>
<li>RegisterSyncRequest の待機ロジックが改善されました。  (Thomas Munro) (14)(13)(12)</li>
<p>
RegisterSyncRequest は局所的にストレージ同期の要求を受け付けたり、要求を checkpointerプロセスに転送したりする、内部実装関数です。
</p>
<p>
その中で checkpointer への同期要求キューが溢れた場合（shared_buffers が小さい場合に起こりえます）、その待ち行列が減るのを待つ動作をします。このときの待機を示す待機イベント「RegisterSyncRequest」が追加されました。
</p>
<li>書き込みと書き込みの間で checkpointerプロセスが待機しているときにはラッチイベントを起こすようになりました。  (Thomas Munro) (14)</li>
<p>
これは同期リクエストを送信するバックエンドの反応性を改善します。更にこの待機に対応した待機イベント「CheckpointerWriteDelay」も追加されました。
</p>
<li>WAL の後続レコードが欠けている時にスタンバイを昇格すると「PANIC: xlog flush request is not satisfied」が発生する問題が修正されました。  (Sami Imseih) (14)(13)(12)(11)(10)</li>
<li>ホットスタンバイのコンフリクトを処理する際に自己デッドロックが起きる可能性があり、修正されました。  (Andres Freund) (14)(13)(12)(11)(10)</li>
<p>
不運なタイミングのとき、WAL を適用するプロセスが他プロセスのバッファロックの解放を待って、動作が止まってしまう可能性がありました。
</p>
<li>ロジカルレプリケーションの変更を送信する際、パーティションの先祖関係を間違ってしまう可能性があり、修正されました。  (Tomas Vondra, Hou zj, Amit Kapila) (14)(13)</li>
<p>
publish_via_partition_root オプションが true に指定されていて、更新するリレーションに対する異なる先祖で指定された複数のパブリケーションがある場合（即ち親子関係にあるリレーション各々にパブリケーションを作っている場合）、サブスクリプションへの変更の報告に際して間違った先祖リレーションを選択することがありました。
</p>
<li>max_sync_workers_per_subscription 設定の制限に抵触する場合でもロジカルレプリケーションの apply workerプロセスが再起動されるようになりました。  (Amit Kapila) (14)(13)(12)(11)(10)</li>
<p>
本設定に対する上限検査コードの欠陥により、これまでは再起動されたワーカを直ぐに終了してしまっていて、ほとんどのワーカが存続できませんでした。
</p>
<li>UPDATE に対して、変更されていないレプリカアイデンティティ（REPLICA IDENTITY）のキー列を、それが外部TOAST格納されている場合には WALログに含めるようになりました。  (Dilip Kumar, Amit Kapila) (14)(13)(12)(11)(10)</li>
<p>
この対処をしないと、サブスクライバはその値を見ることができないので、更新を正しく複製できないことになります。
</p>
<li>psコマンドにおけるサーバプロセス表示の置き換えに対応していないプラットフォームを適切に処理できるようになりました。  (Andrew Dunstan) (14)(13)</li>
<p>
このようなプラットフォームはほとんどありません。そのため、これまでリファクタリングが潜在的なメモリ破壊をもたらすことに気づかれませんでした。サポートされているプラットフォームで該当する唯一のものは Cygwin で、バックエンドプロセスのクラッシュが報告されました。
</p>
<li>タイマ割り込みの見逃しに対して、より頑健になりました。  (Michael Harris, Tom Lane) (14)</li>
<p>
バージョン14 で追加された最適化は、なんらかの理由でサーバプロセスがタイマ割り込みを逃してしまった場合は他についてもカーネルに要求を繰り返さないというもので、セッションの以降においてタイムアウト検出に失敗することになりました。
</p>
<p>
これでは脆弱すぎると判断され、リカバリパスが追加されました。
</p>
<li>PL/Perl関数のコンパイル時には SPI関数は実行できないようになりました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
PL/Perl関数のコンパイル時には Perl はユーザ定義コードを実行すると考えられます。しかしながら、SPI 経由の SQL操作を行うコードは望ましくなく、クラッシュかセキュリティ障害を起こす可能性がありました。関数の検証に際して本当にコード実行をしたいわけではありません。そこで、代わりに親切なエラーメッセージを出す検査が加えられました。
</p>
<li>libpq が root所有の SSL秘密鍵ファイルを受け入れるようになりました。  (David Steele) (14)(13)(12)(11)(10)</li>
<p>
この変更により、libpq の SSL鍵ファイルの所有者とアクセス許可の安全チェックが、バージョン9.6 以降のサーバと統一されます。すなわち、現在のルールに加え、鍵ファイルの所有者が root であって、パーミッションが 0640 以下の場合を許容するようになりました。これは、鍵ファイルのシステム全体での管理に役立ちます。
</p>
<li>libpq の PQisBusy()関数の接続エラー後の動作が修正されました。  (Tom Lane) (14)(13)(12)</li>
<p>
書き込みエラーを検出した場合、PQisBusy() は常に真を返しましたが、これは誤りでした。サーバから何か読み取れるまで、通常は入力処理を継続したいところでした。
</p>
<p>
この障害の実際の影響は、libpq の非同期クエリAPI を使用するアプリケーションが、PQconsumeInput() が致命的なエラーを返した場合にしか接続断を検出しないことです。この修正により、接続断が順当にエラーの PGresult オブジェクトを介して報告されるようになりました。これはほとんどのアプリケーションにとって相応しい動作です。
</p>
<li>psql、pg_dump、および pg_amcheck で「データベース.スキーマ.テーブル」という構文を再度許容するようになりました  (Mark Dilger) (14)</li>
<p>
14 より前のバージョンは、2つ以上の「.」を含むパターンにおけるスキーマとテーブル以外の全ての修飾名を黙って無視していました。バージョン14 でのリファクタリングの誤りで、そのユースケースがエラーになるようになってしまいました。本バージョンで復活しましたが、先頭の修飾名がカレントデータベースの名前と一致しない場合にはエラーが発生します。
</p>
<pre>
（バージョン 14.2 で以下エラー／13.x 以前と 14.3 以降では実行可能）
db1=# \d db1.public.t1
Did not find any relation named "db1.public.t1".

（バージョン14.3 で以下エラー／13.x 以前では実行可能）
db1=# \d foo.bar.public.t1
improper qualified name (too many dotted names): foo.bar.public.t1
</pre>
<li>pg_ctl は、stop/restart/promote の動作を待機している間、postmasterプロセスが動作していることを再チェックするようになりました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
pg_ctl は、stop または promote シグナルを送信する一方で postmasterプロセスが動作していること（PID が有効であるか）を 1回確認しますが、その後は単純に PIDファイルが削除されるまで待機していました。postmaster が PIDファイルを削除したり、制御ファイルを更新したりせず、非正常に終了した場合、pg_ctl はタイムアウトになるまで待機していました。
</p>
<p>
これに替えて postmasterプロセスがまだ存在しているかをときどき再チェックするようになりました。
</p>
<li>pg_waldump のエラー処理が修正されました。  (Kyotaro Horiguchi, Andres Freund) (14)(13)(12)(11)</li>
<p>
WALセグメントサイズを知るために WALファイルを読み取ったとき、ファイルサイズが XLOG_BLCKSZ よりも小さい場合（例えば 0バイト）、pg_waldump は誤ったエラー報告をしていました。また、このエラーメッセージおよび関連するエラーメッセージで報告されるファイル名は無効である可能性がありました。
</p>
<pre>
（報告された誤ったメッセージ／正しくないファイル名や要因が示される）
pg_waldump: fatal: could not read file ".....": .....
</pre>
<li>contrib/pageinspect の関数が全てゼロのページに対応するようになりました。  (Michael Paquier) (14)(13)(12)(11)(10)</li>
<p>
これは正当な境界条件的ケースでしたが、このモジュールではほぼ想定されていませんでした。必要に応じて、NULL を返すか、行を返さないように変更されました。これは、エラーを発生させるよりも有効です。
</p>
<li>contrib/pageinspect で、破損したページの「特別な領域」に対する保護を追加し、正しいページサイズのチェックを強化し、不足していたインデックスの型チェックが追加されました。  (Michael Paquier, Justin Pryzby, Julien Rouhaud) (14)(13)(12)(11)(10)</li>
<p>
これらの変更により、モジュールが不良データでクラッシュする可能性が低くなりました。
</p>
<li>contrib/postgres_fdw で BEFORE INSERT ... FOR EACH ROW トリガが外部テーブルに存在する場合、バッチ挿入が無効にされました。  (Etsuro Fujita) (14)</li>
<p>
このようなトリガはテーブルを照会する際、手前で挿入した行を参照するかもしれません。バッチ挿入では、これらの行がまだ可視となってない可能性があるため、予期せぬ動作を回避するため、無効にされました。
</p>
<li>contrib/postgres_fdw で、リモートで順序付けされたクエリを要求する前にORDER BY句が安全に渡せることを検証し、必要に応じて USING句を含めるようになりました。  (Ronan Dunklau) (14)(13)(12)(11)(10)</li>
<p>
この修正はリモートサーバが意図と異なる順序で並べ替えるケースを防止します。これは見た目だけの場合もありますが、リモートデータがローカルで実行されるマージ結合の入力として使用されると、完全に間違った結果が生じる可能性がありました。
</p>
<li>sys/epoll.h があり、sys/signalfd.h はないプラットフォームを扱えるようにconfigure が修正されました。  (Tom Lane) (14)</li>
<li>LLVM 14 で動作するように JITコードが更新されました。  (Thomas Munro) (14)(13)(12)(11)</li>
<li>clang の -fsanitize=undefined オプションで様々な障害をクリーンアップするようになりました。  (Tom Lane, Andres Freund, Zhihong Yu) (14)(13)(12)(11)(10)</li>
<p>
これらの変更のほとんどは、C および POSIX 標準の文書に型通りに準拠するためのものであり、本番ビルドに影響を与える可能性はほとんどありません。
</p>
<li>OpenSSL なしでビルドする場合は、libpq の pkg-config ファイルに OpenSSL の依存関係を追加しないように修正されました。  (Fabrice Fontaine) (14)</li>
<li>式の中にネストされたステートメントをサポートしない CコンパイラでビルドできるようにPL/Perl が修正されました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<li>Windows でビルドに MSVC を使用していない場合に、pg_dumpall のビルドエラーが発生する可能性があり、修正されました。  (Andres Freund) (14)(13)(12)(11)(10)</li>
<p>
mingw の gcc によるビルドで問題が報告されました。
</p>
<li>Windowsビルドでは、pexports の代わりに gendef を使用してDEFファイルを作るようになりました。  (Andrew Dunstan) (14)(13)(12)(11)(10)</li>
<p>
これにより、ビルドプロセスが最新の MSys ツールチェーンで機能するように調整されました。
</p>
<li>MinGW でビルドされたプログラムでの余分なワイルドカードパターンの展開が防止されました。  (Andrew Dunstan) (14)(13)(12)(11)(10)</li>
<p>
何らかの理由で、MinGW によって提供される Cライブラリは、デフォルトでプログラムのコマンドライン引数のシェルワイルドカード文字を展開してしまいます。MSVC では特に発生しないため、これは混乱を招くのでパターン展開が無効化されました。
</p>
<li>タイムゾーンデータファイルが tzdata release 2022a に更新されました。パレスチナでの夏時間法の変更に加えて、チリ、ウクライナの歴史的修正が含まれます。   (14)(13)(12)(11)(10)</li>
<li>論理レプリケーションのサブスクライバにおける、サポートされていないテーブル種別に対するエラーメッセージが改善されました。  (Tom Lane) (12)(11)(10)</li>
<p>
バージョン13 以降のサーバは、パーティションテーブルのパブリッシュがサポートされるようになりました。バージョン13 より古いバージョンのサーバは、パーティションテーブルのサブスクライブを処理できず、「table ... not found on publisher」のような誤解を招くエラーメッセージを表示していましたが、より的確なメッセージを表示するように修正されました。
</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 11.15 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/11-15/</link>
		
		<dc:creator><![CDATA[データベース技術グループ]]></dc:creator>
		<pubDate>Thu, 17 Mar 2022 05:58:32 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 11]]></category>
		<category><![CDATA[PostgreSQL 11.14]]></category>
		<category><![CDATA[PostgreSQL 11.15]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=9404</guid>

					<description><![CDATA[このリリースは 11.14 からの修正リリース（2022年2月10日リリース）です。 11.X からのアップデートではダンプ、リストアは不要です。 しかしながら、本リリースで修正されたいくつかの障害により既にインデックス ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 11.14 からの修正リリース（2022年2月10日リリース）です。<br />
11.X からのアップデートではダンプ、リストアは不要です。<br />
しかしながら、本リリースで修正されたいくつかの障害により既にインデックスに破損が生じている可能性があるため、該当するインデックスを再構築することが推奨されます。<br />
また、11.14 よりも前のバージョンから移行する場合には <a href="/tech-blog/pgsql/11-14">11.14 のリリース情報</a>も確認してください。</p>
<p><span id="more-9404"></span></p>
<h3>PostgreSQL 11.14 から 11.15 への変更点</h3>
<p>14.2、13.6、12.10、11.15、10.20 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<ol>
<li>REINDEX CONCURRENTLY の問題を防止するため、TOAST テーブルの更新に標準のロックプロトコルが適用されました。  (Michael Paquier) (14)(13)(12)</li>
<p>
REINDEX CONCURRENTLY を TOASTテーブルまたは TOASTテーブルのインデックスに 適用した場合、破損したインデックスを生成することがよくありました。これは TOASTエントリを更新するセッションが、他の更新の動作と同様にトランザクションがコミットされるまで ROW EXCLUSIVE ロックを保持するのではなく、ROW EXCLUSIVE ロックをすぐに解放したために発生しました。今回 TOAST 更新が通常のルールに従ってテーブルロックを保持するよう修正されました。既存の破損したインデックスは、再度 REINDEX を実行することで修復できます。
</p>
<li>ページプルーニング中に RECENTLY_DEAD タプルが状態を完全に DEAD に変更した時の HOTチェーンの破損が修正されました。  (Andres Freund) (14)</li>
<p>
VACUUM では、それを指すリダイレクトアイテムが残っている状態で RECENTLY_DEAD のタプルを削除することがありえました。そのようなタプルのアイテムスロットが後に新しいタプルで再利用されると、既存の HOTチェーンの一部とみなされ、インデックス破損が形成されます。
</p>
<p>
発生した場合はテーブルのインデックス再作成で修復できます。しかし、これは非常に確率の低いシナリオであるため、発生したかもしれないという可能性だけでインデックスを再作成することは推奨されません。
</p>
<li>ローカルパーミッションと外部パーティションが混在するテーブルのEvalPlanQual再チェックでのクラッシュが修正されました。  (Etsuro Fujita) (14)</li>
<p>
EvalPlanQual再チェックは READ COMMITTED 隔離レベルの問い合わせで使われる処理です。
</p>
<li>COPY TO でのメモリ処理の誤りが修正されました。  (Bharath Rupireddy) (14)</li>
<p>
この見落としにより、COPY でエラーが発生した後、誤ったエラーメッセージやクラッシュが発生することがありました。
</p>
<li>同時に DROP STATISTICS で統計オブジェクトが削除された時に発生する ALTER STATISTICS での NULLポインタ参照によるクラッシュが回避されました。  (Tomas Vondra) (14)(13)</li>
<li>マルチ範囲型データから範囲を抽出する際に、アライメントのパディングが正しく処理されるようになりました。  (Alexander Korotkov) (14)</li>
<p>
この誤りは可変長データ型のマルチ範囲を処理する際にクラッシュを引き起こす可能性がありました。
</p>
<li>無名 RECORD データ型に対するハッシュの過度な楽観的使用が修正されました。  (Tom Lane) (14)</li>
<p>
これにより、「ERROR:  could not identify a hash function for type record」（型レコードのハッシュ関数を識別できない）のエラーが防止されます。
</p>
<li>パラレルで単一の子ノードを持つ Appendノードに対する誤ったプラン作成が修正されました。  (David Rowley) (14)(13)(12)</li>
<p>
場合によっては、Append が単純化されるべきではない時に単純化され、誤った問い合わせ結果（重複した行）が発生することがありました。
</p>
<p>
単一の子ノードを持つ Appendノードは、例えば「SELECT id, c FROM t1 UNION ALL SELECT id, c FROM t2 WHERE false」といった形を持つ問い合わせのプランで出現する可能性がありました。
</p>
<li>インデックスに返却不能の列が含まれる場合について、インデックスオンリースキャンプランが修正されました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
インデックスの列にはインデックスオンリースキャンで返すことができるか（返却可能列か返却不能列か）を示す、returnable属性があります。
</p>
<p>
インデックスが返却可能列と返却不能列の両方を持ち、返却不能列の 1つが返却可能列にあらわれるテーブル列を使用した式である場合、その式を使用した問い合わせは、返却可能列から式を再計算するのではなく、返却不能列を読もうとするインデックスオンリースキャンプランとなる可能性がありました。返却不能列は NULL として読み込まれるため、誤った問い合わせ結果が発生しました。
</p>
<pre>
（障害動作例／ここでの lower(c) は返却不能列）
db=# CREATE TABLE t9 (c text);
db=# INSERT INTO t9 VALUES (md5('A')), (md5('B'));
db=# CREATE INDEX ON t9 USING gist(lower(c) gist_trgm_ops) INCLUDE (c);
db=# SET enable_seqscan TO off;
db=# \pset null *NULL*
db=# SELECT lower(c), c FROM t9;
 lower  |                c
--------+----------------------------------
 *NULL* | 7fc56270e7a70fa81a5935b72eacbe29
 *NULL* | 9d5ed678fe57bcca610140957afab571
(2 rows)
</pre>
<li>Memoize の上位からきたパラメータを使用するサブプランを処理できるように、Memoizeプランノードが修正されました。  (David Rowley) (14)</li>
<p>
この障害により誤った問い合わせ結果が生じるケースが報告されました。
</p>
<li>Memoizeプランノードがハッシュ不可能な結合の演算子で正しく動作するように修正されました。  (David Rowley) (14)</li>
<p>
結合条件に不等号を使っている場合や浮動小数点データ型で 0.0 と -0.0 がある場合などで問題が生じました。この障害により、クラッシュや誤った問い合わせ結果が生じる可能性があります。
</p>
<li>指定されていない型修飾へのキャストにより、長さの強制関数の呼び出しではなく、RelabelTypeノードが生成されるようになりました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
強制関数は正しい動作（何もしないこと）を実行しますが、この変換は非効率で望ましくありません。
</p>
<p>
character(N) 型を bpchar 型にキャストする場合が該当します。
</p>
<li>anycompatible で始まる名前の疑似データ型（以下「anicompatible*」と記載）について一致判定が修正されました。  (Tom Lane) (14)(13)</li>
<p>
anicompatible* 型の多相パラメータを持つ関数や演算子が、実際には本当は一致しないはずの引数の集合に一致したと、パーサが誤判断することがありました。
</p>
<p>
報告されたケースでは、一つの呼び出しに複数の演算子を一致させることになり、「ERROR:  operator is not unique: ...」「HINT:  Could not choose a best candidate operator. You might need to add explicit type casts.」などのあいまいな演算子だというエラーを引き起こしました。一方、より後の処理段階でエラーを起こすこともあり得ました。
</p>
<li>ちょうど WALページの境界でデータベースが整合性を持つ状態に到達した場合の、WALリプレイ失敗が修正されました。  (&Aacute;lvaro Herrera) (14)(13)(12)(11)(10)</li>
<p>
修正されませんが、これは 9.6.x でも該当します。
</p>
<li>物理ストリーミングレプリケーションのスタンバイサーバの startup処理がトランザクションID 周回を許容するように修正されました。  (Abhijit Menon-Sen, Tomas Vondra) (14)(13)(12)(11)(10)</li>
<p>
プライマリ上のアクティブなトランザクションのセットが周回境界を越えている間にスタンバイサーバが起動すると（古いトランザクションよりも小さい XID を持つ新しいトランザクションがいくつか存在するため）、「ERROR: out-of-order XID insertion in KnownAssignedXids」エラーが生じました。再試行されますがこのエラーを乗り越えることはできません。
</p>
<li>ロジカルレプリケーションで子テーブルのデータの二重送信が回避されるようになりました。  (Hou Zhijie) (14)(13)</li>
<p>
パブリケーションに子テーブルと親テーブルの両方が含まれ、publish_via_partition_root オプションが設定されている場合、サブスクライバは子テーブルと親テーブルの両方で無駄な同期を開始していました。このような場合は親テーブルのみが同期されるようになりました。
</p>
<li>ロジカルレプリケーション接続で発行される SQLコマンドの字句制限が撤廃されました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
これまでは、引用符で囲まれていないセミコロンを含む SQLコマンド、奇数の一重引用符または二重引用符を含むドル引用符で囲まれたリテラル、または SQLコマンドがコメントで始まる場合、walsenderプロセスがエラーを起こしました。
</p>
<p>
さらに、不完全なエラーからの回復処理により以降のコマンドでも予期せぬエラーが発生する可能性がありました。
</p>
<li>ROLLBACK PREPARED 操作のレプリケーションに際して、レプリケーション元のタイムスタンプが確実に設定されるようになりました。  (Masahiko Sawada) (14)</li>
<li>トランザクションの最後のサブトランザクションのコミットタイムスタンプが記録されない可能性があり、修正されました。  (Alex Kingsborough, Kyotaro Horiguchi) (14)(13)(12)(11)(10)</li>
<li>チェックポイントに際して、pg_logical/mappingsサブディレクトリを必ず fsync するようになりました。  (Nathan Bossart) (14)(13)(12)(11)(10)</li>
<p>
一部のファイルシステムでは、この見落としによりシステムクラッシュ後に論理書き換えの状態ファイルが失われる可能性がありました。
</p>
<li>パーティションテーブルの拡張統計情報が作成されるようになりました。  (Justin Pryzby) (14)(13)(12)(11)(10)</li>
<p>
以前のバグ修正により、古い形式の継承ツリーに対する拡張統計の構築が無効になりましたが、パーティションテーブルに対する構築も無効になっており、不要な制限となっていました。今回の変更により、ANALYZE はパーティションテーブルの統計オブジェクトの値を計算できるようになりました。（しかし、autovacuum はパーティションテーブルを自動処理しないので、パーティションテーブルの統計情報を維持したい場合は、パーティションテーブルに対して定期的に手動 ANALYZE を実行する必要があることに注意してください。）
</p>
<li>継承ツリーの拡張統計情報を無視するようになりました。  (Justin Pryzby) (14)(13)(12)(11)(10)</li>
<p>
現在、拡張統計情報の値は継承ツリー全体ではなく各テーブルに対してローカルでのみ計算されます。しかし、この値が継承ツリーをまたがる問い合わせを計画する際に誤って参照されたため、デフォルトよりも悪い推定値になる可能性がありました。
</p>
<li>パーティションテーブルの行型が他の場所で複合型として使用されている場合、パーティションテーブルの列のデータ型を変更することが禁止されました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
この制限は通常のテーブルでは長い間存在していましたが、見落としによりパーティションテーブルではチェックされていませんでした。
</p>
<li>レプリカアイデンティティ(REPLICA IDENTITY) のインデックスの一部である列に対する ALTER TABLE ... DROP NOT NULL が禁止されました。  (Haiying Tang, Hou Zhijie) (14)(13)(12)(11)(10)</li>
<p>
同じ禁止事項はすでに主キーインデックスに存在していました。
</p>
<li>ALTER TABLE .. ADD PRIMARY KEY USING INDEX の実行に際して、キャッシュされたテーブルの状態が正しく更新されるようになりました。  (Hou Zhijie) (14)(13)(12)(11)</li>
<p>
同時実行中のセッションが、テーブルに主キーがあるかどうかに関する判定を更新できなかったため、不正なロジカルレプリケーションの動作が発生する可能性がありました。
</p>
<p>
パブリケーションしているテーブルの UPDATE で、テーブルに ALTER TABLE で主キーを設定した後であっても、以下エラーが発生する動作が報告されました。
</p>
<pre>
ERROR:  cannot update table ... because it does not have a replica identity and publishes updates
</pre>
<li>REPLICA IDENTITY インデックスから切り替えを行う際、キャッシュされたテーブルの状態が正しく更新されるようになりました。  (Tang Haiying, Hou Zhijie) (14)(13)(12)(11)(10)</li>
<p>
同時実行中のセッションが、どのインデックスが REPLICA IDENTITY であるかの判定を更新できなかったため、不正なロジカルレプリケーションの動作が発生する可能性がありました。
</p>
<li>SP-GiSTインデックス作成で、インデックス対象列のデータ型が演算子クラスの宣言された入力型とバイナリ互換性がある場合でもエラーとなっていたのが修正されました。  (Tom Lane) (14)</li>
<p>
このような場合は動作すべきでしたが以下のエラーが発生していました。
</p>
<pre>
ERROR:  compress method must be defined when leaf type is different from input type
</pre>
<li>最も古い xmin値を計算する際、並列のバキュームとインデックス同時構築を無視できるようにようになりました。  (Masahiko Sawada) (14)(13)</li>
<p>
並列化されていない処理では既に無視されていましたが、並列化されたロジックでは機能していませんでした。その結果、xmin の限界値の前進が抑えられることで、バキュームのクリーンアップが遅れるなどの望ましくない影響がありました。
</p>
<li>式インデックスを更新するときのメモリリークが修正されました。  (Peter Geoghegan) (14)</li>
<p>
式インデックスを持つテーブルの多くの行を更新する UPDATE 文は、大量のメモリを消費する可能性がありました。
</p>
<li>多数のオブジェクトの所有権を変更する REASSIGN OWNED BY コマンド実行中にメモリリークが発生しないように修正されました。  (Justin Pryzby) (14)(13)(12)(11)(10)</li>
<li>不要なキャッシュアクセスを回避することにより、ロジカル変更を送信する walsender のパフォーマンスが向上しました。  (Hou Zhijie) (14)(13)</li>
<li>pg_hba_file_rules ビューでの cert認証方式のオプションの表示が修正されました。  (Magnus Hagander) (14)(13)(12)</li>
<p>
認証方式が cert の場合、clientcert=verify-full が暗黙的に指定されますが、pg_hba_file_rules ビューは誤って clientcert=verify-ca と報告していました。
</p>
<li>pg_log_backend_memory_contexts() で対象とされるセッションが、結果をサーバのログのみに送信するよう修正されました。  (Fujii Masao) (14)</li>
<p>
以前は、client_min_messages のレベルを高く設定すると、接続しているクライアントにもログメッセージが送信される可能性がありました。これはクライアントが要求していない動作です（そしておそらくワイヤープロトコル違反でした）。
</p>
<li>INSERT .. VALUES のルールにおける行全体の変数の表示方法が修正されました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
行全体の変数は、var.* として出力されますが、ルールが再ロードされたときに個々の列に展開されるため、異なるセマンティクスとなっていました。これを防ぐために他の場所と同様に明示的なキャストが行われるようになりました。
</p>
<li>SQL標準の関数本体を逆コンパイルによって再構築したときに、INSERT ... SELECT 内の関数パラメータが適切に表示されるようになりました。  (Tom Lane) (14)</li>
<p>
これまでは、パラメータに名前が付いていても $n と出力されていました。
</p>
<li>空文字列に対して Unicode 文字列正規化を適用する場合の 1バイトのバッファオーバーランが修正されました。  (Michael Paquier) (14)(13)</li>
<p>
これによる実際の影響は、アライメントを考慮すれば限定的なものですが、デバッグビルドでは警告が発生していました。
</p>
<li>いくつかの誤ったアサートが修正または削除されました。  (Simon Riggs, Michael Paquier, Alexander Lakhin) (14)(13)(12)(11)(10)</li>
<p>
これらの誤りは、製品ビルドではなく、デバッグビルドのみ影響を受けました。
</p>
<li>libpq と ecpglib でマルチスレッド使用時における gettext() 初期化の競合状態が修正されました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
エラーメッセージのローカライズに失敗する可能性がありました。
</p>
<li>libpq の PQcancel関数から strerror を呼び出さないようになりました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
PQcancel はシグナルハンドラから安全に呼び出すことができるはずですが、strerror は安全ではありません。誤った使用法は、サーバへのキャンセルメッセージ送信に失敗した場合にのみ発生しますので、そのためおそらくこれまで報告がありませんでした。
</p>
<li>psql の \password コマンドで設定するパスワードは、接続元のユーザのものではなく、CURRENT_USER のものがデフォルトとなりました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
これはドキュメントの動作と一致し、セッション開始後の SET ROLE または SET SESSION AUTHORIZATION を実行した場合に発生し得るパーミッションエラーを避けます。また、混乱を防ぐために操作対象のロール名がパスワードプロンプトに含まれるようになりました。
</p>
<li>親テーブルのトリガを識別するように psql の \d コマンドのクエリが修正されました。  (Justin Pryzby) (14)(13)</li>
<p>
パーティションにトリガがあり、親テーブルにも同じ名前の無関係な文レベルトリガが存在した場合、以前のコードでは「ERROR: more than one row returned by a subquery used as an expression」というエラーが発生していました。
</p>
<li>psql の \d コマンドで、テーブルの拡張統計オブジェクトが OID でなく名前でソートされるようになりました。  (Justin Pryzby) (14)</li>
<li>psql の列挙型のラベルをタブを使って補完する機能が修正されました。  (Tom Lane) (14)(13)</li>
<li>Windows の標準入力からの読み込みをデータソースまたは宛先に使用したときの障害が修正されました。  (Dmitry Koval, Juan Jose Santamaria Flecha, Michael Paquier) (14)</li>
<p>
これは、psql の \copy コマンド、または pg_recvlogical で「-f -」を付けた場合に影響がありました。「could not stat file」エラーが発生しました。
</p>
<li>psql や 他のクライアントプログラムでは、Ctrl+C シグナルハンドラからのgettext() 呼び出しを避けるようになりました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
この誤りに起因する障害報告は確認されていませんが、gettext() は非同期シグナル安全な関数ではなく、安全とは言えません。
</p>
<li>pg_receivewal と pg_recvlogical の初期パスワード入力がキャンセルできるようになりました。  (Tom Lane, Nathan Bossart) (14)(13)(12)(11)(10)</li>
<p>
以前は、パスワード入力を求められている間、Ctrl+C でこれらのプログラムを終了することができませんでした。
</p>
<li>pg_dump がユーザ定義キャストをダンプするときの順序が、TYPE の直後、FUNCTION の手前に修正されました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
まれに、出力スクリプトがユーザ定義キャストを作成する前に参照してしまう場合がありました。
</p>
<li>pg_dump の --inserts と --column-inserts モードが修正され、以前削除された列と生成列の両方を含むテーブルを扱えるようになりました。  (Tom Lane) (14)(13)(12)</li>
<li>pg_dump と pg_basebackup での誤ったエラー報告の可能性が修正されました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
以前のコードでは、一部のカーネル呼び出しからのエラーをチェックできず、他のケースでは誤った errno 値を報告する可能性がありました。
</p>
<li>char(N) 列に対する contrib/btree_gist のインデックスによるインデックスオンリースキャン結果が修正されました。  (Tom Lane) (14)(13)(12)(11)(10)</li>
<p>
インデックスオンリースキャンでは末尾の空白が削除された列値が返されましたが、これはインデックス格納方法に起因したもので、想定の動作ではありませんでした。末尾空白の違いだけですが誤った問い合わせ結果です。
</p>
<p>
空白埋めをした char(N) 値を格納するようにコードが修正されました。インデックスの動作は REINDEX をしない限りすぐには反映されません。 REINDEX（インデックス再作成）をしない場合、空白が削除された値は、更新を行っていくなかで徐々に置き換えられていきます。インデックスオンリースキャン実行計画を使用しない問い合わせは、どの場合でも影響を受けません。
</p>
<li>postgres_fdw の非同期クエリの処理における稀なケースが修正されました。  (Etsuro Fujita) (14)</li>
<p>
これらのエラーは、外部テーブルのスキャンを並列化しようとすると、クラッシュまたは誤った問い合わせ結果を引き起こす可能性がありました。
</p>
<li>PL/Pythonの ビルド方法を決定するために、非推奨の distutils モジュールではなく、Python の sysconfig モジュールを使用するように configure が変更されました。  (Peter Eisentraut, Tom Lane, Andres Freund) (14)(13)(12)(11)(10)</li>
<p>
これにより Python 3.10 では distutils が非推奨になり Python 3.12 での削除が予定されている configure-time の警告が回避されます。 おそらく、Python 3.12 以降では configure --with-python は完全に失敗します。
</p>
<p>
sysconfig が Python 2.7 より前、また、Python 3.2 より前にも存在しなかったため、古くなった Python バージョンでの PL/Python のビルドはもはやできなくなります。
</p>
<li>OpenSSL なしでクロスコンパイルが再度可能となりました。  (Tom Lane) (14)</li>
<p>
configure ではターゲットシステムで /dev/urandom が使用可能であるはずと想定すべきでしたが、代わりに  configure が失敗していました。
</p>
<li>Windows 環境で Perl 5.28 以降を使用する PL/Perl コンパイルの失敗が修正されました。  (Victor Wagner) (14)(13)(12)(11)(10)</li>
<li>Python 3.11 以降での PL/Python コンパイルの失敗が修正されました。  (Peter Eisentraut) (14)(13)(12)(11)(10)</li>
<li>Visual Studio 2022 を使用したビルドがサポートされました。  (Hans Buschmann) (14)(13)(12)(11)(10)</li>
<li>MSVC ビルドシステムで .bat ラッパースクリプトを事前にディレクトリに移動することなく呼び出せるようになりました。  (Anton Voloshin, Andrew Dunstan) (14)(13)(12)(11)(10)</li>
</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>
