<?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.5 &#8211; SRA OSS Tech Blog</title>
	<atom:link href="https://www.sraoss.co.jp/tech-blog/tag/postgresql-10-5/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:07:25 +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.5 &#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.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>
		<item>
		<title>PostgreSQL 10.5 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/10-5/</link>
		
		<dc:creator><![CDATA[データベース技術グループ]]></dc:creator>
		<pubDate>Thu, 23 Aug 2018 01:00:40 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 10]]></category>
		<category><![CDATA[PostgreSQL 10.4]]></category>
		<category><![CDATA[PostgreSQL 10.5]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=433</guid>

					<description><![CDATA[このリリースは 10.4 からの修正リリース（2018年8月9日リリース）です。 10.x からのアップデートではダンプ、リストアは不要です。 また、10.4 より前のバージョンからアップデートを行う場合は 10.4 に ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 10.4 からの修正リリース（2018年8月9日リリース）です。<br />
10.x からのアップデートではダンプ、リストアは不要です。</p>
<p>また、10.4 より前のバージョンからアップデートを行う場合は 10.4 に関する技術情報を参照してください。</p>
<p><span id="more-433"></span></p>
<h3>PostgreSQL 10.4 から 10.5 への変更点</h3>
<p>10.5、9.6.10、9.5.14、9.4.19、9.3.24 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<hr />
<ol>
<li>libpq にて接続を試行するごとに状態を完全にはリセットできておらず、修正されました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
ある種の攻撃方法で dblink や postgres_fdw の権限の無いユーザが、サーバを実行する OSユーザが所有する ~/.pgpass などのサーバ側の認証情報ファイルの使用を防止する検査を迂回できました。ローカル接続に peer認証を許可しているサーバは特に影響を受けます。postgres_fdw セッションへの SQLインジェクションなどの他の攻撃も可能です。
</p>
<p>
この方法で postgres_fdw を攻撃するには指定の接続パラメータで外部サーバオブジェクトが作成できる必要があります。一方、dblink に対しては、dblink にアクセスできる任意のユーザで攻撃可能です。一般に libpq を使ったアプリケーションに対して接続パラメータを選べると攻撃可能になると考えられます。(CVE-2018-10915)
</p>
<li>単純な「SELECT * FROM ...」ではないビューを通した「INSERT ... ON CONFLICT UPDATE」が修正されました。  (Dean Rasheed, Amit Langote) (10)(9.6)(9.5)</li>
<p>
ビューの SELECTリストが元のテーブルの列と1対1で対応していない場合に、更新可能ビューの誤った展開がクラッシュや「ERROR:  attribute ... has the wrong type」エラーをもたらす可能性がありました。
</p>
<p>
さらにセキュリティ上の問題もありました。攻撃者が同テーブルの他の列にINSERTとUPDATE権限を持っている場合に、この障害を利用してUPDATE権限の無い列を更新できました。また、あらゆるユーザがこの障害を使ってサーバメモリの読み取りが可能でした。(CVE-2018-10925)
</p>
<pre>
障害動作例:
（以下のようなテーブル、ビューで）
db1=# CREATE TABLE t2 (id int primary key, c1 int, c2 int);
db1=# CREATE VIEW v2 AS SELECT id, c2 FROM t2;
db1=# GRANT UPDATE (id, c2) ON t2 TO foo;
db1=# GRANT INSERT (id, c2) ON t2 TO foo;
db1=# GRANT ALL ON v2 TO foo;
db1=# INSERT INTO t2 VALUES (1,1,1), (2,2,2);

（一般ユーザ foo で INSERT ... ON CONFLICT ... を実行）
db1=&gt; INSERT INTO v2 (id, c2) VALUES (1,100)
        ON CONFLICT (id) DO UPDATE SET c2 = EXCLUDED.c2;
INSERT 0 1

（奇妙な結果: c2 が更新されず、権限が無い c1 が NULL に更新）
db1=# SELECT * FROM t2;
 id | c1 | c2
----+----+----
  2 |  2 |  2
  1 |    |  1
(3 rows)
</pre>
<li>固定されたシステムカタログに対する relfrozenxid値と relminxid値の更新が、遅れることなく処理されるようになりました。  (Andres Freund) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
過剰に楽観的なキャッシュ処理方式は、これらの更新が他のセッションから見えなくなるおそれがあり、偽性エラー、あるいは/および、データ破損をもたらす可能性がありました。古いキャッシュデータが既存セッションのみならず新たなセッションにまで残り続ける可能性があるため、この問題は pg_authid などの共有カタログにおいて特に悪質です。
</p>
<p>
以下のエラーが報告されて問題が発見されました。</p>
<pre>
ERROR:  found xmin 2906288382 from before relfrozenxid 740087784
</pre>
<p>これは、テーブルに凍結したXID値（relfrozenxid）よりも手前のxmin値を持つレコードが見つかったという意味です。キャッシュ処理の誤りで実際の relfrozenxid値よりもずっと古い値が参照されていました。<br />
同様に「ERROR: found multixact ... from before relminmxid ...」も起こる可能性があります。
</p>
<li>昇格したばかりのスタンバイが昇格後の最初のチェックポイント処理を終える前にクラッシュした場合について、修正されました。  (Michael Paquier, Kyotaro Horiguchi, Pavan Deolasee, &Aacute;lvaro Herrera) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
本障害により、そのクラッシュ後のリカバリ起動でWALを適用する際に一貫性をもったデータベース状態に到達していないと判断され、起動に失敗しました。
</p>
<p>
クラッシュ後の起動失敗のときに「PANIC:  WAL contains references to invalid pages」が出る動作が報告されています。
</p>
<li>内容が全てゼロのBtreeインデックスのページを再利用する際に不適切なWALレコードを出力しないように修正されました。  (Amit Kapila) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
この誤りはアサート失敗として現れます。また、潜在的にホットスタンバイサーバで不必要な問い合わせキャンセルを起こすおそれがありました。
</p>
<li>WALリプレイにて、1GBを超える破損したレコード長から保護されるようになりました。  (Michael Paquier) (10)(9.6)(9.5)</li>
<p>
このような場合には破損したデータとして扱えるようになりました。これまでは、WALレコード内に書かれたレコード長の通りに大きいメモリ領域を確保しようと試みていました。その結果、以下のような強いエラーが生じてリカバリ不能になっていました。
</p>
<pre>
FATAL:  invalid memory alloc request size ...
</pre>
<p>
本修正でWALの再読み込みを促す弱いエラーを出すように変更されました。
</p>
<li>リカバリの終わりに、タイムラインヒストリファイルへの書き込みをできるだけ遅らせるようになりました。  (Heikki Linnakangas) (10)(9.6)(9.5)</li>
<p>
これにより、リカバリクリーンアップ中のエラー（二相コミットの状態ファイルの問題など）でディスク上に一貫性の無いタイムライン状態が生じるのを回避します。
</p>
<p>
以下のようにリカバリ完了時にrecovery.confが無いというエラーが出て、失敗する動作が報告されていました。
</p>
<pre>
LOG: selected new timeline ID: 2
FATAL: could not open file "recovery.conf": No such file or directory
LOG: startup process (PID 23456) exited with exit code 1
</pre>
<li>多数のリレーションを削除するトランザクションに対して、WALリプレイの性能が改善されました。  (Fujii Masao) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
この変更はファイル削除を一括して行うことで、共有バッファがスキャンされる回数を減らして、特に shared_buffers 設定が大きい場合に処理を効率化します。
</p>
<li>スタンバイサーバのWALリプレイにてロック解放の性能が改善されました。  (Thomas Munro) (10)(9.6)(9.5)(9.4)(9.3)</li>
<li>wal sender がロジカルデータのストリーミング状態を正しく報告するようになりました。  (Simon Riggs, Sawada Masahiko) (10)(9.6)(9.5)(9.4)</li>
<p>
これまでは上流サーバに追いついているかどうかを誤判定していました。上流側（sender側）の起動時に、既に追いついているのに "streaming" でなく"catchup" 状態と報告することがありました。
</p>
<li>ロジカルレプリケーションのサブスクライバにおいて、データ型の入力関数を実行するときにスナップショットが確実に提供されるようになりました。  (Minh-Quan Tran, &Aacute;lvaro Herrera) (10)</li>
<p>
この遺漏により、SQL言語の関数を使った制約を持つドメイン型などの一部の場合でクラッシュを起こしていました。
</p>
<li>ロジカルデコーディングのときのスナップショット処理について誤りが修正されました。  (Arseny Sher, &Aacute;lvaro Herrera) (10)(9.6)(9.5)(9.4)</li>
<p>
稀な場合において誤ったデコーディング結果を許容していました。ロジカルレプリケーション対象テーブルへのDDL操作や、サブトランザクション(SAVEPOINT)操作があるときに誤動作を起こすおそれがありました。
</p>
<li>ロジカルレプリケーションのテーブル同期ワーカにサブトランザクションを考慮した処理が加わりました。  (Amit Khandekar, Robert Haas) (10)</li>
<p>
これまで、いくつかのサブトランザクションが同期テーブルを更新した後に中止(ABORT)された場合に、テーブル同期が誤った振る舞いをする可能性がありました。
</p>
<li>インデックス作成が途中で失敗した後、テーブルのキャッシュされたインデックスリストが正しく再構築されるように修正されました。  (Peter Geoghegan) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
これまでは、作成に失敗したインデックスの OID がリストに残り、同セッション内でその後に問題をひき起こしました。
</p>
<p>
インデックス作成失敗後に当該テーブルに対するSQL実行で「ERROR: could not open relation with OID 16567」エラーが出るケースが報告されました。
</p>
<li>GINインデックスの圧縮されていない空のポスティングリストページの誤った処理が修正されました。  (Sivasubramanian Ramasubramanian, Alexander Korotkov) (10)(9.6)(9.5)(9.4)</li>
<p>
これは 9.4 より前の GINインデックスを pg_upgrade した後にアサート失敗をもたらします。9.4 以降のバージョンで GINインデックスを作った場合には問題ありません。
</p>
<li>キャッシュライン共用を減らすために、無名POSIXセマフォの配列を埋めこむようになりました。  (Thomas Munro) (10)</li>
<p>
これは多CPUシステムでの競合を減らし、Linux と FreeBSD での旧リリースと比較しての性能退行を修正します。
</p>
<li>パラレルインデックススキャンをしているプロセスが確実にシグナルに応対するようになりました。  (Amit Kapila) (10)</li>
<p>
これまで、パラレルワーカはインデックスページのロックを待機して止まったままとなる可能性がありました。
</p>
<li>VACUUM が Btreeインデックスのページ削除のループ内にあるとき、確実にシグナルに応対するように修正されました。  (Andres Freund) (10)(9.6)(9.5)(9.4)</li>
<p>
破損したBtreeインデックスがここでの無限ループをもたらす可能性があり、その場合、これまでは強制クラッシュさせる以外には割り込み不能となっていました。
</p>
<li>inner_unique最適化を加えた際に入り込んだ、ハッシュ結合のコスト計算の誤りが修正されました。  (David Rowley) (10)</li>
<p>
本障害により、この最適化が適用できる場合に悪いプランが選択される可能性がありました。
</p>
<p>
inner_unique最適化とは、PostgreSQL 10 で導入されたユニーク保証を使った最適化の一つで、内部結合に適用されます。
</p>
<li>複合型の列に関する同値クラスの誤った最適化が修正されました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
本障害のために、複合列のインデックスがマージ結合に対してそれら列のソート順序を提供するかもしれないことが、見落とされていました。
</p>
<p>
以下のように複合列のインデックスが使われない動作が報告されました。
</p>
<pre>
（このようなテーブルに対して）
db1=# CREATE TYPE typ20c AS (c1 int, c2 int);
db1=# CREATE TABLE tbl20a (c3 typ20c PRIMARY KEY);
db1=# CREATE TABLE tbl20b (c3 typ20c PRIMARY KEY);
db1=# INSERT INTO tbl20a SELECT ROW(g, g)::typ20c
        FROM generate_series(1, 100000) as g;
db1=# INSERT INTO tbl20b SELECT ROW(g, g)::typ20c
        FROM generate_series(1, 100000) as g;
db1=# ANALYZE;

（以下の問い合わせで Merge Join の場合にインデックスが使われない）
db1=# explain SELECT * FROM tbl20a a, tbl20b b WHERE a.c3 = b.c3;
</pre>
<li>複数行を返す関数を使った一部のクエリでの「ERROR:  ORDER/GROUP BY expression not found in targetlist」エラーを回避するようにプランナが修正されました。  (Tom Lane) (10)(9.6)</li>
<li>キーのデータ型が配列型のような多態のBtree演算子クラスを使っているものである場合の、パーティションキーの処理が修正されました。  (Amit Langote, &Aacute;lvaro Herrera) (10)</li>
<p>
配列型のパーティションキーを使った場合に、検索におけるパーティション除外（pruning）が働かない動作が報告されていました。
</p>
<li>SQL標準の FETCH FIRST 構文が標準で期待される通り、パラメータを受け付けるように修正されました。  (Andrew Gierth) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
これまではプリペアドステートメントでパラメータとすることができませんでした。
</p>
<pre>
（修正前の動作例、LIMIT/OFFSETでは可能だが FETCH FIRSTはエラーになる）
db1=# PREPARE p1 (int, int) AS
        SELECT * FROM t23 LIMIT $2 OFFSET $1;
PREPARE
db1=# PREPARE p2 (int, int) AS
        SELECT * FROM t23 OFFSET $1 ROWS FETCH FIRST $2 ROWS ONLY;
ERROR:  syntax error at or near "$2"
</pre>
<li>パーティションキー列の重複に対するドキュメント化されていない制限が除去されました。  (Yugo Nagata) (10)</li>
<p>
これまで「PARTITION BY RANGE (x, x)」のように同じ列を複数指定すると「ERROR:  column "x" appears more than once in partition key」エラーが生じていました。
</p>
<li>一時テーブルを非一時テーブルのパーティションにすることが禁止されました。  (Amit Langote, Michael Paquier) (10)</li>
<p>
これまでは許されていましたが、そのような場合は信頼できる動作をしません。
</p>
<li>特にバッファアクセスについて、パラレルワーカーにおける EXPLAIN のリソース使用集計が修正されました。  (Amit Kapila, Robert Haas) (10)(9.6)</li>
<p>
クエリがパラレル動作をするときに EXPLAIN (ANALYZE,BUFFERS) で出力される「Buffers: ...」値が不正確になる動作が報告されました。
</p>
<li>SHOW ALL が pg_read_all_settings のメンバーであるロールに対して全ての設定を出力するように修正されました。また、そのようなロールは設定ファイル名と行番号を pg_settings ビューで参照できるようになりました。  (Laurenz Albe, &Aacute;lvaro Herrera) (10)</li>
<li>内部実装関数 getObjectDescription の出力で、一部オブジェクト名のスキーマ修飾に失敗していたものが修正されました。  (Kyotaro Horiguchi, Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
照合順序、符号化方式変換、テキスト検索のオブジェクト名が、スキーマ修飾されるべきケースで修飾されませんでした。
</p>
<p>
PostgreSQL 10.x 系列においては、パブリケーション、拡張統計のオブジェクトも該当します。また、内部実装関数 getObjectIdentity も修正されています。
</p>
<li>並列化支援関数として VARIADIC を使った集約を与えることができるようにCREATE AGGREGATE の型チェックが修正されました。  (Alexey Bashtanov) (10)(9.6)</li>
<li>COPY FROM の現在行番号カウンタを 32bit から 64bitに拡張しました。  (David Rowley) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
これにより、COPYの入力が4G（約42.9億、2の32乗）行を超える場合の二つの問題を回避します。一つは COPY FROM WITH HEADER で先頭行のみならず4G行毎に行が捨てられてしまうことで、一つはエラー報告が誤った行番号を報告する可能性があることです。
</p>
<li>シングルユーザモードでレプリケーションスロットを削除できるようになりました。  (&Aacute;lvaro Herrera) (10)</li>
<p>
シングルユーザモードで「SELECT pg_drop_replication_slot('p');」を実行したときに「ERROR:  epoll_ctl() failed: Bad file descriptor」となる動作が報告されました。10.0 で埋め込まれてしまった障害です。
</p>
<li>パラレル集約が動作するときの variance(int4)関数および関連する集約関数からの誤った結果が修正されました。  (David Rowley) (10)</li>
<p>
varianceは入力値に対する標本分散を返す集約関数です。
</p>
<li>xmltable()の列式でTEXTノード、CDATAノードを適切に処理するようになりました。  (Markus Winand) (10)</li>
<li>起こりうる OpenSSL の RAND_bytes()関数の失敗を適切に処理するようになりました。  (Dean Rasheed, Michael Paquier) (10)</li>
<p>
稀な状況で本障害により「LOG:  could not generate random cancel key」が繰り返し発生して、新たな接続が受け付けられない状態になり、PostgreSQLをサービス再起動する以外では解消できませんでした。
</p>
<li>hostaddr が指定されたときの一部の場合について libpq が修正されました。  (Hari Babu, Tom Lane, Robert Haas) (10)</li>
<p>
PQhost() が一部の場合に誤解を招く結果または誤った結果を返していました。これからは一定の様式で応答します。ホスト名が指定されていたならホスト名を、ホストアドレスだけ指定されていた場合に限ってホストアドレスを、いずれも指定されていない場合にはデフォルトホスト名（典型的には /tmp かlocalhost）を返すようになりました。
</p>
<p>
また、SSL証明書を検証するときに誤った値が証明書のサーバ名と比較されるかもしれませんでした。同様に、誤った値が ~/.pgpass のホスト名欄と比較されるかもしれませんでした。これからは、ホスト名が指定されていたならホスト名、ホストアドレスだけ指定されていたならホストアドレス、いずれも指定されていないなら「localhost」が比較対象の値となります。
</p>
<p>
また、hostaddr値がパース不能であるとき以下のような不適切な（"(null)"部分）エラーメッセージが報告されていたものが修正されました。
</p>
<pre>
$ psql "hostaddr=999.999.999.999"
psql: could not parse network address "(null)": Name or service not known
</pre>
<p>
また、host、hostaddr、portパラメータにカンマ区切りのリストが含まれる場合、libpq はデフォルト動作指定を意味するリスト内の空要素を注意深く扱うようになりました。
</p>
<li>ecpg の pgtypesライブラリに文字列解放関数が追加されました。これによりWindowsでのモジュールをまたがるメモリ管理問題を回避できます。  (Takayuki Tsunakawa) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
Windows で同じ DLLにて malloc して確保したのではないメモリを free すると、クラッシュが発生することがあります。pgtypesライブラリはときどき呼び出し側が解放する想定の文字列を返しますが、そのように使用することは不可能となっていました。PGTYPESchar_free() 関数が追加され、アプリケーションによる呼び出し側でのメモリ解放が可能となりました。
</p>
<li>Windows での ecpg の long long 変数サポートが修正されました。必要な strtoll/strtoull ライブラリ関数を非標準的に宣言していたり、全く宣言していない他のプラットフォームも同様に修正されました。  (Dang Minh Huong, Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
Windows上の ecpg を使用した DBクライアント実行でクライアント側エラー「unsupported type "long long" on line ...」が出るケースが報告されました。
</p>
<li>RULE変更を行った場合の PL/pgSQL でSQLステートメントタイプの誤識別が修正されました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
この障害はアサート失敗をひき起こします。また、稀な場合に INTO STRICTオプションが期待通りに動作しなくなります。
</p>
<li>Windows で標準入力がターミナルでないとき、エコー出力が適切に無効化されるようにクライアントプログラムのパスワードプロンプトが修正されました。  (Matthew Stickney) (10)(9.6)(9.5)(9.4)(9.3)</li>
<li>ダンプ出力でリスト値になっているGUI変数値のクォーティングがさらに修正されました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
以前の pg_dump出力での search_path や他のリスト値変数のクォーティングに対する修正は、空文字列リスト要素に対して誤動作をしていて、長いファイルパスが切り捨てられる危険性がありました。
</p>
<li>pg_dump で制約インデックスに対する REPLICA IDENTITY 属性のダンプに失敗していたものが修正されました。  (Tom Lane) (10)(9.6)(9.5)(9.4)</li>
<p>
手動で作成したユニークインデックスは適切に属性が付与されますが、UNIQUE や PRIMARY KEY 制約を宣言して作られる場合にはそうなりませんでした。
</p>
<li>pg_upgrade で古いサーバが正常にシャットダウンしたか検査するようになりました。  (Bruce Momjian) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
これまでは immediateモードのシャットダウンを誤って正常シャットダウンと判断していました。
</p>
<li>contrib/hstore_plperl が Perlスカラ参照を調べて、あるはずのハッシュ参照が見つからないときにクラッシュしないように修正されました。  (Tom Lane) (10)(9.6)(9.5)</li>
<p>
以下のように hstore型にならない値を渡すときにクラッシュしていました。
</p>
<pre>
db1=# CREATE EXTENSION hstore;
db1=# CREATE EXTENSION plperl;
db1=# CREATE EXTENSION hstore_plperl;
db1=# CREATE FUNCTION test43() RETURNS hstore LANGUAGE plperl
        TRANSFORM FOR TYPE hstore AS $$ return 43; $$;
db1=# SELECT test43();
server closed the connection unexpectedly
</pre>
<li>contrib/ltree の lca() 関数で入力配列が空であるときのクラッシュが修正されました。  (Pierre Ducroquet) (10)(9.6)(9.5)(9.4)(9.3)</li>
<li>誤ったエラーコードが報告されるかもしれない、様々なエラー処理のコードパスが修正されました。  (Michael Paquier, Tom Lane, Magnus Hagander) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
ライブラリ関数で使われる errno変数の退避やリセットが不十分な箇所が修正されました。ユーザに対しては、エラーメッセージ中のエラー理由を示す部分に誤ったメッセージが出力されるという形で問題があらわれます。
</p>
<li>プログラムが既存のシステムライブラリディレクトリにあるものではなく、ビルドされたばかりのライブラリ（libpq.so など）に確実にリンクするように、Makefile が整理されました。  (Tom Lane) (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
これにより、古いPostgreSQLライブラリのあるプラットフォームでビルドするときの問題を回避します。
</p>
<li>タイムゾーンデータファイルが tzdata release 2018e に更新されました。北朝鮮の夏時間法の変更とチェコスロバキアの歴史的修正が含まれます。   (10)(9.6)(9.5)(9.4)(9.3)</li>
<p>
この更新には、過去のナミビアとチェコスロバキアと同様の、アイルランド夏時間の再定義が含まれます。これらの管区では、法律上標準時間が夏で、冬に変更された時間帯が適用されるため、それにあわせた変更が適用されました。実際のUTCオフセットや使われているタイムゾーン略記法に変更はありませんが、pg_timezone_namesビューのis_dst列の値が変わり、冬にtrue、夏にfalseとなります。
</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>
