<?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 10.6 &#8211; SRA OSS Tech Blog</title>
	<atom:link href="https://www.sraoss.co.jp/tech-blog/tag/postgresql-10-6/feed/index.xml" rel="self" type="application/rss+xml" />
	<link>https://www.sraoss.co.jp/tech-blog/</link>
	<description>OSS専門の技術ブログ。PostgreSQL、Zabbixを中心に10種類以上のOSSの解説、アップデート情報、運用ヒントを提供。</description>
	<lastBuildDate>Fri, 30 Oct 2026 08:08:42 +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 10.6 &#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 10.7 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/10-7/</link>
		
		<dc:creator><![CDATA[高塚 遥 (Haruka Takatsuka)]]></dc:creator>
		<pubDate>Tue, 26 Feb 2019 02:03:35 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 10]]></category>
		<category><![CDATA[PostgreSQL 10.6]]></category>
		<category><![CDATA[PostgreSQL 10.7]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=1627</guid>

					<description><![CDATA[このリリースは 10.6 からの修正リリース（2019年2月14日リリース）です。 10.x からのアップデートではダンプ、リストアは不要です。 ただし、10.6 より前のバージョンから移行する場合には、10.6 のリリ ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 10.6 からの修正リリース（2019年2月14日リリース）です。</p>
<p>10.x からのアップデートではダンプ、リストアは不要です。<br />
ただし、10.6 より前のバージョンから移行する場合には、<a href="/tech-blog/pgsql/10-6/">10.6 のリリース情報</a>を確認してください。</p>
<p><span id="more-1627"></span></p>
<h3>PostgreSQL 10.6 から 10.7 への変更点</h3>
<p>11.2、10.7、9.6.12、9.5.16、9.4.21 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<hr />
<ol>
<li>データ破損を回避するため、デフォルトでは fsync() に失敗したときにリトライするのではなく PANIC を出すようになりました。  (Craig Ringer, Thomas Munro) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
fsync()は OS にバッファをストレージに確実に書き出しさせる命令です。PostgreSQL は PANIC になるとサービス全体が停止します。
</p>
<p>
いくつかの人気の OS はカーネルデータバッファを書き出しできないときに、そのバッファを廃棄し、fsync() に失敗したものとして報告します。ここで PostgreSQL が fsync()要求を再発行して成功したとしても、実際にはデータは既に失われているので、データベース破損の危険性が残ります。代わりに PANIC状態にすることで、次に WALからのリカバリができます。WAL にはおそらく、ここにしか残っていないデータのコピーが含まれているでしょう。この振る舞いは確かに見苦しく非効率的ですが、あまり代替策がなく、また、幸いにもこのようなことは大変稀にしか起きません。
</p>
<p>
本動作の制御のため、新たな設定パラメータ data_sync_retry が追加されました。PostgreSQL を動作させるプラットフォームのカーネルがこのようなときにダーティデータバッファを廃棄しないと確信できるなら、これを on に設定して、従来通りの振る舞いにすることができます。
</p>
<li>ドキュメントに全メジャーバージョン系列ではなく当該メジャーバージョン系列のリリースノートのみを含めるようになりました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
※本ページでは引き続き、各バージョン系列を統合した形でリリース情報を掲載します。
</p>
<li>パーティションテーブル上で INCLUDE列を含むユニークインデックスの処理が修正されました。  (&Aacute;lvaro Herrera) (11)</li>
<p>
このような場合にユニーク条件が適切に検査されませんでした。
</p>
<li>パーティションテーブルの NOT NULL制約が各パーティション内で確実に効くようになりました。  (&Aacute;lvaro Herrera, Amit Langote) (11)(10)</li>
<p>
以下のように実行したときにパーティション（子テーブル）に NOT NULL 制約が付与されない動作がありました。
</p>
<pre>
db=# CREATE TABLE t4 (a int DEFAULT 1, b int NOT NULL DEFAULT 0)
       PARTITION BY LIST (a);
db=# CREATE TABLE t4c1 PARTITION OF t4 (a NOT NULL, b DEFAULT 1)
       FOR VALUES IN (1);
db=# INSERT INTO t4 (b) VALUES (NULL);
（修正前はここで violates not-null constraint のエラーが出ない）
</pre>
<li>パーティションをデタッチするとき、パーティションテーブルの制約に対して、カタログ状態を適切に更新するようになりました。  (Amit Langote, &Aacute;lvaro Herrera) (11)</li>
<p>
これまでは、パーティションテーブルの制約に対するpg_constraint.conislocalフィールドが、不適切に 'f'（false）のままになって、制約が除去（DROP）不能になることがありました。
</p>
<p>
本マイナーバージョンでは既におかしくなっているフィールドの値自体は補正されません。ダンプ/リストアや pg_upgrade でこの問題を解消できます。また、必要であれば、このカタログのフィールドを手動で補正することができます。デタッチ済みのパーティションに対する制約の本フィールドの値は 't'（true）です。
</p>
<pre>
（フィールド値を確認する SQL の例）
db=# SELECT conname, conislocal FROM pg_constraint;
           conname            | conislocal
------------------------------+------------
 cardinal_number_domain_check | t
 yes_or_no_check              | t
 t1_pkey                      | t
     （後略）
</pre>
<li>外部キー制約を持つパーティションテーブルで、パーティションをアタッチ・デタッチするときに、外部キー制約のためのトリガを正しく作成・削除するようになりました。  (Amit Langote, &Aacute;lvaro Herrera) (11)</li>
<p>
パーティションをデタッチした後に外部キー制約が正しく動作しないケースや、外部キー制約の除去（DROP）が出来なくなるケースが報告されました。
</p>
<li>パーティションテーブルで不要な重複した外部キー制約の生成が回避されました。  (&Aacute;lvaro Herrera) (11)</li>
<p>
これまで、各パーティションに対する外部キー制約とパーティションテーブル全体に対する外部キー制約が同じであった場合、そのようなパーティションには重複して制約が付加されていました。
</p>
<p>
これからは、このような場合でも一つの外部キー制約だけ作られるようになります。
</p>
<li>パーティションテーブルに対して ONLY を使ってインデックスが作られ、かつ、未だ属するパーティションが無い場合に、直ちにインデックスが有効であると印付けされるようになりました。  (&Aacute;lvaro Herrera) (11)</li>
<p>
このような場合に INVALID になっていましたが、その後で INVALID を解除する（有効にする）手段がありませんでした。
</p>
<pre>
（これまで以下のように実行したとき、t8_id_idx が INVALID になっていました）
db=# CREATE TABLE t8 (id int, v text) PARTITION BY RANGE (id);
db=# CREATE UNIQUE INDEX t8_id_idx ON ONLY t8 (id);

（上記の t8_id_idx は後に以下のようにすれば、無意味な使用法ではありません）
db=# CREATE TABLE t8_1 PARTITION OF t8 FOR VALUES FROM (0) TO (1000) ;
db=# CREATE UNIQUE INDEX t8_1_id_idx ON ONLY t8_1 (id);
db=# ALTER INDEX t8_id_idx ATTACH PARTITION t8_1_id_idx;
</pre>
<li>パーティションのデタッチ時に安全なテーブルロックレベルを使うようになりました。  (&Aacute;lvaro Herrera) (11)(10)</li>
<p>
これまでのロックレベルは弱すぎで、同時のテーブルに対する DDL実行が可能で、悪い結果をもたらすかもしれませんでした。
</p>
<p>
具体的には、パーティションに対するロックで、ACCESS SHARE であったロックレベルが SHARE UPDATE EXCLUSIVE に変更されました。また、特に 11.x 以降バージョンにおいて、インデックスに対するロックの保持期間がトランザクション終了までに延ばされました。
</p>
<li>一時テーブルであるパーティションテーブルおよび継承を持つ親テーブルに ON COMMIT DROP と ON COMMIT DELETE ROWS を適用する際の問題が修正されました。  (Michael Paquier) (11)(10)</li>
<p>
トランザクションのコミット時に以下のエラーが発生するケースが報告されました。
</p>
<pre>
ERROR: XX000: could not open relation with OID 16420
</pre>
<li>パーティションテーブルに対する COPY FREEZE が禁止されました。  (David Rowley) (11)(10)</li>
<p>
このような COPY は意図せぬエラーが発生し、エラーが生じない場合も正しく動作していませんでした。これからは以下のエラーが出るようになります。
</p>
<pre>
ERROR:  cannot perform FREEZE on a partitioned table
</pre>
<li>インデックス列が高速デフォルトである時のインデックス破損が修正されました。  (Andres Freund) (11)</li>
<p>
高速デフォルトとは、既にデータが格納されているテーブルに対してNULL 以外のデフォルト値を指定した ALTER TABLE ... ADD COLUMN により追加した列であることを指します。バージョン11 からこのような場合にも ALTER TABLE が高速に実行されるようになりました。
</p>
<li>高速デフォルト値を持つテーブルに対するALTER TABLE ... ALTER COLUMN ... TYPE ... でクラッシュすることがあり、修正されました。  (Andrew Dunstan) (11)</li>
<p>
「高速デフォルト」については前項を参照してください。
</p>
<li>複数のバッファロックを取得するときにデッドロックの可能性があり、回避されました。  (Nishant Fnu) (11)(10)(9.6)(9.5)(9.4)</li>
<li>GIN の VACUUM処理と同時のインデックス挿入との間でのデッドロックが回避されました。  (Alexander Korotkov, Andrey Borodin, Peter Geoghegan) (11)(10)</li>
<p>
この修正はバージョン10 で導入された性能改善を部分的に元に戻します。それは GIN のポスティングツリーのページを削除するときに、ロックされるインデックスページ数を減らそうとするものでした。
</p>
<p>
なお、ここでのデッドロックは、デッドロック自動検出で ERROR を生じさせるものではなく、ハングアップを生じさせるものです。
</p>
<li>ホットスタンバイ問い合わせと GINインデックスのページ削除のリプレイとの間のデッドロックが回避されました。  (Alexander Korotkov) (11)(10)(9.6)(9.5)(9.4)</li>
<li>ロジカルレプリケーションで対象テーブルに式インデックスや部分インデックスが使われている場合に、クラッシュする可能性があり、修正されました。  (Peter Eisentraut) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
修正前バージョン同士のレプリケーションでクラッシュが起きるのは、通常はパブリッシャ側です。
</p>
<li>VACUUM FULL や CLUSTER などによるテーブル書き換え中において、高負荷で無用な TOASTデータのロジカルデコーディングを回避するようになりました。  (Tomas Vondra) (11)(10)(9.6)(9.5)(9.4)</li>
<li>同期レプリケーションが有効なときに、一部の WAL sender プロセスを止めるロジックが修正されました。  (Paul Guo, Michael Paquier) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
潜在的に同期レプリケーションによる保証を毀損するおそれがありました。また、9.4.xバージョンではアサート失敗を起こす可能性もありました。
</p>
<li>タプルを削除する WALレコードで誤ったレプリカアイデンティ属性を書き込む可能性があり、回避されました。  (Stas Kelvich) (11)(10)(9.6)(9.5)(9.4)</li>
<li>ビューや外部テーブルへの COPY のときに、WAL出力省略による最適化を誤って用いないように修正されました。  (Amit Langote, Michael Paquier) (11)(10)</li>
<p>
ここでのWAL出力省略による最適化とは以下のようなケースです。このときトランザクション内で作成するのがビューや外部テーブルであるなら、本来 WAL出力の省略はできません。
</p>
<pre>
BEGIN;
CREATE TABLE t21 (id int, v text);
COPY t21 FROM STDIN CSV;
1,aaaaa
2,bbbbb
.
COMMIT;
</pre>
<li>アーカイバが次にアーカイブするファイルを選ぶときにWALデータファイルよりも WALヒストリファイルを優先するようになりました。  (David Steele) (11)(10)(9.6)(9.5)</li>
<p>
これによりタイムライン変更の追随をより早期に行えるようになります。
</p>
<li>SET句に副問い合わせを使った UPDATE文でクラッシュする可能性があり、修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)</li>
<p>
なお、明らかにクラッシュが生じるのはバージョン 9.6.x と 10.x のみです。以下のような SQL でクラッシュする例が報告されました。
</p>
<pre>
db=# CREATE TABLE t23_1 (a VARCHAR(1));
db=# CREATE TABLE t23_2 (b VARCHAR(1));
db=# INSERT INTO t23_1 VALUES ('A');
db=# INSERT INTO t23_2 VALUES ('A');
db=# UPDATE t23_1 SET (a) = (SELECT b FROM t23_2 WHERE t23_2.b = t23_1.a)
       WHERE 'X' NOT IN ('Y', 'Z');
</pre>
<li>json_populate_recordset()、json_to_recordset()関数、および、これらの jsonb型版の関数に0行を与えたときのクラッシュが修正されました。  (Tom Lane) (11)</li>
<pre>
（クラッシュをひき起こす実行例）
db=# CREATE TYPE typ24 AS (id int);
db=# SELECT * FROM json_populate_recordset(NULL::typ24,'[]');
</pre>
<li>libxml2 ライブラリが null のエラーメッセージを返してきたときにバックエンドプロセスがクラッシュするのが回避されました。  (Sergio Conde G&oacute;mez) (11)(10)(9.6)(9.5)(9.4)</li>
<li>多数の列（およそ 800 以上）を持つテーブルに対する誤った JIT のタプルデフォーミングが修正されました。  (Andres Freund) (11)</li>
<p>
SQL実行時のバックエンドプロセスのクラッシュが報告されました。
</p>
<li>ハッシュによるグルーピングで性能と余分なメモリ使用の問題がいくつか修正されました。  (Andres Freund) (11)</li>
<li>照合順序の割り当ての誤動作により、不要なグルーピング関係のパーサエラーが生じていたものが修正されました。  (Andrew Gierth) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
一部のケースでは、照合順序が適用されるデータ型での処理があるときに、マッチすべき式がマッチしませんでした。すなわち、誤った問い合わせ結果が返る可能性があります。
</p>
<p>
CASE式とグループ化（GROUP BY）を使った問い合わせで障害が報告されました。
</p>
<li>CALL文の引数で照合順序の影響をうける式のパースが修正されました。  (Peter Eisentraut) (11)</li>
<p>
例えば以下のような CALL文は 'a' と 'b' が当該ロケールでどちらが先になるかということの影響を受けます。修正前はこのような場合にロケールに基づく照合順序が反映されませんでした。
</p>
<pre>
db=# CALL proc29(least('a', 'b'), 'c');
</pre>
<li>CALL文の引数リストでエラーを発見した後に適切なクリーンアップ処理が確実に行われるようになりました。  (Tom Lane) (11)</li>
<p>
引数に関するエラーが出る CALL文を繰り返し実行したときに、2回目以降に不適切なエラーメッセージが出る動作が報告されました。
</p>
<li>LEAST() または GREATEST() の元となっている Btree の比較関数が LEAKPROOF であるかを検査するようになりました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これまで検査していませんでした。実際の Btree 比較関数からの情報漏れを起こすのは一般に困難ですが、原理的には起こりえます。
</p>
<li>Gatherプランノードの上と下の両方に入れ子ループを伴う問い合わせについて、誤ったプラン作成が修正されました。  (Tom Lane) (11)(10)(9.6)</li>
<p>
誤った問い合わせ結果が返る動作が報告されました。
</p>
<p>
両階層の入れ子ループが同じ変数を各々のプランナツリー構造上の右手側に渡す必要がある場合、誤ったプランが生成されると考えられます。
</p>
<li>外部テーブルのスキャン時にラテラル参照が評価されなければならないという問い合わせの、誤ったプラン作成が修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
LATERAL句による副問い合わせを伴う外部テーブルに対する SELECT文で以下のようなエラーが出るケースが報告されました。
</p>
<pre>
ERROR:  attribute number 2 exceeds number of columns 1
</pre>
<li>行比較の最初の列がインデックス列と一致して、しかし続く列は一致せず、また、インデックスが INCLUDE列を持っているときに、プランナがエラーになるのを修正しました。  (Tom Lane) (11)</li>
<p>
以下のようなエラーが発生します。
</p>
<pre>
db=# CREATE TABLE t34 (c1 int, c2 int, c3 int, c4 int,
       CONSTRAINT covering PRIMARY KEY (c1, c2) INCLUDE (c3, c4));
db=# SELECT * FROM t34 WHERE (c1, c2, c3) &lt; (1, 2, 3);
ERROR:  operator 97 is not a member of opfamily 8
</pre>
<li>稀な場合のマージ結合コストの過小見積を修正しました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
外側のキー範囲が内側のキー範囲よりもとても小さいときに、たとえ内側に重複キーが大量にあって不適切な選択であるとしても、プランナがマージ結合を好んでいた可能性があります。
</p>
<li>問い合わせが何千ものインデックス利用可能な項を含むときの O(N^2) でのプラン作成時間の増大が回避されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<li>属するテーブルが多い大規模な継承あるいはパーティショニングテーブルに対して、プラン作成速度が改善されました。  (Amit Langote, Etsuro Fujita) (11)</li>
<p>
1000パーティションのパーティションテーブルで 11.1バージョンのプラン作成時間が10.x や 11.0 と比べて 1000倍以上になる動作が報告されました。
</p>
<li>ANALYZE の同時更新された行の処理が改善されました。  (Jeff Janes, Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これまで、実行中のトランザクションで削除された行を ANALYZE の統計情報採取では無視していましたが、これを含めるのと比べてより大きな不整合をもたらすことがわかりました。これからは事実上、ANALYZE開始時の MVCCスナップショットに一致するようになりました。
</p>
<li>TRUNCATE が他セッションの一時テーブルである継承子テーブルを無視するようになりました。  (Amit Langote, Michael Paquier) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これは TRUNCATE を他のコマンドの振る舞いに合わせます。これまでは、このような場合にたいていエラーになっていました。
</p>
<p>
以下の動作が発生します。
</p>
<pre>
db=# CREATE TABLE t39 (id int);

    （別セッションで）
    db=# CREATE TEMP TABLE t39c (LIKE t39) INHERITS (t39);

db=# TRUNCATE t39;
ERROR:  cannot truncate temporary tables of other sessions
</pre>
<li>正しいテーブルに対する実行時統計情報のカウンタを更新するように TRUNCATE が修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)</li>
<p>
TRUNCATEするテーブルが TOASTテーブルを持っている場合、TOASTテーブルのカウンタが代わりにリセットされていました。
</p>
<li>ALTER TABLE .. ONLY ADD COLUMN .. IF NOT EXISTS が正しく動作するように修正されました。  (Greg Stark) (11)(10)(9.6)</li>
<p>
「ONLY」を付けると「IF NOT EXISTS」指定が効きませんでした。
</p>
<pre>
db=# CREATE TABLE t41 (c1 int);
db=# ALTER TABLE ONLY t41 ADD COLUMN IF NOT EXISTS c1 int;
ERROR:  column "c1" of relation "t41" already exists
（IF NOT EXISTS 指定が効かない）

db=# ALTER TABLE t41 ADD COLUMN IF NOT EXISTS c1 int;
NOTICE:  column "c1" of relation "t41" already exists, skipping
ALTER TABLE
（ONLY が無ければ機能する）
</pre>
<li>ホットスタンバイで UNLISTEN が可能になりました。  (Shay Rojansky) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
ホットスタンバイで LISTEN はできないので、これは必然的に何もしません。しかしながらダミー操作を可能にすることで、クライアントでのセッション状態のリセットを簡単にします。
</p>
<li>一部のスキーマとデータ型のアクセス制御リストでのロールの依存性の欠落が修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
一部の場合に許可を与えられたロールを落としてしまうことがあり得ました。これが直ちに問題をひき起こすことはありませんが、後のダンプ/リストアや pg_upgrade実行で失敗します。症状としては、全てが数字のロール名に権限を付与しようとします。
</p>
<p>
以下は pg_upgrade の中で pg_restore を実行したときのエラー発生例です。
</p>
<pre>
pg_restore: [archiver (db)] could not execute query: ERROR: role "33757" does not exist
Command was: GRANT ALL ON SCHEMA "regress_rls_schema" TO "33757";
</pre>
<li>二相トランザクション内でセッションの一時スキーマの使用が防止されました。  (Michael Paquier) (11)(10)</li>
<p>
二相トランザクション内で一時テーブルにアクセスすることは、長らく禁止されていましたが、一時オブジェクトに対する他の操作で問題が起きる可能性がまだありました。
</p>
<li>外部キー制約を追加または削除した後、確実にリレーションキャッシュが適切に更新されるようになりました。  (&Aacute;lvaro Herrera) (11)(10)(9.6)</li>
<p>
この見落としにより、既存セッションにおいて新たに作られた制約が効かなかったり、削除された制約が継続して効いていたりする可能性がありました。
</p>
<li>制約の名前変更の後、適切にリレーションキャッシュが適切に更新されるようになりました。  (Amit Langote) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
ALTER TABLE ... RENAME CONSTRAINT ... TO ... を実行した後に、続いてそのテーブルに関連する DDL を実行したときに、変更する前の名前の制約が存在しないという以下のようなエラーが出る動作が報告されました。
</p>
<pre>
ERROR:  constraint "const_aaa" for table "t46" does not exist
</pre>
<li>同時実行のホットスタンバイ問い合わせに不整合状態を参照されないように、GiSTインデックスのマイクロVACUUM操作のリプレイが修正されました。  (Alexander Korotkov) (11)(10)(9.6)</li>
<li>空の GINインデックスページの早過ぎる回収を防止しました。これは同時実行の検索で失敗をひき起こしていました。  (Andrey Borodin, Alexander Korotkov) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
本障害によりハングアップが生じるケースが報告されました。
</p>
<li>浮動小数点から整数への型変換での限界値の障害が修正されました。  (Andrew Gierth, Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
最大の有効な整数値を僅かに上回る値は拒絶されないおそれがありました。それで、オーバーフローして、替わりに最小の有効な整数が生じました。また、最小あるいは最大の整数値に丸めるべき値が誤って拒絶されるかもしれませんでした。
</p>
<pre>
（障害動作例）
db=# SELECT '32767.4'::float8::int2;
ERROR:  smallint out of range
　→ 32767 となるべき

db=# SELECT '9223372036854775807'::float8::int8;
         int8
----------------------
 -9223372036854775808
(1 row)
　→ 「ERROR:  bigint out of range」を出すべき
</pre>
<li>pg_hba.conf の LDAP認証の ldapserverパラメータにおける、ホスト名のスペース区切りリストのパースが修正されました。  (Thomas Munro) (11)</li>
<p>
以下のエラーになって、複数ホストの指定が動作しないことが報告されました。
</p>
<pre>
LOG:  could not initialize LDAP: Bad parameter to an ldap routine
</pre>
<li>PAM認証要求を構成するときに、接続が Unixソケット経由の場合には、PAM_RHOST変数を設定しないようになりました。  (Thomas Munro) (11)(10)(9.6)</li>
<p>
これまでは、この変数に「[local]」を設定していましたが、これはホスト名であるはずなので全く役に立ちませんでした。「[local]」の文字列で DNS検索が発生して認証によけいな遅延が生じました。
</p>
<li>client_min_messages に ERROR より高レベルを設定することが禁止されました。  (Jonah Harris, Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これまでは FATAL や PANIC を設定して、通常のエラーメッセージをクライアントに送らないようにすることができました。しかしながら、これは PostgreSQLプロトコル仕様で提示される保証事項に反し、一部のクライアントを大変に混乱させます。
</p>
<p>
リリース済みのバージョン系列においては、FATAL、PANIC の設定は ERROR と解釈されます。バージョン 12.x 以降においては、これら設定は拒絶されます。
</p>
<li>ecpglib が setlocale() よりも優先して uselocale() や _configthreadlocale()を使うように修正しました。  (Michael Meskes, Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
setlocale() がスレッドローカルでなく、おそらくスレッドセーフでもないため、以前のコードはマルチスレッド化された ecpgアプリケーションで問題を起こしました。
</p>
<li>ecpg の SQLDA（SQL Descriptor Area）を通して渡された数値データに対する誤った結果を修正しました。  (Daisuke Higuchi) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
ゼロから始まる値が正しくコピーされませんでした。
</p>
<li>psql の、書き出し先を指定した g メタコマンドが COPY TO STDOUT で動作するように修正されました。  (Daniel V&eacute;rit&eacute;) (11)(10)(9.6)(9.5)</li>
<p>
これまでは g は COPYコマンドを実行できましたが、g の書き出し先オプションは何であれ無視されていて、データはいつでも通常の問い合わせの出力先に出されていました。
</p>
<li>psql の LaTeX出力形式が特殊文字を適切に処理できるようになりました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
バックスラッシュやその他の ASCII記号文字が正しく処理されず、ドキュメントの構文エラーや誤った文字の出力をもたらしていました。
</p>
<li>pgbench の乱数生成が --random-seed=N が指定された場合には完全に決定的でプラットフォーム独立になりました。  (Fabien Coelho, Tom Lane) (11)</li>
<p>
プラットフォームによっては標準ライブラリの srandom()/random() が非決定的な乱数を返すことがあるため、PostgreSQL自身で実装した乱数生成関数を用いるようになりました。
</p>
<li>一時ファイルを適切に無視するように pg_basebackup と pg_verify_checksums が修正されました。  (Michael Banck, Michael Paquier) (11)</li>
<li>pg_dump の間接的に主キーに依存するマテリアライズドビューの処理が修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
本障害はこのようなビューに対して紛らわしいダンプアーカイブエントリをもたらし、アーカイブ項目が正しいセクション順序に無いという無害な警告をひき起こしました。「--section」など、このラベルに依存している選択的なリストアのオプションでは、無害でもなくて、誤動作するかもしれません。
</p>
<p>
以下の WARNING が発生します。
</p>
<pre>
pg_dump: [archiver] WARNING: archive items not in correct section order
</pre>
<li>pg_dump が ALTER INDEX .. SET STATISTICS .. コマンドを含むようになりました。  (Michael Paquier) (11)</li>
<p>
インデックス式に統計情報ターゲット数を付与できるようになったときに、pg_dump についても対応すべきところ、取りこぼされていて、ダンプ/リストアで設定が失われていました。
</p>
<li>pg_dump の OID を持ったテーブルのダンプが修正されました。  (Peter Eisentraut) (11)</li>
<p>
最初のテーブルに対して、必要な場合でも WITH OIDS句が取りこぼされていました。
</p>
<li>pg_dump や pg_restore がエラー報告しようとするときの、一部プラットフォームでの NULLポインタ参照によるクラッシュが回避されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<li>contrib/amcheck からのインライン圧縮データによる偽性のインデックス破損報告が防止されました。  (Peter Geoghegan) (11)</li>
<li>COPY FROM PROGRAM がプログラム出力の読み込みを早期に止めるときに、SIGPIPEエラーを適切に無視するようになりました。  (Tom Lane) (11)(10)</li>
<p>
このケースは実際のところ直接の COPY では到達可能でありませんが、contrib/file_fdw を使うときには発生する可能性があります。
</p>
<li>バージョン8.4 以前で作られた空の hstore値に対するハッシュ値を正しく計算するように contrib/hstore が修正されました。  (Andrew Gierth) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これまでの実装では新たなバージョンで作られた空の hstore値に対して同じ結果を返しませんでした。そのため、ハッシュ結合やハッシュ集約で誤った結果がもたらされる可能性がありました。テーブルに8.4以前に当初格納されたデータが含まれていて、これまでダンプ/リストアをしていない場合、hstore型の列に対するハッシュインデックスを全て再作成することが推奨されます。
</p>
<li>contrib/intarray の gist__int_opsインデックスクラスに大きな入力を与えた場合の、クラッシュと過大な実行時間が回避されました。  (Andrew Gierth) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
intarray拡張を使って整数配列にインデックスを作って、データを投入するとき、クラッシュする動作が報告されました。また、巨大なメモリ確保を試みて「ERROR:  invalid memory alloc request size ...」になるケースもあります。
</p>
<li>configure で python が見つからないとき、python3 と python2 を探すようになりました。  (Peter Eisentraut) (11)(10)</li>
<p>
バージョン番号付きの python実行ファイルが無いプラットフォームで、明示的に PYTHON 変数を指定することなく PL/Python が設定できるようになります。
</p>
<li>インストールされるヘッダファイルに JITに関するヘッダが含まれるようになりました。  (Donald Dong) (11)</li>
<li>pgxs によるビルドにて新たな Makefile変数 PG_CFLAGS、PG_CXXFLAGS、PG_LDFLAGS がサポートされました。  (Christoph Berg) (11)(10)(9.6)(9.5)(9.4)</li>
<li>Perlコードのビルドスクリプトで、最近の perl は '.' を検索パスに含まないことを想定するようになりました。  (Andrew Dunstan) (11)(10)(9.6)(9.5)(9.4)</li>
<li>OpenBSD のサーバコマンドラインオプション解析問題が修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<li>set_rel_pathlist_hook を呼び出す箇所が変更され、拡張機能がそのフックを使ってパラレルクエリの部分パスを提供できるようになりました。  (KaiGai Kohei) (11)(10)(9.6)</li>
<p>
既存のユースケースには影響を与えないと考えられます。
</p>
<li>タイムゾーンデータファイルが tzdata release 2018i に更新されました。   (11)(10)(9.6)(9.5)(9.4)</li>
<p>
カザフスタン、メトラカットラ、サントメ・プリンシペの夏時間法の変更、香港と多数の太平洋諸島での歴史的修正が含まれます。
</p>
<p>
また、カザフスタンの Qyzylordaゾーンは 2つに分かれ、新ゾーン Asia/Qostanay が作られました。一部の地域は UTCオフセットを変更しません。
</p>
<li>autovacuum が、残った一時テーブルをより積極的に削除するように、また、DISCARD TEMP の際にも残った一時テーブルを削除するようになりました。  (&Aacute;lvaro Herrera) (10)(9.6)(9.5)(9.4)</li>
<p>
これにより、クラッシュしたセッションの残骸がより速やかに片付けられます。
</p>
<li>赤黒木(red black tree)のサポート関数が rb プレフィックスを使わず、rbt プレフィックスを使うように改名されました。  (Tom Lane) (10)</li>
<p>
これにより PL/Ruby を壊す Ruby 関数との名前衝突を避けます。影響を受ける他の拡張は無いと思われます。PostgreSQL 11.1 で修正されていましたが、10.x 系列にも適用されました。
</p>
<li>configureで選択されるスレッド関連のコンパイラフラグとライブラリが、以降のPostgreSQLリリースに一致するように調整されました。  (Tom Lane) (9.5)(9.4)</li>
<p>
9.4および9.5バージョン系列で以前に使われたコードは、一部の新しいプラットフォームでは完全に失敗するため、9.6以降で使われるものに一致されました。
</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 10.6 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/10-6/</link>
		
		<dc:creator><![CDATA[データベース技術グループ]]></dc:creator>
		<pubDate>Thu, 06 Dec 2018 12:32:46 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 10]]></category>
		<category><![CDATA[PostgreSQL 10.5]]></category>
		<category><![CDATA[PostgreSQL 10.6]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=911</guid>

					<description><![CDATA[このリリースは 10.5 からの修正リリース（2018年11月8日リリース）です。 10.x からのアップデートではダンプ、リストアは不要です。 しかしながら、pg_stat_statements拡張を使っている場合は修 ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 10.5 からの修正リリース（2018年11月8日リリース）です。</p>
<p>10.x からのアップデートではダンプ、リストアは不要です。<br />
しかしながら、pg_stat_statements拡張を使っている場合は修正を適用するための操作が必要です。<br />
以下の関連する項目を参照してください。<br />
また、10.4 より前のバージョンからアップデートを行う場合は 10.4 に関する技術情報を参照してください。</p>
<p><span id="more-911"></span></p>
<h3>PostgreSQL 10.5 から 10.6 への変更点</h3>
<p>11.1、10.6、9.6.11、9.5.15、9.4.20、9.3.25 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<hr />
<ol>
<li>pg_dump が CREATE TRIGGER ... REFERENCING コマンドを出力するときに遷移テーブル名を確実にクォートするようになりました。  (Tom Lane) (11)(10)</li>
<p>
この見逃しは、ダンプのリストアや pg_upgrade実行で権限の無いユーザがスーパーユーザ権限を得るようにする攻撃を可能にしていました。(CVE-2018-16850)
</p>
<li>各パーティションの子インデックスを作るときに、パーティションインデックスに対して指定されたテーブルスペースを適用するようになりました。  (&Aacute;lvaro Herrera) (11)</li>
<p>
これまでは、子インデックスは常にデフォルトテーブルスペースに作られていました。
</p>
<li>複数バッチ動作のパラレルハッシュ左外部結合で NULL の扱いが修正されました。  (Andrew Gierth, Thomas Munro) (11)</li>
<p>
ハッシュキーに NULL値を伴う外側リレーションの行が、結合結果から抜け落ちていました。本障害のため enable_parallel_hash = on のときに、誤った問い合わせ結果が返る可能性がありました。
</p>
<li>定数テスト式を持った CASE句の中にある配列型のキャスト式の不正な処理が修正されました。  (Tom Lane) (11)</li>
<p>
以下のような奇妙な動作が発生していました。
</p>
<pre>
（enum_range関数は配列 '{e,f,g}' を返すので '{a,b,c,d,e,f,g}' が正しい結果）
db=# CREATE TYPE typ_efg AS ENUM ('e', 'f', 'g');
db=# SELECT
       CASE 'foo'::text WHEN 'foo'
         THEN ARRAY['a', 'b', 'c', 'd'] || enum_range(NULL::typ_efg)::text[]
         ELSE ARRAY['x', 'y']
       END;
         array
-----------------------
 {a,b,c,d,foo,foo,foo}
(1 row)
</pre>
<li>最近に追加した列が欠けた不正なタプル展開が修正されました。  (Andrew Dunstan, Amit Langote) (11)</li>
<p>
本障害により、最近に追加された列をもつテーブルの制約トリガ動作でクラッシュをひき起こすことが知られています。また、その他の症状を示す可能性もあります。
</p>
<pre>
（知られている障害発生パターン）
db=# CREATE TABLE leader (a int PRIMARY KEY, b int);
db=# CREATE TABLE follower (a int REFERENCES leader ON DELETE CASCADE, b int);
db=# INSERT INTO leader VALUES (1, 1), (2, 2);
db=# ALTER TABLE leader ADD c int;
db=# ALTER TABLE leader DROP c;
db=# DELETE FROM leader;
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
</pre>
<li>CALLの引数リストで、名前付けされた引数やデフォルト値が付与された引数での誤りが修正されました。  (Tom Lane, Pavel Stehule) (11)</li>
<p>
CALLでそのような引数をもつプロシージャを実行するときに、エラーが発生する動作が報告されていました。
</p>
<li>「ORDER BY 列」を伴う STRICTな集約で、STRICT検査が修正されました。  (Andrew Gierth, Andres Freund) (11)</li>
<p>
STRICTな集約とは NULLを処理対象から除外する動作をするものです。ORDER BY を付与したときこの動作が働きませんでした。
</p>
<pre>
（1 が返るのが正しいが、NULLが返っていた）
 db=# SELECT min(x ORDER BY y) FROM (VALUES(1, NULL)) AS d(x,y);
  min
 -----
 
 (1 row)
</pre>
<li>recheck_on_update の最適化が無効にされました。  (Tom Lane) (11)</li>
<p>
これはバージョン11から登場した最適化機能ですが、クラッシュをひき起こすとがあり、ひとまず無効化されました。
</p>
<li>親テーブル（＝パーティションテーブル）のトリガによるパーティション作成が防止されました。  (Amit Langote) (11)(10)</li>
<p>
クラッシュをひき起こすことがありました。理想的にはこのような使い方も可能とすべきですが当面は禁止とされました。トリガ駆動時に以下のようなエラーが出るようになります。
</p>
<pre>
ERROR:  cannot ALTER TABLE "..." because it is being used by active queries in this session

ERROR:  cannot CREATE TABLE .. PARTITION OF "..." because it is being used by active queries in this session
</pre>
<li>ON COMMIT DELETE ROWS を一時パーティションテーブルに適用する場合の問題が修正されました。  (Amit Langote) (11)(10)</li>
<p>
このような一次パーティションテーブルを作るときに以下のようなエラーが発生していました。
</p>
<pre>
db1=# CREATE TEMP TABLE t10 (id int, v text)
        PARTITION BY RANGE (id) ON COMMIT DELETE ROWS;
ERROR:  could not open file "base/16543/t3_45678": No such file or directory
</pre>
<li>Windows において、U+FFFF より上の Unicode文字に対してエラーを起こさないように、文字クラス検査が修正されました。  (Tom Lane, Kenji Uno) (11)(10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
この障害はテキスト検索、contrib/ltree、contrib/pg_trgm に影響があります。絵文字に対して pg_trgm の関数を実行して以下エラーが出る例が報告されました。
</p>
<pre>
ERROR: invalid multibyte character for locale
</pre>
<li>既に受け取っている NOTIFY や SIGTERM割り込みの処理を、クライアント入力を待つより前に実行するようになりました。  (Jeff Janes, Tom Lane) (11)(10)(9.6)(9.5)</li>
<p>
以前はより早くに処理されていたのが、9.6.3、9.5.7 のリリースから本修正前まででは、後回しに処理されるようになっていました。
</p>
<li>繰り返して SP-GiSTインデックスをスキャンする場合のメモリリークが修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
SP-GiST を使った排他制約が一つのコマンドで多数の新たなインデックスエントリを受け付ける場合に、大きなリーク量が生じることが知られています。
</p>
<li>既存のレプリケーションスロットに対応するには低すぎる wal_level が設定されているときには、サーバ起動しないようになりました。  (Andres Freund) (11)(10)(9.6)(9.5)(9.4)</li>
<li>各 PQnotifies() を呼ぶ前に PQconsumeInput() を呼ぶように psql が修正され、libpq のドキュメントのサンプルも修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)</li>
<p>
これは psql が NOTIFYメッセージ受信を次コマンドまで報告しないケースを修正します。
</p>
<li>pg_verify_checksums で、どのファイルをチェックサム検査すべきかの判断が修正されました。  (Michael Paquier) (11)</li>
<p>
一部ケースでチェックサムを持つと想定されないファイルについて、問題報告されることがありました。
</p>
<li>contrib/pg_stat_statements でpg_read_all_statsロールが pg_stat_statements_reset() を実行することが禁止されました。  (Haribabu Kommi) (10) (11)</li>
<p>
pg_read_all_stats は全ての統計情報が参照できるという意味であるため、データを変更できることは不適切でした。変更の反映には導入先の各データベースで以下コマンド実行が必要です。
</p>
<pre>
ALTER EXTENSION pg_stat_statements UPDATE;
</pre>
<li>赤黒木のサポート関数のプレフィックスが rb ではなく rbt に変更されました。  (Tom Lane) (11)</li>
<p>
Ruby の関数との名前衝突を回避します。PL/Ruby を導入する場合に問題がありました。
</p>
<li>macOS 10.14 でのビルドの問題が修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
PL/Perl と PL/Tcl のビルドに失敗していました。対応として、configureスクリプトが CPPFLAGS に -isysroot を加えるようになりました。そのほか、macOS むけにビルドスクリプトがいくつか修正されました。
</p>
<li>MSVC でのビルドとリグレッションテストのスクリプトが最近の Perlバージョンで動作するように修正されました。  (Andrew Dunstan) (11)(10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
Perlは最早カレントディレクトリをデフォルトではサーチパスに含めず、本修正はこれに対応したものです。
</p>
<li>Windows で Administratorアカウントによるリグレッションテストが可能になりました。  (Andrew Dunstan) (11)(10)(9.6)(9.5)</li>
<p>
Administratorアカウントから駆動したとしても安全であるように、実行プロセスは制約された権限で動作するようになっています。
</p>
<li>タイムゾーンデータファイルが tzdata release 2018g に更新されました。   (11)(10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
チリ、フィジー、モロッコ、ロシア（ヴォルゴグラード）の夏時間法の変更と、中国、ハワイ、日本、マカオ、北朝鮮の歴史的修正が含まれています。
</p>
<li>has_*_privilege() 関数群が、稀なケースでエラーになる障害が修正されました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
これら関数はオブジェクトの不正な OID与えられたときエラーではなく NULLを返すことが期待されていますが、一部においてそうなっていませんでした。さらに、has_column_privilege() 関数は一部プラットフォームでクラッシュする可能性がありました。
</p>
<li>pg_get_partition_constraintdef() が、不正なリレーション OID を渡されたときに、エラーを出すのではなく NULL を返すように修正されました。  (Tom Lane) (10)</li>
<li>長い文字列に対して正規表現でマッチングする関数や分割する関数を使うとき、O(N^2) オーダーで遅延するのを回避するように修正されました。  (Andrew Gierth) (10)(9.6)(9.5)(9.4)(9.3)</li>
<li>標準の複数文字演算子のパース処理が修正されました。  (Andrew Gierth) (10)(9.6)(9.5)</li>
<p>
この障害によりパースエラーや不正な優先順位が生じる可能性がありました。演算子の後に数値の + や -、あるいはコメント開始記号の -- や /* が続いている場合に誤認されるケースがありました。
</p>
<pre>
（報告された障害動作例）
db=# CREATE FUNCTION f26(a int) RETURNS int LANGUAGE sql
        AS $$ SELECT a; $$;
db=# SELECT f26(a =&gt; -1);
 f
----
 -1
(1 row)

db1=# select f(a =&gt;-1);
ERROR:  column "a" does not exist
</pre>
<li>+ や - 文字による長い文字列の字句解析で O(N^3) オーダーでの遅延を回避するように修正されました。  (Andrew Gierth) (10)(9.6)(9.5)(9.4)(9.3)</li>
<li>外側の問い合わせが逆向きにスキャンされているときの SubPlans の誤った実行が修正されました。  (Andrew Gierth) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
カーソルを使って FETCH BACKWARD で結果を取得する場合に誤った SELECT結果が返る動作が報告されていました。実行プランとして逆向きスキャンが選ばれる場合にも問題が起きる可能性があります。
</p>
<li>カーソルを巻き戻した後に「UPDATE/DELETE ... WHERE CURRENT OF ...」コマンドがエラーになる動作が修正されました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
複数のリレーション（特に親テーブルを継承した複数のテーブルなど）をスキャンするカーソルは、手前のリレーションに巻き戻された場合に誤動作を起こす可能性がありました。
</p>
<li>EvalPlanQual が条件実行される InitPlans を適切に扱えるように修正されました。  (Andrew Gierth, Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
同時更新をしたときに、なかなか再現しないクラッシュや誤った問い合わせ結果が生じていました。CASE や COALESCE の中にある無関係な副SELECT を含む更新SQL（例えば以下のような形状）で該当します。
</p>
<pre>
WITH d(val) AS (SELECT 'Val'::text FROM generate_series(1,1))
  UPDATE t30 SET v = COALESCE(v, (SELECT val FROM d)) WHERE id = 1;
</pre>
<li>ウィンドウ関数、LIMIT、OFFSET を含む副SELECT のパラレルワーカへのプッシュができなくなりました。  (Amit Kapila) (10)(9.6)</li>
<p>
このような場合、行順序の変化により不確定な結果となって、ワーカごとに異なる応答を得ることから、整合性に欠けた振る舞いが生じることがありました。
</p>
<li>外部テーブルに所有されているシーケンスが、そのテーブルに対する ALTER OWNER で確実に処理されるようになりました。  (Peter Eisentraut) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
所有者変更はこのようなシーケンスにも伝播すべきでしたが、外部テーブルについて見逃されていました。
</p>
<li>配列データ型の出力関数 array_out() が結果文字列用に過大なメモリを確保していたものが、修正されました。  (Keiichi Hirobe) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
特に多次元配列のときに確保サイズが大きくなっていました。
</p>
<li>xmltable関数で問い合わせの間のメモリリークがあり、修正されました。  (Andrew Gierth) (10)</li>
<li>内部実装関数 ApplyLogicalMappingFile() がマッピングファイルを伴って実行されたとき、ファイルを確実に閉じるように修正されました。  (Tomas Vondra) (10)(9.6)(9.5)(9.4)</li>
<p>
これまでファイル記述子のリークがあり、結果としてロジカルデコーディングでのエラーをひき起こしていました。
</p>
<pre>
（エラー例）
ERROR:  53000: exceeded maxAllocatedDescs (492) while trying to open file "pg_logical/mappings/map-4000-4eb-1_60DE1E08-5376b5-537c6b"
LOCATION:  OpenTransientFile, fd.c:2161
</pre>
<li>ロジカルデコーディングで割り当てられたカタログテーブルが繰り返し書き直される場合に処理できるように修正されました。  (Andres Freund) (10)(9.6)(9.5)(9.4)</li>
<p>
VACUUM FULL や CLUSTER コマンドで以下のようなエラーが生じる可能性がありました。
</p>
<pre>
ERROR, "could not map filenode "base/16543/19876" to relation OID"
</pre>
<li>SQL実行にて EXECUTEコマンドなどのユーティリティコマンドが無限再帰を起こした場合にバックエンドがクラッシュする動作が回避されました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<li>ホットスタンバイを初期化する時に、プライマリでの二相トランザクションで生じる重複した XID に対応できるようになりました。  (Michael Paquier, Konstantin Knizhnik) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
これまでスタンバイで以下のエラーが出ることがありました。
</p>
<pre>
FATAL:  out-of-order XID insertion in KnownAssignedXids
</pre>
<li>入れ子の ALTER TABLE を扱えるようにイベントトリガが修正されました。  (Michael Paquier, &Aacute;lvaro Herrera) (10)(9.6)(9.5)</li>
<p>
本障害について、イベントトリガが働く状態で入れ子のパーティションテーブルを作成するときのクラッシュが報告されました。
</p>
<li>親プロセスのトランザクションと文の開始タイムスタンプがパラレルワーカに伝播するようになりました。  (Konstantin Knizhnik) (10)(9.6)(9.5)</li>
<p>
これにより、transaction_timestamp() などの関数がワーカ上で実行されたときの誤動作が防止されます。
</p>
<li>拡張された値のパラレルワーカへの転送が修正されました。  (Tom Lane, Amit Kapila) (10)(9.6)</li>
<p>
配列型の値などが該当します。SQL実行時に Bus error によるクラッシュが発生していました。
</p>
<li>WALファイル再利用のロジックがスタンバイサーバで正しく動作するように修正されました。  (Michael Paquier) (10)(9.6)(9.5)</li>
<p>
archive_mode の設定によってはスタンバイで一部の本来削除可能なWALファイルの削除に失敗することがありました。
</p>
<li>リカバリ中のコミットタイムスタンプ追跡の処理が修正されました。  (Masahiko Sawasa, Michael Paquier) (10)(9.6)(9.5)</li>
<p>
コミットタイムスタンプ追跡が有効または無効に変更されると、それを記録していないトランザクションに対してコミットタイムスタンプを取得しようとしてリカバリに失敗することがありました。
</p>
<pre>
（本障害でリカバリ起動に失敗した報告例）
FATAL: could not access status of transaction 3003911820
DETAIL: Could not read from file "pg_commit_ts/6FEE" at offset 557056: Success.
</pre>
<li>ブートストラップとスタンドアローンバックエンドのプロセスで、また、initdb で、random() 関数のシードを時刻やプロセスID でランダムに設定するようになりました。  (Noah Misch) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
この変更により、常に同じランダムシードを使うことで生じる名前衝突によって、initdb が POSIX共有メモリが無効であると誤って判断するのを回避できます。
</p>
<li>DSA（動的共有メモリ領域）の処理で共有メモリ破壊の可能性があり、修正されました。  (Thomas Munro) (10)</li>
<p>
主として問い合わせの並列処理で問題が不具合が発生します。
</p>
<li>DSM（動的共有メモリ）の割り当てが割り込み可能になりました。  (Chris Travers) (10)(9.6)(9.5)(9.4)</li>
<p>
SQLのパラレル処理とキャンセルで無限ループが生じる可能性がありました。
</p>
<li>初期化関数でシステムキャッシュにアクセスを試みる拡張モジュールを読み込むときに発生する、パラレルワーカでのエラーが回避されました。  (Thomas Munro) (10)(9.6)</li>
<p>
本障害により以下のエラーが発生するケースが報告されました。
</p>
<pre>
ERROR:  invalid cache ID: 11
LOG: worker process: parallel worker for PID 12345 (PID 12354) exited with exit code 1
</pre>
<li>full_page_writes を動的に on に変える処理を適切に行うようになりました。  (Kyotaro Horiguchi) (10)(9.6)(9.5)</li>
<p>
off から on に変えた後もフルページ書き出しが行われない動作が報告されました。
</p>
<li>SP-GiST の再スキャンでメモリ二重解放によるクラッシュの可能性があり、修正されました。  (Andrew Gierth) (10)(9.6)</li>
<li>ELFベースのBSDプラットフォームや HP-UX、Solaris で、src/port と src/common の関数の誤ったリンクが防止されました。  (Andrew Gierth, Tom Lane) (10)</li>
<p>
バックエンドのアドレス空間にロードされた共有ライブラリは、関数のリンク先に意図しているそれらが持つコピーではなく、バックエンドにあるバージョンを使う可能性がありました。両関数実装が一致していない場合、この振る舞いのために障害がひき起こされます。
</p>
<p>
クラッシュが発生する例が報告されています。
</p>
<li>GINページの再圧縮処理を WALから再生するときにバッファオーバーランの可能性があり、修正されました。  (Alexander Korotkov, Sivasubramanian Ramasubramanian) (10)(9.6)(9.5)(9.4)</li>
<p>
本障害によりデータ破壊の可能性があります。
</p>
<li>ブロックサイズをデフォルトよりも小さくしていた場合の、ハッシュインデックスのメタページのバッファオーバーランが回避されました。  (Dilip Kumar) (10)</li>
<p>
該当する場合、本障害によりデータ破壊をひき起こす可能性があります。
</p>
<li>ハッシュインデックスでページチェックサムの更新が行われないことがあり、修正されました。  (Amit Kapila) (10)</li>
<li>レプリケーションスロットのディレクトリに対する fsync が行われておらず、修正されました。  (Konstantin Knizhnik, Michael Paquier) (10)(9.6)(9.5)(9.4)</li>
<li>wal_sender_timeout を遅いサーバで使った場合の予期せぬタイムアウトが修正されました。  (Noah Misch) (10)(9.6)(9.5)(9.4)</li>
<p>
サーバ側（WAL送出側）の遅延をタイムアウト判定に含めないように調整されました。
</p>
<li>ホットスタンバイのプロセスが確実に正しいWAL整合状態到達点を用いるようになりました。  (Alexander Kukushkin, Michael Paquier) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
この修正は、スタンバイサーバが WALリプレイでデータベース整合状態に達した直後の誤動作を防止します。
</p>
<p>
スタンバイサーバのクラッシュ後の起動で、以下メッセージが出て失敗する動作が報告されました。
</p>
<pre>
PANIC:  WAL contains references to invalid pages
DETAIL:  xlog redo at AB3/50323E78 for Btree/DELETE: 182 items
</pre>
<li>サーバ起動中にマスタプロセス(postmaster)が fastシャットダウン要求を受け取ったとき、バックグラウンドワーカが適切に停止されるようになりました。  (Alexander Kukushkin) (10)(9.6)(9.5)</li>
<li>ページの可視性フラグ、凍結済フラグを変更する WAL を再生するときに、空き領域マップを更新するようになりました。  (&Aacute;lvaro Herrera) (10)(9.6)</li>
<p>
これまで FSM（空き領域マップ）は重要なデータではないと考えられていましたが、FSM が古くなりすぎるとサーバがスタンバイからプライマリに昇格した後、パフォーマンスが大幅に低下する可能性がありました。
</p>
<li>問い合わせ終了時、または、タプルカウント上限に到達した時の、パラレル問い合わせ用リソースの早すぎる解放を回避するようになりました。  (Amit Kapila) (10)(9.6)</li>
<p>
呼び出し側が後で逆向きスキャンを求める場合を考慮する必要がありました。
</p>
<li>SIGQUIT を処理するときに atexit() によるコールバックを実行しないようになりました。  (Heikki Linnakangas) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
シグナルを受けてハングアップする可能性がありました。
</p>
<li>外部サーバのユーザマッピングを拡張の要素として記録しないようになりました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
拡張のスクリプトで CREATE USER MAPPING を実行すると、ユーザのマッピングに対して予期せぬ拡張依存関係が作成されました。ロールは拡張の要素にすることはできないため、ユーザマッピングも含めるべきではありませんでした。
</p>
<li>loggerプロセス（組み込みのロガー）が CSV ログファイルを開く際に、失敗しにくくなりました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
これまではファイルを開けなかった場合にそれを報告しようとして無限再帰ループに陥る可能性がありました。
</p>
<li>libpq に複数のターゲットホスト名が指定されている場合、1度に1つずつ名前解決をするようになりました。  (Tom Lane) (10)</li>
<p>
これにより、リスト内の手前にあるサーバに正常に接続できる場合の不要な障害や接続遅延を防止します。
</p>
<li>libpq の接続タイムアウト処理がホスト名またはIPアドレスごとに正しく適用されるように修正されました。  (Tom Lane) (10)</li>
<p>
以前は、次の対象ホストに切り替える際にタイマーがリセットされないことがあり、設定よりも早くタイムアウトとなる可能性がありました。
</p>
<li> pg_dump の --no-publications オプションがパブリケーションテーブルを無視するように修正されました。  (Gilles Darold) (10)</li>
<p>
pg_dump で本オプションが機能していませんでした。
</p>
<li>pg_dump で親テーブルがダンプから除外されているときには、その子テーブルの IDENTITY のシーケンスも除外するようになりました。  (David Rowley) (10)</li>
<li>pg_dump が異なるオブジェクト名をソートする際に起こり得る一貫性の欠如が修正されました。  (Jacob Champion) (10)(9.6)(9.5)(9.4)(9.3)</li>
<li>pg_restore が DISABLE/ENABLE TRIGGER コマンドを出力する際にテーブル名をスキーマ修飾するようになりました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
これにより制限された検索パスでリストアを実行する場合の障害を回避します。
</p>
<li>pg_upgrade が拡張に属するイベントトリガを正しく処理するように修正されました。  (Haribabu Kommi) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
以前の pg_upgrade はイベントトリガが拡張に属することを維持できせんでした。
</p>
<li>pg_upgrade のクラスタ状態チェックがスタンバイサーバで正しく動作するように修正されました。  (Bruce Momjian) (10)(9.6)(9.5)(9.4)(9.3)</li>
<li>すべての contrib/cube 関数に cube型の次元数の制限が適用されるようになりました。  (Andrey Borodin) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
以前は、一部の cube 関連関数が cube_in（cube型の入力関数）で拒否される値を生成する可能性があり、ダンプ/リストアの失敗をひき起こしました。
</p>
<li>contrib/postgres_fdw では、変数を持たない ORDER BY句をリモートサーバへ送信しないようになりました。  (Andrew Gierth) (10)(9.6)</li>
<p>
use_remote_estimate = on の場合に「ORDER BY 0」がリモートで実行されて、「ERROR: ORDER BY position 0 is not in select list」が生じるケースがありました。
</p>
<li>contrib/unaccent の unaccent() 関数が、関数と同じスキーマにある非アクセントテキスト検索辞書を使用するように修正されました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
これまでは search_path を使用して辞書を探していましたが、search_path が制限的な設定であるとき失敗する可能性がありました。
</p>
<li>btree比較関数が INT_MIN を返せるようになりました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
これまでは、データ型固有の比較関数が INT_MIN を返すことを禁止していました。これにより関数の呼び出し元は、比較結果を否定するだけでソート順を逆転させることができました。しかし、POSIX はそのような制限を設けていないので、memcmp() や strcmp() などの結果を直接返す比較関数では、これは安全ではありませんでした。少なくとも最新のバージョンの memcmp() は INT_MIN を返すことがあり、誤った並べ替え順序が発生します。
</p>
<p>
この制限は削除されました。ソート順を逆にする場合は、INVERT_COMPARE_RESULT() マクロを使用する必要があります。
</p>
<li>共有無効化のメッセージ処理における再帰障害が修正されました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
この障害で VACUUM FULL によって処理されたばかりのシステムカタログやインデックスへのアクセスに失敗することがあります。以下のエラーが報告されました。FATALが生じることもあります。
</p>
<pre>
ERROR:  could not read block 3 in file "base/16384/2662": read only 0 of 8192 bytes
</pre>
<p>
本修正で、待機イベントである LockAcquire に対する新しい結果コードが追加されました。このイベントの外部呼出し元に影響を与える可能性があります。しかし、これは非常に珍しい使われ方でのみ発生する問題です。
</p>
<li>SPI_connect() 及び SPI_finish() の中に SPI のグローバル変数を保存および復元するようになりました。  (Chapman Flack, Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
これにより、1つの SPI を使用する関数が、別の関数を呼び出すときに起こり得る干渉を防ぎます。
</p>
<li>潜在的にアラインメント調整されたページバッファの使用を避けるようになりました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
新しく UNION型の PGAlignedBlock、PGAlignedXLogBlock を設けて、これらを 単なる char配列の代わりに使用して、コンパイラがアラインメントを外れた開始アドレスにバッファを置くことがないようになりました。これにより一部プラットフォームでのクラッシュを回避します。問題がなかったプラットフォームでもパフォーマンス向上が期待できます。
</p>
<li>Make src/port/snprintf.c の結果が、C99 標準の snprintf() の結果の定義に沿うようになりました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
これまでは C99 以前の振る舞いをしていました。主にWindowsなど、このコードが使われているプラットフォームでは、呼び出しコードが C99 のセマンティクスを前提としていた場合にバッファオーバーランを検出できない可能性がありました。
</p>
<li>i386 アーキテクチャにおいて clang コンパイラを使ってビルドする際は、-msse2 オプションが必須になりました。  (Andres Freund) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
configure スクリプトの修正です。これにより浮動小数点のオーバーフローチェックが失敗することを回避できます。
</p>
<li>configrue における strerror_r() 結果型の検知が修正されました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
以前のリリースでは、Linux 上で icc を使ってビルドする際、間違った結果となりました（恐らく他の組み合わせでも）。これにより、システムから報告されたエラーに対して libpq が有用なエラーメッセージを返さない動作が生じました。
</p>
<li>Visual Studio 2015 と Visual Studio 2017 でのビルドがサポートされるようになりました。  (Michael Paquier, Haribabu Kommi) (9.5)(9.4)(9.3)</li>
<li>ALLOCSET_DEFAULT_SIZES および関連のマクロが旧バージョン系列にも提供されました。  (Tom Lane) (9.5)(9.4)(9.3)</li>
<p>
これらのマクロは 9.6 以降は存在していましたが、古いバージョンにも追加して、固有のコーディングなしで拡張機能を利用したいという要望がありました。
</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>
