<?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.10 &#8211; SRA OSS Tech Blog</title>
	<atom:link href="https://www.sraoss.co.jp/tech-blog/tag/postgresql-10-10/feed/index.xml" rel="self" type="application/rss+xml" />
	<link>https://www.sraoss.co.jp/tech-blog/</link>
	<description>OSS専門の技術ブログ。PostgreSQL、Zabbixを中心に10種類以上のOSSの解説、アップデート情報、運用ヒントを提供。</description>
	<lastBuildDate>Fri, 23 Oct 2026 06:33:51 +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.10 &#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.11 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/10-11/</link>
		
		<dc:creator><![CDATA[PostgreSQL技術グループ]]></dc:creator>
		<pubDate>Fri, 22 Nov 2019 02:33:05 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 10]]></category>
		<category><![CDATA[PostgreSQL 10.10]]></category>
		<category><![CDATA[PostgreSQL 10.11]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=4960</guid>

					<description><![CDATA[このリリースは 10.10 からの修正リリース（2019年11月14日リリース）です。 10.x からのアップデートではダンプ、リストアは不要です。 ただし、contrib/intarray で &lt;@ 演算子に G ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 10.10 からの修正リリース（2019年11月14日リリース）です。</p>
<p>10.x からのアップデートではダンプ、リストアは不要です。<br />
ただし、contrib/intarray で &lt;@ 演算子に GiSTインデックスを使っている場合には、下記の 83番の項目を確認してください。<br />
10.6より前のバージョンからのアップデートの場合には <a href="/tech-blog/pgsql/10-6/">10.6 のリリース情報</a>も確認してください。</p>
<p><span id="more-4960"></span></p>
<h3>PostgreSQL 10.10 から 10.11 への変更点</h3>
<p>12.1、11.6、10.11、9.6.16、9.5.20、9.4.25 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<hr />
<ol>
<li>ALTER TABLE でテーブル書き換えを要する他の変更と共に、デフォルト値無しの列を追加したときのクラッシュが修正されました。  (Andres Freund) (12)</li>
<p>
以下のような発生例が報告されました。c1列の追加がテーブル書き換えを要する変更で、デフォルト値無しの列追加が c2 です。
</p>
<pre>
db=# CREATE TABLE t1 (id int);
db=# CREATE SEQUENCE seq1;
db=# ALTER TABLE t1
       ADD COLUMN c1 numeric(10,0) NOT NULL DEFAULT nextval('seq1'),
       ADD COLUMN c2 varchar(20);
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
</pre>
<li>REINDEX CONCURRENTLY のロック処理が修正されました。  (Michael Paquier) (12)</li>
<p>
REINDEX CONCURRENTLY は新たな版のインデックスに対してセッションレベルのロックを取得しておらず、潜在的に他セッションによる早すぎる操作を許していました。また、悪いタイミングでの問い合わせキャンセルや割り込みによるセッション終了により、REINDEX CONCURRENTLY が持つセッションレベルロックが解放されない恐れがありました。
</p>
<li>CREATE INDEX CONCURRENTLY や REINDEX CONCURRENTLY が進行状況を報告するときの、競合状態によるクラッシュが回避されました。  (&Aacute;lvaro Herrera) (12)</li>
<li>REINDEX CONCURRENTLY で重複した依存関係エントリが作成されてしまうのが回避されました。  (Michael Paquier) (12)</li>
<p>
この障害により pg_depend の肥大化が生じますが、それ以外の害はありません。既存の重複エントリは pg_depend システムテーブルを操作するか、インデックスを一度削除することで除去できます。
</p>
<li>VACUUM が未だ実行中のトランザクションに関連する古いマルチトランザクションIDをフリーズしようとするのが防止されました。  (Nathan Bossart, Jeremy Schneider) (12)(11)(10)(9.6)(9.5)</li>
<p>
この障害により、古い実行中のトランザクションが終了するまでの間、VACUUM が失敗していました。
</p>
<p>
VACUUM 実行で以下のようなエラーが出るケースが報告されました。
</p>
<pre>
ERROR:  multixact ... from before cutoff ... found to be still running
</pre>
<li>式インデックスに対して CLUSTER を実行する時の、「wrong type of slot」エラーが修正されました。  (Andres Freund) (12)</li>
<p>
CLUSTERコマンドで以下のような予期せぬメッセージが発生していました。
</p>
<pre>
ERROR:  trying to store a heap tuple into wrong type of slot
</pre>
<li>パーティションテーブルに対する SET CONSTRAINTS ... DEFERRED が失敗していたものが修正されました。  (&Aacute;lvaro Herrera) (12)(11)</li>
<p>
トリガが無い、という不適切なエラーが生じていました。以下に発生例を示します。
</p>
<pre>
db=# CREATE TABLE t7p (a int PRIMARY KEY) PARTITION BY LIST (a);
db=# CREATE TABLE t7p12 PARTITION OF t7p FOR VALUES IN (1, 2)
                        PARTITION BY LIST (a);
db=# CREATE TABLE t7p1 PARTITION OF t7p12 FOR VALUES IN (1);
db=# CREATE TABLE t7p2 PARTITION OF t7p12 FOR VALUES IN (2);
db=# CREATE TABLE t7p3 PARTITION OF t7p FOR VALUES IN (3);
db=# CREATE TABLE t7fk (a int REFERENCES t7p DEFERRABLE INITIALLY IMMEDIATE);
db=# BEGIN;
db=# SET CONSTRAINTS t7fk_a_fkey DEFERRED;
ERROR:  no triggers found for constraint with OID 24861
</pre>
<li>親のパーティションテーブルに削除された列が含まれている場合に生じる、パーティションのインデックスを作る際のエラーが修正されました。  (Michael Paquier) (12)(11)</li>
<p>
条件に該当するCREATE INDEXコマンドに対して以下のような予期せぬエラーが出るケースが報告されました。
</p>
<pre>
ERROR:  unexpected varattno 4 in expression to be mapped
</pre>
<li>パーティションテーブルでインデックスのある列の削除について修正されました。  (Amit Langote, Michael Paquier) (12)</li>
<p>
これまではインデックスの依存性に関するエラーを出して失敗していましたが、自動的にインデックスも削除されるべきでした。
</p>
<li>パーティションインデックスが、インデックス同時再作成に失敗した後に削除できるようになりました。  (Michael Paquier) (12)</li>
<p>
このような場合に、インデックスの pg_class.relispartition フラグが誤った状態で残っていて、DROP INDEX の失敗をもたらしていました。DROP INDEX で、以下のようなエラーが出る動作が報告されました。
</p>
<pre>
ERROR:  could not find tuple for parent of relation ...
</pre>
<li>パーティション単位での結合(partition-wise join)で、同値クラスメンバーの処理が修正されました。  (Amit Langote) (12)</li>
<p>
この誤りで、本来可能なパーティション単位での結合プランを使えなくなるか、「could not find pathkey item to sort」というプランナのエラーになる可能性があります。
</p>
<li>問い合わせの式が操作されているときに、WINDOW句でオフセット式が確実に処理されるようになりました。  (Andrew Gierth) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
この誤りは、オフセットが自明でない式のときに様々なエラーをひき起こす可能性がありました。一例として、関数内の問い合わせが WINDOW句のオフセット式で関数パラメータを参照していて、関数がインライン化されている場合に以下のようなエラーを出すことがありました。
</p>
<pre>
ERROR:  no value found for parameter 1
</pre>
<li>子プロセス配列に空き枠が無いときにパラレル問い合わせがバックグラウンドワーカを要求した場合の、postmaster (サーバの親プロセス) のエラーが回避されました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)</li>
<p>
以下のエラーが発生するケースが報告されました。稀ですが本障害で postmaster のクラッシュをひき起こす可能性もあります。
</p>
<pre>
FATAL:  no free slots in PMChildFlags array
</pre>
<li>BEFORE UPDATEトリガを伴うテーブルの EvalPlanQual再チェックでひき起こされるクラッシュが修正されました。  (Andres Freund) (12)</li>
<p>
本障害で更新SQL処理のバックエンドプロセスのクラッシュが生じます。EvalPlanQual再チェックは、READ COMMITTEDトランザクション隔離レベルでのSQL実行における内部的な処理です。
</p>
<li>問い合わせが TOASTテーブルにアクセスしようとしたときの、「unexpected relkind」エラーが修正されました。  (John Hsu, Michael Paquier, Tom Lane) (12)(11)</li>
<p>
本来、権限が無いというエラーが出るべきところで、不適切なエラーが出ていました。
</p>
<pre>
（本障害によるエラー例）
db=&gt; REINDEX TABLE pg_toast.pg_toast_16388;
ERROR:  unexpected relkind: 116

（本来生じるべきエラーは以下）
ERROR:  must be owner of table pg_toast_16388
</pre>
<li>パラレルワーカ起動時に GUCパラメータを設定する際のエラー発生時に、関連するエラーコンテキスト行を出力するようになりました。  (Thomas Munro) (12)(11)(10)(9.6)(9.5)</li>
<p>
設定パラメータの誤りでパラレル問い合わせがエラーになったときに、エラーメッセージから誤っている個所が分かりにくいという問題がありました。
</p>
<li>read/write でオープンされたファイルにだけ fsync() が適用されるようになりました。  (Andres Freund, Michael Paquier) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
一部のコードパスではリードオンリーで開いたファイルにも fsync() を試みていました。これは一部プラットフォームではエラーをひき起こし、サービスダウンの原因となりました。
</p>
<pre>
(Windowsプラットフォームで以下PANICの発生が報告されました)
PANIC:  could not fsync file "pg_replslot/xxx/state": Bad file descriptor
</pre>
<li>文字エンコーディング変換が以前より長い文字列を扱えるようになりました。  (&Aacute;lvaro Herrera, Tom Lane) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
これまでは入力文字列で 0.25GB が上限でしたが、これからは変換後の出力が1GB を超えない限り処理できるようになります。
</p>
<li>ウィンドウ関数で不要に巨大なタプルストアが作成されるのが回避されました。  (Andrew Gierth) (12)(11)(10)(9.6)</li>
<p>
タプルストアとは、問い合わせの中間結果の表形式データを格納する領域です。一部の場合にタプルストアがソーステーブルの、問い合わせに必要な列だけではなく、全列を含むことがありました。
</p>
<p>
本修正は問い合わせで生じる不要に大きい一時ファイルを小さくします。
</p>
<li>repalloc() がサイズを大幅に縮小したときには、システムにメモリ空間を返却するようになりました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
repalloc() は PostgreSQL のメモリマネージャモジュールが提供する標準ライブラリの realloc() に似た動作をする関数です。
</p>
<li>アーカイブリカバリの最後に、一時的な WAL とヒストリファイルが確実に削除されるようになりました。  (Sawada Masahiko) (12)(11)(10)(9.6)(9.5)</li>
<p>
これまで、アーカイブリカバリ後のオンラインWALディレクトリにRECOVERYHISTORYファイルが残る動作がありました。
</p>
<li>recovery_min_apply_delay設定が有効な場合のアーカイブリカバリでのエラーが回避されました。  (Fujii Masao) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
recovery_min_apply_delay はアーカイブリカバリの際の設定では通常使われませんが、動作すべきでした。これまでは設定すると常にアーカイブリカバリに失敗し、アサート有効のビルドではアサート失敗が生じました。
</p>
<li>クラッシュリカバリ時には、restore_command、recovery_end_command、recovery_min_apply_delay の設定が無視されるようになりました。  (Fujii Masao) (12)</li>
<p>
これらは バージョン12 から postgresql.conf に記述するようになったため、クラッシュリカバリ時にも有効になっていることが有り得ますが、このときこれら設定に従うことは望ましくありません。クラッシュリカバリが完了するまで、これらの設定は無視されるようになります。
</p>
<li>パブリッシャとサブスクライバがテーブルの REPLICA IDENTITY列について異なる認識を持っている場合のロジカルレプリケーションのエラーが修正されました。  (Jehan-Guillaume de Rorthais, Peter Eisentraut) (12)(11)(10)</li>
<p>
パブリッシャにその列が存在しないときに、サブスクライバで REPLICA IDENTITYの一部として列を宣言すると、下記のエラーをひき起こしました。
</p>
<pre>
ERROR:  negative bitmapset member not allowed
</pre>
<li>ロジカルレプリケーションの walsenderプロセスの停止における不要な遅延が回避されました。  (Craig Ringer, &Aacute;lvaro Herrera) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
これまでは場合によっては wal_sender_timeout の時間だけ停止が滞留することがあり、PostgreSQLサービス停止を遅らせました。
</p>
<li>ロジカルレプリケーションの walreceiverプロセスでタイムアウト処理が修正されました。  (Julien Rouhaud) (12)(11)(10)</li>
<p>
誤ったロジックがロジカルレプリケーションにおけるwal_receiver_timeout の働きを妨げていました。パブリッシャ側の walsender が終了したのにサブスクライバ側のlogical worker が待ち続けるという動作が報告されました。
</p>
<li>ロジカルデコーディングに対するレプリケーションメッセージに正しくタイムスタンプを付与するように修正されました。  (Jeff Janes) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
この誤りで、例えば pg_stat_subscription.last_msg_send_time がたいてい NULL になりました。
</p>
<li>バックエンドプロセスがそれまで同期レプリケーションが発生するのを待機していたとき、バックエンド終了時の競合状態が修正されました。  (Dongming Liu) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
この障害によりバックエンドプロセス終了が遅くなりました。
</p>
<li>PAM認証が使われているとき、接続中断についてログメッセージを出さないようになりました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
libpqベースのクライアントは一般的に、最初の接続試行が失敗するまでユーザにパスワード入力を促さないため、パスワードが必要な場合には二回接続を試みます。それゆえ、サーバはクライアントがパスワードを要する接続を閉じたときに無駄なログメッセージを出さないように書かれています。しかしながら、PAM認証ではそのようになっておらず、余計な認証失敗メッセージを複数出力していました。
</p>
<li>bitshiftright() の誤動作が修正されました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
bitshiftright() はビット列データ型（bit、bit varying）の右シフト演算子の実装関数です。ビット列の長さが 8 の倍数ではないときに、結果の最終バイトにあるシフトされた桁のゼロ埋めに失敗していました。
</p>
<p>
ほとんどの場合、異常になるのは不可視部分のデータです。しかし、ビット列比較では余分なビットも無視されず、常に 0 であると想定されるところに非ゼロビットが存在することで予期せぬ比較動作が生じます。
</p>
<p>
ビット列の右シフト結果をテーブルに格納している場合、不整合データを以下のような SQL で補正できます。
</p>
<pre>
UPDATE mytab SET bitcol = ~(~bitcol) WHERE bitcol != ~(~bitcol);
</pre>
<li>文字列の position()関数（あるいは strpos()関数）の空の検索文字列に対する結果が修正されました。  (Tom Lane) (12)</li>
<p>
歴史的に、また、SQL標準により、このような場合に結果は 1 であるべきですが、12.0 では 0 を返していました。
</p>
<pre>
(以下の応答は 1 が正しい)
db=# SELECT strpos('ABCDE', '');
 strpos
--------
      0
(1 row)
</pre>
<li>interval型の掛け算で境界値の整数オーバーフローの検出が修正されました。  (Yuya Watari) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<pre>
（オーバーフローが検出されない例)
db1=# SELECT extract(epoch from '256 microseconds'::interval * (2^55)::float8);
     date_part
--------------------
 -9223372036854.775
(1 row)

(修正後は以下エラーがでるようになります)
ERROR: interval out of range
</pre>
<li>ispell のテキスト検索辞書が誤った接辞データを含む場合にクラッシュすることがあり、回避されました。  (Arthur Zakirov) (12)(11)(10)(9.6)</li>
<li>GiSTインデックスを VACUUMするときのメモリリークが回避されました。  (Dilip Kumar) (12)</li>
<li>Windowsで、「Norwegian (Bokm&aring;l) 」ロケール名の追加の書き方も認識するようになりました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
括弧を記載しない書き方も受け入れるようになりました。
</p>
<li>libpq が整数パラメータの文字列に末尾の空白を許容するように修正しました。  (Michael Paquier) (12)</li>
<p>
バージョン12で整数パラメータの検査が厳しくなっていましたが、末尾の空白まで許容しないのは望ましくないと判断されました。
</p>
<li>libpq で、構文的に無効な connect_timeoutパラメータ値によってひき起こされたエラーの後に CONNECTION_BAD接続状態を正しく報告するようになりました。  (Lars Kanis) (12)</li>
<p>
これまでは接続状態に CONNECTION_BAD がセットされませんでした。
</p>
<li>ENABLE_NLS が定義されていて、ECPGクライアントが ecpglib.h を含む場合のコンパイル失敗が回避されました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
ecpg_gettext() の定義をクライアントコードから見えない適切な位置に移すことで修正されています。
</p>
<li>パーティションテーブルの外部キー制約について、パラレルリストアのスケジューリングが修正されました。  (&Aacute;lvaro Herrera) (12)</li>
<p>
pg_dump がパーティションテーブルの外部キーについて完全な依存情報の出力に失敗していました。このため、pg_restore で早すぎるタイミングで外部キー制約を再作成しようとして、パラレルリストアが時々失敗することがありました。
</p>
<li>pg_dump で、似た名前のトリガと行単位セキュリティポリシーオブジェクトについて、安定した出力順序が保証されました。  (Benjie Gillam) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
これまでは、同じ名前を持ち異なるテーブルに付く二つのトリガは OID でソートされましたが、これからはテーブル名でソートされます。RLS（行単位セキュリティポリシー）についても同様です。
</p>
<li>PostgreSQL 12 から sql_identifier型の元となる型がvarchar型から name型に変更されため、pg_upgrade で sql_identifier型の列を持つテーブルが拒否されるようになりました。  (Tomas Vondra) (12)</li>
<li>line型など表現が変更されたデータ型に対して、pg_upgrade のチェックが改善されました。  (Tomas Vondra) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
以前は、データ型がドメインや複合型の格納列が元となっている場合に誤判定をして、本来不要な pg_upgrade 失敗をひき起こしたり、pg_upgrade 実行後のクラスタを壊してしまったりすることがありました。
</p>
<li>--dry-runオプション付きの pg_rewind で pg_control の更新を避けるようになりました。  (Alexey Kondratov) (12)</li>
<p>
これは、それに続く pg_rewind の実行の失敗につながる可能性がありました。
</p>
<li>-sオプション付きの pg_waldump の不具合が修正されました。  (Andrey Lepikhov) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
継続WALレコードがページの境界で丁度終わるような特別なケースの場合、-sオプションによりそのWALレコードを指定した際に正常にレコードを処理できずアサーションエラーが発生していました。
</p>
<li>--bkp-detailsオプション付きの pg_waldump でフルページライトを伴うWALレコードに対する余分な改行の出力を避けるようになりました。  (Andres Freund) (12)(11)(10)(9.6)(9.5)</li>
<li>pg_waldump での小さなメモリリークが修正されました。  (Andres Freund) (12)(11)(10)(9.6)(9.5)</li>
<li>pqsignal() がエクスポートされた libpq のシンボルとして復帰しました。  (Tom Lane) (12)</li>
<p>
この関数は、どのクライアントも使用しないであろうという理由で以前に削除されましたが、とても古いバージョンの psql（および、おそらく他のアプリケーション）と組み合わせて使用した際に正常に動作しなくなってしまいました。
</p>
<li>libperl の存在有無に対する configure のテストが修正され、最近の RedHat のリリースでも動作するようになりました。  (Tom Lane) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
以前では、ユーザがCFLAGSに -O0 を設定した場合に失敗する可能性がありました。
</p>
<li>PowerPC上におけるスピンロックの正しいコード生成が保証されました。  (Noah Misch) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
以前のスピンロックのコードでは、それが許容されないアセンブリ命令に対してレジスタ0 を選択できたため、ビルドの失敗を引き起こしてました。
</p>
<p>
このバグに一致する報告は今までに 1回のみでしたが、修正された PostgreSQL のコードや変則的なコンパイラオプションによるビルドを実行した際に問題を起こす可能性がありました。
</p>
<li>AIX上で -qsrcmsgコンパイラオプションを使用しなくなりました。  (Noah Misch) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<p>
これにより xlc v16.1.0 での内部的なコンパイルエラーが避けられます。この変更は、コンパイラのエラーメッセージ形式が変わること以外ほとんど影響はありません。
</p>
<li>OpenSSL のファイルパス上に空白がある場合にも処理できるようにMSVC のビルド処理が修正されました。  (Andrew Dunstan) (12)(11)(10)(9.6)(9.5)(9.4)</li>
<li>カスタムリレーションオプションを設定するALTER TABLE ... SET ... の不具合が修正されました。  (Michael Paquier) (11)(10)(9.6)</li>
<p>
bloom_index専用のオプションなど、特殊なオプションを ALTER TABLE で変更した場合に失敗することがありました。
</p>
<pre>
（報告されたエラー例）
ERROR:  XX000: unrecognized lock mode: 2139062143
</pre>
<li>すべての親テーブルが変更されていない限り、多重に継承された列の型の変更が許可されなくなりました。  (Tom Lane) (11)(10)(9.6)(9.5)</li>
<p>
無関係な複数の親テーブルを継承した子テーブルがあって、継承した列が重複している場合、親テーブルでその列の型の変更するとエラーが返されるようになりました。以前は実行可能でしたが、そうすると、同期が取れなくなった親への問い合わせが失敗していました。
</p>
<pre>
（該当する操作の例）
db=# CREATE TABLE pt53_1 (f1 int, f2 int);
db=# CREATE TABLE pt53_2 (f1 int, f3 bigint);
db=# CREATE TABLE ct53 (f4 int) INHERITS (pt53_1, pt53_2);
NOTICE:  merging multiple inherited definitions of column "f1"
db=# ALTER TABLE pt53_1 ALTER COLUMN f1 TYPE bigint;
ERROR:  cannot alter inherited column "f1" of relation "ct53"
</pre>
<p>
いったん ALTER TABLE .. NO INHERIT .. で継承関係を外して、各テーブルでデータ型を変更して、ALTER TABLE .. INHERIT .. で再び継承関係を付与するという手順で同様の操作を行うことができます。
</p>
<li>トランザクション内の ANALYZEコマンドで同じテーブルが 2回指定された場合のエラーが回避されました。  (Tom Lane) (11)</li>
<p>
これまでは以下のようなエラーが生じていました。
</p>
<pre>
db=# CREATE TABLE t54 (id int);
db=# INSERT INTO t54 VALUES (1), (2);
db=# BEGIN;
db=# ANALYZE t54,t54;
ERROR:  duplicate key value violates unique constraint "pg_statistic_relid_att_inh_index"
DETAIL:  Key (starelid, staattnum, stainherit)=(16391, 1, f) already exists.
</pre>
<li>ICU照合を用いた ILIKE文で大文字小文字を区別できるようプランナーのテストが修正されました。  (Tom Lane) (11)(10)</li>
<p>
プランナは ICU照合が使われていた場合に、大文字小文字が区別できるかを適切に判定できていなかったため、多くのパターンで固定された接頭語として扱ってしまい、ILIKE句から派生したインデックススキャン時に見つけるべきエントリを見逃す可能性がありました。
</p>
<pre>
（誤動作例）
db=# CREATE TABLE t55 (
       normal text UNIQUE, icu text COLLATE "de-x-icu" UNIQUE);
db=# INSERT INTO t55 VALUES ('ABC', 'ABC');
db=# SELECT * FROM t55 WHERE normal ILIKE 'abc';
 normal | icu 
--------+-----
 ABC    | ABC
(1 row)

db1=# SELECT * FROM t55 WHERE icu ILIKE 'abc';
 normal | icu 
--------+-----
(0 rows)
</pre>
<li>WITH CHECK OPTION式と行セキュリティポリシーの式における行全体の変数の扱いが修正されました。  (Andres Freund) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
以前は、行セキュリティポリシーが設定されていた場合に、行タイプの不一致に関する偽のエラーが生じる可能性がありました。
</p>
<pre>
（エラー発生例）
db=&gt; CREATE TABLE t56 (a int, b int, c int);
db=&gt; CREATE POLICY p56 ON t56 USING (t56 &gt;= ROW(1,1,1));
db=&gt; ALTER TABLE t56 ENABLE ROW LEVEL SECURITY;
db=&gt; ALTER TABLE t56 FORCE ROW LEVEL SECURITY;
db=&gt; INSERT INTO t56 SELECT 10, 20, 30;
db=&gt; INSERT INTO t56 SELECT * FROM (SELECT b, c FROM t56 ORDER BY a) ss;
ERROR:  table row type and query-specified row type do not match
DETAIL:  Table row contains 2 attributes, but query expects 3.
（3番目の値を NULL として INSERT に成功する動作が正しい）
</pre>
<li>BEFORE UPDATEトリガが古いタプルをそのまま返し、それが最後のトリガではない場合のダブルフリーが防止されました。  (Thomas Munro) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
該当の場合にバックエンドプロセスがクラッシュする可能性がありました。
</p>
<li>x = ANY(配列)、もしくは同様の操作で、定数の NULL配列が含まれる場合のクラッシュが修正されました。  (Tom Lane) (11)</li>
<p>
以下の形の SQL でクラッシュが報告されました。
</p>
<pre>
SELECT * FROM t58 WHERE x = ANY(NULL::bigint[]);
</pre>
<li>SERIALIZABLEモードで、確実に正しい行バージョンで行レベルの述語ロックが取得されるように修正されました。  (Thomas Munro, Heikki Linnakangas) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
可視の行バージョンが HOT更新された場合、デッドタプルとなった以前のバージョンでロックが取得されるかもしれず、直列化の保証に微妙に失敗する可能性がありました。
</p>
<li>HOTによるヒープページ除去中の不要なカタログ参照が回避されました。  (Thomas Munro) (11)(10)</li>
<p>
このタイミングでログに記録されないインデックスの検査をする必要はありませんでした。この検査はいくつかのワークロードでかなりのパフォーマンスの問題を引き起こしていました。また、理論的にはデッドロックを引き起こす可能性もありました。
</p>
<li>ハッシュテーブルをグループ化するための JITコンパイルの等値比較の失敗が修正されました。これは性能低下をもたらしていました。  (Andres Freund) (11)</li>
<li>ロジカルデコーディングで、スナップショットの再構築時にサブトランザクションが正しく考慮されるようになりました。  (Masahiko Sawada) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
この誤りはアサート失敗をもたらします。アサートを無効にした本番ビルドに悪影響があるかどうかは不明です。
</p>
<li>ALTER SYSTEM で postgresql.auto.conf の重複エントリに対処するようになりました。  (Ian Barwick) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
ALTER SYSTEM自体ではそのような状態は発生しませんが、postgresql.auto.conf を変更する外部ツールでは発生する可能性があります。対象パラメータの重複したエントリが削除され、新しい設定が (ある場合) 最後に追加されるようになります。
</p>
<p>
これまでは ALTER SYSTEMコマンドは重複エントリに対して、実際に適用されるのは末尾エントリであるにもかかわらず、先頭のエントリだけを書き換えしていました。
</p>
<li>設定ファイルで空のファイル名を持つ include ディレクティブを拒否し、再帰的なファイルのインクルードをより明確に報告するようになりました。  (Ian Barwick, Tom Lane) (11)(10)(9.6)(9.5)</li>
<p>
以下にメッセージの違いを示します。
</p>
<pre>
(変更前: include = '')
LOG:  input in flex scanner failed at file "/var/lib/pgsql/11/data" line 1
FATAL:  configuration file "/var/lib/pgsql/11/data/postgresql.conf" contains errors

(変更前: include = '/var/lib/pgsql/11/data/postgresql.conf')
LOG:  could not open configuration file "postgresql.conf": maximum nesting depth exceeded
FATAL:  configuration file "/var/lib/pgsql/11/data/postgresql.conf" contains errors

(変更後: include = '')
LOG:  empty configuration file name: ""
FATAL:  configuration file "/var/lib/pgsql/11/data/postgresql.conf" contains errors

(変更後: include = '/var/lib/pgsql/11/data/postgresql.conf')
LOG:  configuration file recursion in "/var/lib/pgsql/11/data/postgresql.conf"
FATAL:  configuration file "/var/lib/pgsql/11/data/postgresql.conf" contains errors
</pre>
<li>time with time zone 入力で不完全な日付指定が検出されないいくつかのケースが修正されました。  (Alexander Lakhin) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
時期によって変化する UTCオフセットを持つ時間帯が指定されている場合、オフセットを解決できるように日付も必要です。使用される構文によっては、この検査が強制されず、誤った出力が生成される場合がありました。
</p>
<pre>
(誤動作の例)
=# SELECT '12:53:57 m11'::timetz;
      timetz
-------------------
 12:53:57+09:18:59
(1 row)

(エラーになるのが修正後の正しい動作です)
ERROR:  invalid input syntax for type time with time zone: "12:53:57 m11"
</pre>
<li>json[b]_populate_record() および json[b]_populate_recordset() のAS句から型情報を取得する機能が復元されました。  (Tom Lane) (11)</li>
<p>
レコード引数が NULL であり、複合型が宣言されていない場合は、代わりに AS句を使用してみてください。これは推奨される使用法ではありませんが、バージョン11 より前は機能しており、今では再び使用できます。AS句を使用するなら、json[b]_to_record() 関数を使用すべきです。
</p>
<pre>
(変更前)
=# SELECT * FROM json_populate_record(null::record, '{"a":1,"b":2}')
     AS x(a int, b int);
ERROR:  record type has not been registered

(変更後)
=# SELECT * FROM json_populate_record(null::record, '{"a":1,"b":2}')
     AS x(a int, b int);
 a | b
---+---
 1 | 2
(1 row)

(推奨される方法)
=# SELECT * FROM json_to_record('{"a":1,"b":2}') AS x(a int, b int);
 a | b
---+---
 1 | 2
(1 row)
</pre>
<li>XMLTABLE で名前空間ノードを選択する際のクラッシュが修正されました。  (Chapman Flack) (11)(10)</li>
<pre>
(クラッシュの再現例)
=# SELECT * FROM xmltable('.' PASSING '&lt;foo/&gt;'
                          COLUMNS a text PATH 'foo/namespace::node()');
server closed the connection unexpectedly
</pre>
<li>ICU 照合を使用する場合の lower()、upper()、および initcap()関数のメモリリークが修正されました。  (Konstantin Knizhnik) (11)(10)</li>
<li>GIN ポスティングリストの誤った圧縮ロジックが修正されました。  (Heikki Linnakangas) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
GIN ポスティングリストの項目は、隣接するインデックス付き TID間の距離が16TB を超える場合、7 バイトを必要とします。ロジックの 1 つのステップがそれと同期していなかったため、6バイトのバッファに値を書き込もうとする可能性がありました。原則としてこれはスタックオーバーランを引き起こす可能性がありますが、ほとんどのアーキテクチャでは、次のバイトが未使用のアライメントパディングである可能性が高く、バグは無害です。いずれにせよバグに遭遇することは稀です。
</p>
<li>KNN-GiST の Infinity、NaN、および NULL 値の処理が修正されました。  (Alexander Korotkov) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
NULL 以外の列値に対して計算された距離の一部が Infinity または NaN である場合、問い合わせの出力順序が誤っている（通常の並び替えの結果とは異なる）可能性があります。
</p>
<p>
以下に順序が異常である例を示します。
</p>
<pre>
(変更前)
=# SELECT * FROM point_tbl ORDER BY f1 &lt;-&gt; '0,1';
        f1
-------------------
 (10,10)
 (NaN,NaN)
 (0,0)
 (1e-300,-1e-300)
 (-3,4)
 (-10,0)
 (-5,-12)
 (5.1,34.5)

 (1e+300,Infinity)
(10 rows)

(修正後)
=# SELECT * FROM point_tbl ORDER BY f1 &lt;-&gt; '0,1';
        f1
-------------------
 (0,0)
 (1e-300,-1e-300)
 (-3,4)
 (-10,0)
 (10,10)
 (-5,-12)
 (5.1,34.5)
 (1e+300,Infinity)

 (NaN,NaN)
(10 rows)
</pre>
<li>GiST および SP-GiST インデックスを使った KNN検索で、NULL の処理が修正されました。  (Nikita Glukhov) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
NULL をインデックスのサポート関数まで廻さないようにして、クラッシュの可能性を回避します。
</p>
<li>psqlで、予期しない接続の切断と再接続の成功後に、サーバに関する内部状態を再同期するようになりました。  (Peter Billen, Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
通常は内部状態は変わらないため再同期は不要です。しかし、接続がいくつかのサーバの内の 1つにつながる場合など、稀なケースでは問題になる可能性がありました。
</p>
<p>
この変更により、psql は、たとえば SSL が使用されているかどうかなど、起動時に発行される対話型メッセージを再発行します。
</p>
<pre>
（問題の再現例）
$ psql
psql (11.5)
Type "help" for help.

postgres=#

（ここでPostgreSQL11サーバを停止して、PostgreSQL12サーバを起動する）

postgres=# SELECT 1; 
FATAL:  terminating connection due to administrator command
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.

postgres=# df
ERROR:  column p.prokind does not exist
LINE 5:  CASE p.prokind
              ^
HINT:  Perhaps you meant to reference the column "p.probin".

（サーバが変わったことを認識していないためエラーが生じました）
</pre>
<li>psql でプラットフォーム固有の NULL ポインタ参照が修正されました。  (Quentin Rameau) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
「psql -f」など、引数のあるオプションを引数無しで渡したときに、musl の libc ライブラリでクラッシュしました。
</p>
<li>pg_dump が 8.3 より前のサーバに対して再び動作するように修正されました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
以前の修正により、pg_dump は常に pg_opfamily を参照するようになりましたが、そのカタログはバージョン 8.3 より前には存在しませんでした。
</p>
<li>pg_restore で、「-f -」を標準出力への出力と解釈するようになりました。  (&Aacute;lvaro Herrera) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これにより、pg_restore の動作が他のいくつかのアプリケーションと統一されます。特に、12 より前のバージョンは 12 の pg_restore と同様に動作し、複数の PostgreSQL バージョン間で動作するダンプ/リストアスクリプトの作成が簡単になります。この変更の前、pg_restore はそのようなオプションを - という名前のファイルへの出力を意味すると解釈していましたが、それを望む人はほとんどいませんでした。
</p>
<li>pg_basebackup中のファイル読み取りエラーを検出するようになりました。  (Jeevan Chalke) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これまではファイル読み取りエラーを、読み取り中のファイル内容削除と見做して、無視していました。今後はそれ以外のケースについてエラーを出すようになります。
</p>
<li>pg_basebackup で、バックアップが終了するまで出力ファイルをfsync しないようになりました。  (Michael Paquier) (11)(10)</li>
<p>
fsync が遅い場合、以前のコーディングではタイムアウトエラーが発生する可能性がありました。
</p>
<li>pg_rewind で起動中の同期元クラスタを使用した場合に、pg_dump と同様にタイムアウトを無効にするようになりました。  (Alexander Kukushkin) (11)(10)(9.6)(9.5)</li>
<li>pg_waldump で、btree ページ分割レコードに newitemoff フィールドを含めるようになりました。  (Peter Geoghegan) (11)(10)(9.6)(9.5)</li>
<li>vacuumdb で --jobs オプションに大きな値を使用した場合にファイル記述子の不足をより適切に処理するように修正されました。  (Michael Paquier) (11)(10)(9.6)(9.5)</li>
<p>
ジョブ数が多すぎるエラーを出すかどうかの判断を、より正確にファイル記述子の数を調べて行うように変更されました。
</p>
<li>PL/pgSQL で複合型の置換をより適切に処理するように修正されました。  (Tom Lane) (11)</li>
<p>
複合型が完全に削除され、PL/pgSQL 関数の実行の間に同じ名前の新しい型が作成される場合が対象となります。複合型の変数は、新しい定義に一致するように更新されます。
</p>
<li>contrib/amcheck でホットスタンバイ中にログ取得なし（UNLOGGED）インデックスをスキップするように修正されました。  (Andrey Borodin, Peter Geoghegan) (11)(10)</li>
<p>
ログ取得なしインデックスには、この状況で有効なデータが含まれているとは限らないため、チェックしなくなりました。
</p>
<li>contrib/intarray の GiST 演算子クラスが修正され、空配列が &lt;@ で失敗しないようになりました。  (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
array_column &lt;@ constant_array のような句はインデックス可能と見なされますが、インデックス検索では空の配列値が見つからない場合があります。
</p>
<p>
このための唯一の実用的なバックパッチ可能な修正では、&lt;@ のインデックス検索でインデックス全体をスキャンする必要があります。つまり、単純なシーケンシャルスキャンよりも問い合わせの性能が低下する可能性が高いことを意味します。
</p>
<p>
この変更によって性能に悪影響が及ぶアプリケーションには、いくつかの選択肢があります。このバグのない GIN インデックスに切り替えるか、array_column &lt;@ constant_array をarray_column &lt;@ constant_array AND array_column && constant_array に置き換えることができます。これにより、以前とほぼ同じ性能が得られ、指定された定数配列の空ではないすべてのサブセットが検索されます。
</p>
<li>PowerPC で、xlc コンパイラの __fetch_and_add() 関数に依存しないようになりました。  (Noah Misch) (11)(10)(9.6)(9.5)</li>
<p>
xlc 13 以降では、この関数を PostgreSQL での使用方法と互換性のない方法で解釈するため、使用できない PostgreSQL のビルドが発生しました。代わりにカスタムアセンブリコードを使用して修正されました。
</p>
<li>タイムゾーンデータファイルが tzdata release 2019c に更新されました。   (11)(10)(9.6)(9.5)(9.4)</li>
<p>
フィジーおよびノーフォーク島の夏時間法の変更に加えて、アルバータ、オーストリア、ベルギー、ブリティッシュコロンビア、カンボジア、香港、インディアナ（ペリー郡）、カリーニングラード、ケンタッキー、ミシガン、ノーフォーク島、韓国およびトルコの歴史的な修正が含まれます。</p>
<li>pg_dump でビューの循環的な依存関係の処理が修正されました。  (Tom Lane) (9.6)(9.5)(9.4)</li>
<p>
場合によっては、ビューは、pg_dump がビューよりも後にダンプする必要があるオブジェクトに依存する場合があります。最も一般的な例は、主キー列で GROUP BY を使用する問い合わせが、主キーなしでは意味的に無効である可能性があることです。これは、ビューの列名と型を確定するだけのダミーの CREATE VIEW コマンドを発行し、その後、完全なビュー定義で CREATE OR REPLACE VIEW を発行することで処理されます。以前は、ダミー定義は実際には CREATE TABLE コマンドであり、これは後の CREATE RULE コマンドによって自動的にビューに変換されました。新しいアプローチは、PostgreSQL バージョン 10 以降で正常に使用されています。以前の方法ではビューのレプリカアイデンティティの状態に関して誤ったエラーメッセージが発生するという報告のため、古いリリースにパッチが適用されました。また、この変更により、このようなビューを含むリストア中に --clean オプションを使用しようとする際の問題も回避されます。
</p>
<pre>
（変更前のダンプ出力）
$ pg_dump

CREATE TABLE public.v (
    c1 integer,
    c2 text
);

COPY public.t (c1, c2) FROM stdin;
.

ALTER TABLE ONLY public.t
    ADD CONSTRAINT t_pkey PRIMARY KEY (c1);

CREATE RULE "_RETURN" AS
    ON SELECT TO public.v DO INSTEAD  SELECT t.c1,
    t.c2
   FROM public.t
  GROUP BY t.c1;

（変更後のダンプ出力）
$ pg_dump

CREATE VIEW public.v AS
SELECT
    NULL::integer AS c1,
    NULL::text AS c2;

COPY public.t (c1, c2) FROM stdin;
.

ALTER TABLE ONLY public.t
    ADD CONSTRAINT t_pkey PRIMARY KEY (c1);

CREATE OR REPLACE VIEW public.v AS
 SELECT t.c1,
    t.c2
   FROM public.t
  GROUP BY t.c1;
</pre>
<li>python3 または python2 しか見つからない場合に configure --with-python が成功するようになりました。  (Peter Eisentraut, Tom Lane) (9.6)(9.5)(9.4)</li>
<p>
python、python3、python2 の順番で検索し、configure が、単なる python という名前の実行ファイルが存在しないという、ごく一般的な状況で成功するようになりました。PYTHON 環境変数を設定することにより、この選択をオーバライドすることも可能です。
</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.10 に関する技術情報</title>
		<link>https://www.sraoss.co.jp/tech-blog/pgsql/10-10/</link>
		
		<dc:creator><![CDATA[PostgreSQL技術グループ]]></dc:creator>
		<pubDate>Thu, 22 Aug 2019 01:04:47 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[PostgreSQL 10]]></category>
		<category><![CDATA[PostgreSQL 10.10]]></category>
		<category><![CDATA[PostgreSQL 10.9]]></category>
		<category><![CDATA[アップデート]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=3769</guid>

					<description><![CDATA[このリリースは 10.9 からの修正リリース（2019年8月8日リリース）です。 10.x からのアップデートではダンプ、リストアは不要です。 10.6より前のバージョンからのアップデートの場合には 10.6 のリリース ...]]></description>
										<content:encoded><![CDATA[<p>このリリースは 10.9 からの修正リリース（2019年8月8日リリース）です。</p>
<p>10.x からのアップデートではダンプ、リストアは不要です。<br />
10.6より前のバージョンからのアップデートの場合には <a href="/tech-blog/pgsql/10-6/">10.6 のリリース情報</a>も確認してください。</p>
<p><span id="more-3769"></span></p>
<h3>PostgreSQL 10.9 から 10.10 への変更点</h3>
<p>11.5、10.10、9.6.15、9.5.19、9.4.24 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。</p>
<hr />
<ol>
<li>関数風のキャスト構文を使うとき、一時データ型へのキャストではスキーマ修飾を必須とするようになりました。(CVE-2019-10208) (Noah Misch) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
一時関数の発効には長らく、pg_temp.func_name(args) という明示的な一時スキーマの指定が必要でした。これは、pg_temp.type_name(arg) と関数風の構文を使って一時データ型にキャストする場合も同様に必要です。そうでないと一時オブジェクトを使って関数呼び出しを横取りすることができて、8.2.4バージョンで防止された CVE-2007-2138 の脆弱性と同様の方法で、権限拡大を狙うことが可能でした。
</p>
<p>
一時スキーマとは一時オブジェクトのためのスキーマです。pg_temp_1 など番号を伴う名前が自動付与されますが、指定する場合には pg_temp という名前で代表させることができます。また、search_path に明示的な pg_temp の指定が無いと一時スキーマは優先して選択されます。
</p>
<p>
本修正後は、以下例の最初の型キャストは使用できず、型キャストのための処理に進む前にエラーになります（後者の 2つもエラーですが、これらは型キャスト処理が働いた結果のエラーです）。
</p>
<pre>db=# CREATE DOMAIN pg_temp.nonempty AS text CHECK (VALUE &lt;&gt; '');

db=# SELECT nonempty('');
ERROR:  function nonempty(unknown) does not exist
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

db=# SELECT pg_temp.nonempty('');
ERROR:  value for domain nonempty violates check constraint "nonempty_check"

db=# SELECT ''::nonempty;
ERROR:  value for domain nonempty violates check constraint "nonempty_check"
</pre>
<li>型を跨る比較を要するハッシュ化された副プランの実行が修正されました。(CVE-2019-10209) (Tom Lane, Andreas Seltenreich) (11)</li>
<p>
ハッシュ化された副プランは、ハッシュ要素を比較するために外側の問い合わせの元の比較演算子を使用していました。その演算子が型を跨る場合は、全てのハッシュ要素が副問い合わせの出力型になるので、これは誤りでした。PostgreSQL本体に含まれるハッシュ可能な型を跨る演算子に対して、64bitマシンでは、この誤りはほぼ無害です。しかし、32bitマシンでは、クラッシュやサーバメモリの不当なデータ露出になる可能性があります。
</p>
<p>
以下の問い合わせは = 演算子が text型と副問い合わせからの name型（外側と異なるデータ型）との間で適用され、副問い合わせ結果が「hashed SubPlan 1」として扱われるので、問い合わせの形状としては本問題に該当します。
</p>
<pre>explain (verbose)
  SELECT 'foo'::text IN (SELECT 'bar'::name UNION ALL SELECT 'bar'::name);
</pre>
<p>
拡張モジュールが、より大きなリスクをもたらすハッシュ可能な型を跨る演算子を提供しているかもしれません。
</p>
<li>複数列の型を1つのコマンドで変更するとき、ALTER TABLE ... ALTER COLUMN TYPE が失敗する動作が修正されました。 (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これは一つ前のマイナーリリースで混入した障害です。変更された列のインデックスが適切に処理されていませんでした。
</p>
<p>
インデックスを持つ列をいくつかデータ型変更する ALTER TABLE に対して、以下のエラーになる動作が報告されました。
</p>
<pre>ERROR:  relation "《インデックス名》" already exists
</pre>
<li>子パーティションに保留中のトリガイベントがある場合には、パーティションテーブルのトリガを削除できないようになりました。 (Álvaro Herrera) (11)</li>
<p>
特にトリガで実現されている外部キー制約で該当します。
</p>
<p>
本修正前には、トランザクションのコミット時に処理すべきトリガが削除されてしまったことで COMMIT時にエラーが生じる可能性がありました。
</p>
<pre>（例）
db=# CREATE TABLE t4_1(f1 int primary key);
db=# CREATE TABLE t4_2(f1 int REFERENCES t4_1 DEFERRABLE INITIALLY DEFERRED)
       PARTITION BY RANGE (f1);
db=# CREATE TABLE t4_2_p1 PARTITION OF t4_2 FOR VALUES FROM (0) TO (10);
db=# INSERT INTO t4_1 VALUES (1);
db=# BEGIN;
db=# INSERT INTO t4_2 VALUES (1);
db=# ALTER TABLE t4_2 DROP CONSTRAINT t4_2_f1_fkey;
（修正後はここで以下のようなエラーが生じる）
ERROR:  cannot ALTER TABLE "t4_2" because it has pending trigger events
db=# COMMIT;
（修正前はここで以下のようなエラーが生じる）
ERROR:  relation 16123 has no triggers
</pre>
<li>パーティションテーブルから属するパーティションにトリガ定義をコピーする際に、ユーザ指定のトリガ引数が含まれるようになりました。 (Patrick McHardy) (11)</li>
<p>
本修正前は「CREATE TRIGGER ... EXECUTE FUNCTION my_trigger_func('my params', 123);」などとして付与した引数が欠落してコピーされていました。
</p>
<li>パーティションのキー列の削除を防止する依存性が導入されました。 (Tom Lane) (11)(10)</li>
<p>
ALTER TABLE ... DROP COLUMN はパーティションキーである列の削除を拒絶します。しかしながら、間接的な削除（キー列のデータ型をカスケード削除する場合など）では、このようなチェックが働かず、キー列の削除を許していました。この結果、パーティションテーブルが壊れて、アクセスも削除もできなくなるおそれがありました。
</p>
<p>
本修正は、キー列の削除を要するカスケード削除の際にはパーティションテーブル全体を削除するという要素を pg_depend に追加します。これはパーティションテーブルが作られるときに追加されます。したがって、バージョンアップ前に作られた既存パーティションテーブルでは、キー列のみ削除されてしまうリスクが残ります。
</p>
<p>
この問題は組み込みのデータ型のパーティションキー列では発生しません。したがって、大部分のユーザには無害であると考えられます。
</p>
<li>パーティションテーブルとそのデフォルトパーティションの間で列番号が確実に正しく対応付けされるようにしました。 (Amit Langote) (11)</li>
<p>
デフォルトパーティションでのみ一部の列を削除してあるなど、列が1対1対応でない場合に誤動作することがありました。
</p>
<p>
その後の有効なパーティションテーブルに対する操作（パーティション追加など）で、以下のようなエラーが生じる可能性がありました。
</p>
<pre>ERROR:  attribute 4 of type t7_partition_1 has been dropped
</pre>
<li>インデックスをパーティションテーブル全体に作成するときに、外部テーブルである所属パーティションを無視するようになりました。 (Álvaro Herrera) (11)</li>
<p>
これまではインデックスを作成しようとしたり、インデックスのあるパーティションテーブルに外部テーブルをアタッチするときに、以下のようなエラーが発生していました。
</p>
<pre>ERROR: cannot create index on foreign table "t8_parted"
</pre>
<p>
これからは外部テーブルのパーティションについては単にインデックスが作られない動作になります。ただし、ユニークインデックスである場合には例えば以下のようなエラーになります。
</p>
<pre>ERROR: cannot create unique index on partitioned table "t8_parted"
</pre>
<li>より多くの場合にパーティションテーブルのデフォルトパーティションが検索時にスキャン対象から除外できるようになりました。 (Yuzuko Hosoya) (11)</li>
<li>RANGEパーティションで boolean型の複数パーティションキー列があるときに検索でのパーティション除外に失敗する可能性があり、修正されました。 (David Rowley) (11)</li>
<li>対象のテーブルが継承親テーブルであるときには、GROUP BY列を最適化で消し去らないようになりました。 (David Rowley) (11)(10)(9.6)</li>
<p>
通常、テーブルの主キー列が GROUP BY に含まれる場合は他のグループ化列を安全に除去することができます。主キー列でグループを特定できるからです。しかし、継承テーブルを読む場合には、親子テーブル間、子テーブル間をまたがるユニーク性は保証されないため、この最適化は使えません。
</p>
<p>
以下の誤動作が報告されました。最後の SELECT は 2行が返るのが正しい動作です。実行プランで c1列がグループ化対象から外れてしまっていました。
</p>
<pre>db1=# CREATE TABLE t11  (c0 INT PRIMARY KEY, c1 INT);
db1=# CREATE TABLE t11c (c0 INT) INHERITS (t11);
db1=# INSERT INTO t11  (c0, c1) VALUES (0, 0);
db1=# INSERT INTO t11c (c0, c1) VALUES (0, 1);
db1=# SELECT c0, c1 FROM t11 GROUP BY c0, c1;
 c0 | c1
----+----
  0 |  0
(1 row)
</pre>
<li>semi-join問い合わせに対する並列ハッシュの誤使用が回避されました。 (Thomas Munro) (11)</li>
<p>
この障害により、一部の EXISTS問い合わせからの結果行が重複し、誤った結果が返ります。
</p>
<li>GROUPING SETSを伴う一部の問い合わせに対して、不要なソート処理の使用が回避されました。 (Andrew Gierth, Richard Guo) (11)(10)(9.6)(9.5)</li>
<p>
修正前も、処理が非効率にはなりますが、問い合わせ結果は正しいです。
</p>
<li>プランナがインデックス端点を調べるのに失敗する可能性があり、修正されました。 (Tom Lane) (11)</li>
<p>
PostgreSQLのプランナはインデックスを使って値の最大値、最小値を調べる動作をすることがあります。
</p>
<p>
プランナが列の最小値や最大値を知るために最近に作られたインデックスを使うとき、最近に無効になった実際には端点値を含まないタプルを誤って選択してしまう可能性がありました。
</p>
<p>
誤選択したタプルには NULL が入っているかもしれず、最悪の場合は、以下のエラーになります。
</p>
<pre>ERROR: found unexpected null value in index ...
</pre>
<p>本障害でよくある挙動は、誤った値が使われてプラン作成におけるデータ推測の品質が劣化することです。</p>
<li>EvalPlanQual の再チェックにおいて、トリガの遷移テーブルにアクセスするのに失敗していたものが修正されました。 (Alex Aktsipetrov) (11)(10)</li>
<p>
遷移テーブルを使った処理で以下のエラーが出るケースが報告されました。</p>
<pre>ERROR:  executor could not find named tuplestore "《NEW遷移テーブル》"
</pre>
<p>
EvalPlanQual処理は、READ COMMITTEDトランザクション隔離モードでの行の更新で使われる内部的な仕組みです。
</p>
<li>外部キー制約を再構築するときの複数列の外部キーの誤った処理が修正されました。 (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
外部キーの全列が同じデータ型でない場合に、ALTER TABLEが外部キーの再検証が必要かどうかの判断を誤る可能性がありました。この判断の誤りは常に保守的な方向で、再検証が不要なものを必要と判断すると見られます。したがって、不要な処理による性能上のバグと言えます。
</p>
<li>継承ツリーに対して拡張統計情報を作らないようになりました。 (Tomas Vondra) (11)(10)</li>
<p>
これにより、ANALYZE の際に以下のエラーが出るのを回避します。
</p>
<pre>ERROR:  tuple already updated by self
</pre>
<li>タプルロックを格上げする際の偽性のデッドロックエラーが回避されました。 (Oleksii Kliukin) (11)(10)(9.6)</li>
<p>
複数のトランザクションがトランザクションT1 が行ロックを解放するのを待っていて、T1 がそのロックレベルを格上げするとき、T1終了時に待っているトランザクションの間で偽性の（実際にはデッドロックではない）デッドロックが報告されました。
</p>
<p>
ここでのロックレベルの格上げとは、「SELECT ... FOR KEY SHARE」 の行ロックを取得している行に対して、次に「UPDATE ...」を行う場合などを指します。
</p>
<li>複数のパラレルワーカプロセスに関わるデッドロック解決の失敗が修正されました。 (Rui Hai Jiang) (11)(10)(9.6)</li>
<p>
本障害に該当した場合、デッドロック状態がデッドロックエラーにならず、問い合わせがキャンセルされるまで処理がブロックされてしまいます。
</p>
<p>
本障害が人工的な問い合わせ以外で発生するのかは明らかではありません。通常パラレルワーカがリーダプロセスで取得済みのロック以外を必要とすることは無いため、実際には問題はほぼ起きないと考えられます。
</p>
<li>端点に infinity や -infinity を持つ日付範囲の誤った標準化が防止されました。 (Laurenz Albe) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
範囲データ型は、ある値以上である値より小さいという半開区間になるように境界値を標準化させます。これを誤って無限値（infinity、-infinity）に対しても同様に試みていました。無限値の場合には干渉しないようになりました。
</p>
<p>
修正前は以下のような奇妙な振る舞いが生じていました。
</p>
<pre>db1=# SELECT '[-infinity,infinity]'::daterange @&gt; '-infinity'::date "include?";
 include?
----------
 t
(1 row)

db1=# SELECT '[-infinity,infinity]'::daterange @&gt; 'infinity'::date "include?";
 include?
----------
 f
(1 row)

db1=# SELECT '[-infinity,infinity]'::daterange;
      daterange
----------------------
 [-infinity,infinity)
(1 row)
</pre>
<li>大きい money型の値を numeric型に変換するときの端数の損失が修正されました。 (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
money型の最大値（あるいは負の最小値）に近い値で以下のように不正確な変換が生じる可能性がありました。
</p>
<pre>db=# select '-92233720368547758.07'::money, '-92233720368547758.07'::money::numeric(30,2);
           money            |       numeric
----------------------------+----------------------
 $92,233,720,368,547,758.07 | 92233720368547758.00
(1 row)
</pre>
<li>BTREE_META_CLEANUP の WALレコードの表示が修正されました。 (Michael Paquier) (11)</li>
<p>
これは pg_waldump のクラッシュをひき起こしました。
</p>
<li>version-2 の Btreeメタページに対する誤った処理によるアサート失敗が防止されました。 (Peter Geoghegan) (11)</li>
<p>
10以前のバージョンで作った Btreeインデックスがあって、それを pg_upgrade でバージョンアップした後のアクセスで問題が生じました。11 でも修正されていますが、実際にアサート失敗が起きるのは 12 の betaバージョンです。
</p>
<li>MIPS r6 で動作するように、MIPS CPUむけのスピンロックのアセンブラコードが修正されました。 (YunQiang Su) (11)(10)(9.6)(9.5)(9.4)</li>
<li>PL/pgSQL関数から返されるレコードまたは ROW値が複合型として型付けされるようになりました。 (Tom Lane) (11)</li>
<p>
これによって結果がテーブルに直接格納された場合の問題が回避されます。これまでは以下の処理でエラーが発生していました。
</p>
<pre>db=# CREATE TYPE two_int8s AS (q1 int8, q2 int8);
db=# CREATE FUNCTION compresult(int8) RETURNS two_int8s LANGUAGE plpgsql AS
       $$ DECLARE r record; BEGIN r := ROW($1,$1); RETURN r; END $$;
db=# CREATE TABLE two_int8s_tab (f1 two_int8s);
db=# INSERT INTO two_int8s_tab VALUES (compresult(42));
db=# SELECT f1 FROM two_int8s_tab;
   f1
---------
 (42,42)
(1 row)

(再接続後に実行)
db=# SELECT f1 FROM two_int8s_tab;
ERROR:  record type has not been registered
</pre>
<li>libpqライブラリで接続サービスファイル内の復帰コード(<br />
)が無視されるようになりました。 (Tom Lane, Michael Paquier) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
ごくまれな場合に、Windows形式の改行コードを含むサービスファイルが誤って解析され、接続エラーになっていました。
</p>
<li>psqlコマンドで、SET variable = の後について、variable が既知のパラメータ名でない場合にはタブ補完を行わないようになりました。 (Tom Lane) (11)(10)(9.6)</li>
<li>psql の d コマンドの軽微なメモリリークが修正されました。 (Tom Lane) (11)(10)</li>
<li>pg_dump コマンドが修正され、カスタム演算子クラスが正しい順序でダンプされるようになりました。 (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
ユーザ定義 opclass がユーザ定義範囲型のサブタイプ opclass である場合、関連するオブジェクトが誤った順序でダンプされ、リストアできないダンプが生成されていました。
</p>
<p>
opclass の依存関係を処理する潜在的なエラーはほかのケースでも発生する可能性がありますが、これは唯一知られているケースです。
</p>
<li>-Rオプションの使用時に発生しうる pgbenchコマンドのハングアップが修正されました。 (Fabien Coelho) (11)(10)</li>
<li>contrib/amcheck のインデックス検証の信頼性が改善されました。 (Peter Geoghegan) (11)</li>
<li>contrib/jsonb_plperl で Perl の undef値の処理が修正されました。 (Ivan Panchenko) (11)</li>
<p>
NULL を Perl の undef値として扱わせて、それを jsonb に変換する場合に以下エラーが出るケースが報告されました。
</p>
<pre>ERROR:  cannot transform this Perl type to jsonb
</pre>
<li>contrib/passwordcheck が修正され、check_password_hook がほかのユーザと共存できるようになりました。 (Michael Paquier) (11)(10)(9.6)(9.5)(9.4)</li>
<li>contrib/sepgsql のテストが修正され、最近の SELinuxリリースでも動作するようになりました。 (Mike Palmiotto) (11)(10)(9.6)(9.5)(9.4)</li>
<li>src/test/kerberos および src/test/ldap のリグレッションテストの安定性が改善されました。 (Thomas Munro, Tom Lane) (11)</li>
<li>src/test/recovery のリグレッションテストの安定性が改善されました。 (Michael Paquier) (11)(10)(9.6)</li>
<li>pg_upgradeコマンドのテストスクリプトからの標準エラーへの出力が削減されました。 (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<li>pgbenchコマンドのリグレッションテストがWindows でも動作するように修正されました。 (Fabien Coelho) (11)</li>
<li>ビルドディレクトリがルート以外の msysマウントポイントにある場合でも、TAP テストが msys の Perl で動作するように修正されました。 (Noah Misch) (11)(10)(9.6)</li>
<li>Microsoft Visual Studio 2019 でのビルドに対応しました。 (Haribabu Kommi) (11)(10)(9.6)(9.5)(9.4)</li>
<li>Visual Studioビルドでは、環境変数 WindowsSDKVersion が設定されている場合、それを優先するようになりました。 (Peifeng Qiu) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これにより、VS 2017 と SDK v10 の組み合わせでビルドする際にSDK v8.1 が無いとビルドに失敗する問題が回避されます。
</p>
<li>Visual Studio ビルドで OpenSSL 1.1.0 以降に対応しました。 (Juan José Santamaría Flecha, Michael Paquier) (11)(10)(9.6)(9.5)(9.4)</li>
<li>GNU 以外の makeコマンドが最上位のディレクトリで呼び出されたときにmakeコマンドのオプションが gmakeコマンドに渡されるようになりました。 (Thomas Munro) (11)(10)(9.6)(9.5)</li>
<li>initdbコマンドの実行中に TimeZoneパラメータとして localtime または posixrules が選択されないようになりました。 (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
場合によっては initdbコマンドは実際のゾーン名より優先して、これらの人工的なゾーン名のいずれかを選択していました。
</p>
<p>
これらの 2 つよりも C ライブラリのタイムゾーンの動作に一致するほうが優先されるようになります。
</p>
<li>pg_timezone_namesビューが調整され、短い省略形をもつ場合に限って Factoryタイムゾーンを表示するようなりました。 (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
歴史的に IANA では、この人工的なゾーンに「Local time zone must be set--see zic manual page」のような省略形を設定します。tzdbデータベースの最新バージョンでは代わりに -00 が表示されますが、一部のプラットフォームでは何らか歴史的なフレーズを表示するためにデータを変更します。
</p>
<p>
最新の省略形が使用される場合に限ってこのタイムゾーンを表示することで、非常に長い文字列が abbrev列に出力されるのが防止されました。
</p>
<li>タイムゾーンライブラリのコピーが IANA の tzcode release 2019b と同期されました。 (Tom Lane) (11)(10)(9.6)(9.5)(9.4)</li>
<p>
これによって zicコマンドに新しい -b slim オプションが追加され、インストールされたゾーンファイルのサイズを削減できます。現在は使用されていませんが、将来的には有効になる可能性があります。
</p>
<li>タイムゾーンデータファイルが tzdata release 2019b に更新されて、ブラジルでの夏時間規則の変更に加えて、香港、イタリア、およびパレスチナの歴史的な修正が適用されました。 (11)(10)(9.6)(9.5)(9.4)</li>
</ol>

<div>
<a href="https://www.sraoss.co.jp/prod_serv/support/pgsql-mainte/?utm_source=sraoss-techblog&utm_medium=referral&utm_campaign=under-article-pgsql" rel="noopener" style="color:initial;" target="_blank" class="no-ext"></p>
<div style="background-color:#DAEFF6; padding:20px; border-radius:8px; text-align:center;">
SRA OSSでは、PostgreSQL/Pgpool-II のサポートを提供しております。<br />
詳しくは<strong style="color:#2581c4;">弊社ホームページ</strong>をご覧ください。
</div>
<p></a>
</div>

]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
