<?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 9.6.13 &#8211; SRA OSS Tech Blog</title>
	<atom:link href="https://www.sraoss.co.jp/tech-blog/tag/postgresql-9-6-13/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>Wed, 04 Nov 2026 06:29:24 +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 9.6.13 &#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 9.6.14 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/9-6-14/</link>
		
		<dc:creator><![CDATA[PostgreSQL技術グループ]]></dc:creator>
		<pubDate>Thu, 04 Jul 2019 01:02:31 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 9.6]]></category>
		<category><![CDATA[PostgreSQL 9.6.13]]></category>
		<category><![CDATA[PostgreSQL 9.6.14]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=2945</guid>

					<description><![CDATA[このリリースは 9.6.13 からの修正リリース（2019年6月20日リリース）です。 9.6.x からのアップデートではダンプ、リストアは不要です。 9.6.9より前のバージョンからのアップデートの場合には 9.6.6 ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 9.6.13 からの修正リリース（2019年6月20日リリース）です。</p>
<p>9.6.x からのアップデートではダンプ、リストアは不要です。<br />
9.6.9より前のバージョンからのアップデートの場合には <a href="/tech-blog/pgsql/9-6-6/">9.6.6 のリリース情報</a>も確認してください。</p>
<p><span id="more-2945"></span></p>
<h3>PostgreSQL 9.6.13 から 9.6.14 への変更点</h3>
<p>11.4、10.9、9.6.14、9.5.18、9.4.23 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<hr />
<ol>
<li>SCRAM検証のパース処理におけるバッファオーバフロー障害が修正されました。  (Jonathan Katz, Heikki Linnakangas, Michael Paquier) (11)(10)</li>
<p>
認証を受けるユーザは誰でも、パスワードを意図的に作りこんだ値に変更することで、スタックのバッファオーバフローを起こすことができました。さらに PostgreSQLサーバをクラッシュさせることもできました。これにより PostgreSQLを実行するOSユーザで任意コードを実行できる可能性がありました。
</p>
<p>
類似のオーバフロー障害が libpq にもあり、これはよからぬサーバがクライアントをクラッシュさせたり、クライアント側OSユーザで任意コードを実行させたりできる可能性がありました。(CVE-2019-10164)
</p>
<li>実行時パーティション除外のロジックで、いくつかの誤りが修正されました。  (Tom Lane, Amit Langote, David Rowley) (11)</li>
<p>
除外に使われる比較値が（プリペアドステートメントのパラメータで）動的に決定される場合や、複数のレンジパーティション列が除外の判断に関わる場合、あるいは、STABLEな（IMMUTABLE でない）比較演算子が関わる場合に、本障害がパーティションテーブルに対する問い合わせに誤った結果をもたらすおそれがありました。
</p>
<pre>
（上記の内「複数レンジパーティション列が関与する」ときの障害動作例）
db=# CREATE TABLE t2p (a int, b int, c int) PARTITION BY RANGE (a, abs(b), c);
db=# CREATE TABLE t2p0 PARTITION OF t2p
       FOR VALUES FROM (0, 0, 0) to (0, maxvalue, maxvalue);
db=# CREATE TABLE t2p1 PARTITION OF t2p
       FOR VALUES FROM (1, 1, 1) TO (2, minvalue, minvalue);
db=# CREATE TABLE t2p2 PARTITION OF t2p
       FOR VALUES FROM (2, minvalue, minvalue) TO (3, maxvalue, maxvalue);
db=# INSERT INTO t2p VALUES (0, 1, 1), (1, 1, 1), (2, 1, 1);

（以下は 3行返るのが正しい）
db=# SELECT * FROM t2p WHERE a &lt; 3 AND abs(b) = 1;
 a | b | c
---+---+---
 1 | 1 | 1
(1 row)
</pre>
<li>新たなパーティションにトリガ定義をコピーするときにクラッシュする可能性があり、修正されました。  (Tom Lane) (11)</li>
<p>
パーティションテーブルにトリガが定義されている状態で、属するパーティションを新たに追加したときにクラッシュする動作が報告されました。
</p>
<li>テーブルが部分的な排他制約を持つ場合に、ALTER TABLE ... ALTER COLUMN TYPE ... がエラーになる動作が修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<pre>
（以下のエラー発生パターンが報告されました）
db=# CREATE TABLE t4 (id int);
db=# ALTER TABLE t4 ADD EXCLUDE USING btree (id WITH =) WHERE (id IS NOT NULL);
db=# ALTER TABLE t4 ALTER COLUMN id TYPE bigint;
ERROR:  relation "t4_id_excl" already exists
</pre>
<p>
発生するエラーは以下のようにバージョンによって様々です。「ERROR: could not open relation with OID 123456」「ERROR: cache lookup failed for relation 654321」「ERROR: relation "t4_id_excl" already exists」
</p>
<li>ドメインの制約に対するコメントでCOMMENTコマンドがエラーになる動作が修正されました。  (Daniel Gustafsson, Michael Paquier) (11)(10)(9.6)(9.5)</li>
<p>
一般ユーザで実行時に以下のような奇妙なエラーが報告されました。
</p>
<pre>
db=&gt; CREATE DOMAIN ddd AS text CONSTRAINT ccc CHECK (TRUE);
db=&gt; COMMENT ON CONSTRAINT ccc ON DOMAIN ddd IS 'test';
ERROR:  type with OID 16413 does not exist
</pre>
<li>ハッシュ集約のハッシュキーのリストに重複する列があるとき、不適切なメモリ上書きの可能性があり、防止されました。  (Andrew Gierth) (11)(10)</li>
<p>
例えば、以下の形状の問い合わせで HashAggregate が生じた場合に該当する可能性があります。
</p>
<pre>
db=# CREATE TABLE t6a (v text);
db=# CREATE TABLE t6b (v1 text, v2 text);
db=# SELECT * FROM t6b WHERE (v1, v2) IN (SELECT v, v FROM t6a);
</pre>
<li>ゼロ個または複数個の引数を伴う集約関数の部分集約における、引数の誤ったNULL検査が修正されました。  (David Rowley, Kyotaro Horiguchi, Andres Freund) (11)</li>
<p>
部分集約(Partial Aggregate)は集約をパラレル実行するときに生じるプラン要素です。パラレル実行時に単一引数でない集約関数に不正な結果が返る動作が報告されました。
</p>
<li>Merge Appendプランの誤った生成が修正されました。  (Tom Lane) (11)(10)(9.6)</li>
<p>
以下のエラーが発生する可能性があります。
</p>
<pre>
ERROR:  could not find pathkey item to sort
</pre>
<p>
SELECT DISTINCT ... FROM (SELECT ... UNION ALL SELECT ...) という形状の問い合わせで発生が報告されました。
</p>
<li>重複する結合名を伴う問い合わせの誤った出力が修正されました。  (Philip Dub&eacute;) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
この誤りで、このような問い合わせを含むビューのダンプ/リストア失敗が生じます。同様に psql の d+ コマンドでも誤った出力が生じます。
</p>
<p>
以下例の「same」が重複する結合名で、このビューは正しくダンプされません。
</p>
<pre>
CREATE TABLE t9_1 (c1 int);
CREATE TABLE t9_2 (c2 int);
CREATE TABLE t9_3 (c3 int);
CREATE TABLE t9_4 (c4 int);
CREATE VIEW v9 AS
  SELECT * FROM (
    SELECT * FROM (t9_1 CROSS JOIN t9_2) same) ss,
      (t9_3 CROSS JOIN t9_4) same;
</pre>
<li>json_to_record() と json_populate_record() で、JSON文字列リテラルからJSON型出力列への変換を修正しました。  (Tom Lane) (11)(10)</li>
<p>
エスケープを要する文字を含むリテラルで誤動作が生じていました。jsonb型むけ同様の関数では正しく動作していました。
</p>
<pre>
（エラーが発生する誤動作の例）
db=# SELECT * FROM json_to_record('{"out": "{"key": 1}"}') as x(out json);
ERROR:  invalid input syntax for type json

（正しくは以下の出力）
      out       
----------------
 "{"key": 1}"
(1 row)
</pre>
<li>正規表現で {1,1} 量指定子の誤った最適化が修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
このような量指定子は何もしないものとして最適化で無きものとされていました。しかし、{1,1}? と最短マッチ指定が付いた場合には、この最適化は不適切です。誤動作は副式が取り込み括弧を含むか後方参照を含む場合のみ発生します。
</p>
<pre>
（誤動作例: 最初の取り込み括弧が最短マッチであることが反映されていない）
db=# SELECT regexp_matches('AAbbbccc', '^(A*){1,1}?(.*)(c*)$');
 regexp_matches
----------------
 {AA,bbbccc,""}
(1 row)

（修正後の正しい応答）
  regexp_matches  
------------------
 {"",AAbbbccc,""}
(1 row)
</pre>
<li>ページ分割の際にINCLUDEされた列を処理して失敗するという稀な場合に、無効な空のBtreeインデックスページを書き出す動作が回避されました。  (Peter Geoghegan) (11)</li>
<p>
この無効なページは通常のインデックス操作では動作に影響ありませんが、後の VACUUM でエラーを起こす可能性があります。インデックス再構築（REINDEX）を行って復旧することができます。
</p>
<li>新たなプロセスの pg_stat_activity むけデータを初期化する際に失敗することがあり、回避されました。  (Tom Lane) (11)(10)(9.6)(9.5)</li>
<p>
SSL証明書から取り出した文字列をデータベースエンコーディングに変換する等の場合に失敗する可能性がありました。これはクリティカルセクション内で実行されるため、共有の pg_stat_activityデータに対するアクセス手順を妨げ、データベース全体のハングアップをひき起こしました。
</p>
<li>既存の共有メモリセグメントが別のpostmasterから未だ使用中かどうかを検査する際の競合状態が修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
実行タイミングによっては検査をすり抜けて他のpostmasterが使用中の共有メモリを削除してしまうことがあり得ました。
</p>
<li>walreceiverのシグナルハンドラにおける安全でないコーディングが修正されました。  (Tom Lane) (11)(10)</li>
<p>
これにより、walreceiverプロセスが終了シグナル(SIGTERM)を受けたときにクラッシュまたはデッドロックするという、稀に起こりうる問題を回避します。
</p>
<li>特定データベースに接続していないプロセス(walsender等)がパラメータ検査のためにデータベースアクセスを試みる動作が回避されました。  (Vignesh C, Andres Freund) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
この誤りは「FATAL:  cannot read pg_class without having selected a database」のようなエラーをもたらしました。
</p>
<li>SSL を使っていて OpenSSL のデータバッファにちょうど 256×N バイトが含まれる場合の libpq でのハングアップが回避されました。  (David Binderman) (11)(10)(9.6)(9.5)</li>
<li>initdb でシステムタイムゾーンに対する複数の等価な名前の扱いが改善されました。  (Tom Lane, Andrew Gierth) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
initdb は /etc/localtime シンボリックリンクを調べて、シンボリックリンクが存在するなら、システムタイムゾーンに対して等価な名前の中から、それを選ぶようになりました。
</p>
<p>
これにより initdb は同一タイムゾーンが複数存在する場合にユーザーが予期するタイムゾーン名を選択します。 /etc/localtime がゾーンデータファイルへのシンボリックリンクでない場合や、タイムゾーンが TZ環境変数から決定される場合の振る舞いは変更ありません。
</p>
<p>
これとは別に、TZ も /etc/localtime もヒントとして提供されていない時、そのタイムゾーンの他のスペルよりも UTC を優先するようになりました。これにより tzdata 2019a によってもたらされた煩わしい変更を修正します。それは UCT と UTC のゾーン名を同等にするための変更で、initdb は UCT を好むようになりましたが、ほとんど誰も望んでいません。
</p>
<li>pg_dump と pg_dumpall によって発行されたデータベースとテーブルスペースに対するGRANTコマンドの順序が修正されました。  (Nathan Bossart, Michael Paquier) (11)(10)(9.6)</li>
<p>
カスケードしている GRANT が発行されている場合、それらの相互依存性に考慮しない順序で GRANTコマンドが並んでいるために、リストアが失敗する可能性がありました。
</p>
<li>pg_dump がテーブルパーティションを再作成する際、作成コマンドにCREATE TABLE ... PARTITION OF ... ではなく、CREATE TABLE の後に ALTER TABLE ... ATTACH PARTITION をするように変更されました。  (&Aacute;lvaro Herrera, David Rowley) (11)(10)</li>
<p>
これによりパーティションの列の順序が親の列から変更されている可能性があるという問題を回避します。また、親テーブルがまだリストアされていなくても、パーティションは（スタンドアロンテーブルとして）ダンプからリストア可能となりました。 ATTACH は失敗しますが、それは無視することができます。
</p>
<li>reindexdb でのエラー時に誤解を招く余計なエラー報告が修正されました。  (Julien Rouhaud) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
インデックスやスキーマを指定して実行して失敗した場合に、以下のようなデータベースに対する reindexdb に失敗したというメッセージが出力されることがありました。
</p>
<pre>
reindexdb: reindexing of database "db" failed: ....
</pre>
<li>vaccumdb で並列ジョブ実行中にエラーが発生した場合、正しい終了ステータスを確実に返すようになりました。  (Julien Rouhaud) (11)(10)(9.6)(9.5)</li>
<p>
これまで、-j を付与して並列実行させている場合、エラーが起きていてもコマンドが正常終了(0)を返すことがありました。
</p>
<li>auto_explain でパラレルクエリの時に問題が発生しないように修正されました。  (Tom Lane) (11)(10)(9.6)</li>
<p>
以前は、auto_explain で親のクエリがログに記録されていない場合であっても、パラレルワーカーが自分自身のクエリをログに記録しようとしていました。これは時々動作することもありますが紛らわしいですし、時には「ERROR:  could not find key 3 in shm TOC at 0x7f45a0334000」のようなエラーを発生させる原因となっていました。
</p>
<p>
また、サンプリングレートが 1.0 に設定されている場合ですら、必ずしもすべてのクエリーが記録されるとも限らないという、off-by-oneバグも修正されました。
</p>
<li>postgres_fdw で BEFORE ROW UPDATEトリガーによるデータ変更がある可能性を新たに考慮するようになりました。  (Shohei Mochizuki) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これまでは不必要なデータ転送を避けるために UPDATE処理で明示的に対象となったデータだけが転送対象でした。しかし外部テーブルに BEFORE ROW UPDATEトリガーが存在している場合、トリガーは対象となっていない列も変更する可能性があり、そのような場合はそれらの列の変更された値を送り損ねてしまいます。今回の変更で BEFORE ROW UPDATEトリガーが存在するときはすべての列を送信するようにします。
</p>
<li>Windows上でデータベースエンコーディングが SQL_ASCII に設定されている時にASCII 以外の文字列を記録する試みが失敗しないようになりました。  (Noah Misch) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これまでの実装では記録する文字列が必ず UTF-8 である前提となっていて、妥当なエンコードではないように見える時はエラーを投げていました。これからは変換していないバイト列を単純にログに送信します。
</p>
<p>
該当の関数は pgwin32_message_to_UTF16() で、新しい挙動は pg_do_encoding_conversion() と整合性があります。
</p>
<li>PL/pgSQLのヘッダファイル等の変数名が C++の予約語と衝突しないように変更されました。  (George Tarasov) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これまで PL/pgSQL のヘッダファイルや Cソースファイルの変数名が（new、typeid、typemod など）C++の予約語と衝突していました。
</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 9.6.13 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/9-6-13/</link>
		
		<dc:creator><![CDATA[PostgreSQL技術グループ]]></dc:creator>
		<pubDate>Mon, 20 May 2019 02:02:10 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 9.6]]></category>
		<category><![CDATA[PostgreSQL 9.6.12]]></category>
		<category><![CDATA[PostgreSQL 9.6.13]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=2385</guid>

					<description><![CDATA[このリリースは 9.6.12 からの修正リリース（2019年5月9日リリース）です。 9.6.x からのアップデートではダンプ、リストアは不要です。 9.6.9より前のバージョンからのアップデートの場合には 9.6.9  ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 9.6.12 からの修正リリース（2019年5月9日リリース）です。</p>
<p>9.6.x からのアップデートではダンプ、リストアは不要です。<br />
9.6.9より前のバージョンからのアップデートの場合には <a href="/tech-blog/pgsql/9-6-9/">9.6.9 のリリース情報</a>も確認してください。</p>
<p><span id="more-2385"></span></p>
<h3>PostgreSQL 9.6.12 から 9.6.13 への変更点</h3>
<p>11.3、10.8、9.6.13、9.5.17、9.4.22 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<hr />
<ol>
<li>行単位セキュリティポリシーが、プランナの選択性見積り処理を通して、すり抜けされてしまうことがあり、防止されました。(CVE-2019-10130)  (Dean Rasheed) (11)(10)(9.6)(9.5)</li>
<p>
一部のプランナの選択性見積り処理ではプランナ統計情報(pg_statistic の 最頻値など)で見つかった値にユーザ定義演算子を適用します。そのため、実行したユーザにその列を参照する権限がなくとも、漏洩のある演算子が一部行の列データ値を露出させることができます。9.6.3、9.5.7、9.4.12、9.3.17、9.2.21 での CVE-2017-7484 セキュリティ障害の修正で同様の問題に対する対処が行われていましたが、行単位セキュリティについては対応されていませんでした。
</p>
<p>
本修正により、漏洩のある（LEAKPROOF属性が真でない）演算子は関連する行単位セキュリティ(RLS)ポリシーが無い場合に限ってプランナ統計情報に適用が許されるようになります。
</p>
<li>パーティション振り分けのエラーを報告する際に解放済みメモリへのアクセスを回避するように修正されました。(CVE-2019-10129)  (Michael Paquier) (11)</li>
<p>
この障害はクラッシュをひき起こします。また、原理的にはサーバメモリ内容を露出させる攻撃に利用できる可能性があります。なお、上記のパーティション振り分けのエラーとは以下の類です。
</p>
<pre>
db=# CREATE TABLE parted_tbl (id int, v text) PARTITION BY RANGE (id);
db=# CREATE TABLE part1 PARTITION OF parted_tbl FOR VALUES FROM (1) TO (100);
db=# INSERT INTO parted_tbl VALUES (105, 'XX');
ERROR:  no partition of relation "parted_tbl" found for row
DETAIL:  Partition key of the failing row contains (id) = (105).
</pre>
<li>パーティションテーブルに対する ALTER TABLE がインデックス再利用可能と判断した場合にシステムテーブルのデータが破損することがあり、修正されました。  (Amit Langote, Tom Lane) (11)</li>
<p>
例えば、ALTER TABLE .. ALTER COLUMN TYPE 実行時に物理テーブルの書き換えは不要と判断したケースで発生します。ALTER TABLE を行って定義情報の破損が生じたパーティションテーブルを、次に DROP したときにバックエンドプロセスがクラッシュ終了する動作が報告されました。
</p>
<li>単文のトランザクションで ON COMMIT DROP と IDENTITY列を伴う一時テーブルが作られたときにシステムテーブルのデータが破損する障害があり、修正されました。  (Peter Eisentraut) (11)(10)</li>
<p>
以下のような発生例が報告されました。
</p>
<pre>
（あるセッションで以下のように一時テーブルを作った後、）
db=# CREATE TEMP TABLE t4 (c int GENERATED BY DEFAULT AS IDENTITY)
       ON COMMIT DROP;

（別セッションで別の一時テーブルを作ろうとした際に不明なエラーが出る）
db=# CREATE TEMPORARY TABLE t4_2 (d text);
ERROR: could not open relation with OID 16345
</pre>
<li>パーティションテーブルが属するパーティション(子テーブル)以上に削除された列を含む場合に、ALTER INDEX ... ATTACH PARTITION がエラーになる動作が修正されました。  (&Aacute;lvaro Herrera) (11)</li>
<p>
これにより pg_upgrade を失敗させる可能性もあります。以下の予期せぬエラーが発生します。
</p>
<pre>
ERROR:  incorrect attribute map
</pre>
<li>パーティションの既存インデックスを、新たに作成されたパーティションインデックス（親テーブルのインデックス）にアタッチするときのエラーが修正されました。  (Amit Langote, &Aacute;lvaro Herrera) (11)</li>
<p>
この障害は、アタッチ後に実行する当該パーティションインデックスを使う DDL で以下のような予期せぬエラーを発生させます。
</p>
<pre>
ERROR:  index ... not found in partition ...
</pre>
<li>パーティション化された問い合わせ結果に対して他セッションによる更新を反映させる処理で、バックエンドプロセスのクラッシュが回避されました。  (Amit Langote) (11)(10)</li>
<p>
これは、READ COMMITTED 隔離レベルを使用していて、他のセッションが問い合わせの対象行を同時並行に更新していた場合にEPQ(EvalPlanQual)の再チェック処理で発生します。
</p>
<li>削除された属性を持つ複数階層のパーティションテーブルでの、行の振り分けが修正されました。  (Amit Langote, Michael Paquier) (11)</li>
<p>
パーティションテーブルに列削除が行われていた場合に INSERT 実行に対して、以下の予期せぬエラーが発生する場合がありました。
</p>
<pre>
ERROR: cannot extract attribute from empty tuple slot SQL state: XX000
</pre>
<li>外部キー制約の初期検査の slow-path処理がパーティションテーブルに適用されるときの失敗が修正されました。  (Hadi Moshayedi, Tom Lane, Andres Freund) (11)</li>
<p>
（権限の問題などで）fast-path処理が使えない場合という、一般的でない場合以外では、この問題は顕在化しません。fast-path、slow-path は検査処理実装の内部的な区別です。前者が使えない場合に後者が使われます。
</p>
<p>
以下のようなエラー発生が報告されました。
</p>
<pre>
db=# CREATE ROLE test_role WITH LOGIN;
db=# CREATE TABLE t9_ref(a int PRIMARY KEY);
db=# GRANT REFERENCES ON t9_ref TO test_role;
db=# SET ROLE test_role;
db=&gt; CREATE TABLE t9(a int, b int) PARTITION BY LIST (a);
db=&gt; ALTER TABLE t9 ADD CONSTRAINT t9_b_key
        FOREIGN KEY (b) REFERENCES t9_ref(a);
ERROR:  could not open file "base/16432/49876": No such file or directory
</pre>
<li>継承ツリーやパーティションテーブルの全てのテーブルが除外されうるUPADTE や DELETE の振る舞いが修正されました。  (Amit Langote, Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
このような場合、RETURNING句があっても問い合わせが正しい列セットを報告せず、文レベルトリガがあっても実行されませんでした。
</p>
<pre>
（障害動作例: WHERE false の場合の RETURNING句の応答は列が無く不正）
db=# CREATE TABLE t10 (a int, b int);
db=# CREATE TABLE t10c () inherits (t10);
db=# INSERT INTO t10c VALUES (1,2);
db=# UPDATE t10 SET a = a + 1 WHERE false RETURNING b, a;
--
(0 rows)
UPDATE 0

db1=# UPDATE t10 SET a = a + 1 WHERE true RETURNING b, a;
 b | a
---+---
 2 | 2
(1 row)
UPDATE 1
</pre>
<li>constraint_exclusion = on でパーティションに直接アクセスするとき、除外のための CHECK制約と同様に各パーティションのパーティション制約を使用するようになりました。  (Amit Langote, Tom Lane) (11)</li>
<p>
この変更は 10.xバージョンの振る舞いに戻したことになります。
</p>
<pre>
db=# CREATE TABLE t11p (a int) PARTITION BY LIST (a);
db=# CREATE TABLE t11c PARTITION OF t11p FOR VALUES IN (1);
db=# SET constraint_exclusion TO on;
db=# EXPLAIN SELECT * FROM t11c WHERE a = 2;
（修正前の結果、範囲外の値でもテーブルスキャンが発生）
                     QUERY PLAN
----------------------------------------------------
 Seq Scan on t11c (cost=0.00..41.88 rows=13 width=4)
   Filter: (a = 2)
(2 rows)

（本来期待される結果）
                QUERY PLAN
------------------------------------------
 Result  (cost=0.00..0.00 rows=0 width=4)
   One-Time Filter: false
(2 rows)
</pre>
<li>トランザクションコミットをまたがるようにカーソル問い合わせを永続化しようとしてエラーが生じたときのクラッシュが回避されました。  (Tom Lane) (11)</li>
<p>
プロシージャがオープンされた明示的あるいは暗黙的なカーソル（PL/pgSQLのFORループ問い合わせなど）を持つときにコミットしようとした場合、カーソルはコミット前に完全に実行され結果を保存して以降で利用可能にします。このような処理の中でエラーが生じた場合にバックエンドプロセスのクラッシュが起こっていました。
</p>
<li>ロジカルレプリケーションにおける FOR ALL TABLES指定のパブリケーションが存在するときに、一時テーブルとUNLOGGEDテーブルの更新に対する不正なエラー発行が修正されました。  (Peter Eisentraut) (11)(10)</li>
<p>
このようなテーブルはパブリケーション用には無視されるべきでしたが、一部コードでそうなっていませんでした。
</p>
<li>更新可能ビューに複数行を挿入する INSERT ... VALUESコマンドでの明示的なデフォルト要素の処理が修正されました。  (Amit Langote, Dean Rasheed) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
以下例のように複数行を同時に挿入した場合、ビューにデフォルト値が無い列で元テーブルのデフォルト値ではなく NULL が使われてしまいます。
</p>
<pre>
（障害動作発生例: a=14 の行と a=15,16 の行で振る舞いが違う）
db=# CREATE TABLE t14 (a int, b text default 'Table default',
                       c text default 'Table default', d text, e text);
db=# CREATE VIEW v14 AS SELECT * FROM t14
db=# ALTER VIEW v14 ALTER b SET DEFAULT 'View default';
db=# ALTER VIEW v14 ALTER d SET DEFAULT 'View default';
db=# INSERT INTO v14 VALUES (14, default, default, default, default);
db=# INSERT INTO v14 VALUES (15, default, default, default, default),
                            (16, default, default, default, default);
db=# SELECT * FROM t14;
 a  |      b       |       c       |      d       | e
----+--------------+---------------+--------------+---
 14 | View default | Table default | View default |
 15 | View default |               | View default |
 16 | View default |               | View default |
(3 rows)
</pre>
<li>CREATE VIEW がゼロ列ビューを作れるように修正されました。  (Ashutosh Sharma) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これによりゼロ列テーブルが作成可能であることと一貫性を持ち、テーブルをビューで置き換える際に失敗するケースを回避できます。
</p>
<pre>
db=# CREATE TABLE t15 (id int primary key, v text);
db=# CREATE TABLE t15_0 ();
db=# CREATE VIEW v15 AS SELECT FROM t15;
db=# CREATE VIEW v15_0 AS SELECT * FROM t15_0;
（修正前バージョンでは上記両CREATE VIEVで以下のエラーが出ました）
ERROR:  view must have at least one column
</pre>
<li>欠けていた CREATE TABLE IF NOT EXISTS ... AS EXECUTE ... 構文が追加されました。  (Andreas Karlsson) (11)(10)(9.6)(9.5)</li>
<p>
AS の後に問い合わせにプリペアド文を実行する EXECUTE文を記述することは可能であるべきでしたが対応していませんでした。
</p>
<li>行単位セキュリティポリシーの式に現れる副問い合わせが、確実に正しいユーザ権限で実行されるようになりました。  (Dean Rasheed) (11)(10)(9.6)(9.5)</li>
<p>
これまで、行単位セキュリティ(RLS)ポリシーを持つテーブルがビューを通してアクセスされる場合に、セキュリティ検査がビューを呼び出したユーザで行われ、ビュー所有者ユーザで行われませんでした。後者が本来の正しい動作です。
</p>
<li>SQL:2006 以降の要件に基づき、xmloption = content が設定されているとき、xml型の有効な値としてXMLドキュメントを受け入れるようになりました。  (Chapman Flack) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これまでは PostgreSQL は SQL:2003 の定義に従っていて、このような場合にはデータを受け入れませんでした。しかし、ダンプ/リストアで全ての有効なXMLデータを受け入れる xmloption の設定値が無いという重大な問題が問題が生じることから、SQL:2006 の定義に変更されました。
</p>
<p>
加えて、確実にダンプ/リストアできるように pg_dump が SET xmloption = contentを出力するようになりました。
</p>
<li>サーバ起動時の既存共有メモリセグメントが未だ使われているかどうかの検査が改善されました。  (Noah Misch) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
PostgreSQLのマスタプロセス(postmaster)は、たとえ postmaster.pid ファイルが削除されていても、以前の postmasterから生じた実行中プロセスが無いかを調べるようになりました。
</p>
<p>
これにより PostgreSQL二重起動によるデータ破損を予防します。
</p>
<li>BtreeインデックスのVACUUM で、起こりうるゼロ除算が回避されました。  (Piotr Stefaniak, Alexander Korotkov) (11)</li>
<p>
これは vacuum_cleanup_index_scale_factor 設定値に基づいてインデックスのクリーンアップが必要かどうかについて不正確な判断をひき起こします。
</p>
<li>パラレルワーカのトランザクションを別々のトランザクションと数えないように修正されました。  (Haribabu Kommi) (11)(10)(9.6)</li>
<p>
パラレル問い合わせ実行があるときに、実行時統計情報のトランザクション数が本来より多く計数されていました。
</p>
<li>GINインデックスのWALレコードにおける非互換性が修正されました。  (Alexander Korotkov) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
前回のマイナーリリースには後方互換性に問題がありました。ストリーミングレプリケーション等で更に以前のマイナーバージョンが生成したWAL を適用する場合にロック処理の問題からハングアップする動作が報告されました。
</p>
<p>
本修正で WALレコードを適用する際に、前マイナーリリースの修正があるWALレコードも、無いレコードも両方読めるように修正されました。
</p>
<li>レプリケーション接続で SHOWコマンドを実行する時に起こりうるwal senderプロセスのクラッシュが修正されました。  (Michael Paquier) (11)(10)</li>
<li>ポータルから少しずつ行を取得するときのバックエンドプロセスのメモリリークが回避されました。  (Tom Lane) (11)</li>
<p>
特に JDBCで問い合わせ結果を1行ずつ取得する場合に顕在化します。
</p>
<li>パーティションのリレーションキャッシュ項目が再作成されるときのメモリリークが回避されました。  (Amit Langote, Tom Lane) (11)(10)</li>
<p>
このメモリリークはセッション内で継続します。
</p>
<li>fsync や sync_file_range を呼ぶときに、適切な箇所において、INVAL および ENOSYS のエラーに寛容になりました。  (Thomas Munro, James Sewell) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
ファイル同期に失敗が生じたなら PANIC とする前回リリースでの変更は、失敗が想定できて本質的に操作がサポートされないことによる場合については、過度に偏執的でした。
</p>
<p>
例えば Windows Subsystem for Linux において sync_file_range がサポートされないために PANIC が起きていました。
</p>
<li>autovacuum の pg_stat_activity 表示で、BRIN の要約操作中に正しいリレーション名を報告するようになりました。  (&Aacute;lvaro Herrera) (11)(10)</li>
<p>
以前は誤ってデータベース名が報告されていました。
</p>
<li>GEQO が有効なときにパーティションの関する結合プランを作成しようとしたときのバックエンドプロセスのクラッシュが回避されました。  (Tom Lane) (11)</li>
<li>プランナで FULL外部結合からのラテラル参照があるときに「ERROR:  failed to build any N-way joins」エラーが発生していたものが修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<pre>
（エラー発生例）
db=# SELECT * FROM (VALUES (1),(2)) v1(r1)
       LEFT JOIN LATERAL (
         SELECT * FROM generate_series(1, v1.r1) AS gs1
           LEFT JOIN LATERAL (
             SELECT * FROM generate_series(1, gs1) AS gs2
               LEFT JOIN generate_series(1, gs2) AS gs3 ON TRUE
           ) AS ss1 ON TRUE
           FULL JOIN generate_series(1, v1.r1) AS gs4 ON FALSE
       ) AS ss0 ON TRUE;
ERROR:  failed to build any 3-way joins
</pre>
<li>複数行を返す関数を空と推定されるリレーションに適用する問い合わせに対する誤ったプラン作成が修正されました。  (Tom Lane, Julien Rouhaud) (11)(10)</li>
<p>
この障害により、10.x バージョンでは僅かに非効率なプランが生成されるだけですが、11.x バージョンでは「ERROR:  set-valued function called in context that cannot accept a set 」エラーをひき起こす可能性があります。
</p>
<li>漏洩のある演算子で pg_statistic のデータを参照させる際のルールを強制するときに、適切なユーザ権限を検査するようになりました。  (Dean Rasheed) (11)(10)(9.6)(9.5)(9.4)</li>
<p>元となるテーブルにビューを通してアクセスするとき、漏洩のある演算子をテーブルの統計データに適用して良いかの判断に、問い合わせを実行するユーザの権限ではなく、ビュー所有者の権限を考慮するようになりました。これにより、プランナのどのデータが可視かのルールをエグゼキュータのルールと一致させて、劣ったプランを回避します。
</p>
<li>グルーピングをする問い合わせでプランナの並列安全性の検査が修正されました。  (Etsuro Fujita) (11)</li>
<p>
これまでは、並列化されている可能性のある対象リストを評価する動作が無いかもしれませんでした。この問題によりプランの劣化が発生していました。
</p>
<li>プランナのユニークインデックスのロジックにおいて、INCLUDEで含められたインデックス列の誤った処理が修正されました。  (Tom Lane) (11)</li>
<p>
本障害により、含められた列を持つユニークインデックスが問い合わせ結果の唯一性を保証することをプランナが認識しなくなる可能性があり、プランの劣化がもたらされました。
</p>
<li>配列の型キャスト式に対する誤った STRICT の検査が修正されました。  (Tom Lane) (11)</li>
<p>
以下例のように STRICT を指定した SQL関数に NULL を渡しても、応答が NULL にならない動作が発生していました。
</p>
<pre>
db=# CREATE TABLE t34 (c1 int);
db=# INSERT INTO t34 VALUES (1), (NULL);
db=# CREATE FUNCTION f34 (int) RETURNS int[] LANGUAGE sql AS 
     $$ SELECT array[0, $1]::bigint[]::int[] $$ STRICT;
db=# SELECT f34(c1) FROM t34;
（修正前の応答）
   f34
----------
 {0,1}
 {0,NULL}
(2 rows)

（正しい応答、2番目は NULL が返る）
  f34
-------
 {0,1}

(2 rows)
</pre>
<li>多数のイコール条件と多数の潜在的に関連のある外部キー制約があるときのプラン作成が高速化されました。  (David Rowley) (11)(10)(9.6)</li>
<li>多数のテーブルを作成したトランザクションをロールバックするときに、テーブル数に対して O(N^2)オーダで処理を要する性能問題が回避されました。  (Tomas Vondra) (11)(10)(9.6)(9.5)(9.4)</li>
<li>動的共有メモリの割り当てで、稀な場合におきるバックエンドプロセスのクラッシュが修正されました。  (Thomas Munro, Robert Haas) (11)(10)</li>
<li>動的共有メモリの管理での競合状態を修正しました。  (Thomas Munro) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これにより「ERROR:  dsa_area could not attach to segment」や「ERROR:  cannot unpin a segment that is not pinned」のエラーが生じる可能性がありました。
</p>
<li>ホットスタンバイのPostgreSQLマスタプロセス(postmaster)が、スマートシャットダウン要求を受け取った後でシャットダウンに失敗する可能性がある競合状態が修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<li>pg_identify_object_as_address()に不正な入力が与えられたとき、クラッシュを起こす可能性があり、修正されました。 (&Aacute;lvaro Herrera) (11)(10)(9.6)(9.5)</li>
<p>pg_identify_object_as_address() はシステム情報を取得するSQL関数の一つです。</p>
<li>txid_status() でトランザクション失敗の状態にアクセスできない可能性があり、修正されました。  (Thomas Munro) (11)(10)</li>
<p>
以前は未来のトランザクションの状態を取得し続けると、最終的に以下のようなエラーが発生していました。
</p>
<pre>
=# SELECT txid_status(txid_current() + 1);
ERROR:  could not access status of transaction 32768
DETAIL:  Could not read from file "pg_xact/0000" at offset 8192: No error: 0.
</pre>
<li>OpenSSLライブラリのバージョンが混在した状態でSCRAM認証を使用しようとしたときの認証失敗が修正されました。  (Michael Paquier, Peter Eisentraut) (11)</li>
<p>
サーバが OpenSSL 1.0.2 以降を使用しているときに libpq がOpenSSL 1.0.1 以前を使用していると、どの SASL機構を使用するかのネゴシエーションが失敗し、「ERROR:  channel binding not supported by this build」という分かりにくいエラーメッセージが発生していました。
</p>
<li>暗号化された SCRAM-SHA-256 および MD5 パスワードの検証が強化されました。  (Jonathan Katz) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
一致する先頭文字をもつパスワード文字列が SCRAM-SHA-256 または MD5形式に正しくハッシュ化されたものと間違われる可能性がありました。
</p>
<p>
SCRAM-SHA-256形式では先頭が SCRAM-SHA-256$ であるかのみをチェックし、フィールドはチェックしておらず、MD5 形式では先頭が md5 であるかと長さのみをチェックし、16進数の文字であるかはチェックしていませんでした。パスワードは受け入れられますが、あとで使用できなくなります。
</p>
<li>データベースのエンコーディングとは異なるエンコーディングが指定されたlc_time設定の処理が修正されました。  (Juan Jos&eacute; Santamar&iacute;a Flecha, Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
ASCII 以外の文字を含むローカライズされた月または日の名前は、以前は予期せぬエラーまたはそのロケールで誤った出力を発生させていました。
</p>
<li>サーバのデータディレクトリ内のほかのファイルと同じ権限でcurrent_logfilesファイルが作成されるようになりました。  (Haribabu Kommi) (11)</li>
<p>
以前は log_file_mode で指定された権限を使用していましたが、バックアップユーティリティに問題を発生させる可能性がありました。
</p>
<li>単項マイナス演算子を含む場合について、operator_precedence_warning設定に基づくチェックの誤動作が修正されました。  (Rikard Falkeborn) (11)(10)(9.6)(9.5)</li>
<p>
以前は以下のような警告が発生していました。
</p>
<pre>
db=# SET operator_precedence_warning TO on;
db=# SELECT -random() IS NULL;
WARNING:  operator precedence change: IS is now lower precedence than -
row 1: SELECT -random() IS NULL;
                       ^
 ?column?
----------
 f
(1 row)
</pre>
<li>浮動小数点のサーバパラメータ値として「NaN」が拒否されるようになりました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<pre>
=# SET random_page_cost TO 'NaN';
ERROR:  parameter "random_page_cost" requires a numeric value
</pre>
<li>pg_class の各インデックスを再作成するときにアサート失敗を回避するために、REINDEX処理を並び替えて行うようになりました。  (Andres Freund, Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<li>パラメータ化されたダミーパスに対するプランナのアサート失敗が修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
アサートを無効にしたビルドでは本障害によるユーザに見える影響はありません。
</p>
<li>SnapBuildInitialSnapshot() の結果に正しいテスト関数が挿入されるようになりました。  (Antonin Houska) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
コアコードでは考慮する必要はありませんが、いくつかの拡張ではその必要があります。SnapBuildInitialSnapshot() は主としてロジカルレプリケーションのために使われる内部実装関数です。
</p>
<li> Windows で断続的に「could not reattach to shared memory (共有メモリに再接続できなかった)」としてセッションの起動に失敗する不具合が修正されました。  (Noah Misch) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これまで認識されていなかった不具合の原因は、プロセスのデフォルトスレッドプール用のスレッドスタックの作成です。そのようなスタックが異なるメモリ領域に割り当てられるようになりました。
</p>
<li>Windows上のディレクトリスキャンにおけるエラー検出が修正されました。  (Konstantin Knizhnik) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
ディレクトリの読み取り権限がない、といったエラーが検出されないか正しく報告されず、そのかわりにディレクトリが空であるかのように静かに振る舞っていました。
</p>
<li>ecpg の文法問題を修正しました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
ecpg プログラムでセミコロンが欠けているとき（「SET variable TO DEFAULT」でなく）「SET variable = DEFAULT」の誤変換をひき起こし、サーバに拒否されるであろう誤った構文を出力しました。さらに、複数の型名を列挙した DROP TYPE または DROP DOMAIN コマンドは、実際には最初の型名だけが処理されていました。
</p>
<li>CREATE TABLE AS に対する ecpg の構文がサーバのものに同期されました。  (Daisuke Higuchi) (11)(10)(9.6)(9.5)</li>
<li>ecpg のインクルードファイル名の処理によるバッファオーバーランの可能性があり、修正されました。  (Liu Huailing, Fei Wu) (11)(10)(9.6)(9.5)(9.4)</li>
<li>ターゲットデータディレクトリ内の一時ファイルが削除できなかったためにpg_rewind が失敗していた不具合が修正されました。  (Michael Paquier) (11)</li>
<li>指定されたデータディレクトリが正しい PostgreSQLバージョンであることをpg_verify_checksums が確認するようになりました。  (Michael Paquier) (11)</li>
<li>リモート側でグループ化または集約を使用しているクエリに無相関の副SELECT、外部参照、またはパラメータシンボルである SELECT の選択リスト項目があってもcontrib/postgres_fdw がクラッシュしなくなりました。  (Tom Lane) (11)(10)</li>
<li>振り分けられた行を挿入するために選択されたリモートパーティションが、同一コマンドで後で更新される UPDATEサブプランの対象である場合にエラーを報告するように contrib/postgres_fdw が変更されました。  (Amit Langote, Etsuro Fujita) (11)</li>
<p>
以前は、このような状況が原因でサーバーがクラッシュしたり、UPDATE結果が不正確になったりしていました。
</p>
<li>contrib/pg_prewarm でプレウォームが何らかの理由で失敗してもバックグラウンドワーカプロセスが無制限に respawnしなくなりました。  (Mithun Cy) (11)</li>
<li>lo_unlink()呼び出しが失敗した場合に contrib/vacuumlo がクラッシュしなくなりました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<li>タイムゾーンライブラリのコピーが IANA tzcode release 2019a と同期されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これによって Africa/Casablancaゾーンで 2440年の標準時とサマータイムの誤った遷移が出力されるという zic の小さな不具合が修正されます。また、zic に新しい -r オプションが追加されます。
</p>
<li>タイムゾーンデータファイルが tzdata release 2019a に更新されました。パレスチナとメトラカトラの夏時間法の変更とイスラエルの歴史的な修正が含まれます。   (11)(10)(9.6)(9.5)(9.4)</li>
<p>
Etc/UCT は Etc/UTC への後方互換性のあるリンクになりました。現在は一般的にタイプミスとされる略語の UCT を生成する別のゾーンではありません。PostgreSQL は依然としてゾーンの省略形として UCT の入力を受け入れますが、それを出力しません。
</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>
