<?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.18 &#8211; SRA OSS Tech Blog</title>
	<atom:link href="https://www.sraoss.co.jp/tech-blog/tag/postgresql-9-6-18/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>Thu, 15 Oct 2026 03:29:28 +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.18 &#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.19 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/9-6-19/</link>
		
		<dc:creator><![CDATA[データベース技術グループ]]></dc:creator>
		<pubDate>Fri, 21 Aug 2020 04:47:39 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 9.6]]></category>
		<category><![CDATA[PostgreSQL 9.6.18]]></category>
		<category><![CDATA[PostgreSQL 9.6.19]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=6289</guid>

					<description><![CDATA[このリリースは 9.6.18 からの修正リリース（2020年8月13日リリース）です。9.6.x からのアップデートではダンプ、リストアは不要です。ただし、9.6.16よりも前のバージョンからアップデートする場合には、9 ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 9.6.18 からの修正リリース（2020年8月13日リリース）です。9.6.x からのアップデートではダンプ、リストアは不要です。ただし、9.6.16よりも前のバージョンからアップデートする場合には、<a href="/tech-blog/pgsql/9-6-16/">9.6.16 のリリース情報</a>も参照してください。</p>
<p><span id="more-6289"></span></p>
<h3>PostgreSQL 9.6.18 から 9.6.19 への変更点</h3>
<p>12.4、11.9、10.14、9.6.19、9.5.23 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<ol>
<li>論理レプリケーションの walsender と apply worker で、search_path を安全な設定で上書きするようになりました。  (Noah Misch) (12)(11)(10)</li>
<p>
パブリッシャデータベースまたはサブスクライバデータベースの悪意のあるユーザが、レプリケーションを実行するロール（スーパーユーザであることが多い）によって任意のSQLコードの実行を引き起こす可能性がありました。このリスクのいくつかは <a href="https://wiki.postgresql.org/wiki/A_Guide_to_CVE-2018-1058%3A_Protect_Your_Search_Path">CVE-2018-1058</a>で説明されているものと同等で、本修正は、レプリケーションの送信者と受信者が空の search_path 設定で実行されるようにして、リスクを緩和します。CVE-2018-1058 の修正と同様に、この変更によりレプリケートされたテーブルの定義で使用されるスキーマ修飾されていないオブジェクト名で問題が生じるかもしれません。
</p>
<p>
信頼されていないロールに属するオブジェクトのレプリケートには他にも危険性があり、そのことについてドキュメント記載されました。(CVE-2020-14349)
</p>
<li>contribモジュールのインストールスクリプトをより安全にしました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)</li>
<p>
攻撃者が拡張のターゲットスキーマまたは必須とされているスキーマにオブジェクトを作成できる場合、拡張のインストールスクリプトに対して <a href="https://wiki.postgresql.org/wiki/A_Guide_to_CVE-2018-1058%3A_Protect_Your_Search_Path">CVE-2018-1058</a> と同様の攻撃が行われる可能性があります。拡張のインストールにはスーパーユーザ権限を必要とすることが多いため、これによりスーパーユーザ権限を取得するための道が開かれてしまいます。このリスクを軽減するために、スクリプトの実行で使用される search_path により注意を払う、check_function_bodies 設定を無効にしてインストール時のコード実行を回避する、一部の contrib モジュールで使用されているカタログ調整クエリを安全にする、ということが行われました。
</p>
<p>
ドキュメントに、サードパーティの拡張の作者がインストールスクリプトを安全にするための記述が追加されました。これは完全な解決策ではありません。不注意にインストールされた場合、他の拡張に依存する拡張は依然としてリスクがあります。(CVE-2020-14350)
</p>
<li>パーティション除外処理の境界ケースについて修正されました。  (Etsuro Fujita, Dmitry Dolgov) (12)(11)</li>
<p>
パーティションキー列が複数あるとき、一部の列に値を限定する WHERE句が無かったり、限定を与える句が複数あったりする場合に、パーティション除外のための検査の生成が誤動作するおそれがありました。これはサーバプロセスのクラッシュ、不正なクエリ結果、アサート失敗をもたらす可能性がありました。
</p>
<pre>
（クラッシュする例の一つ ／ この場合「b &gt;= 2」が無ければクラッシュしない）
db=# CREATE TABLE pt3 (a int, b int, c int, d int) PARTITION BY RANGE (a, b, c, d);
db=# CREATE TABLE pt3_p1 PARTITION OF pt3 FOR VALUES FROM (1,1,1,0) TO (1,1,1,10);
db=# CREATE TABLE pt3_p2 PARTITION OF pt3 FOR VALUES FROM (2,2,2,0) TO (2,2,2,10);
db=# SELECT * FROM pt3 WHERE a &gt;= 1 AND b &gt;= 1 AND b &gt;= 2 AND c &gt;= 2 AND d &gt;= 0;
server closed the connection unexpectedly
</pre>
<li>パーティション同士の入れ子ループ結合の内部でパラメータ化されたBitmapAnd と BitmapOr のインデックススキャンの構造が修正されました。  (Tom Lane) (12)(11)</li>
<p>
このようなスキャンで結合の外側から値を使用する必要がある実行計画は、通常、実行時にクラッシュします。
</p>
<pre>
（実行するとクラッシュするプラン形状の例 ／ pt4a と pt4b はパーティションテーブル）

db=# EXPLAIN (costs off) SELECT * FROM pt4a WHERE NOT EXISTS (
       SELECT FROM pt4b WHERE pt4b.a = pt4a.a AND pt4b.b = pt4a.b + 1 AND pt4b.c = 123)
       AND a = 1 AND c = 120;
                          QUERY PLAN
---------------------------------------------------------------
 Nested Loop Anti Join
   -&gt;  Seq Scan on pt4a_p1
         Filter: ((a = 1) AND (c = 120))
   -&gt;  Bitmap Heap Scan on pt4b_p1
         Recheck Cond: ((c = 123) AND (b = (pt4a.b + 1)))
         Filter: ((a = 1) AND (a = pt4a_p1.a))
         -&gt;  BitmapAnd
               -&gt;  Bitmap Index Scan on pt4b_p1_c_idx
                     Index Cond: (c = 123)
               -&gt;  Bitmap Index Scan on pt4b_p1_b_idx
                     Index Cond: (b = (pt4b.b + 1))
(11 rows)
</pre>
<li>パーティショニングテーブルが同一の問い合わせで静的パーティショニング除外と実行時パーティショニング除外の両方の対象で、かつ、問い合わせと同時に新しいパーティションが追加された場合に誤った計画が実行されることがあり、修正されました。  (Amit Langote, Tom Lane) (12)</li>
<p>
本障害によりアサート失敗が報告されました。アサートを無効にしている場合、誤った結果やクラッシュがもたらされる可能性があります。また、発生を防ぐ修正に加えて、本ケースはアサートではなく問い合わせのエラーとして報告されるようになりました。
</p>
<li>論理レプリケーションの walsender で、キープアライブメッセージ送信の後にフィードバックメッセージを送信できなかったのが修正されました。  (&Aacute;lvaro Herrera) (12)(11)(10)(9.6)(9.5)</li>
<p>
組み込みの論理レプリケーションを使用している場合は、組み込みの walreceiver が（誤った状態をクリアする）フィードバック返信をいずれにせよかなり頻繁に送信するため、これは比較的小さな問題です。しかし、pglogical のような他のレプリケーションシステムでは、重大な性能問題が発生していました。
</p>
<li>論理レプリケーションのサブスクライバにおける、列指定 UPDATEトリガの起動が修正されました。  (Tom Lane) (12)(11)(10)</li>
<p>
これまでのコードでは、パブリッシャテーブルとサブスクライバテーブルで列番号が異なる可能性を考慮していませんでした。実際に列番号が異なっていた場合、どのトリガを実行するかについて誤った判断をする可能性がありました。
</p>
<li>pg_replication_slot_advance() の実行中に最も古い xmin値とLSN値が更新されるようになりました。  (Michael Paquier) (12)(11)</li>
<p>
pg_replication_slot_advance() 関数は以前これができなかったため、レプリケーションスロットを手動で進めた後にリソースのクリーンアップ（不要になったWALセグメントの削除など）を妨げる可能性がありました。
</p>
<li>ts_headline() の実行遅延が修正されました。  (Tom Lane) (12)(11)(10)(9.6)</li>
<p>
以前の一連のマイナーリリースで追加されたフレーズ検索の修正により、長い文書に対して ts_headline() が不合理に時間を要する可能性がありました。さらに悪いことに時間を要することのあるループ内でキャンセルできませんでした。
</p>
<li>repeat() 関数がクエリキャンセルで確実に中断できるようになりました。  (Joe Conway) (12)(11)(10)(9.6)(9.5)</li>
<li>Windows上での結果にキャリッジリターン("\r")が含まれないようにpg_current_logfile() が修正されました。  (Tom Lane) (12)(11)(10)</li>
<li>pg_read_file() と関連する関数が EOF に達するまで確実に読み込まれるようになりました。  (Joe Conway) (12)(11)</li>
<p>
以前は読み込むデータの長さが指定されていない場合、これらの関数は stat() によって報告されたファイルの長さで停止していました。これはパイプやその他の種類の仮想ファイルには不適切な動作です。
</p>
<li>jsonpath の計算で数値の「NaN」値が禁止されました。  (Alexander Korotkov) (12)</li>
<p>
SQL にも JSON にも 「NaN」(not-a-number) という概念はありませんが、jsonpath のコードはそのような値を許可しようとしていました。これは必然的に非標準の動作につながるため、最初からそのような値を拒否する方が良いと判断されました。
</p>
<li>浮動小数点の集約で、単一の「Inf」または「NaN」の入力が正しく処理されるようになりました。  (Tom Lane) (12)</li>
<p>
影響を受ける集約は以下です。
</p>
<pre>
      corr()
      covar_pop()
      regr_intercept()
      regr_r2()
      regr_slope()
      regr_sxx()
      regr_sxy()
      regr_syy()
      stddev_pop()
      var_pop()
</pre>
<p>
このような場合の集約された値として「NaN」を返すべきですが、PostgreSQL v12 で導入されたアルゴリズム変更のために 0 を返すようになっていました。
</p>
<li>数値型列のパラレル集計時の「NaN」入力の処理が修正されました。  (Tom Lane) (12)(11)(10)(9.6)</li>
<p>
一部の部分集計ワーカーが「NaN」のみを検出し、他のワーカーが「NaN」以外のもののみを検出した場合、結果は誤って結合され全体的に誤った結果（つまり「NaN」であるべき時に「NaN」ではない）になる可能性がありました。
</p>
<li>24時間を超えて表現された時刻を拒否するようになりました。  (Tom Lane) (12)(11)(10)</li>
<p>
日付時刻入力の仕様は、"24:00:00" またはそれに相当する "23:59:60" を許容しますが、それ以上の値は許容しません。しかし、非ゼロの少数秒を伴う "23:59:60.nnn" を受け入れるように範囲チェックが誤って実装されていました。
</p>
<p>
タイムスタンプ値では翌日の1秒目に折り返される結果になりました。time や timetz の値では、保存された値は実際には 24時間より大きくなり、ダンプ/リストアの失敗やその他の誤動作を引き起こす可能性がありました。
</p>
<li>EXPLAIN の非テキスト出力フォーマット（JSON等）において、インデックス名に余計なダブルクォートを付けなくなりました。  (Tom Lane, Euler Taveira) (12)(11)(10)(9.6)(9.5)</li>
<li>Gather Merge を使用している実行計画のパラレルワーカにおいて、EXPLAIN のリソース使用量、特にバッファアクセスに関するリソース使用量の計算が修正されました。  (Jehan-Guillaume de Rorthais) (12)(11)(10)</li>
<li>ALTER TABLE における制約の再検証のタイミングが修正されました。  (David Rowley) (12)(11)(10)(9.6)(9.5)</li>
<p>
ALTER TABLE が（例えば、列のデータ型の変更により）テーブル内容を完全に書き換える必要がある場合で、外部キーや CHECK制約を再検証するためにテーブルをスキャンする必要がある場合に、これらが時々間違った順序で行われ、以下のような奇妙なエラーを引き起こしていました。
</p>
<pre>
 ERROR:  could not read block 0 in file "base/16543/17654": read only 0 of 8192 bytes
</pre>
<li>インデックスのレプリカアイデンティティのフラグを保持するようにREINDEX CONCURRENTLY が修正されました。  (Michael Paquier) (12)</li>
<p>
以前は、テーブルのレプリカID のインデックスをインデックス再構築すると設定が失われ、将来の論理デコード出力に古いタプル値が含まれなくなる原因となっていました。
</p>
<li>pg_subscription.subslotname と pg_subscription_rel.srsublsn の不正確な非NULLの印付けが修正されました。  (Tom Lane) (12)(11)(10)</li>
<p>
初期化時のカタログデータは、これら 2つのカタログ列を常に非NULLであると誤って印付けしていました。その印付けが正しいかどうかに依存している主な場所は、JIT有効時のタプル分解です。本修正では影響が出る箇所でこれらの誤った印付けを無視するようにしています。初期化時のカタログデータはバージョン13以降で修正されます。
</p>
<p>
また、これらの項目の NULL確認を行うコードが追加されました。ただし、NULL確認が無いためにクラッシュする可能性はほとんど無いと考えられます。
</p>
<li>FROM句にある平坦化されていない副問合せに付加された条件句でLATERAL参照が正常に使えるようになりました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)</li>
<p>
アサート失敗や、クエリ実行時のクラッシュにつながる可能性がありました。
</p>
<pre>
（クラッシュを引き起こす問い合わせ例）
db=# CREATE TABLE t22 (a int);
db=# INSERT INTO t22 VALUES (0), (1), (2);
db=# SELECT * FROM t22, LATERAL (
       SELECT t22.a &gt; 1 AS b, 1 AS c FROM (SELECT random() ORDER BY 1) AS v
       UNION ALL
       SELECT true AS b, 2 AS c
     ) AS vt22 WHERE b AND a &gt;= 0;
server closed the connection unexpectedly
</pre>
<li>選択度推定中に呼び出された演算子にクエリ指定の照合順序を使用するようになりました。  (Tom Lane) (12)</li>
<p>
以前は、データベースの列の照合順序を使用していましたが、正しくクエリの照合順序を使用するようになりました。
</p>
<p>
現在は非決定的な照合順序があるので、修正前は非決定的な照合順序が与えられた場合に演算子が完全に失敗するケースがありました。クエリ自体が動作するようなケースでプラン作成が失敗することは望ましくないため、推定の目的で演算子を呼び出す際には、クエリの照合順序を使用しなければなりませんでした。
</p>
<li>一度も ANALYZE されていない外部テーブルのタプルを 0行と想定しないようになりました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)</li>
<p>
これは主に、GROUP BY で得られるグループ数のプランナ推定に影響を与えていました。
</p>
<li>BRINインデックスの要約情報の展開で「WARNING:  leftover placeholder tuple detected in BRIN index "..."」という偽りの警告が削除されました。  (&Aacute;lvaro Herrera) (12)(11)(10)</li>
<p>
本ケースはキャンセルされたバキュームの後に合法的に発生する可能性があるので、それに関する警告は過度なものでした。
</p>
<li>共有ファイルセットの一時ファイルが配置されるテーブルスペースの選択が修正されました。  (Magnus Hagander, Tom Lane) (12)(11)</li>
<p>
temp_tablespaces が空か、データベースのテーブルスペースを明示的に指定している場合に、（パラレルハッシュ結合などで用いられる）共有ファイルセットの一時ファイルが期待通りデータベースのテーブルスペースに配置されるのではなく、pg_defaultテーブルスペースに配置されていました。
</p>
<li>WALの整合性をチェックする時の SP-GISTインデックスページのマスキングにおいて稀な場合に発生するエラーが修正されました。  (Alexander Korotkov) (12)(11)</li>
<p>
これにより、wal_consistency_checking設定が有効な場合に偽のエラー報告をする可能性がありました。
</p>
<pre>
（報告されたエラー例）
FATAL:  inconsistent page found, rel 1663/16385/22133, forknum 0, blkno 15
CONTEXT:  WAL redo at 0/739CEDE8 for SPGist/VACUUM_REDIRECT: newest XID 4619
</pre>
<li>サーバの buffileモジュールでのエラー処理が改善されました。  (Thomas Munro) (12)(11)(10)(9.6)(9.5)</li>
<p>
I/O エラーが EOF に到達したことと区別がつかなかったり、全く報告されなかったりするいくつかのケースが修正されました。また、ブロック番号やバイト数などの詳細が追加されました。
</p>
<p>
buffileモジュールは内部的な一時ファイルの読み書きに使われるものです。
</p>
<li>SERIALIZABLE モードでのコンフリクトチェックの異常を修正しました。  (Peter Geoghegan) (12)(11)(10)(9.6)(9.5)</li>
<p>
並行して挿入されたタプルが別の並行トランザクションによって更新され、どちらのタプルのバージョンも現在のトランザクションのスナップショットには見えなかった場合、シリアライズ競合チェックは、タプルが現在のトランザクションの結果に関連しているかどうかについて誤った結論を導き出す可能性がありました。 これにより、直列化失敗でエラーにすべき SERIALIZABLEトランザクションのコミットを許容してしまう可能性がありました。
</p>
<li>デッド状態の btreeインデックスエントリを繰り返しデッド判定しないように修正されました。  (Masahiko Sawada) (12)(11)(10)(9.6)(9.5)</li>
<p>
機能的には無害ですが、チェックサムが有効な場合や wal_log_hints = on の場合、無駄な WAL量増大を引き起こしていました。デッド状態とは無効なエントリであることを示すフラグの付いた状態を意味します。
</p>
<li>fsync が無効の場合に、ファイル同期リクエストを破棄するように、checkpointer プロセスが修正されました。  (Heikki Linnakangas) (12)</li>
<p>
そのようなリクエストは fsync が無効の場合には無視されますが、保留中の処理を保持するハッシュテーブルから削除する対応が漏れていました。この問題によりハッシュテーブルが肥大化し、再度 fsync を有効化した場合に、アサート失敗が発生する可能性がありました。
</p>
<li>バックアップ中に JITコンパイルを動作させたときに、非排他的ベースバックアップのクリーンアップ処理中に問題が生じることがあり、回避されました。  (Robert Haas) (12)(11)</li>
<p>
偽性の警告「WARNING:  aborting backup due to backend exiting beforepg_stop_backup was called」や、アサート失敗が報告されました。
</p>
<li>pg_control の変更前に正しいロックを取得するように、一部のコードパスの問題が修正されました。  (Nathan Bossart, Fujii Masao) (12)(11)(10)(9.6)(9.5)</li>
<p>
この問題により、一貫性のないチェックサムで pg_control が書き込まれる可能性があり、次に書き込む前にクラッシュした場合、データベースを再起動できないなど、あとで問題が発生する可能性がありました。
</p>
<li>関数 currtid() および currtid2() のエラーが修正されました。  (Michael Paquier) (12)(11)(10)(9.6)(9.5)</li>
<p>
これらの関数（文書化されておらず、ODBC ドライバの古いバージョンのみで使用）には、クラッシュを発生させたり、パーティションテーブルなど、ストレージのないテーブルに対して呼び出すと、「could not open file」などの混乱を招くエラーメッセージを表示する問題が含まれていました。
</p>
<li>スピンロックの取得中に elog() または palloc() を呼び出さないように修正されました。  (Michael Paquier, Tom Lane) (12)(11)(10)(9.6)(9.5)</li>
<p>
レプリケーションスロット関連の処理の一部では、このコーディング規則に違反していました。そのため、関数の呼び出し中にエラーが発生すると、ごくまれにスピンロックがスタックする可能性がありました。
</p>
<li>論理レプリケーションのサブスクライバで「REPLICA IDENTITY FULL」が使用できるように、アサートが修正されました。  (Euler Taveira) (12)(11)(10)</li>
<p>
この問題は、アサートが誤っていただけで、通常の製品ビルドには影響ありません。
</p>
<li>libpq が書き込みに失敗した後もデータベース接続ソケットから読み込みを試し続けるようになりました。  (Tom Lane) (12)</li>
<p>
この修正は、停止しかけのサーバプロセスから最後のエラーメッセージを確実に取得するためだけでなく、読み取りエラーが発生するまで接続が失われたことを考慮せず済ますためにも重要です。これまで、COPY データの転送中に接続が失なわれた場合に、アプリケーションにエラーを報告することなく、永遠に送信し続ける可能性がありました。
</p>
<li>libpq で GSS暗号化状態の管理についてバグが修正されました。  (Tom Lane) (12)</li>
<p>
GSS暗号化を使用した接続では、サーバの再起動後にリセットしようとしたとき、または候補サーバのリストの次に移動しようとしたとき、フリーズしてしまう可能性がありました。
</p>
<li>bytea およびカーソル変数による ecpgコマンドのクラッシュが修正されました。  (Jehan-Guillaume de Rorthais) (12)</li>
<li>pg_dump および pg_basebackup でディスク容量不足エラーが正しく報告されるようになりました。  (Justin Pryzby, Tom Lane, &Aacute;lvaro Herrera) (12)(11)(10)(9.6)(9.5)</li>
<p>
一部のコードパスでは「could not write file: Success」などのおかしな報告が生成される可能性がありました。
</p>
<li>pg_restore で、データオフセットなしのカスタム形式のダンプファイルでも、順不同のデータ項目をリストアできるように改善されました。  (David Gilman, Tom Lane) (12)</li>
<p>
pg_dump では、出力をシークできない（例えば、出力が何かにパイプされている）場合に、そのようなダンプファイルを生成します。この修正により、そのようなダンプファイルでも並列リストアができるようになります。
</p>
<li>テーブル単位と列単位のアクセス権限を両方とも設定したテーブルを並列リストアする場合の問題が修正されました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)</li>
<p>
アクセス権限はテーブル単位を先に付与する必要がありますが、並列リストアではそれを確実に順序づけできていませんでした。この問題により、「tuple concurrently updated」のエラーが発生したり、列単位のアクセス権限が付与されない可能性がありました。この問題はアクセス権限間の依存関係をダンプファイルに含めることで修正しています。そのため、問題が再発しないようにするには、修正された pg_dump でダンプを取得しなおす必要があります。
</p>
<li>pg_upgrade の実行時に対象クラスタで vacuum_defer_cleanup_age が 0 に設定されるようになりました。  (Bruce Momjian) (12)(11)(10)(9.6)(9.5)</li>
<p>
これまで、対象クラスタで vacuum_defer_cleanup_age が 0 以外に設定されている場合、システムカタログの凍結処理が正しく動作せず、混乱を招くメッセージとともにアップグレードが失敗していました。アップグレード中は設定が上書きされることに注意してください。
</p>
<li>pg_recvlogical で終了前に保留中のメッセージを送信するように修正されました。  (Noah Misch) (12)(11)(10)(9.6)(9.5)</li>
<p>
この修正がないと、レプリケーションの senderプロセスが送信障害を検出した場合に、レプリケーションスロットの LSN 位置に対して予期した最後の更新をせずに終了する可能性があります。この問題により、再接続時にデータが再送信されたり、pg_recvlogical が受信しようとした最後のデータの後に送信されたエラーメッセージを見逃す可能性がありました。
</p>
<li>pg_rewind でソースクラスタ内の削除されたばかりのファイルの処理が修正されました。  (Justin Pryzby, Michael Paquier) (12)(11)(10)(9.6)(9.5)</li>
<p>
オンラインのソースクラスタを使用する場合、ファイルを同時に削除できますが、これまで、ファイルのディレクトリエントリを確認してから、stat() でそれを調査するまでの間に削除されると、pg_rewind の動作に混乱が生じていました。
</p>
<li>Windows で pg_test_fsync がバイナリ I/O モードを使用するようになりました。  (Michael Paquier) (12)(11)(10)(9.6)(9.5)</li>
<p>
これまで、テキストモードでテストファイルに書き込んでいましたが、これはPostgreSQL での実際の使用方法を正しく反映したものではありませんでした。
</p>
<li>contrib/amcheck で空の削除済みインデックスページに対してエラーが発生しないように修正されました。  (Alexander Korotkov) (12)(11)</li>
<p>
この状態は WAL の再生中は正常です。
</p>
<li>contrib/dblink でローカル状態を正しく初期化できない問題が修正されました。  (Joe Conway) (12)(11)(10)(9.6)(9.5)</li>
<p>
状況の組み合わせによっては、この問題は dblink_close() が予期しないリモート COMMIT を発行する可能性がありました。
</p>
<li>contrib/pgcrypto で deflate() の誤った使用方法が修正されました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)</li>
<p>
これまで、pgp_sym_encrypt 関数では、zlib の API 要件を正しく処理していなかったため、誤った圧縮データを生成する可能性がありました。標準的なzlib でこのエラーが発生したとの報告はありませんが、IBM の zlibNX 実装を使用した場合に問題が確認されました。
</p>
<li>contrib/pgcrypto の pgp_sym_decrypt 関数でごく稀に発生する解凍処理の問題が修正されました。  (Kyotaro Horiguchi, Michael Paquier) (12)(11)(10)(9.6)(9.5)</li>
<p>
圧縮されたストリームは空のパケットで正常に終了する可能性がありますが、解凍処理はこれに対応しておらず、データが破損しているとのエラーが発生していました。
</p>
<li>Microsoft Visual Studio 2015 以降で NLSコードのビルドに対応しました。  (Juan Jos&eacute; Santamar&iacute;a Flecha, Davinder Singh, Amit Kapila) (12)(11)(10)(9.6)(9.5)</li>
<li>ソースツリー上に configure という名前のファイルが複数ある場合に、MSVC インストールスクリプトが失敗する問題が修正されました。  (Arnold M&uuml;ller) (12)(11)(10)(9.6)(9.5)</li>
<p>
この問題により、ソースツリーのトップレベルを識別するために、configureを検索する処理に混乱が発生していました。
</p>
<li>BSD系の sys_siglist[] の代わりに POSIX 標準の strsignal() を使用するようになりました。  (Tom Lane) (11)(10)(9.6)(9.5)</li>
<p>
この修正により、最新バージョンの glibc でもビルドエラーが発生しなくなります。
</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.18 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/9-6-18/</link>
		
		<dc:creator><![CDATA[PostgreSQL技術グループ]]></dc:creator>
		<pubDate>Wed, 20 May 2020 02:11:09 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 9.6]]></category>
		<category><![CDATA[PostgreSQL 9.6.17]]></category>
		<category><![CDATA[PostgreSQL 9.6.18]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=5926</guid>

					<description><![CDATA[このリリースは 9.6.17 からの修正リリース（2020年5月14日リリース）です。9.6.x からのアップデートではダンプ、リストアは不要です。ただし、9.6.16よりも前のバージョンからアップデートする場合には、9 ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 9.6.17 からの修正リリース（2020年5月14日リリース）です。9.6.x からのアップデートではダンプ、リストアは不要です。ただし、9.6.16よりも前のバージョンからアップデートする場合には、<a href="/tech-blog/pgsql/9-6-16/">9.6.16 のリリース情報</a>を参照してください。</p>
<p><span id="more-5926"></span></p>
<h3>PostgreSQL 9.6.17 から 9.6.18 への変更点</h3>
<p>12.3、11.8、10.13、9.6.18、9.5.22 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<ol>
<li>生成列（GENERATED 指定された列）で起こりうるクラッシュが修正されました。  (David Rowley) (12)</li>
<p>
生成列が、テーブル内の他の列の単なるコピーで、かつ、リファレンス渡しのデータ型（文字列型など）である場合、テーブルに壊れたデータが投入されるかクラッシュを引き起こす可能性がありました。他の列を単に複製する GENERATED式という役に立たない使い方に限られればよいですが、時に入力そのものを返す関数を使っている式で本状況が生じる可能性があります。
</p>
<p>
本障害で以下のようなデータ投入時に巨大なメモリ要求によるエラーが出るケースも報告されました。
</p>
<pre>
ERROR:  XX000: invalid memory alloc request size 18446744073709551613
</pre>
<li>生成列の継承の扱いが改善されました。  (Peter Eisentraut) (12)</li>
<p>
CREATE TABLE ... INHERITS でテーブルの列が継承された場合、親の列が生成列（GENERATED）であるときに子の列で生成列であるという属性を変更することが禁止され、一方で、親の列が生成列でないときに子の列で GENERATED を指定して生成列にできるようになりました。
</p>
<p>
これらの規則が不明瞭であったことに起因して、生成列と継承の組み合わせを含むテーブル定義のダンプがリストアできない場合が報告されました。
</p>
<li>CREATE TABLE ... LIKE ... INCLUDING GENERATED で、列をまたがる参照が修正されました。  (Peter Eisentraut) (12)</li>
<p>
物理的に後ろにある列を参照する GENERATED式をコピーしようとするときに CREATE TABLE ... LIKE が以下のようなエラーを起こしました。
</p>
<pre>
（報告されたエラー発生例）
db=# CREATE TABLE t3 (
     funds float GENERATED ALWAYS AS (cast(funds_t AS double precision)) STORED,
     funds_t text,
     id bigserial not null);

db=# CREATE TABLE IF NOT EXISTS t3_temp (LIKE t3 INCLUDING GENERATED);
ERROR:  XX000: unexpected varattno 3 in expression to be mapped
</pre>
<li>ALTER TABLE ... SET STORAGE がインデックスに伝搬するようになりました。  (Peter Eisentraut) (12)(11)</li>
<p>
式でないインデックス列は作成時には常に、そのテーブル列の attstorage属性をコピーしていました。整合性を維持するように、ALTER TABLE ... SET STORAGE ... が実行されたときにインデックスに対しても属性を変更するようになりました。
</p>
<li>ALTER TABLE で書き換えられたインデックスの indisclustered属性を維持するようになりました。  (Amit Langote, Justin Pryzby) (12)(11)(10)(9.6)(9.5)</li>
<p>
indisclustered は pg_indexシステムテーブルの列で、前回テーブルを当該インデックスを使って CLUSTERコマンドを実行した場合にtrue となります。これまで、当該列を対象に ALTER TABLE を実行すると、この情報が失われていました。
</p>
<li>ALTER TABLE で書き換えられたインデックスの REPLICA IDENTITY属性が維持されるようになりました。  (Quan Zongliang, Peter Eisentraut) (12)(11)(10)(9.6)(9.5)</li>
<p>
REPLICA IDENTITY属性は、論理レプリケーション用に使われ、ALTER TABLE ... REPLICA IDENTITY USING INDEX ... コマンドで指定されます。pg_indexシステムテーブルの列名としては indisreplident です。これまで、当該列を対象に ALTER TABLE を実行すると、この情報が失われていました。
</p>
<li>REINDEX CONCURRENTLY で再構築されたインデックスの indisclustered属性が維持されるようになりました。  (Justin Pryzby) (12)</li>
<p>
これまで、このような場合に属性が失われ、REINDEX CONCURRENTLY後のCLUSTERコマンド実行が失敗する可能性がありました。
</p>
<li>DROP OWNED BY コマンドにおいて、オブジェクトをより早くロックするようになりました。  (&Aacute;lvaro Herrera) (12)(11)(10)(9.6)(9.5)</li>
<p>
これにより、他セッションがいくつかの同オブジェクトを削除している場合の競合状態によるエラーを回避します。以下のエラーが出るケースが報告されました。
</p>
<pre>
ERROR:  cache lookup failed for relation 41019
</pre>
<li>CREATE ROLE ... IN ROLE ... のエラー処理が修正されました。  (Andrew Gierth) (12)(11)(10)(9.6)(9.5)</li>
<p>
一部のエラーケースでは意図通りのメッセージの代わりに「unexpected node type」といったエラーメッセージが報告されていました。
</p>
<li>パーティションがデタッチされたときに、旧親テーブルから複製されたトリガが確実に除去されるように修正されました。  (Justin Pryzby) (12)(11)</li>
<p>
これまで、パーティションをデタッチした際にトリガが残ってしまう動作があり、そのようなトリガは、旧親テーブルとの依存関係のために以下のようなエラーが出て、削除不能となっていました。
</p>
<pre>
db=# ALTER TABLE t10p DETACH PARTITION t10c;
db=# DROP TRIGGER trig ON t10c;
ERROR:  cannot drop trigger trig on table t10c because trigger trig on table t10p requires it
</pre>
<li>パーティション境界の式で、COLLATE が照合不可能な型に適用されるとクラッシュする不具合があり、修正されました。  (Dmitry Dolgov) (12)</li>
<pre>
（該当する例: 整数型に COLLATE を指定する式を与えている）
db=# CREATE TABLE t11p (i int) PARTITION BY LIST (i);
db=# CREATE TABLE t11c1 PARTITION OF t11p FOR VALUES IN ('1' COLLATE "POSIX");
</pre>
<li>パーティショニングされたテーブル上のユニークインデックスが、パーティショニングキーの等価性セマンティクスと一致するかどうかを確認するようになりました。  (Guancheng Luo) (12)(11)</li>
<p>
これは独自の等価性演算子を持つインデックス演算子クラスだけの問題ですが、理論的には間違っていたので、確認するように修正されました。
</p>
<li>pg_read_all_statsロールのメンバが、期待通りにすべての統計情報ビューを参照できるようになりました。  (Magnus Hagander) (12)(11)(10)</li>
<p>
pg_read_all_statsロールのメンバ は pg_stat_progress_* ビューを参照できるとドキュメントに記載されていましたが、実際には参照できませんでした。
</p>
<li>information_schema.triggersビューのパフォーマンス劣化が修正されました。  (Tom Lane) (12)(11)</li>
<p>
この修正は、テーブル名を制約する外側の WHERE句がプッシュダウンされるようにビューを再定義し、計算がデータベース内の全トリガではなく、対象テーブルに属するトリガに対してのみ行われるようにします。多くのトリガを持つデータベースでは、この変更でかなりの速度差が出ます。
</p>
<p>
バージョン11より前には修正後と同様に動作していたので、これは潜在的なパフォーマンス劣化でした。
</p>
<p>
本修正は既存のデータベースクラスタには適用されませんが、明示的にビュー定義を置き換えることで修正することができます。information_schema.triggersビューを含む情報スキーマの定義はソースコードの以下パスにあります。
</p>
<pre>
src/backend/catalog/information_schema.sql
</pre>
<li>浮動小数点オーバーフローおよびアンダーフロー検出のパフォーマンス低下が修正されました。  (Emre Hasegeli) (12)</li>
<p>
以前のリファクタリングで、いくつかのホットなコードパスで isinf() を余分に呼び出すようになっていました。
</p>
<li>全文検索がフレーズ検索上の NOT を正しく処理できるように修正されました。  (Tom Lane) (12)(11)(10)(9.6)</li>
<p>
これまで、GiST や GIN インデックス検索として実行されている場合、「!(foo &lt;-&gt; bar)」のようなクエリで、マッチする行が見つからない問題が発生していました。
</p>
<li>全文検索のフレーズ検索で、前方一致と重み限定の両方を持つ項目が含まれる場合に、マッチ漏れが発生する不具合が修正されました。  (Tom Lane) (12)(11)(10)(9.6)</li>
<p>
以下のような場合が該当します。
</p>
<pre>
（マッチすべきところでマッチしない障害動作例）
db=# SELECT 'wa:1D wb:2A'::tsvector @@ 'w:*D &lt;-&gt; w:*A'::tsquery as "true";
 true
------
 f
(1 行)
</pre>
<li>フレーズ検索を使うときにより良い見出しが選択されるように、ts_headline() 関数が修正されました。  (Tom Lane) (12)(11)(10)(9.6)</li>
<p>
検索条件部分が適切に強調されない動作が報告されました。
</p>
<li>gin_fuzzy_search_limit の処理の不具合が修正されました。  (Ad&eacute; Heyward, Tom Lane) (12)(11)(10)(9.6)(9.5)</li>
<p>
gin_fuzzy_search_limit の値が小さいと、意図せずに同じインデックスページを何度も再スキャンしてしまい、予期せず遅くなる可能性がありました。別のコードパスでは、意図したフィルタリングの適用に失敗しており、多すぎる値を返す可能性がありました。
</p>
<li>ドキュメント通りに circle型の入力として「(x,y),r」形式を受け付けるようになりました。  (David Zhang) (12)(11)(10)(9.6)(9.5)</li>
<pre>
（修正前のエラー発生例）
db=# SELECT '( 1 , 1 ) , 5'::circle;
ERROR:  invalid input syntax for type circle: "( 1 , 1 ) , 5"
</pre>
<li>get_bit() と set_bit() 関数が 256MB より長い bytea文字列に対応しました。  (Movead Li) (12)(11)(10)(9.6)(9.5)</li>
<p>
ビット数の引数が int4 のみなので、これらの関数を使用して長い bytea の最初の256MB を超えるビットにアクセスすることはできません。バージョン 13 では引数が int8 に拡張される予定ですが、それまでの間は、これらの関数が長い bytea の最初の部分文字列で動作します。
</p>
<p>
修正前は、このような場合に以下エラーが発生していました。
</p>
<pre>
ERROR:  index 0 out of valid range, 0..-1
</pre>
<li>pg_ls_waldir() とその関連関数で、ファイルが見つからないというエラーを無視するようになりました。  (Tom Lane) (12)(11)(10)</li>
<p>
これは、ディレクトリエントリが参照されてからstat() を実行しようとするまでの間にファイルが削除された場合の競合状態による失敗を防ぎます。
</p>
<li>pg_ls_dir()、pg_timezone_names()、pg_tablespace_databases()、および、関連関数で、ディレクトリの開いたファイルディスクリプタがリークする可能性があり、回避されました。  (Justin Pryzby) (12)(11)(10)(9.6)(9.5)</li>
<li>多様関数の型解決が修正されました。anyrange の入力のみを与えられた場合に、anyarray の出力が実際の型を正しく推論するようになりました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)</li>
<p>
そのような場合に以下のエラーが出るケースが報告されました。
</p>
<pre>
db=# CREATE FUNCTION f24(x anyrange, out lu anyarray, out ul anyarray)
     LANGUAGE SQL
     AS 'SELECT array[lower(x),upper(x)], array[upper(x),lower(x)]';

db=# SELECT * FROM foo24(int4range(6,9));
ERROR:  cache lookup failed for type 0
</pre>
<li>GSSAPI対応でコンパイルされていないために GSSAPI接続が拒否され、クライアントが代わりに SSL 接続を試みる場合の、サーバの接続開始ロジックが修正されました。  (Andrew Gierth) (12)</li>
<p>
これまで、以下の FATALメッセージで失敗していました。
</p>
<pre>
FATAL:  unsupported frontend protocol 1234.5679: server supports 2.0 to 3.0
</pre>
<li>GSSAPI暗号化でのメモリリークが修正されました。  (Tom Lane) (12)</li>
<p>
これまで、GSSAPI暗号化が使用されている場合、バックエンドと libpq の両方がセッション中に送信されたデータの総量に相当するメモリリークが発生していました。
</p>
<li>クエリの FROM句で使用される集合を返す関数のメモリリークが修正されました。  (Andres Freund) (12)</li>
<p>
これにより以下のような問い合わせのメモリ使用量が巨大になっていました。
</p>
<pre>
db=# SELECT sum(f) FROM generate_series(1, 1000000) g(i),
                        generate_series(i, i+1) f;
</pre>
<li>複数回使われるハッシュ化されたサブプランのハッシュテーブルのリークが回避されました。  (Andreas Karlsson, Tom Lane) (12)(11)</li>
<p>
この誤りは、ハッシュ化されたサブプランのクエリを十分な回数再実行した時に、深刻なメモリの肥大化を引き起こす可能性がありました。
</p>
<li>プランナによる何もしないドメインに型変換する処理が改善されました。  (Tom Lane) (12)</li>
<p>
何もしないドメインへの型変換が式から完全に取り除かれない場合があり、修正されました。旧メジャーバージョンと比べて動作が遅くなっていたことが報告されていました。
</p>
<li>REINDEX が SIGTERM（セッションシャットダウン）シグナルで終了した時のクラッシュが回避されました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)</li>
<p>実際には上記の状況であっても本障害でのクラッシュ発生は稀です。</p>
<li>EXPLAIN でおそらく不正とみられるハッシュ結合テーブルの統計情報が出力されていたものが、防止されました。  (Konstantin Knizhnik, Tom Lane, Thomas Munro) (12)(11)(10)(9.6)(9.5)</li>
<p>
以下のような EXPLAIN出力（一部抜粋）が報告されていました。
</p>
<pre>
-&gt;  Hash  (cost=0.11..0.11 rows=10 width=12) (actual time=0.002..0.002 rows=1 loops=8)
      Buckets: 2139062143  Batches: 2139062143  Memory Usage: 8971876904722400kB
      -&gt;  Function Scan on unnest init_1  (cost=0.01..0.11 rows=10 width=12) (actual time=0.001..0.001 rows=1 loops=8)
</pre>
<li>VACUUM VERBOSE でのヒープ切り捨て段階の経過時間の報告が修正されました。  (Tatsuhito Kasahara) (12)(11)(10)(9.6)(9.5)</li>
<p>
これまで不正確な経過時間が報告されていました。
</p>
<li>VACUUM VERBOSE の出力で、削除された B-treeインデックスについてページ数が過小に報告されていたものが、修正されました。  (Peter Geoghegan) (12)(11)</li>
<li>B-treeインデックスで最も古い削除されたページに対する誤った記録付けが修正されました。  (Peter Geoghegan) (12)(11)</li>
<p>
これによって、VACUUM がインデックスのクリーンアップスキャンをスキップできる場合について、微妙に間違った判断をする可能性がありました。
</p>
<li>TimelineHistoryRead と TimelineHistoryWrite の待機状態が、.historyファイルを読み書きするすべてのコードパスで報告されるようになりました。  (Masahiro Ikeda) (12)(11)(10)</li>
<li>プロセスの PS状態で「waiting」が重複して表示されないように修正されました。  (Masahiko Sawada) (12)(11)(10)(9.6)(9.5)</li>
<pre>
（誤った psコマンドの出力行の例）
46510   ??  Ss     0:00.05 postgres: startup   recovering 000000010000000000000003 waiting waiting
</pre>
<li>拡張統計データのカタログタプルを ANALYZE で置き換えた場合の競合状態が回避されました。  (Dean Rasheed) (12)</li>
<p>
VACUUM FULL などの操作が同時に行われた場合に、ANALYZE が間違ったタプルを置換してしまう可能性がありました。
</p>
<li>「冗長な」周回防止バキュームの不用意なスキップが回避されました。  (Michael Paquier) (12)</li>
<p>
これにより、自動バキュームが何度もトライしては同じバキュームジョブをスキップすることを繰り返すというまれなケースが回避されます。
</p>
<li>B-tree のピボットタプルから INCLUDEされたカラムが常に削除されるようになりました。  (Peter Geoghegan) (12)</li>
<p>
この誤りはまれにスペースを無駄にしましたが、それ以外は無害です。
</p>
<li>REINDEX CONCURRENTLY に失敗した後に残る可能性のある無効な TOASTインデックスを適切に扱うようになりました。  (Julien Rouhaud) (12)</li>
<p>
REINDEX CONCURRENTLY に失敗した後に REINDEX TABLE を行った場合に、使用できず、削除もできない重複したインデックスが作成されてしまう問題が生じていました。
</p>
<li>REINDEX CONCURRENTLY が失敗した後でも、有効なインデックスの依存関係が維持されるように対応されました。  (Michael Paquier) (12)</li>
<p>
以前は pg_depend のリンクがまったくない古いインデックスを残すことがありえたため、例えば親テーブルが削除されてもインデックスは削除されずに残ってしまいました。
</p>
<li>autovacuum がドロップされたばかりの一時スキーマにアクセスしようとした場合にクラッシュする障害が回避されました。  (Tom Lane) (12)(11)</li>
<p>
この障害はスーパーユーザが一時スキーマを手動で削除した場合にのみ発生します。これは一般的な状況ではありませんが、この場合も動作すべきでした。
</p>
<li>クラッシュリカバリ中の WALセグメントの早すぎるリサイクルが回避されました。  (Jehan-Guillaume de Rorthais) (12)(11)(10)(9.6)(9.5)</li>
<p>
クラッシュリカバリの間にアーカイブされる準備が整った WALセグメントがアーカイブされずにリサイクルされる可能性がありました。
</p>
<li>アーカイブリカバリ中に無関係なタイムラインがスキャンされないようになりました。  (Kyotaro Horiguchi) (12)(11)(10)(9.6)(9.5)</li>
<p>
これにより、アーカイブストレージから存在しない WAL ファイルをフェッチしようとする多くの試みを排除することが可能となり、アーカイブへのアクセスが遅い場合に役立ちます。
</p>
<li>論理デコーディングでの「subtransaction logged without previous top-level txn record」 というエラーの検査が削除されました。  (Arseny Sher, Amit Kapila) (12)(11)(10)(9.6)(9.5)</li>
<p>
この条件は様々なシナリオで正当に到達可能なため取り除かれました。
</p>
<li>レプリケーションスロットのコピー後に障害が発生する可能性があり、回避されました。  (Masahiko Sawada, Arseny Sher) (12)</li>
<p>
WALデータが適切に取りおかれず、早くに削除されてしまう可能性がありました。
</p>
<li>レプリケーションスロットの「io_in_progress_lock」がエラー時のコードパスで確実に解放されるようになりました。  (Pavan Deolasee) (12)(11)(10)(9.6)(9.5)</li>
<p>
本障害のため walsender が後でロックを待機したまま動けなくなる可能性がありました。
</p>
<li>論理レプリケーションによって発行された更新のときに、生成列が正しく確実に処理されるようになりました。  (Peter Eisentraut) (12)</li>
<p> これまで、このような場合に生成列が更新されませんでした。
</p>
<li>同期スタンバイ管理での競合状態が修正されました。  (Tom Lane) (12)(11)(10)(9.6)</li>
<p>
synchronous_standby_names の設定を変更している間、同期コミットを待っているトランザクションをリリースしてもよいかどうかについて、誤った判断を下す可能性がありました。 また、walsenderプロセスが終了してすぐにプロセスが再起動された場合にも、同様に誤った判断を下す危険性がありました。
</p>
<li>いくつかのエラー報告に欠落していた SQLSTATE値が追加されました。  (Sawada Masahiko) (12)(11)(10)(9.6)(9.5)</li>
<li>イベントトリガ関数の通常関数としての実行を確実に拒否するようにPL/pgSQL が修正されました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)</li>
<p>
そのような関数実行でクラッシュが発生していました。
</p>
<li>「sslmode=verify-full」を使用した時の libpq でのメモリリークが修正されました。  (Roman Peshkurov) (12)(11)(10)(9.6)(9.5)</li>
<p>
接続開始時の証明書の検証は、いくらかのメモリリークの可能性があり、クライアントプロセスの起動中にデータベース接続を多数オープンした場合に問題となる可能性がありました。
</p>
<li>すべてのプラットフォームで「-」引数を「標準入力からの読み込み」を意味するものとして扱うように ecpg が修正されました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)</li>
<p>
AIX で動作しないケースが報告されていました。
</p>
<li>psql で失敗した接続を復旧しようとした時に発生するクラッシュが修正されました。  (Michael Paquier) (12)</li>
<li>psql の \gx コマンドが引数（ファイル名）のタブ補完できるようになりました。  (Vik Fearing) (12)(11)(10)</li>
<p>
\gx コマンドは直前の SQL 実行結果を拡張出力モードで引数に指定したファイルへ書き込みます。
</p>
<li>pg_dump で ALTER ... DEPENDS ON EXTENSION がサポートされました。  (&Aacute;lvaro Herrera) (12)(11)(10)(9.6)</li>
<p>
以前の pg_dump はこの依存関係を無視してしまい、ダンプ/リストアや pg_upgrade時にそれらが反映されませんでした。
</p>
<li>pg_dump が RLSポリシーオブジェクトのコメントをダンプするように修正されました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)</li>
<li>pg_dump がイベントトリガのリストアを最後に行なうようになりました。  (Fabr&iacute;zio de Royes Mello, Hamid Akhtar, Tom Lane) (12)(11)(10)(9.6)(9.5)</li>
<p>
これにより、イベントトリガが他のオブジェクトの復元に干渉するリスクを最小限に抑えることができます。
</p>
<li>pg_basebackup が有効な tarファイルを確実に生成するようになりました。  (Robert Haas) (12)</li>
<p>
ファイルの末尾にゼロ埋めされたブロックが追加されることがありました。これは一般的なバージョンの tar では問題ないようですが、POSIXファイル形式の仕様としては問題がありました。
</p>
<li>pg_checksums および pg_verify_checksums がメジャーバージョンの異なるテーブル空間のサブディレクトリをスキップするようになりました。  (Michael Banck, Bernd Helmle) (12) (11)</li>
<p>
このようなサブディレクトリは実際にはデータベースクラスタには属していないので、処理してはいけませんでした。
</p>
<li>pg_checksums および pg_verify_checksums と関連プログラムで、pg_internal.init の一時的なコピーを無視するようになりました。  (Michael Paquier) (12) (11)</li>
<li>createdb の --encoding、--lc-ctype、--lc-collate の値のクォート処理が修正されました。  (Michael Paquier) (12)(11)(10)(9.6)(9.5)</li>
<p>
以下の通り、正しくクォートされた文字列を認識できるようになりました。
</p>
<pre>
（PostgreSQL 12.2 の createdb コマンド）
$ createdb --lc-collate "foo'; SELECT '1" 'foobar2'
createdb: error: database creation failed: ERROR:  CREATE DATABASE cannot run inside a transaction block

（PostgreSQL 12.3 の createdb コマンド）
$ createdb --lc-collate "foo'; SELECT '1" 'foobar2'
createdb: error: database creation failed: ERROR:  invalid locale name: "foo'; SELECT '1"
</pre>
<li>contrib/lo の lo_manage()関数が、トリガとしてではなく直接呼ばれた場合でもクラッシュしなくなりました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)</li>
<li>contrib/ltree で、ltree と lquery のフィールド長がオーバーフローしないようになりました。  (Nikita Glukhov) (12)(11)(10)(9.6)(9.5)</li>
<p>
これまではフィールド長が 65535 を超えると 0 になっていましたが、本修正によって ERROR が返るようになりました。
</p>
<pre>
（修正前の動作）
db=# SELECT nlevel(('1' || repeat('.1', 65534))::ltree);
 nlevel
--------
  65535
(1 row)

db=# SELECT nlevel(('1' || repeat('.1', 65535))::ltree);
 nlevel
--------
      0
(1 row)


（修正後の動作）
db=# SELECT nlevel(('1' || repeat('.1', 65535))::ltree);
ERROR:  number of ltree levels (65536) exceeds the maximum allowed (65535)
</pre>
<li>oldest_xact値が 2^31-1 を超えても contrib/pageinspect の bt_metap() 関数が失敗しなくなりました。  (Peter Geoghegan) (12)(11)</li>
<p>
このような XID は負の整数として報告されるようになりました。これはワークアラウンドですが、エラーを投げるよりは良いと判断されました。これまで、以下のようなエラーが発生していました。
</p>
<pre>
db=# SELECT * FROM bt_metap('index');
ERROR: value "2180413846" is out of range for type integer
</pre>
<li>contrib/sepgsql で誤った「WARNING: cache reference leak」メッセージが出力されなくなりました。  (Michael Luo) (12)(11)(10)(9.6)(9.5)</li>
<li>Windows で pg_ctl start 時の早すぎるログファイル作成を回避するようになりました。  (Alexander Lakhin) (12)</li>
<p>
Windows の pg_ctl で、-l で指定したログファイルがまだ存在せず、pg_ctl が Administrator権限で実行されている場合、postmaster から書き込みできないパーミッションでログファイルが作成されて、権限不足のエラーが生じる可能性がありました。
</p>
<li>Windows で Unixスタイルのロケール名を扱う際に失敗しないようになりました。  (Juan Jos&eacute; Santamar&iacute;a Flecha) (12)(11)(10)(9.6)(9.5)</li>
<p>
Unixスタイルのロケール文字列（たとえば "et_EE.UTF-8"）の場合、ドットの後にあるのはエンコーディング名です。これを Windows のコードページ番号として扱って、以下のエラーが生じていました。
</p>
<pre>
&gt; initdb.exe --locale et_EE.UTF-8 -D C:\data
initdb: ERROR:  invalid locale name "et_EE.UTF-8"
</pre>
<p>
そのため、ドットの後の文字がすべて数字であるかどうかを確認し、そうでない場合はコードページ番号ではなくエンコーディング名として扱うようになりました。
</p>
<li>Windows で、PG_COLOR のカラー化をサポートするプログラムでコンソールの VT100 互換モードを設定するようになりました。  (Juan Jos&eacute; Santamar&iacute;a Flecha) (12)</li>
<p>
これを設定していないと、カラー化オプションが実際には動作しませんでした。
</p>
<li>ereport() の呼び出しで余分な括弧が要求されなくなりました。  (Andres Freund, Tom Lane) (12)</li>
<p>
これはソースコード内のインターフェースに関連する修正です。
</p>
<li>configure で libxml2 の位置を確認するために、利用可能な場合は pkg-config を使用するようになりました。  (Hugh McMaster, Tom Lane, Peter Eisentraut) (12)(11)(10)</li>
<p>
pkg-config が存在しないか、libxml2 に関する情報がない場合は、これまで通りxml2-config に問い合わせます。
</p>
<p>
この変更により、PostgreSQL がデフォルトではないバージョンの libxml2 を使用する場合、そのバージョンの xml2-config を PATH に設定すると、ビルドプロセスが中断される可能性があります。代わりに、XML2_CONFIG にデフォルトではない xml2-config を設定してください。この方法は、古いバージョンの PostgreSQL でも新しいバージョンの PostgreSQL でも動作します。
</p>
<li>libpq と ecpg の、Makefile の依存関係を修正しました。  (Dagfinn Ilmari Mannsaker) (12)</li>
<li>MSVCビルドで Python のパス名のスペースに対処するようになりました。  (Victor Wagner) (12)(11)(10)(9.6)(9.5)</li>
<li>Visual Studio のバージョン検出が修正され、MSVC ビルドがより多くの言語設定で動作するようになりました。  (Andrew Dunstan) (12)(11)(10)(9.6)(9.5)</li>
<li>Windows 以外のビルドではすでにそうなっているように、MSVC ビルドでも、3.0 より新しいバージョンの bison では "-Wno-deprecated" を使用するようになりました。  (Andrew Dunstan) (12)(11)(10)(9.6)(9.5)</li>
<li>タイムゾーンデータファイルが tzdata release 2020a に更新されました。モロッコとカナダのユーコンの DST法の変更と上海の歴史的な修正が含まれます。   (12)(11)(10)(9.6)(9.5)</li>
<p>
America/Godthabゾーンは、現在の英語の使用法を反映するために America/Nuuk に名称変更されました。変更前の名前も互換性のために利用可能なままです。
</p>
<p>
また、initdb の既知の Windowsタイムゾーン名のリストが最近追加されたものを含むように更新され、そのプラットフォーム上のシステムのタイムゾーン設定が正しく翻訳される可能性が高まりました。
</p>
<li>パーティショニングされたテーブルで、制約違反エラーが発生した後に低頻度で発生するクラッシュが修正されました。  (Andres Freund) (11)(10)</li>
<li>nextXid がスタンバイサーバ上で後戻りしないようになりました。  (Eka Palamadai) (11)(10)(9.6)(9.5)</li>
<p>
この競合状態により、誤ったホットスタンバイフィードバックメッセージがプライマリサーバに送り返される可能性があり、VACUUM がプライマリ上ですぐに実行されてしまう可能性がありました。
</p>
<li>共有ライブラリのビルドする時に CXXFLAGS に CFLAGS_SL を含めるようになりました。  (Oleksii Kliukin) (10)</li>
<p>
これにより、必要に応じて "-fPIC" を追加するなど、C++ のソースファイルが正しくコンパイルされるようになります。11.x以降バージョンでは既にそのようになっています。
</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>
