リリース日: 2020-09-24
PostgreSQL 13には以下をはじめとする多数の新機能と拡張が含まれます。
Bツリーインデックス項目の重複除去による省スペース化と性能向上
集約やパーティションテーブルを使う問い合わせの性能改善
拡張統計情報を使ったときのより良い問い合わせの計画作成
並列化されたインデックスのバキューム
インクリメンタルソート
PostgreSQL 13の上記の項目とその他の機能は次節でより詳しく説明されます。
以前のリリースからデータを移行したい時は、どのリリースについても、 pg_dumpallを利用したダンプとリストア、あるいはpg_upgradeやロジカルレプリケーションの使用が必要です。 新たなメジャーバージョンへの移行に関する一般的な情報については18.6を参照してください。
バージョン13には、以前のバージョンとの互換性に影響するかもしれない多数の変更点が含まれています。以下の非互換性に注意してください。
SIMILAR TO ... ESCAPE NULL
がNULL
を返すように変更しました。
(Tom Lane)
この新たな振る舞いはSQL仕様に適合します。
これまではNULLのESCAPE
値はデフォルトのエスケープ文字列(バックスラッシュ文字)を使うという意味になっていました。
この変更は、substring(
にも適用されます。
変更されていない元の関数を維持することで古いビューではこれまでの振る舞いが保たれます。
text
FROM pattern
ESCAPE text
)
json[b]_to_tsvector()
がstring
オプションのスペリングを完全に検査するようにしました。
(Dominik Czarnota)
デフォルトでないeffective_io_concurrency値が同時実行性に作用する方式を変更しました。
これまでは、この値は同時要求数の設定に先立って調整が行われました。 これからは、この値が直接的に使われます。 古い値から新たな値への変換は以下を使ってできます。
SELECT round(sum(OLDVALUE
/ n::float)) AS newvalue FROM generate_series(1,OLDVALUE
) s(n);
pg_stat_sslおよびpg_stat_gssapiシステムビューで補助プロセスの表示を防止しました。 (Euler Taveira)
これらのビューをpg_stat_activityと結合して補助プロセスも参照しようとする問い合わせでは左結合を使う必要があるでしょう。
一貫性を改善するため様々な待機イベントの名前を変更しました。 (Fujii Masao, Tom Lane)
ALTER FOREIGN TABLE ... RENAME COLUMN
をより適切なコマンドタグを返すように修正しました。
(Fujii Masao)
これまではALTER TABLE
を返しましたが、これからはALTER FOREIGN TABLE
を返します。
ALTER MATERIALIZED VIEW ... RENAME COLUMN
をより適切なコマンドタグを返すように修正しました。
(Fujii Masao)
これまではALTER TABLE
を返しましたが、これからはALTER MATERIALIZED VIEW
を返します。
設定パラメータwal_keep_segments
をwal_keep_sizeに名前変更しました。
(Fujii Masao)
これはどれだけWALをスタンバイサーバのために保持するかを決定します。
従来パラメータでのファイル数ではなく、メガバイトで指定されます。
これまでwal_keep_segments
を使っていたなら、以下の式でほぼ同等の設定が得られます。
wal_keep_size = wal_keep_segments * wal_segment_size (典型的には 16MB)
PostgreSQL 8.0より前の構文を使った演算子クラスの定義のサポートを廃止しました。 (Daniel Gustafsson)
PostgreSQL 7.3より前の構文を使った外部キー制約の定義のサポートを廃止しました。 (Daniel Gustafsson)
PostgreSQL 7.3より前のサーバで使われるopaque疑似型のサポートを廃止しました。 (Daniel Gustafsson)
パッケージ化されていない(9.1より前の)拡張のアップグレードのサポートを廃止しました。 (Tom Lane)
CREATE EXTENSION
のFROM
オプションはもはやサポートされなくなります。
未だパッケージ化されていな拡張を使っているインストレーションは、PostgreSQL 13にバージョンアップする前にそれら拡張をパッケージ化されたバージョンにアップグレードすべきです。
タイムゾーンデータベースでposixrules
ファイルのサポートを廃止しました。
(Tom Lane)
IANAのタイムゾーングループはこの機能を廃止していて、今後の数年間でシステムのタイムゾーンデータベースから徐々に消えていくことになります。
タイムゾーンデータの更新による予期せぬ振る舞いの変化が現れるのを避けるため、私たちはバージョン13でPostgreSQLによる本機能のサポートを廃止しました。
これは、明示的な夏時間ルールが欠けているPOSIXスタイルのタイムゾーン仕様の動作にだけ影響します。
以前は、独自のposixrules
ファイルを導入することで変換規則を決定できましたが、これからは固定の動作となります。
影響をうけるインストレーションに対する推奨される修正は、地理的なタイムゾーン名を使うようにすることです。
ltreeで、lquery
のパターンが、例えば*{2}.*{3}
という中括弧付きの隣接するアスタリスクを含む場合、それを適切に*{5}
と解釈するようにしました。
(Nikita Glukhov)
pageinspectのbt_metap()
が、オーバーフローする可能性の低い、より適切なデータ型を返すように修正しました。
(Peter Geoghegan)
以下にPostgreSQL 13と前メジャーリリースとの詳細な変更点を記載します。
より多くの場合にパーティションの除去が行われるようにしました。 (Yuzuko Hosoya, Amit Langote, Álvaro Herrera)
より多くの場合にパーティション同士の結合が行われるようにしました。 (Ashutosh Bapat, Etsuro Fujita, Amit Langote, Tom Lane)
例えば、パーティションの境界が完全には一致していないパーティションテーブルの間においても、パーティション同士の結合が行えるようになります。
パーティションテーブルで行単位のBEFORE
トリガに対応しました。
(Álvaro Herrera)
ただし、このようなトリガでどのパーティションが宛先であるかを変更することはできません。
パーティションテーブルをパブリケーションによってロジカルレプリケーション対象にできるようにしました。 (Amit Langote)
これまではパーティションを個々にレプリケーションする必要がありました。
これからは明示的にパーティションテーブルをパブリッシュすることができて、これにより属する全てのパーティションが自動的にパブリッシュされます。
パーティションの追加/削除をすると、同様にパブリケーションの追加や削除が行われます。
CREATE PUBLICATION
のオプションpublish_via_partition_root
は、パーティションに対する変更をパブリッシュするのに、それら自身の変更とするか親の変更とするかを制御します。
サブスクライバでパーティションテーブルにロジカルレプリケーションできるようにしました。 (Amit Langote)
これまでは、サブスクライバはパーティション化されていないテーブルに限って行を受け入れることができました。
行全体の変数(すなわちtable
.*
)
をパーティションの式で使えるようにしました。
(Amit Langote)
Bツリーインデックスで重複をより効率的に格納するようにしました。 (Anastasia Lubennikova, Peter Geoghegan)
これは重複するキーを一度だけ格納することにより、低カーディナリティ列の効率的なBツリーインデックス作成を可能にします。
pg_upgradeでアップグレードしたユーザは、既存インデックスで本機能を使うためにREINDEX
を行う必要があります。
box
列に対するGiSTおよびSP-GiSTインデックスが、ORDER BY
の問い合わせに対応しました。
(Nikita Glukhov)
box
<-> point
GINインデックスがtsquery
検索での!
(否定)句をより効率的に処理できるようにしました。
(Nikita Glukhov, Alexander Korotkov, Tom Lane, Julien Rouhaud)
インデックスの演算子クラスがパラメータを取れるようにしました。 (Nikita Glukhov)
CREATE INDEX
でGiSTのシグネチャの長さと整数範囲の最大数を指定できるようにしました。
(Nikita Glukhov)
4および8バイトの整数配列、tsvector、pg_trgm、ltree、および、hstoreの列に対して作成されたインデックスは、デフォルト値を使うのではなく、GiSTインデックスパラメータを制御できるようになりました。
デフォルトでない照合順序を使うインデックスをテーブルのユニークまたは主キー制約として追加できないようにしました。 (Tom Lane)
インデックスの照合順序は元になる列の照合順序と一致しなければなりませんが、これまではALTER TABLE
でこの検査ができていませんでした。
含有/一致の演算子に対して、オプティマイザの選択度の見積を改善しました。 (Tom Lane)
拡張統計情報に対する統計対象を設定できるようにしました。 (Tomas Vondra)
これは新たなコマンドオプションALTER STATISTICS ... SET STATISTICS
で制御されます。
これまではより汎用的な統計対象の設定に基づいて計算されました。
一つの問い合わせに複数の拡張統計情報オブジェクトを使用できるようにしました。 (Tomas Vondra)
OR句およびIN/ANY
の定数リストに対して拡張統計情報オブジェクトを使用できるようにしました。
(Pierre Ducroquet, Tomas Vondra)
定数に評価できる場合には、FROM
句で関数をプルアップ(インライン化)できるようにしました。
(Alexander Kuzmenkov, Aleksandr Parfenov)
インクリメンタルソートを実装しました。 (James Coleman, Alexander Korotkov, Tomas Vondra)
中間問い合わせ結果が必要なソート順序の1つまたは複数の先行キーによってソートされることが分かっている場合で、行が同じ先行キーを持つバッチでソートされる場合、残りのキーのみを考慮して追加のソートを実行できます。
これは必要に応じてenable_incremental_sortを使用して制御できます。
inet値のソート性能を改善しました。 (Brandur Leach)
ハッシュ集約が大きな集約結果セットにディスクストレージを使うことができるようになりました。 (Jeff Davis)
これまではwork_mem以上のメモリを使うと予測される場合、ハッシュ集約は避けられました。
これからはそうであってもハッシュ集約のプランが選択できるようになります。
ハッシュテーブルはwork_mem
×hash_mem_multiplierを超える場合にはディスクに書き出されます。
この動作は、一度ハッシュ集約が選ばれると作られるハッシュテーブルがいかに大きくとも(プランナが見積を誤ると巨大になり得ます)メモリ上の保持されるという従来の動作よりも、通常はより望ましいです。
必要であれば、hash_mem_multiplier
を増やすことで従来動作と似た振る舞いが得られます。
自動バキュームで更新、削除のみならず挿入もバキューム処理の契機とできるようにしました。 (Laurenz Albe, Darafei Praliaskouski)
これまでは挿入のみの処理は、自動アナライズを引き起こしても、削除すべきデッドタプルは存在しないことを理由として、自動バキュームを引き起こしませんでした。 しかしながらバキュームの走査は、インデックスオンリースキャンの効率を改善するページ全可視ビットの設定などの、他の有益な副次効果を持ちます。 また、挿入のみのテーブルが定期的なバキュームを受けられるようすることは、古いタプルを「凍結する」仕事を分散するために役立ち、テーブル全体が周回防止の閾値に達したときに突然一度に大量の凍結処理が実行されることがなくなります。
必要に応じて、この振る舞いは新たなパラメータautovacuum_vacuum_insert_thresholdとautovacuum_vacuum_insert_scale_factor、あるいは、同等のテーブルストレージオプションで調整できます。
メンテナンス操作におけるI/Oの並列性を制御するmaintenance_io_concurrencyパラメータを追加しました。 (Thomas Munro)
wal_levelがminimal
の場合に、リレーションを作成または書き直しするトランザクションのときにWAL書き込みを省略できるようにしました。
(Kyotaro Horiguchi)
wal_skip_thresholdよりも大きいリレーションは、WALを生成するのではなく、そのファイルをfsyncさせます。
これまではCOPY
操作に限ってこれが行われていましたが、実装にバグがあり、クラッシュリカバリに際してデータ損失が生じるおそれがありました。
多くのテーブルスペースが使われているときにDROP DATABASE
コマンドをリプレイするときの性能を改善しました。
(Fujii Masao)
巨大なリレーションのTRUNCATEの性能を改善しました。 (Kirk Jamison)
TOASTされた値の先行するバイトの取得を改善しました。 (Binguo Bao, Andrey Borodin)
これまでは、いくらかの先行バイトのみが必要と分かっているときでも、圧縮された行外のTOAST値は完全に取得されました。 これからは、結果の生成に必要なだけのデータのみが取得されます。
LISTEN
/NOTIFY
の性能を改善しました。
(Martijn van Oosterhout, Tom Lane)
整数からテキストへの変換速度を向上させました。 (David Fetter)
多数のSQL文を含む、問い合わせ文字列や拡張のスクリプトに対するメモリ使用を減らしました。 (Amit Langote)
EXPLAIN
、auto_explain、autovacuum、および、pg_stat_statementsがWAL使用の統計を追跡できるようにしました。
(Kirill Bychik, Julien Rouhaud)
全てのSQL文ではなく、SQL文のサンプルをログ記録できるようにしました。 (Adrien Nayrat)
log_min_duration_sample以上の時間を要する文がlog_statement_sample_rateの比率でログ記録されます。
csvlogとオプションでlog_line_prefixのログ出力にバックエンドタイプを追加しました。 (Peter Eisentraut)
準備された文のパラメータのログ出力制御を改善しました。 (Alexey Bashtanov, Álvaro Herrera)
GUC設定のlog_parameter_max_lengthでエラーでない文のログ記録時のパラメータ値の出力の最大長を制御し、また、log_parameter_max_length_on_errorはエラーを伴う文のログ記録について同様に制御します。 これまでは準備された文のパラメータはエラー時にはログ記録されませんでした。
関数呼び出しのバックトレースをエラー後に記録できるようにしました。 (Peter Eisentraut, Álvaro Herrera)
新たなパラメータbacktrace_functionsはどのC関数がエラーにバックトレースを生成すべきかを指定します。
バキュームのバッファカウンタをオーバーフロー回避のため64ビット幅にしました。 (Álvaro Herrera)
pg_stat_activityにパラレルワーカーのリーダープロセスを報告するleader_pid
を追加しました。
(Julien Rouhaud)
ストリーミングベースバックアップの進捗を報告するシステムビューpg_stat_progress_basebackup
を追加しました。
(Fujii Masao)
ANALYZEの進捗を報告するシステムビューpg_stat_progress_analyze
を追加しました。
(Álvaro Herrera, Tatsuro Yamada, Vinayak Pokale)
共有メモリの使用を表示するシステムビューpg_shmem_allocations
を追加しました。
(Andres Freund, Robert Haas)
内部のSLRUキャッシュを観測するシステムビューpg_stat_slru
を追加しました。
(Tomas Vondra)
track_activity_query_sizeが1MBまで設定できるようにしました。 (Vyacheslav Makarov)
以前の最大は100kBでした。
posix_fallocate()
でDSMセグメントを作成する間に待機イベントを報告するようにしました。
(Thomas Munro)
コストに基づくバキューム遅延について報告する待機イベントVacuumDelayを追加しました。 (Justin Pryzby)
WALのアーカイブとリカバリ停止に対する待機イベントを追加しました。 (Fujii Masao)
新たなイベントはBackupWaitWalArchiveとRecoveryPauseです。
リカバリの衝突を監視する待機イベントRecoveryConflictSnapshotおよびRecoveryConflictTablespaceを追加しました。 (Masahiko Sawada)
BSDベースのシステムで待機イベントの性能を改善しました。 (Thomas Munro)
スーパーユーザのみがssl_passphrase_command設定を参照できるようにしました。 (Insung Moon)
これはセキュリティ上の予防策として変更されました。
暗号化接続でのサーバのデフォルトの最小TLSバージョンを1.0から1.2に変更しました。 (Peter Eisentraut)
この選択はssl_min_protocol_versionで制御できます。
読み取り専用トランザクションモードで許可されるユーティリティコマンドについての規定を厳格化しました。 (Robert Haas)
また、この変更はパラレルクエリで実行できるユーティリティコマンドの数を増やします。
allow_system_table_modsをサーバ起動後に変更できるようにしました。 (Peter Eisentraut)
allow_system_table_modsが設定されているとき、非スーパーユーザがシステムテーブル変更できないようにしました。 (Peter Eisentraut)
これまではサーバ起動時にallow_system_table_modsが設定されていると、非スーパーユーザがシステムテーブルにINSERT
/UPDATE
/DELETE
コマンドを発行できました。
WindowsでUnixドメインソケットをサポートしました。 (Peter Eisentraut)
ストリーミングレプリケーション設定をリロードで変更できるようにしました。 (Sergei Kornilov)
これまではprimary_conninfoとprimary_slot_nameの変更にはサーバ再起動が必要でした。
WALレシーバが、永続スロットが指定されていないときに、一時的なレプリケーションスロットを使用できるようにしました。 (Peter Eisentraut, Sergei Kornilov)
この振る舞いはwal_receiver_create_temp_slotを使って有効にできます。
レプリケーションスロットに対するWALストレージをmax_slot_wal_keep_sizeで制限できるようにしました。 (Kyotaro Horiguchi)
この値の超過を要するレプリケーションスロットは無効と印付けされます。
スタンバイの昇格ですべての停止要求を取り消しできるようにしました。 (Fujii Masao)
これまではスタンバイが停止状態のときには昇格できませんでした。
リカバリが指定されたリカバリターゲットに達しなかった場合、エラーを生成するようにしました。 (Leif Gunnar Erlandsen, Peter Eisentraut)
これまではたとえターゲットに達していなくとも、WALの最後に達したならスタンバイは昇格していました。
ロジカルデコーディングでディスクに書き出す前に使われるメモリを制御できるようにしました。 (Tomas Vondra, Dilip Kumar, Amit Kapila)
これはlogical_decoding_work_memで制御されます。
たとえ不正なページがWALで参照されたとしても、リカバリを継続できるようにしました。 (Fujii Masao)
これはignore_invalid_pagesを使って有効にできます。
VACUUM
がテーブルのインデックスをパラレルに処理できるようにしました。
(Masahiko Sawada, Amit Kapila)
新たなPARALLEL
オプションでこれを制御します。
FETCH FIRST
で最後の結果行と一致する行を追加的に返すWITH TIES
を使えるようにしました。
(Surafel Temesgen)
EXPLAIN
のBUFFER
出力でプラン作成時のバッファ使用を報告するようにしました。
(Julien Rouhaud)
CREATE TABLE LIKE
がCHECK
制約のNO INHERIT
の属性を作成するテーブルに伝搬するようにしました。
(Ildar Musin, Chris Travers)
パーティションテーブルでLOCK TABLE
を使うとき、子テーブルで権限の検査をしないようにしました。
(Amit Langote)
識別列への挿入でOVERRIDING USER VALUE
に対応しました。
(Dean Rasheed)
列からGENERATED
属性を削除できるALTER TABLE ... DROP EXPRESSION
を追加しました。
(Peter Eisentraut)
複数ステップのALTER TABLE
コマンドのバグを修正しました。
(Tom Lane)
これからは、(インデックス作成などの)派生動作が既存列には実行されないということで、IF NOT EXISTS
句が期待通り動作するようになります。
また、関連する動作を一つのALTER TABLE
に連結しているいくつかの場合について、以前は動作しなかったものが動作するようになりました。
ビューの列を名前変更できるALTER VIEW
構文を追加しました。
(Fujii Masao)
ビューの列の名前変更は既に可能でしたが、ALTER TABLE RENAME COLUMN
と書く必要があり、混乱するものでした。
元となる型のTOAST属性とサポート関数を変更するALTER TYPE
オプションを追加しました。
(Tomas Vondra, Tom Lane)
CREATE DATABASE
のLOCALE
オプションを追加しました。
(Peter Eisentraut)
これは既存オプションのLC_COLLATE
とLC_CTYPE
を一つのオプションにまとめたものです。
DROP DATABASE
が対象データベースを使用しているセッションを切断して、データベース削除に成功できるようにしました。
(Pavel Stehule, Amit Kapila)
これはFORCE
オプションで可能になります。
C言語の更新トリガがどの列が更新されたかを知ることができる構造体メンバtg_updatedcols
を追加しました。
(Peter Eisentraut)
互換性のある引数を必要とする関数での使用のため、いくつか多様データ型を追加しました。 (Pavel Stehule)
新たなデータ型はanycompatible
、anycompatiblearray
、anycompatiblenonarray
、および、anycompatiblerange
です。
FullTransactionIdを表現するSQLのデータ型xid8
を追加しました。
(Thomas Munro)
既存のxid
データ型は4バイトしかないため、トランザクションエポックを提供できません。
照合順序オブジェクトのOIDを表示するための、データ型regcollation
と関連する関数を追加しました。
(Julien Rouhaud)
照合順序のバージョン識別子として、一部の場合にglibcバージョンを使うようにしました。 (Thomas Munro)
glibcバージョンが変更された場合、照合順序に依存したインデックスが壊れる可能性について警告が発行されるようになります。
Windowsで照合順序バージョンに対応しました。 (Thomas Munro)
ROW
式でメンバを接尾記法で展開できるようにしました。
(Tom Lane)
例えば(ROW(4, 5.0)).f1
は4を返すようになります。
改良されたNULL
の処理を備えたjsonb_set()
の別バージョンを追加しました。
(Andrew Dunstan)
新たな関数jsonb_set_lax()
は、要求にしたがってNULL
の新たな値を、指定キーをJSONのnullに設定する、キーを削除する、例外を上げる、変更されていないjsonb
値を返す、のいずれかで処理します。
jsonpathの.datetime()
メソッドを追加しました。
(Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov)
この関数はJSON値をタイムスタンプに変換できます。そのタイムスタンプはjsonpath
式で処理が可能です。
この変更では、タイムゾーンを意識した出力に対応したjsonpath
関数も追加されます。
ユニコード文字列を標準化するSQL関数NORMALIZE
()と、標準化を検査するIS NORMALIZED
を追加しました。
(Peter Eisentraut)
pg_lsn
に対するmin()
およびmax()
集約を追加しました。
(Fabrízio de Royes Mello)
これらは特に監視の問い合わせに有用です。
ユニコードエスケープに対応しました。例えば、E'\u
やnnnn
'U&'\
で、データベースエンコーディングがUTF-8でないときであってもデータベースエンコーディングで有効な任意の文字を指定できます。
(Tom Lane)
nnnn
'
to_date()
とto_timestamp()
が英語以外の月/日の名前を認識できるようにしました。
(Juan José Santamaría Flecha, Tom Lane)
認識される名前は同じ書式パターンにおけるto_char()
による出力と同じです。
1から6の小数秒桁数の入力や出力を指定する日付時刻の書式パターンFF1
–FF6
を追加しました。
(Alexander Korotkov, Nikita Glukhov, Teodor Sigaev, Oleg Bartunov)
これらのパターンはto_char()
、to_timestamp()
、および、jsonpathの.datetime()
で使用できます。
SQL標準のSSSS
の別名として日付時刻の書式パターンSSSSS
を追加しました。
(Nikita Glukhov, Alexander Korotkov)
バージョン4のUUIDを生成する関数gen_random_uuid()
を追加しました。
(Peter Eisentraut)
最大公約数(gcd
)と最小公倍数(lcm
)の関数を追加しました。
(Vik Fearing)
numeric
型の平方根(sqrt
)および自然対数(ln
)関数の性能と正確性を改善しました。
(Dean Rasheed)
完全な精度のnumeric
値を表現するのに必要となる、小数点の右の桁数を返す関数min_scale()
を追加しました。
(Pavel Stehule)
末尾のゼロを除いてnumeric
値のスケールを減らす関数trim_scale()
を追加しました。
(Pavel Stehule)
距離演算子の交換を追加しました。 (Nikita Glukhov)
例えばこれまでは、point
<->
line
のみに対応していましたが、これからは、line
<->
point
も同様に動作します。
全てのトランザクションID関数のxid8
版を作成しました。
(Thomas Munro)
後方互換性のため、古いxid
ベースの関数は未だ存在します。
get_bit()
とset_bit()
がbytea
値の最初の256MBを超えてビット設定できるようにしました。
(Movead Li)
勧告的ロック関数が一部の並列操作で利用できるようにしました。 (Tom Lane)
拡張におけるオブジェクトの依存性を削除できるようにしました。 (Álvaro Herrera)
対応するオブジェクトは関数、マテリアライズドビュー、インデックスまたはトリガーです。
構文はALTER .. NO DEPENDS ON
です。
単純なPL/pgSQL式の性能を改善しました。 (Tom Lane, Amit Langote)
不変式を使うPL/pgSQL関数の性能を改善しました。 (Konstantin Knizhnik)
libpqクライアントが暗号化接続でチャンネルバインディングを要求できるようにしました。 (Jeff Davis)
libpq接続パラメータchannel_binding
を使用して、TLS接続の相手先にユーザのパスワードを知っていることを証明させます。
これは中間者攻撃を防止します。
暗号化接続で許容されるTLSの最小および最大バージョンを制御するlibpqの接続パラメータを追加しました。 (Daniel Gustafsson)
この設定項目はssl_min_protocol_versionとssl_max_protocol_versionです。 デフォルトでは最小TLSバージョンは1.2です(これは以前のリリースからの振る舞いの変更になります)。
クライアント証明書のロック解除にパスワードを使用できるようにしました。 (Craig Ringer, Andrew Dunstan)
libpqのsslpassword接続パラメータで有効になります。
libpqでDERでエンコードされたクライアント証明書を使用できるようにしました。 (Craig Ringer, Andrew Dunstan)
ecpgのEXEC SQL elif
指示子が正しく動作するように修正しました。
(Tom Lane)
これまでこれはifdef
に続くendif
と同じように動作していたため、同じif
構造内の手前の分岐で成功しても、elif
分岐や続く分岐の展開を止めませんでした。
トランザクション状態(%x
)がpsqlのデフォルトプロンプトに加わりました。
(Vik Fearing)
psqlの第二プロンプトを第一プロンプトと同じ幅だけの空白にできるようにしました。 (Thomas Munro)
これはPROMPT2
を%w
に設定することで実現できます。
psqlの\g
と\gx
コマンドで単一コマンドの間について\pset出力オプションを変更できるようにしました。
(Tom Lane)
この機能は\g (expand=on)
といった構文を可能にします。\gx
も同様です。
演算子クラスと演算子族を表示するpsqlコマンドを追加しました。 (Sergey Cherkashin, Nikita Glukhov, Alexander Korotkov)
新たなコマンドは\dAc
、\dAf
、\dAo
、および、\dAp
です。
psqlの\dt+
と関連のコマンドでテーブルの永続性を表示するようにしました。
(David Fetter)
冗長モードでテーブル/インデックス/ビューはオブジェクトがpermanentか、temporaryか、あるいは、unloggedかを表示します。
psqlでTOASTテーブルに対する\d
の出力を改善しました。
(Justin Pryzby)
psqlの\e
コマンド後の再表示を修正しました。
(Tom Lane)
エディタを終了時に問い合わせがセミコロンや\g
で終了していない場合、これからは問い合わせのバッファ内容が表示されなくなります。
psqlに\warn
コマンドを追加しました。
(David Fetter)
これは\echo
と似ていますが、文字列が標準出力ではなく標準エラーに送られます。
PostgreSQLホームページをコマンドライン--help
の出力に加えました。
(Peter Eisentraut)
pgbenchが「accounts」テーブルをパーティション分割できるようにしました。 (Fabien Coelho)
これはパーティショニングのパフォーマンステストを可能します。
pgbenchコマンド\aset
を追加しました。\gset
のように動作しますが、複数の問い合わせに対応します。
(Fabien Coelho)
pgbenchが初期データをクライアント側ではなくサーバ側で生成できるようにしました。 (Fabien Coelho)
pgbenchがオプション--show-script
でスクリプト内容を表示できるようにしました。
(Fabien Coelho)
ベースバックアップに対してバックアップマニフェストを生成して、検証するようにしました。 (Robert Haas)
新たなツールpg_verifybackupは、バックアップを検証できます。
pg_basebackupがデフォルトで合計バックアップサイズを見積りするようにしました。 (Fujii Masao)
この計算によりpg_stat_progress_basebackup
で進捗を表示できるようになります。
必要でなければ、--no-estimate-size
オプションを使って無効化できます。
これまでは--progress
オプションが使われていた場合だけ、この計算が行われました。
pg_rewindにスタンバイを設定するオプションを追加しました。 (Paul Guo, Jimmy Yih, Ashwin Agrawal)
これはpg_basebackupの--write-recovery-conf
に相当します。
pg_rewindが必要なWALを取得するために対象クラスタのrestore_commandを使えるようにしました。 (Alexey Kondratov)
これは-c
/--restore-target-wal
オプションを使って有効になります。
pg_rewindが巻き戻しをする前にクラッシュリカバリを自動的に実行するようにしました。 (Paul Guo, Jimmy Yih, Ashwin Agrawal)
これは--no-ensure-shutdown
を使って無効にできます。
pg_waldumpで報告されるPREPARE TRANSACTION
関連の情報を増やしました。
(Fujii Masao)
pg_waldumpにエラー以外の出力を抑制するオプション--quiet
を追加しました。
(Andres Freund, Robert Haas)
pg_dumpに外部サーバからデータをダンプするオプション--include-foreign-data
を追加しました。
(Luis Carril)
vacuumdbから実行されるバキュームコマンドをパラレルモードで実行できるようにしました。 (Masahiko Sawada)
これは新たな--parallel
オプションで有効になります。
reindexdbがパラレルで動作できるようにしました。 (Julien Rouhaud)
新たな--jobs
オプションでパラレルモードが有効になります。
dropdbが対象データベースを使用しているセッションを切断して、削除に成功できるようにしました。 (Pavel Stehule)
これは-f
オプションで有効になります。
createuserから--adduser
と--no-adduser
を除きました。
(Alexander Lakhin)
これらに対応するより望ましい以前からあるオプションは--superuser
と--no-superuser
です。
pg_upgradeの実行時に、デフォルトの--new-bindir
設定としてpg_upgradeプログラムのディレクトリを使うようにしました。
(Daniel Gustafsson)
文書に用語集を追加しました。 (Corey Huinker, Jürgen Purtz, Roger Harkavy, Álvaro Herrera)
関数と演算子の情報を含む表をよりわかりやすい書式に変更しました。 (Tom Lane)
DocBook 4.5を使うようにアップグレードしました。 (Peter Eisentraut)
Visual Studio 2019でのビルドに対応しました。 (Haribabu Kommi)
MSYS2でのビルドに対応しました。 (Peter Eisentraut)
Power PCコンパイラむけにcompare_exchangeとfetch_addのアセンブラ言語コードを追加しました。 (Noah Misch)
全文検索で使われるSnowball stemmer辞書を更新しました。 (Panagiotis Mavrogiorgos)
これはギリシャ語の語幹処理を追加し、デンマーク語とフランス語の語幹処理を改善します。
Windows 2000のサポートを廃止しました。 (Michael Paquier)
非ELFのBSDシステムのサポートを廃止しました。 (Peter Eisentraut)
Pythonバージョン2.5.X以前のサポートを廃止しました。 (Peter Eisentraut)
OpenSSL 0.9.8と1.0.0のサポートを廃止しました。 (Michael Paquier)
configureのオプション--disable-float8-byval
および--disable-float4-byval
を廃止しました。
(Peter Eisentraut)
これらは一部のバージョン0のC関数との互換性のために必要とされていましたが、それらももはやサポートされません。
問い合わせ文字列をプランナフック関数に渡すようにしました。 (Pascal Legrand, Julien Rouhaud)
TRUNCATE
コマンドのフックを追加しました。
(Yuli Khodorkovskiy)
TLS初期化のフックを追加しました。 (Andrew Dunstan)
事前定義されたUnixドメインソケットのディレクトリ無しにビルドできるようにしました。 (Peter Eisentraut)
UnixプラットフォームでSysVリソースキーが衝突する可能性を減らしました。 (Tom Lane)
機微な情報を含んだメモリを確実に削除するため、OSの関数を使うようにしました。 (Peter Eisentraut)
これは例えばメモリ内に格納されたパスワードの消去に使用されます。
Cヘッダファイルの互換性をテストするheaderscheck
スクリプトを追加しました。
(Tom Lane)
内部リストをセルの連鎖ではなく配列で実装しました。 (Tom Lane)
これは多数のオブジェクトにアクセスする問い合わせの性能を改善します。
TS_execute()
に対するAPIを変更しました。
(Tom Lane, Pavel Borisov)
これからはTS_execute
コールバックは3値(yes/no/maybe)のロジックを提供しなければなりません。
NOT問い合わせを正確に計算することは、これからはデフォルトになります。
拡張にtrustedと指定できるようにしました。 (Tom Lane)
このような拡張は、スーパーユーザでなくとも、データベースレベルのCREATE
権限を持つユーザであればデータベースにインストールできます。
また、この変更でpg_pltemplate
システムカタログが削除されました。
非スーパーユーザがpostgres_fdwの外部サーバにパスワード無しで接続できるようにしました。 (Craig Ringer)
具体的には、スーパーユーザがユーザマッピングに対してpassword_required
をfalseに設定できるようにしました。
それでも、非スーパーユーザがスーパーユーザの権限を使って外部サーバに接続するのを防止するように注意しなければなりません。
postgres_fdwが証明書認証を使用できるようにしました。 (Craig Ringer)
異なるユーザが異なる証明書を使えます。
sepgsqlがTRUNCATE
コマンドの使用を制御できるようにしました。
(Yuli Khodorkovskiy)
SQLのbooleanとPL/Perlのbooleanを相互に変換する、拡張bool_plperlを追加しました。 (Ivan Panchenko)
pg_stat_statementsがSELECT ... FOR UPDATE
コマンドをFOR UPDATE
の無いものと区別して扱うようにしました。
(Andrew Gierth, Vik Fearing)
pg_stat_statementsがオプションでSQL文のプラン作成時間を追跡できるようにしました。 (Julien Rouhaud, Pascal Legrand, Thomas Munro, Fujii Masao)
これまでは実行時間のみが追跡されました。
ltreeのlquery構文がNOT
(!)をより論理的に処理するように作り直しました。
(Filip Rembialkowski, Tom Lane, Nikita Glukhov)
「*」の無い問い合わせで一致回数の範囲({})を使えるようにしました。
ltree、lquery、および、ltxtquery型のバイナリI/Oのサポートを追加しました。 (Nino Floris)
dict_intに整数の符号を無視するオプションを追加しました。 (Jeff Janes)
adminpackにファイルにfsyncを行うことができる関数pg_file_sync()
を追加しました。
(Fujii Masao)
pageinspectにt_infomask
/t_infomask2
値を人間に読みやすい書式で出力する関数を追加しました。
(Craig Ringer, Sawada Masahiko, Michael Paquier)
Bツリーインデックスの重複除去処理の列をpageinspectの出力に追加しました。 (Peter Geoghegan)
以下の人々(アルファベット順)はパッチ作者、コミッター、レビューア、テスターあるいは問題の報告者として本リリースに貢献しました。
Abhijit Menon-Sen |
Adam Lee |
Adam Scott |
Adé Heyward |
Adrien Nayrat |
Ahsan Hadi |
Alastair McKinley |
Aleksandr Parfenov |
Alex Aktsipetrov |
Alex Macy |
Alex Shulgin |
Alexander Korotkov |
Alexander Kukushkin |
Alexander Kuzmenkov |
Alexander Lakhin |
Alexey Bashtanov |
Alexey Kondratov |
Álvaro Herrera |
Amit Kapila |
Amit Khandekar |
Amit Langote |
Amul Sul |
Anastasia Lubennikova |
Andreas Joseph Krogh |
Andreas Karlsson |
Andreas Kunert |
Andreas Seltenreich |
Andrei Zubkov |
Andres Freund |
Andrew Bille |
Andrew Dunstan |
Andrew Gierth |
Andrey Borodin |
Andrey Klychkov |
Andrey Lepikhov |
Anna Akenteva |
Anna Endo |
Anthony Nowocien |
Anton Vlasov |
Antonin Houska |
Ants Aasma |
Arne Roland |
Arnold Müller |
Arseny Sher |
Arthur Nascimento |
Arthur Zakirov |
Ashutosh Bapat |
Ashutosh Sharma |
Ashwin Agrawal |
Asif Rehman |
Asim Praveen |
Atsushi Torikoshi |
Augustinas Jokubauskas |
Austin Drenski |
Basil Bourque |
Beena Emerson |
Ben Cornett |
Benjie Gillam |
Benoît Lobréau |
Bernd Helmle |
Bharath Rupireddy |
Bhargav Kamineni |
Binguo Bao |
Brad DeJong |
Brandur Leach |
Brent Bates |
Brian Williams |
Bruce Momjian |
Cameron Ezell |
Cary Huang |
Chapman Flack |
Charles Offenbacher |
Chen Huajun |
Chenyang Lu |
Chris Bandy |
Chris Travers |
Christoph Berg |
Christophe Courtois |
Corey Huinker |
Craig Ringer |
Cuiping Lin |
Dagfinn Ilmari Mannsåker |
Daniel Fiori |
Daniel Gustafsson |
Daniel Vérité |
Daniel Westermann |
Darafei Praliaskouski |
Daryl Waycott |
Dave Cramer |
David Christensen |
David Fetter |
David G. Johnston |
David Gilman |
David Harper |
David Rowley |
David Steele |
David Zhang |
Davinder Singh |
Dean Rasheed |
Denis Stuchalin |
Dent John |
Didier Gautheron |
Dilip Kumar |
Dmitry Belyavsky |
Dmitry Dolgov |
Dmitry Ivanov |
Dmitry Telpt |
Dmitry Uspenskiy |
Dominik Czarnota |
Dongming Liu |
Ed Morley |
Edmund Horner |
Emre Hasegeli |
Eric Gillum |
Erik Rijkers |
Erwin Brandstetter |
Ethan Waldo |
Etsuro Fujita |
Eugen Konkov |
Euler Taveira |
Fabien Coelho |
Fabrízio de Royes Mello |
Felix Lechner |
Filip Janus |
Filip Rembialkowski |
Frank Gagnepain |
Georgios Kokolatos |
Gilles Darold |
Greg Nancarrow |
Grigory Smolkin |
Guancheng Luo |
Guillaume Lelarge |
Hadi Moshayedi |
Haiying Tang |
Hamid Akhtar |
Hans Buschmann |
Hao Wu |
Haribabu Kommi |
Haruka Takatsuka |
Heath Lord |
Heikki Linnakangas |
Himanshu Upadhyaya |
Hironobu Suzuki |
Hugh McMaster |
Hugh Ranalli |
Hugh Wang |
Ian Barwick |
Ibrar Ahmed |
Ildar Musin |
Insung Moon |
Ireneusz Pluta |
Isaac Morland |
Ivan Kartyshov |
Ivan Panchenko |
Ivan Sergio Borgonovo |
Jaime Casanova |
James Coleman |
James Gray |
James Hunter |
James Inform |
James Lucas |
Jan Mussler |
Jaroslav Sivy |
Jeevan Chalke |
Jeevan Ladhe |
Jeff Davis |
Jeff Janes |
Jehan-Guillaume de Rorthais |
Jeremy Evans |
Jeremy Schneider |
Jeremy Smith |
Jerry Sievers |
Jesper Pedersen |
Jesse Kinkead |
Jesse Zhang |
Jian Zhang |
Jie Zhang |
Jim Nasby |
Jimmy Yih |
Jobin Augustine |
Joe Conway |
John Hsu |
John Naylor |
Jon Jensen |
Jonathan Katz |
Jorge Gustavo Rocha |
Josef Šimánek |
Joseph Nahmias |
Juan José Santamaría Flecha |
Julian Backes |
Julien Rouhaud |
Jürgen Purtz |
Justin King |
Justin Pryzby |
Karl O. Pinc |
Keisuke Kuroda |
Keith Fiske |
Kelly Min |
Ken Tanzer |
Kirill Bychik |
Kirk Jamison |
Konstantin Knizhnik |
Kuntal Ghosh |
Kyle Kingsbury |
Kyotaro Horiguchi |
Lars Kanis |
Laurenz Albe |
Leif Gunnar Erlandsen |
Li Japin |
Liudmila Mantrova |
Lucas Viecelli |
Luis M. Carril |
Lukáš Sobotka |
Maciek Sakrejda |
Magnus Hagander |
Mahadevan Ramachandran |
Mahendra Singh Thalor |
Manuel Rigger |
Marc Munro |
Marcos David |
Marina Polyakova |
Mark Dilger |
Mark Wong |
Marko Tiikkaja |
Markus Winand |
Marti Raudsepp |
Martijn van Oosterhout |
Masahiko Sawada |
Masahiro Ikeda |
Masao Fujii |
Mateusz Guzik |
Matt Jibson |
Matteo Beccati |
Maxence Ahlouche |
Melanie Plageman |
Michael Banck |
Michael Luo |
Michael Meskes |
Michael Paquier |
Michail Nikolaev |
Mike Palmiotto |
Mithun Cy |
Movead Li |
Nathan Bossart |
Nazli Ugur Koyluoglu |
Neha Sharma |
Nicola Contu |
Nicolás Alvarez |
Nikhil Sontakke |
Nikita Glukhov |
Nikolay Shaplov |
Nino Floris |
Noah Misch |
Noriyoshi Shinoda |
Oleg Bartunov |
Oleg Samoilov |
Oleksii Kliukin |
Ondrej Jirman |
Panagiotis Mavrogiorgos |
Pascal Legrand |
Patrick McHardy |
Paul Guo |
Paul Jungwirth |
Paul Ramsey |
Paul Sivash |
Paul Spencer |
Pavan Deolasee |
Pavel Borisov |
Pavel Luzanov |
Pavel Stehule |
Pavel Suderevsky |
Peifeng Qiu |
Pengzhou Tang |
Peter Billen |
Peter Eisentraut |
Peter Geoghegan |
Peter Smith |
Petr Fedorov |
Petr Jelínek |
Phil Bayer |
Philip Semanchuk |
Philippe Beaudoin |
Pierre Ducroquet |
Pierre Giraud |
Piotr Gabriel Kosinski |
Piotr Wlodarczyk |
Prabhat Sahu |
Quan Zongliang |
Quentin Rameau |
Rafael Castro |
Rafia Sabih |
Raj Mohite |
Rajkumar Raghuwanshi |
Ramanarayana M |
Ranier Vilela |
Rares Salcudean |
Raúl Marín Rodríguez |
Raymond Martin |
Reijo Suhonen |
Richard Guo |
Robert Ford |
Robert Haas |
Robert Kahlert |
Robert Treat |
Robin Abbi |
Robins Tharakan |
Roger Harkavy |
Roman Peshkurov |
Rui DeSousa |
Rui Hai Jiang |
Rushabh Lathia |
Ryan Lambert |
Ryohei Takahashi |
Scott Ribe |
Sean Farrell |
Sehrope Sarkuni |
Sergei Agalakov |
Sergei Kornilov |
Sergey Cherkashin |
Shawn Debnath |
Shawn Wang |
Shay Rojansky |
Shenhao Wang |
Simon Riggs |
Slawomir Chodnicki |
Soumyadeep Chakraborty |
Stéphane Lorek |
Stephen Frost |
Steve Rogerson |
Steven Winfield |
Surafel Temesgen |
Suraj Kharage |
Takanori Asaba |
Takao Fujii |
Takayuki Tsunakawa |
Takuma Hoshiai |
Tatsuhito Kasahara |
Tatsuo Ishii |
Tatsuro Yamada |
Taylor Vesely |
Teodor Sigaev |
Tham Nguyen |
Thibaut Madelaine |
Thom Brown |
Thomas Kellerer |
Thomas Munro |
Tiago Anastacio |
Tim Clarke |
Tim Möhlmann |
Tom Ellis |
Tom Gottfried |
Tom Lane |
Tomas Vondra |
Tuomas Leikola |
Tushar Ahuja |
Victor Wagner |
Victor Yegorov |
Vignesh C |
Vik Fearing |
Vinay Banakar |
Vladimir Leskov |
Vladimir Sitnikov |
Vyacheslav Makarov |
Vyacheslav Shablistyy |
Will Leinweber |
William Crowell |
Wyatt Alt |
Yang Xiao |
Yaroslav Schekin |
Yi Huang |
Yigong Hu |
Yoann La Cancellera |
Yoshikazu Imai |
Yu Kimura |
Yugo Nagata |
Yuli Khodorkovskiy |
Yusuke Egashira |
Yuya Watari |
Yuzuko Hosoya |
ZhenHua Cai |