リリース日: 2017-11-09
このリリースは10.0に対し、様々な不具合を修正したものです。 10メジャーリリースにおける新機能については、E.6を参照してください。
10.Xからの移行ではダンプ/リストアは不要です。
しかしながら、BRINインデックスを使っている場合は以下の変更点の4番目を参照してください。
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(不整合な範囲マップ)」といったエラーになりました。
ロジカルレプリケーションでUPDATE
を伝播するときに非レプリケーション列にNULLが設定されることを防止しました。
UPDATE
(Petr Jelinek)
想定どおりにBEFORE ROW DELETE
トリガを駆動するようにロジカルレプリケーションを修正しました。
(Masahiko Sawada)
これまでは、テーブルにもBEFORE ROW UPDATE
トリガがあるのでない限り、トリガが駆動しませんでした。
SPIを使った関数からロジカルデコーディングが起動されたときのクラッシュを修正しました。特にPL言語で書かれた任意の関数で該当します。 (Tom Lane)
INSERT
/UPDATE
/DELETE
の対象テーブルを走査するときにCTEを無視して、スキーマ修飾された対象テーブル名がトリガ遷移テーブル名にぶつかるのを防ぐようにしました。
(Thomas Munro)
この変更は、DMLコマンドに付加されたCTEの振る舞いをv10より前のものに戻します。
FILTER
テストが失敗する行での、集約関数の引数式の評価を回避しました。
(Tom Lane)
この変更は、v10より前の(そしてSQL標準の)振る舞いに戻します。
複数のGROUPING SETS
列が同一の単純な変数を含むときの、誤った問い合わせ結果を修正しました。
(Tom Lane)
SELECT
の対象リスト内で複数行を返す関数を評価するときの問い合わせ内のメモリリークを修正しました。
(Tom Lane)
汎用プランで準備された文の並列実行ができるようにしました。 (Amit Kapila, Kuntal Ghosh)
入れ子の問い合わせに対する誤った並列化の判断を修正しました。 (Amit Kapila, Kuntal Ghosh)
最近に使ったロールが削除されたときに、並列問い合わせの処理が失敗しないように修正しました。 (Amit Kapila)
BitmapOrプランノードの下にBitmapAndプランノードを持つビットマップスキャンの並列実行でのクラッシュを修正しました。 (Dilip Kumar)
json_build_array()
、json_build_object()
および、これらのjsonb
版を、明示的なVARIADIC
引数を正しく扱うように修正しました。
(Michael Paquier)
起こりうるクラッシュや無報告での作業項目の取りこぼしを防ぐため、autovacuumの「work item(作業項目)」ロジックを修正しました。 (Álvaro Herrera)
列をビューの末尾に追加したときに稀な場合でのクラッシュを修正しました。 (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億トランザクション以上にわたって一つも問い合わせを実行せず、通知の監視だけ行った場合、同時にコミットするトランザクションからのいくらかの通知を取りこぼし始めました。
特に新しいAPFSファイルシステムでのmacOSにおける性能問題を回避するため、大きいファイルコピーでのデータフラッシュ要求の頻度を減らしました。 (Tom Lane)
トランザクション隔離レベルがREPEATABLE READ
以上のときに、COPY
のFREEZE
オプションが動作するようにしました。
(Noah Misch)
本件は以前のバグ修正で意図せず壊されました。
正しいAggref
ノードを遷移計算が併合されている集約の最終関数に返すように、AggGetAggref()
を修正しました。
。
(Tom Lane)
pg_dumpとpsqlで、いくつかの新しい問い合わせでの不十分なスキーマ修飾を修正しました。 (Vitaly Burovoy, Tom Lane, Noah Misch)
psqlの\d
のための問い合わせで@>
演算子の使用を回避しました。
(Tom Lane)
これは、parray_gin拡張がインストールされて、それが競合する演算子を定義したときの問題を防止します。
pg_basebackupのテーブルスペースパスの突合せを比較する前に両パスを正規化するように修正しました。 (Michael Paquier)
これは特にWindowsで役立ちます。
libpqをユーザのホームディレクトリが存在している必要が無いように修正しました。 (Tom Lane)
v10では~/.pgpass
を読むときにホームディレクトリを見つけられないと強いエラーとして扱われましたが、ファイルが見つからない原因となるだけであるべきです。
サービス名が指定されてない限り探されないのでそれほど目につきませんが、v10以前のリリース系列では~/.pg_service.conf
を読むときに同じ誤りを犯していました。
ecpglibでstandard_conforming_strings
が設定されているかに応じて文字列リテラル内のバックスラッシュを正しく扱うようにしました。
(Tsunakawa Takayuki)
ecpglibのInfomix互換モードにおいて、予期される通りに整数入力文字列で端数桁を無視するようにしました。 (Gao Zengqi, Michael Meskes)
check
のようなMakeターゲットで見落とされていたテンポラリインストールの必要条件を修正しました。
(Noah Misch)
make check
のように動作すると意図されていた一部のデフォルトでないテストプロシージャはテンポラリインストールが最新状態になっていることを保証できていませんでした。
タイムゾーンデータファイルをtzdata release 2017cに更新しました。 フィジー、ナミビア、北キプロス、スーダン、トンガ、タークス・カイコス諸島の夏時間法の変更に加え、アラスカ、アピア、ビルマ、カルカッタ、デトロイト、アイルランド、ナミビア、パゴパゴの歴史的修正が含まれます。
この文書でHTMLアンカーを大文字の文字列に復旧しました。 (Peter Eisentraut)
ツールチェーン変更のため、10.0のユーザマニュアルには内部ページアンカーに小文字の文字列が含まれていて、Webサイトのドキュメントへの外部リンクの一部を壊していました。 以前の大文字の文字列を使う慣習に戻ります。