他のバージョンの文書 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

E.2. リリース13

リリース日: 2020-09-24

E.2.1. 概要

PostgreSQL 13には以下をはじめとする多数の新機能と拡張が含まれます。

  • Bツリーインデックス項目の重複除去による省スペース化と性能向上

  • 集約やパーティションテーブルを使う問い合わせの性能改善

  • 拡張統計情報を使ったときのより良い問い合わせの計画作成

  • 並列化されたインデックスのバキューム

  • インクリメンタルソート

PostgreSQL 13の上記の項目とその他の機能は次節でより詳しく説明されます。

E.2.2. バージョン13への移行

以前のリリースからデータを移行したい時は、どのリリースについても、 pg_dumpallを利用したダンプとリストア、あるいはpg_upgradeやロジカルレプリケーションの使用が必要です。 新たなメジャーバージョンへの移行に関する一般的な情報については18.6を参照してください。

バージョン13には、以前のバージョンとの互換性に影響するかもしれない多数の変更点が含まれています。以下の非互換性に注意してください。

  • SIMILAR TO ... ESCAPE NULLNULLを返すように変更しました。 (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_segmentswal_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 EXTENSIONFROMオプションはもはやサポートされなくなります。 未だパッケージ化されていな拡張を使っているインストレーションは、PostgreSQL 13にバージョンアップする前にそれら拡張をパッケージ化されたバージョンにアップグレードすべきです。

  • タイムゾーンデータベースでposixrulesファイルのサポートを廃止しました。 (Tom Lane)

    IANAのタイムゾーングループはこの機能を廃止していて、今後の数年間でシステムのタイムゾーンデータベースから徐々に消えていくことになります。 タイムゾーンデータの更新による予期せぬ振る舞いの変化が現れるのを避けるため、私たちはバージョン13でPostgreSQLによる本機能のサポートを廃止しました。 これは、明示的な夏時間ルールが欠けているPOSIXスタイルのタイムゾーン仕様の動作にだけ影響します。 以前は、独自のposixrulesファイルを導入することで変換規則を決定できましたが、これからは固定の動作となります。 影響をうけるインストレーションに対する推奨される修正は、地理的なタイムゾーン名を使うようにすることです。

  • ltreeで、lqueryのパターンが、例えば*{2}.*{3}という中括弧付きの隣接するアスタリスクを含む場合、それを適切に*{5}と解釈するようにしました。 (Nikita Glukhov)

  • pageinspectbt_metap()が、オーバーフローする可能性の低い、より適切なデータ型を返すように修正しました。 (Peter Geoghegan)

E.2.3. 変更点

以下にPostgreSQL 13と前メジャーリリースとの詳細な変更点を記載します。

E.2.3.1. サーバ

  • より多くの場合にパーティションの除去が行われるようにしました。 (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)

E.2.3.1.2. インデックス
  • Bツリーインデックスで重複をより効率的に格納するようにしました。 (Anastasia Lubennikova, Peter Geoghegan)

    これは重複するキーを一度だけ格納することにより、低カーディナリティ列の効率的なBツリーインデックス作成を可能にします。 pg_upgradeでアップグレードしたユーザは、既存インデックスで本機能を使うためにREINDEXを行う必要があります。

  • box列に対するGiSTおよびSP-GiSTインデックスが、ORDER BY box <-> pointの問い合わせに対応しました。 (Nikita Glukhov)

  • GINインデックスがtsquery検索での!(否定)句をより効率的に処理できるようにしました。 (Nikita Glukhov, Alexander Korotkov, Tom Lane, Julien Rouhaud)

  • インデックスの演算子クラスがパラメータを取れるようにしました。 (Nikita Glukhov)

  • CREATE INDEXでGiSTのシグネチャの長さと整数範囲の最大数を指定できるようにしました。 (Nikita Glukhov)

    4および8バイトの整数配列tsvectorpg_trgmltree、および、hstoreの列に対して作成されたインデックスは、デフォルト値を使うのではなく、GiSTインデックスパラメータを制御できるようになりました。

  • デフォルトでない照合順序を使うインデックスをテーブルのユニークまたは主キー制約として追加できないようにしました。 (Tom Lane)

    インデックスの照合順序は元になる列の照合順序と一致しなければなりませんが、これまではALTER TABLEでこの検査ができていませんでした。

E.2.3.1.3. オプティマイザ
  • 含有/一致の演算子に対して、オプティマイザの選択度の見積を改善しました。 (Tom Lane)

  • 拡張統計情報に対する統計対象を設定できるようにしました。 (Tomas Vondra)

    これは新たなコマンドオプションALTER STATISTICS ... SET STATISTICSで制御されます。 これまではより汎用的な統計対象の設定に基づいて計算されました。

  • 一つの問い合わせに複数の拡張統計情報オブジェクトを使用できるようにしました。 (Tomas Vondra)

  • OR句およびIN/ANYの定数リストに対して拡張統計情報オブジェクトを使用できるようにしました。 (Pierre Ducroquet, Tomas Vondra)

  • 定数に評価できる場合には、FROM句で関数をプルアップ(インライン化)できるようにしました。 (Alexander Kuzmenkov, Aleksandr Parfenov)

E.2.3.1.4. 性能全般
  • インクリメンタルソートを実装しました。 (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_thresholdautovacuum_vacuum_insert_scale_factor、あるいは、同等のテーブルストレージオプションで調整できます。

  • メンテナンス操作におけるI/Oの並列性を制御するmaintenance_io_concurrencyパラメータを追加しました。 (Thomas Munro)

  • wal_levelminimalの場合に、リレーションを作成または書き直しするトランザクションのときに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)

E.2.3.1.5. モニタリング
  • EXPLAINauto_explainautovacuum、および、pg_stat_statementsWAL使用の統計を追跡できるようにしました。 (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)

E.2.3.1.6. システムビュー
  • 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)

E.2.3.1.8. 認証
  • スーパーユーザのみがssl_passphrase_command設定を参照できるようにしました。 (Insung Moon)

    これはセキュリティ上の予防策として変更されました。

  • 暗号化接続でのサーバのデフォルトの最小TLSバージョンを1.0から1.2に変更しました。 (Peter Eisentraut)

    この選択はssl_min_protocol_versionで制御できます。

E.2.3.1.9. サーバ設定
  • 読み取り専用トランザクションモードで許可されるユーティリティコマンドについての規定を厳格化しました。 (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)

E.2.3.2. ストリーミングレプリケーションとリカバリ

  • ストリーミングレプリケーション設定をリロードで変更できるようにしました。 (Sergei Kornilov)

    これまではprimary_conninfoprimary_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を使って有効にできます。

E.2.3.3. ユーティリティコマンド

  • VACUUMがテーブルのインデックスをパラレルに処理できるようにしました。 (Masahiko Sawada, Amit Kapila)

    新たなPARALLELオプションでこれを制御します。

  • FETCH FIRSTで最後の結果行と一致する行を追加的に返すWITH TIESを使えるようにしました。 (Surafel Temesgen)

  • EXPLAINBUFFER出力でプラン作成時のバッファ使用を報告するようにしました。 (Julien Rouhaud)

  • CREATE TABLE LIKECHECK制約の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 DATABASELOCALEオプションを追加しました。 (Peter Eisentraut)

    これは既存オプションのLC_COLLATELC_CTYPEを一つのオプションにまとめたものです。

  • DROP DATABASEが対象データベースを使用しているセッションを切断して、データベース削除に成功できるようにしました。 (Pavel Stehule, Amit Kapila)

    これはFORCEオプションで可能になります。

  • C言語の更新トリガがどの列が更新されたかを知ることができる構造体メンバtg_updatedcolsを追加しました。 (Peter Eisentraut)

E.2.3.4. 日付型

  • 互換性のある引数を必要とする関数での使用のため、いくつか多様データ型を追加しました。 (Pavel Stehule)

    新たなデータ型はanycompatibleanycompatiblearrayanycompatiblenonarray、および、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を返すようになります。

E.2.3.5. 関数

  • 改良された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'\unnnn'U&'\nnnn'で、データベースエンコーディングがUTF-8でないときであってもデータベースエンコーディングで有効な任意の文字を指定できます。 (Tom Lane)

  • to_date()to_timestamp()が英語以外の月/日の名前を認識できるようにしました。 (Juan José Santamaría Flecha, Tom Lane)

    認識される名前は同じ書式パターンにおけるto_char()による出力と同じです。

  • 1から6の小数秒桁数の入力や出力を指定する日付時刻の書式パターンFF1FF6を追加しました。 (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)

    これまでUUID生成関数は拡張モジュールのuuid-ossppgcryptoでのみ利用できました。

  • 最大公約数(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です。

E.2.3.6. PL/pgSQL

  • 単純なPL/pgSQL式の性能を改善しました。 (Tom Lane, Amit Langote)

  • 不変式を使うPL/pgSQL関数の性能を改善しました。 (Konstantin Knizhnik)

E.2.3.7. クライアントインタフェース

  • libpqクライアントが暗号化接続でチャンネルバインディングを要求できるようにしました。 (Jeff Davis)

    libpq接続パラメータchannel_bindingを使用して、TLS接続の相手先にユーザのパスワードを知っていることを証明させます。 これは中間者攻撃を防止します。

  • 暗号化接続で許容されるTLSの最小および最大バージョンを制御するlibpqの接続パラメータを追加しました。 (Daniel Gustafsson)

    この設定項目はssl_min_protocol_versionssl_max_protocol_versionです。 デフォルトでは最小TLSバージョンは1.2です(これは以前のリリースからの振る舞いの変更になります)。

  • クライアント証明書のロック解除にパスワードを使用できるようにしました。 (Craig Ringer, Andrew Dunstan)

    libpqのsslpassword接続パラメータで有効になります。

  • libpqでDERでエンコードされたクライアント証明書を使用できるようにしました。 (Craig Ringer, Andrew Dunstan)

  • ecpgEXEC SQL elif指示子が正しく動作するように修正しました。 (Tom Lane)

    これまでこれはifdefに続くendifと同じように動作していたため、同じif構造内の手前の分岐で成功しても、elif分岐や続く分岐の展開を止めませんでした。

E.2.3.8. クライアントアプリケーション

E.2.3.8.1. psql
  • トランザクション状態(%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かを表示します。

  • psqlTOASTテーブルに対する\dの出力を改善しました。 (Justin Pryzby)

  • psql\eコマンド後の再表示を修正しました。 (Tom Lane)

    エディタを終了時に問い合わせがセミコロンや\gで終了していない場合、これからは問い合わせのバッファ内容が表示されなくなります。

  • psql\warnコマンドを追加しました。 (David Fetter)

    これは\echoと似ていますが、文字列が標準出力ではなく標準エラーに送られます。

  • PostgreSQLホームページをコマンドライン--helpの出力に加えました。 (Peter Eisentraut)

E.2.3.8.2. pgbench
  • pgbenchがaccountsテーブルをパーティション分割できるようにしました。 (Fabien Coelho)

    これはパーティショニングのパフォーマンステストを可能します。

  • pgbenchコマンド\asetを追加しました。\gsetのように動作しますが、複数の問い合わせに対応します。 (Fabien Coelho)

  • pgbenchが初期データをクライアント側ではなくサーバ側で生成できるようにしました。 (Fabien Coelho)

  • pgbenchがオプション--show-scriptでスクリプト内容を表示できるようにしました。 (Fabien Coelho)

E.2.3.9. サーバアプリケーション

  • ベースバックアップに対してバックアップマニフェストを生成して、検証するようにしました。 (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)

E.2.3.10. 文書

  • 文書に用語集を追加しました。 (Corey Huinker, Jürgen Purtz, Roger Harkavy, Álvaro Herrera)

  • 関数と演算子の情報を含む表をよりわかりやすい書式に変更しました。 (Tom Lane)

  • DocBook 4.5を使うようにアップグレードしました。 (Peter Eisentraut)

E.2.3.11. ソースコード

  • Visual Studio 2019でのビルドに対応しました。 (Haribabu Kommi)

  • MSYS2でのビルドに対応しました。 (Peter Eisentraut)

  • Power PCコンパイラむけにcompare_exchangeとfetch_addのアセンブラ言語コードを追加しました。 (Noah Misch)

  • 全文検索で使われるSnowball stemmer辞書を更新しました。 (Panagiotis Mavrogiorgos)

    これはギリシャ語の語幹処理を追加し、デンマーク語とフランス語の語幹処理を改善します。

  • Windows 2000のサポートを廃止しました。 (Michael Paquier)

  • ELFBSDシステムのサポートを廃止しました。 (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問い合わせを正確に計算することは、これからはデフォルトになります。

E.2.3.12. 追加モジュール

  • 拡張にtrustedと指定できるようにしました。 (Tom Lane)

    このような拡張は、スーパーユーザでなくとも、データベースレベルのCREATE権限を持つユーザであればデータベースにインストールできます。 また、この変更でpg_pltemplateシステムカタログが削除されました。

  • 非スーパーユーザがpostgres_fdwの外部サーバにパスワード無しで接続できるようにしました。 (Craig Ringer)

    具体的には、スーパーユーザがユーザマッピングに対してpassword_requiredをfalseに設定できるようにしました。 それでも、非スーパーユーザがスーパーユーザの権限を使って外部サーバに接続するのを防止するように注意しなければなりません。

  • postgres_fdwが証明書認証を使用できるようにしました。 (Craig Ringer)

    異なるユーザが異なる証明書を使えます。

  • sepgsqlTRUNCATEコマンドの使用を制御できるようにしました。 (Yuli Khodorkovskiy)

  • SQLのbooleanとPL/Perlのbooleanを相互に変換する、拡張bool_plperlを追加しました。 (Ivan Panchenko)

  • pg_stat_statementsSELECT ... 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)

  • pageinspectt_infomask/t_infomask2値を人間に読みやすい書式で出力する関数を追加しました。 (Craig Ringer, Sawada Masahiko, Michael Paquier)

  • Bツリーインデックスの重複除去処理の列をpageinspectの出力に追加しました。 (Peter Geoghegan)

E.2.4. 謝辞

以下の人々(アルファベット順)はパッチ作者、コミッター、レビューア、テスターあるいは問題の報告者として本リリースに貢献しました。

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