Release date: 2017-11-09
このリリースは9.6.5に対し、各種不具合を修正したものです。 9.6メジャーリリースにおける新機能については、E.17を参照してください。
9.6.Xからの移行ではダンプ/リストアは不要です。
しかしながら、BRINインデックスを使っている場合は以下の変更点の4番目を参照してください。
また、9.6.4よりも前のバージョンからアップグレードする場合は、E.13を参照して下さい。
INSERT ... ON CONFLICT DO UPDATE
が全ての場合にテーブルのアクセス許可とRLSポリシーを確認するようにしました。
(Dean Rasheed)
INSERT ... ON CONFLICT DO UPDATE
の更新パスは調停インデックスの列にSELECT
許可を必要としますが、制約名で調停が指定される場合にその検査ができていませんでした。
加えて、行単位セキュリティが有効になったテーブルについて、更新された行のテーブルSELECT
ポリシーに対する検査ができていませんでした(どのように調停インデックスが指定されているかにかかわらず)。
(CVE-2017-15099)
json{b}_populate_recordset()
での行型の不一致によるクラッシュを修正しました。
(Michael Paquier, Tom Lane)
これらの関数はFROM ... AS
句で指定された結果の行型を、それが与えられた行の値の実際の行型と一致しているかの検査なしに使いました。
一致していなかった場合、これはクラッシュをひき起こしましたが、さらにサーバメモリ内容の露出も起こりうると見られます。
(CVE-2017-15098)
$PGLOG
を開く前に$PGUSER
になるようにサンプルのサーバ起動スクリプトを修正しました。
(Noah Misch)
これまではpostmasterのログファイルはまだrootとして実行されている間にオープンされました。
それゆえデータベース所有者は他のシステムユーザに$PGLOG
を他のファイルに対するシンボリックリンクにすることで攻撃を準備することができました。
そのファイルはログメッセージが追加されることで破損するでしょう。
デフォルトでは、これらのスクリプトはどこにもインストールされません。
利用しているユーザが手動でこれらを再コピーするか、修正されたバージョンに同じ変更を適用する必要があります。
もし、存在している$PGLOG
ファイルがroot所有であるなら、直されたスクリプトでサーバを再起動する前に、それを削除するかファイル名変更をしてどけておく必要があります。
(CVE-2017-12172)
BRINインデックスの要約情報を同時発生のテーブル拡張を正しく扱えるように修正しました。 (Álvaro Herrera)
これまでは競合状態でテーブル行がインデックスから無視されることがありました。 過去に発生した本問題を修復するため、既存のBRINインデックスは再構築する必要があるでしょう。
BRINインデックスの同時更新中のエラーを修正しました。 (Tom Lane)
これらの競合状態は「invalid index offnum(無効なindex offnum)」あるいは「inconsistent range map(不整合な範囲マップ)」といったエラーになりました。
SPIを使った関数からロジカルデコーディングが起動されたときのクラッシュを修正しました。特にPL言語で書かれた任意の関数で該当します。 (Tom Lane)
複数のGROUPING SETS
列が同一の単純な変数を含むときの、誤った問い合わせ結果を修正しました。
(Tom Lane)
入れ子の問い合わせに対する誤った並列化の判断を修正しました。 (Amit Kapila, Kuntal Ghosh)
最近に使ったロールが削除されたときに、並列問い合わせの処理が失敗しないように修正しました。 (Amit Kapila)
json_build_array()
、json_build_object()
および、これらのjsonb
版を、明示的なVARIADIC
引数を正しく扱うように修正しました。
(Michael Paquier)
浮動小数点数の無限の値をnumeric
型に変換しようとする試みを適切に拒絶します。
(Tom Lane, KaiGai Kohei)
これまで、振舞いはプラットフォーム依存でした。
列をビューの末尾に追加したときに稀な場合でのクラッシュを修正しました。 (Tom Lane)
ビューやルールがFieldSelect
式またはFieldStore
式のノードを含むとき、適切な依存関係を記録するようにしました。
FieldStore
(Tom Lane)
これらの依存関係が欠けていると、エラーにすべきときでも列やデータ型をDROP
できました。その結果、そのビューやルールの後の使用でエラーをひき起こしました。
本修正は既存のビュー/ルールを保護するためには何もしません。将来作成されるものを保護するだけです。
範囲データ型がハッシュ可能であるかを正しく検出するようにしました。 (Tom Lane)
ハッシュ結合やハッシュ集約を使うにあたりプランナは誤っていかなる範囲型もハッシュ可能であると想定していましたが、実際には範囲の中の型がハッシュに対応しているかの検査が必要です。 組み込みの範囲型は、どれもハッシュ可能であるのでいずれにせよ影響ありません。
リレーションの重複を決定する時にはRelabelType
式ノードを無視します。
(David Rowley)
これにより、副問い合わせにvarchar
型の結果列がある場合に意図した最適化が起きるようになります。
順序集合集約の間での遷移状態の共有を防止しました。 (David Rowley)
これは組み込みの順序集合集約で、また、おそらくはユーザ定義の順序集合集約でも同様にクラッシュをひき起こします。 v11以降ではこのような場合で安全に処理する用意が含まれますが、リリースされている系列では単にこの最適化をできなくします。
statement_timeout
がより早くに生じたときに、idle_in_transaction_session_timeout
が無視されるのを防止しました。
(Lukas Fittl)
XID周回により低確率で起きるNOTIFY
メッセージの取りこぼしを修正しました。
(Marko Tiikkaja, Tom Lane)
あるセッションが20億トランザクション以上にわたって一つも問い合わせを実行せず、通知の監視だけ行った場合、同時にコミットするトランザクションからのいくらかの通知を取りこぼし始めました。
DSMメモリ要求がtmpfsで利用可能な容量を超えた場合に、LinuxでのSIGBUSクラッシュを回避します。 (Thomas Munro)
特に新しいAPFSファイルシステムでのmacOSにおける性能問題を回避するため、大きいファイルコピーでのデータフラッシュ要求の頻度を減らしました。 (Tom Lane)
入れ子のトリガ駆動を処理する時に、低い確率で起きるクラッシュを防止します。 (Tom Lane)
トランザクション隔離レベルがREPEATABLE READ
以上のときに、COPY
のFREEZE
オプションが動作するようにしました。
(Noah Misch)
本件は以前のバグ修正で意図せず壊されました。
ファイル作成がCOPY
またはlo_export()
で失敗した場合に、umaskの設定を正しく元に戻します。
(Peter Eisentraut)
ANALYZE
で重複する列名に対してより良いエラーメッセージを出します。
(Nathan Bossart)
GetCommandLogLevel()
で見落とされていた状況を追加し、log_statement
がddl
に設定されている時に特定のSQLコマンドが使われる場合のエラーを防ぎます。
(Michael Paquier)
改行で終わっていないpg_hba.conf
ファイルで最後の行の解析を失敗するのを修正しました。
(Tom Lane)
正しいAggref
ノードを遷移計算が併合されている集約の最終関数に返すように、AggGetAggref()
を修正しました。
。
(Tom Lane)
pg_dumpがGRANT
コマンドを有効な順序で確実に出すように修正しました。
pg_basebackupのテーブルスペースパスの突合せを比較する前に両パスを正規化するように修正しました。 (Michael Paquier)
これは特にWindowsで役立ちます。
libpqをユーザのホームディレクトリが存在している必要が無いように修正しました。 (Tom Lane)
v10では~/.pgpass
を読むときにホームディレクトリを見つけられないと強いエラーとして扱われましたが、ファイルが見つからない原因となるだけであるべきです。
サービス名が指定されてない限り探されないのでそれほど目につきませんが、v10以前のリリース系列では~/.pg_service.conf
を読むときに同じ誤りを犯していました。
libpqをPGresult
の行数の整数オーバーフローから守るよう修正しました。
(Michael Paquier)
ecpgがポインタや配列変数で範囲外のカーソル宣言を扱うのを修正しました。 (Michael Meskes)
ecpglibでstandard_conforming_strings
が設定されているかに応じて文字列リテラル内のバックスラッシュを正しく扱うようにしました。
(Tsunakawa Takayuki)
ecpglibのInformix互換モードにおいて、予期される通りに整数入力文字列で端数桁を無視するようにしました。 (Gao Zengqi, Michael Meskes)
ecpgのリグレッションテストがWindowsで信頼できるものとして動作するよう修正しました。 (Christian Ullrich, Michael Meskes)
check
のようなMakeターゲットで見落とされていたテンポラリインストールの必要条件を修正しました。
(Noah Misch)
make check
のように動作すると意図されていた一部のデフォルトでないテストプロシージャはテンポラリインストールが最新状態になっていることを保証できていませんでした。
私たちのタイムゾーンライブラリのコピーをIANA release tzcode2017cに同期しました。 (Tom Lane)
多数の問題が修正されています。ユーザに見えるであろう唯一のものは、POSIX形式のゾーン名に対するデフォルトの夏時間の規則は、posixrules
ファイルがタイムゾーンデータディレクトリに存在しない場合、十数年前のものではなく現在の米国の法律に一致することです。
タイムゾーンデータファイルをtzdata release 2017cに更新しました。 フィジー、ナミビア、北キプロス、スーダン、トンガ、タークス・カイコス諸島の夏時間法の変更に加え、アラスカ、アピア、ビルマ、カルカッタ、デトロイト、アイルランド、ナミビア、パゴパゴの歴史的修正が含まれます。