他のバージョンの文書 17 | 16 | 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.1. リリース17 #

リリース日: 2024-09-26

E.1.1. 概要 #

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

  • VACUUMの新しいメモリ管理システムにより、メモリ消費量が削減され、バキューム処理全体のパフォーマンスが向上しました。

  • コンストラクタ、ID関数、JSONデータをテーブル表現に変換するJSON_TABLE()関数を含む新しいSQL/JSON機能。

  • ストリーミングI/Oを使用したシーケンシャルリード、高い同時実行時の書き込みスループット、btreeインデックス内の複数の値の検索など、さまざまなクエリ性能が向上しました。

  • 下記の論理レプリケーションの強化

    • フェイルオーバー制御

    • 物理スタンバイから論理レプリカを作成するpg_createsubscriberユーティリティ

    • パブリッシャーとサブスクライバーの両方でレプリケーションスロットを保持するようになったpg_upgrade

  • 新しいクライアント側コネクションオプションsslnegotiation=directは、ラウンドトリップネゴシエーションを回避するために直接TLSハンドシェイクを実行します。

  • pg_basebackupが増分バックアップをサポートするようになりました。

  • COPYに、エラーが発生した場合でもコピー操作を継続できるようになる新しいオプションON_ERROR ignoreが追加されました。

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

E.1.2. バージョン17への移行 #

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

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

  • メンテナンス操作中、関数は安全なsearch_pathを使用するよう変更されました。 (Jeff Davis) §

    これにより、メンテナンス操作(ANALYZECLUSTERREFRESH MATERIALIZED VIEWREINDEXVACUUM)が安全でないアクセスを実行するのを防ぎます。 デフォルト以外のスキーマを参照する必要がある式インデックスおよびマテリアライズドビューで使用される関数は、関数の作成時に検索パスを指定する必要があります。

  • agointerval型の値の最後にのみ表示されるよう制限されました。 (Joseph Koshakow) § §

    また、空のinterval型ユニットが複数回表示されないようにしました。

  • サーバパラメータold_snapshot_thresholdが廃止されました。 (Thomas Munro) §

    この変数により、実行中のトランザクションからまだ見えている可能性のある行をバキュームで削除することができ、後でアクセスすると「snapshot too old」というエラーが発生しました。 この機能は、改善された実装が見つかった場合、後でPostgreSQLに再度追加される可能性があります。

  • 初期セッションユーザのスーパーユーザ状態に関するSET SESSION AUTHORIZATION処理が変更されました。 (Joseph Koshakow) §

    新しい動作は、接続時のスーパーユーザ状態ではなく、SET SESSION AUTHORIZATIONコマンドが発行された時点のセッションユーザのスーパーユーザ状態に基づきます。

  • データベースごとのユーザをシミュレートする機能が削除されました。 (Nathan Bossart) §

    db_user_namespace機能はほとんど使用されませんでした。

  • Windowswal_sync_methodの値fsync_writethroughが削除されました。 (Thomas Munro) §

    この値は、Windowsfsyncと同じでした。

  • 2つのWALファイル名関数のファイル境界処理が変更されました。 (Kyotaro Horiguchi, Andres Freund, Bruce Momjian) §

    pg_walfile_name()関数とpg_walfile_name_offset()関数は、LSNがファイルセグメント境界上にある場合、以前のLSNセグメント番号を報告していましたが、今は現在のLSNセグメントを返すようになりました。

  • サーバパラメータtrace_recovery_messagesは不要になったので廃止されました。 (Bharath Rupireddy) §

  • 情報スキーマ列のelement_types.domain_defaultが削除されました。 (Peter Eisentraut) §

  • pgrowlocksのロックモードの出力ラベルが変更されました。 (Bruce Momjian) §

  • pg_stat_bgwriterビューからbuffers_backend列とbuffers_backend_fsync列が削除されました。 (Bharath Rupireddy) §

    これらのフィールドは、pg_stat_ioビューの同様の列と重複していると見なされました。

  • pg_stat_statementsのI/Oブロック読み取り/書き込みタイミング統計列の名前が変更されました。 (Nazir Bilal Yavuz) §

    これにより、blk_read_timeshared_blk_read_timeに、blk_write_timeshared_blk_write_timeに名前が変更されました。

  • pg_attribute.attstattargetpg_statistic_ext.stxstattargetが変更され、デフォルトの統計ターゲットをNULLとして表すようになりました。 (Peter Eisentraut) § §

  • pg_collation.colliculocale列の名前がcolllocaleに、pg_database.daticulocale列の名前がdatlocaleに変更されました。 (Jeff Davis) §

  • pg_stat_progress_vacuumビューのmax_dead_tuples列の名前をmax_dead_tuple_bytesに変更し、num_dead_tuples列の名前をnum_dead_item_idsに変更し、dead_tuple_bytes列が追加されました。 (Masahiko Sawada) § §

  • システムビューpg_stat_slruSLRU列の名前が変更されました。 (Alvaro Herrera) §

    pg_stat_reset_slru()関数で受け付ける列名も変更されました。

E.1.3. 変更点 #

PostgreSQL 17と前メジャーリリースとの詳細な変更点を記載しました。

E.1.3.1. サーバ #

E.1.3.1.1. オプティマイザ #
  • オプティマイザが以前の行出力句で参照され列の統計情報とソート順序を考慮することで、CTE実行計画を改善できるようになりました。 (Jian Guo, Richard Guo, Tom Lane) § §

  • 問い合わせのIS NOT NULLおよびIS NULL制限による最適化が改善されました。 (David Rowley, Richard Guo, Andy Fan) § §

    NOT NULL列の問い合わせからIS NOT NULL制限を削除し、IS NULLが指定されている場合、NOT NULL列のスキャンを削除します。

  • IS [NOT] UNKNOWN条件のboolean列でパーティション除去が可能になりました。 (David Rowley) §

  • 包含演算子<@および@>を使用する場合の範囲値の最適化が改善されました。 (Kim Johan Andersson, Jian He) §

  • 相関のあるIN副問い合わせを結合に変換できるようになりました。 (Andy Fan, Tom Lane) §

  • パーティションテーブル、継承の親テーブル、およびUNION ALL問い合わせのLIMIT句の最適化が改善されました。 (Andy Fan, David Rowley) §

  • より多くの場合に問い合わせノードを並列で実行できるようになりました。 (Tom Lane) §

  • GROUP BY列を内部的にORDER BYと一致するように並べ替えできるようになりました。 (Andrei Lepikhov, Teodor Sigaev) §

    これは、サーバパラメータenable_group_by_reorderingを使用して無効にできます。

  • ALLを使用しないUNIONでMergeAppendが使用できるようになりました。 (David Rowley) §

  • ソートする必要がある行数をより正確に計算するようにMergeAppendプランが修正されました。 (Alexander Kuzmenkov) §

  • GiSTおよびSP-GiSTインデックスがインクリメンタルソートの一部にすることができるようになりました。 (Miroslav Bendik) §

    これは、最初の列にGiSTおよびSP-GiSTインデックスがあり、他の列にはない場合のORDER BY句に特に有用です。

  • 範囲型のヒストグラム情報を報告するためにpg_statsビューに列が追加されました。 (Egor Rogov, Soumyadeep Chakraborty) §

E.1.3.1.2. インデックス #
  • btreeインデックスが、定数を使用してIN句で提供される値の集合をより効率的に見つけられるようになりました。 (Peter Geoghegan, Matthias van de Meent) §

  • 並列ワーカーを使用してBRINインデックスを作成できるようになりました。 (Tomas Vondra, Matthias van de Meent) §

E.1.3.1.3. 性能一般 #
  • バキュームがより効率的にタプルを削除しフリーズできるようになりました。 (Melanie Plageman, Heikki Linnakangas) §

    バキュームによって発生するWALトラフィックもよりコンパクトになりました。

  • バキュームがタプル参照をより効率的に格納できるようになりました。 (Masahiko Sawada, John Naylor) § § § §

    さらに、maintenance_work_memautovacuum_work_memがより大きくても、バキュームが暗黙的に1ギガバイトのメモリに制限しなくなりました。

  • インデックスを持たないリレーションのバキューム処理が最適化されました。 (Melanie Plageman) §

  • vacuum_buffer_usage_limitのデフォルトが2メガバイトに増やされました。 (Thomas Munro) §

  • 多数のメンバシップを持つロールをチェックするパフォーマンスが改善されました。 (Nathan Bossart) §

  • 競合の激しいWAL書き込みのパフォーマンスが改善されました。 (Bharath Rupireddy) §

  • 大きなデータブロックをクライアントに転送する際のパフォーマンスが改善されました。 (Melih Mutlu) §

  • 新しいシステムパラメータio_combine_limitを使用して、ファイルシステムの読み取りグループ化ができるようになりました。 (Thomas Munro, Andres Freund, Melanie Plageman, Nazir Bilal Yavuz) § § §

E.1.3.1.4. 監視 #
  • システムビューpg_stat_checkpointerが追加されました。 (Bharath Rupireddy, Anton A. Melnikov, Alexander Korotkov) § § §

    pg_stat_bgwriterから関連する列が削除され、この新しいシステムビューに追加されました。

  • 統計情報をリセットする制御が改善されました。 (Atsushi Torikoshi, Bharath Rupireddy) § § §

    pg_stat_reset_shared()(引数なし)とpg_stat_reset_shared(NULL)を使用して、すべての共有統計情報がリセットできるようになりました。 pg_stat_reset_shared('slru')とpg_stat_reset_slru()(引数なし)を使用して、SLRU統計情報がリセットできるようになりました。これは、以前からpg_stat_reset_slru(NULL)で可能でした。

  • バックアップからのWALリカバリに関するログメッセージが追加されました。 (Andres Freund) §

  • trust接続でlog_connectionsログ行が出力されるようになりました。 (Jacob Champion) §

  • walsenderによるレプリケーションスロットの取得と解放を報告するログメッセージが追加されました。 (Bharath Rupireddy) §

    これは、サーバパラメータlog_replication_commandsによって可能になります。

  • 待機イベントの種類を報告するシステムビューpg_wait_eventsが追加されました。 (Bertrand Drouvot) §

    これは、pg_stat_activityで報告される待機イベントに説明を追加するのに便利です。

  • チェックポイント遅延を示す待機イベントが追加されました。 (Thomas Munro) §

  • バキュームがインデックス処理の進行状況を報告するようになりました。 (Sami Imseih) §

    これはシステムビューpg_stat_progress_vacuumindexes_total列とindexes_processed列に表示されます。

E.1.3.1.5. 権限 #
  • メンテナンス操作を実行する権限の付与ができるようになりました。 (Nathan Bossart) §

    この権限は、MAINTAIN権限を使用してテーブルごとに付与することも、pg_maintain定義済みロールを使用してロールごとに付与することもできます。 許可される操作は、VACUUMANALYZEREINDEXREFRESH MATERIALIZED VIEWCLUSTER、およびLOCK TABLEです。

  • pg_monitorメンバシップを持つロールがpg_current_logfile()を実行できるようになりました。 (Pavlo Golub, Nathan Bossart) §

E.1.3.1.6. サーバ設定 #
E.1.3.1.7. ストリーミングレプリケーションとリカバリ #
  • ファイルシステムの増分バックアップがサポートされました。 (Robert Haas, Jakub Wartak, Tomas Vondra) § §

    増分バックアップは、pg_basebackupの新しい--incrementalオプションを使用して作成することができます。 新しいpg_combinebackupアプリケーションでは、基本および増分のファイルシステムバックアップの操作が可能です。

  • WAL要約ファイルの作成ができるようになりました。 (Robert Haas, Nathan Bossart, Hubert Depesz Lubaczewski) § § § §

    これらのファイルは、LSN範囲内で変更されたブロック番号を記録し、ファイルシステムの増分バックアップに役立ちます。 これは、サーバパラメータのsummarize_walwal_summary_keep_timeによって制御され、pg_available_wal_summaries()pg_wal_summary_contents()、およびpg_get_wal_summarizer_state()によって状態を観測できます。

  • ファイルシステムのバックアップマニフェストファイルにシステム識別子が追加されました。 (Amul Sul) §

    これは、無効なWALの使用を検出するのに役立ちます。

  • pg_basebackuppostgresql.auto.confに接続情報を書き込む時に、接続文字列値dbnameが書き込まれるようになりました。 (Vignesh C, Hayato Kuroda) §

  • 無効なスロットの理由を報告するために、pg_replication_slots.invalidation_reason列が追加されました。 (Shveta Malik, Bharath Rupireddy) § §

  • スロットの非アクティブ期間を報告するpg_replication_slots.inactive_since列が追加されました。 (Bharath Rupireddy) § § §

  • 論理レプリケーションスロットを同期させるためのpg_sync_replication_slots()関数が追加されました。 (Hou Zhijie, Shveta Malik, Ajin Cherian, Peter Eisentraut) § §

  • レプリケーションプロトコルfailoverプロパティが追加されました。 (Hou Zhijie, Shveta Malik) §

  • 物理的スタンバイサーバからロジカルレプリカを作成するために、pg_createsubscriberアプリケーションが追加されました。 (Euler Taveira) §

  • pg_upgradeに有効なロジカルスロットとサブスクリプションを移行させます。 (Hayato Kuroda, Hou Zhijie, Vignesh C, Julien Rouhaud, Shlok Kyal) § §

    これにより、アップグレードの後に論理レプリケーションをすぐに続行できます。 これは、バージョン17以降の古いクラスタにのみ機能します。 PostgreSQL

  • ロジカルスロットのフェイルオーバーが有効になりました。 (Hou Zhijie, Shveta Malik, Ajin Cherian) §

    これは、pg_create_logical_replication_slot()の5番目のオプション引数で制御されます。

  • フェイルオーバーロジカルスロットの同期を有効にするサーバパラメータsync_replication_slotsが追加されました。 (Shveta Malik, Hou Zhijie, Peter Smith) § §

  • CREATE/ALTER SUBSCRIPTIONに論理レプリケーションフェイルオーバー制御が追加されました。 (Shveta Malik, Hou Zhijie, Ajin Cherian) § §

  • 論理レプリケーションの変更適用において、サブスクライバーでハッシュインデックスが使用できるようになりました。 (Hayato Kuroda) §

    以前は、この目的に使用できるのはbtreeインデックスのみでした。

  • サブトランザクションが多数ある場合のロジカルデコーディングの性能が向上しました。 (Masahiko Sawada) §

  • サブスクリプション所有者のスーパーユーザ権限が取り消された場合は、適用ワーカープロセスが再起動されるようになりました。 (Vignesh C) §

    これにより、再認証が強制されます。

  • pg_logical_emit_message()関数にflushオプションが追加されました。 (Michael Paquier) §

    これによりメッセージが永続化されます。

  • サブスクライバーに表示される前に同期する必要がある物理的スタンバイが指定できるようになりました。 (Hou Zhijie, Shveta Malik) § §

    新しいサーバパラメータはsynchronized_standby_slotsです。

  • pg_stat_subscriptionにworker_type列が追加されました。 (Peter Smith) §

E.1.3.2. ユーティリティコマンド #

  • エラー行を破棄するための新しいCOPYオプションON_ERROR ignoreが追加されました。 (Damir Belyalov, Atsushi Torikoshi, Alex Shulgin, Jian He, Yugo Nagata) § § § §

    デフォルトの動作はON_ERROR stopです。

  • COPY FROMが無視したエラー行を報告する新しいCOPYオプションLOG_VERBOSITYが追加されました。 (Bharath Rupireddy) §

  • COPY FROMが処理中にスキップした行数を報告できるようになりました。 (Atsushi Torikoshi) §

    これは、システムビューの列pg_stat_progress_copy.tuples_skippedに表示されます。

  • COPY FROMで、すべての列を強制的にNULLにするか、NULLにしないかを簡単に指定できるようになりました。 (Zhang Mingli) §

  • パーティションテーブルでID列を持つことができるようになりました。 (Ashutosh Bapat) §

  • テーブルパーティションで排他制約が使用可能になりました。 (Paul A. Jungwirth) §

    排他制約がパーティションキー列の等価性を比較する限り、他の列は排他制約固有の比較を使用できます。

  • ALTER TABLEで列統計ターゲットをデフォルトに設定するより明確な方法が追加されました。 (Peter Eisentraut) §

    新しい構文はALTER TABLE ... SET STATISTICS DEFAULTです。 旧来のSET STATISTICS -1は引き続きサポートされています。

  • ALTER TABLEで列の生成式を変更できるようになりました。 (Amul Sul) §

    構文はALTER TABLE ... ALTER COLUMN ... SET EXPRESSIONです。

  • パーティションテーブルでテーブルアクセスメソッドを指定できるようになりました。 (Justin Pryzby, Soumyadeep Chakraborty, Michael Paquier) § §

  • ALTER TABLE .. SET ACCESS METHODDEFAULT設定が追加されました。 (Michael Paquier) §

  • 接続時に起動するイベントトリガがサポートされました。 (Konstantin Knizhnik, Mikhail Gribkov) §

  • REINDEXに対するイベントトリガがサポートされました。 (Garrett Thornburg, Jian He) §

  • テーブル名が指定されていない場合でもCLUSTERのオプションで括弧付き構文が可能になりました。 (Nathan Bossart) §

E.1.3.2.1. EXPLAIN #
  • EXPLAINでオプティマイザのメモリ使用量を報告できるようになりました。 (Ashutosh Bapat) §

    このオプションはMEMORYと呼ばれます。

  • ネットワーク転送用にデータを変換するコストを報告するEXPLAINSERIALIZEオプションが追加されました。 (Stepan Rutz, Matthias van de Meent) §

  • EXPLAINBUFFERS出力にローカルI/Oブロックの読み取り/書き込みタイミング統計が追加されました。 (Nazir Bilal Yavuz) §

  • EXPLAINのSubPlanノードと出力パラメータの表示が改善されました。 (Tom Lane, Dean Rasheed) §

  • EXPLAINJITdeform_counterの詳細が追加されました。 (Dmitry Dolgov) §

E.1.3.3. データ型 #

  • intervalデータ型で+/-infinity値がサポートされました。 (Joseph Koshakow, Jian He, Ashutosh Bapat) §

  • 同じトランザクション内で作成されALTER TYPEで追加されたENUM型を使用できるようになりました。 (Tom Lane) §

    これは以前は許可されていませんでした。

E.1.3.4. MERGE #

  • MERGEが更新可能なビューを変更できるようになりました。 (Dean Rasheed) §

  • MERGEWHEN NOT MATCHED BY SOURCEが追加されました。 (Dean Rasheed) §

    ターゲット行のWHEN NOT MATCHEDはすでにサポートされていました。

  • MERGERETURNING句を使用できるようになりました。 (Dean Rasheed) §

    新しいRETURNING関数のmerge_action()は、行を生成したDMLを報告します。

E.1.3.5. 関数 #

  • JSONデータをテーブル表現に変換する関数JSON_TABLE()が追加されました。 (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Jian He) § §

    この関数は、SELECTクエリのFROM句でタプルソースとして使用できます。

  • SQL/JSONコンストラクタ関数JSON()JSON_SCALAR()JSON_SERIALIZE()が追加されました。 (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote) §

  • SQL/JSONのクエリ関数JSON_EXISTS()JSON_QUERY()JSON_VALUE()が追加されました。 (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Peter Eisentraut, Jian He) § § § § §

  • JSON値を他のJSONデータ型に変換するjsonpathメソッドが追加されました。 (Jeevan Chalke) §

    jsonpathメソッドは、.bigint().boolean().date().decimal([precision [, scale]]).integer().number().string().time().time_tz().timestamp().timestamp_tz()です。

  • to_timestamp()でタイムゾーン形式指定が追加されました。 (Tom Lane) §

    TZはタイムゾーンの略語形または数値オフセットを受け付ける一方、OFは数値オフセットのみを受け付けます。

  • セッションのタイムゾーンAS LOCALで指定できるようになりました。 (Vik Fearing) §

    これは、リテラルなセッションタイムゾーンを指定するのではなく、タイムスタンプ値からタイムゾーンを追加および削除して変換する場合に便利です。

  • UUIDの情報を返す関数uuid_extract_timestamp()およびuuid_extract_version()が追加されました。 (Andrey Borodin) §

  • 指定された範囲内で乱数を生成する関数が追加されました。 (Dean Rasheed) §

    関数はrandom(min, max)で、integerbigintnumeric型の値を取ります。

  • 整数を2進数の文字列と8進数の文字列に変換する関数が追加されました。 (Eric Radman, Nathan Bossart) §

    関数はto_bin()to_oct()です。

  • ユニコード情報の関数が追加されました。 (Jeff Davis) §

    関数unicode_version()はユニコードバージョンを返し、icu_unicode_version()ICUバージョンを返し、unicode_assigned()は文字にユニコードのコードポイントが割り当てられているかどうかを返します。

  • テキストを単一のXMLテキストノードに変換する関数xmltext()が追加されました。 (Jim Jones) §

  • 型指定の型修飾子を返す関数to_regtypemod()が追加されました。 (David Wheeler, Erik Wienhold) §

  • ドメインの基本型を返すpg_basetype()関数が追加されました。 (Steve Chavez) §

  • 値のTOAST識別子を返す関数pg_column_toast_chunk_id()が追加されました。 (Yugo Nagata) §

    値がTOASTに格納されていない場合は、NULLを返します。

E.1.3.6. PL/pgSQL #

  • PL/pgSQLの%TYPEおよび%ROWTYPEの指定で、非配列型の配列を表現できるようになりました。 (Quan Zongliang, Pavel Stehule) §

  • PL/pgSQLの%TYPE指定で複合型を参照できるようになりました。 (Tom Lane) §

E.1.3.7. libpq #

  • ロールのパスワードを変更するlibpq関数が追加されました。 (Joe Conway) §

    新しい関数PQchangePassword()は、新しいパスワードをサーバに送信する前にハッシュします。

  • ポータルとプリペアド文を閉じるためのlibpq関数が追加されました。 (Jelte Fennema-Nio) §

    関数はPQclosePrepared()PQclosePortal()PQsendClosePrepared()PQsendClosePortal()です。

  • すでに使用されている場合は暗号化された、ブロッキングと非ブロッキングのキャンセル要求を可能にするlibpqAPIが追加されました。 (Jelte Fennema-Nio) §

    以前は、暗号化されていないブロッキングのキャンセル要求だけがサポートされていました。

  • ネットワークソケットのポーリングを可能にするlibpq関数PQsocketPoll()が追加されました。 (Tristan Partin, Tom Lane) § §

  • パイプライン同期化ポイントを送信するためのlibpq関数PQsendPipelineSync()が追加されました。 (Anton Kirilov) §

    これはPQpipelineSync()と似ていますが、出力バッファのサイズがしきい値に達しない限り、サーバにフラッシュしません。

  • 結果をチャンクで取得できるようにしたlibpq関数PQsetChunkedRowsMode()が追加されました。 (Daniel Vérité) §

  • ネットワークの往復ネゴシエーションを必要としないTLS接続が利用可能になりました。 (Greg Stark, Heikki Linnakangas, Peter Eisentraut, Michael Paquier, Daniel Gustafsson) § § § § § § § §

    これは、クライアント側オプションsslnegotiation=directで有効になり、ALPNを必要とし、PostgreSQL 17以降のサーバでのみ動作します。

E.1.3.8. psql #

  • デフォルトと空の権限のpsql表示が改善されました。 (Erik Wienhold, Laurenz Albe) §

    コマンド\dpは、空の権限に対して(none)と表示されるようになりました。 デフォルトは引き続き空欄のままです。

  • バックスラッシュコマンドが\pset nullを尊重するようになりました。 (Erik Wienhold, Laurenz Albe) §

    以前は\pset nullは無視されていました。

  • psql\watchが最小限の行数が返された後に停止できるようになりました。 (Greg Sabino Mullane) §

    パラメータはmin_rowsです。

  • psqlの接続試行をCtrl-Cでキャンセルできるようになりました。 (Tristan Partin) §

  • psqlSELECT以外の問い合わせ文に対してFETCH_COUNTの設定を反映するようになりました。 (Daniel Vérité) §

  • psqlのタブ補完が改善されました。 (Dagfinn Ilmari Mannsåker, Gilles Darold, Christoph Heiss, Steve Chavez, Vignesh C, Pavel Borisov, Jian He) § § § § § § § §

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

  • WALサマリファイルをダンプするpg_walsummaryアプリケーションが追加されました。 (Robert Haas) §

  • pg_dumpのラージオブジェクトがバッチでリストア可能になりました。 (Tom Lane) §

    これにより、多数のラージオブジェクトのリストアがトランザクションの制限を回避し、パラレルでのリストアが可能になりました。

  • pg_dump--exclude-extensionオプションが追加されました。 (Ayush Vatsa) §

  • pg_dumppg_dumpallpg_restoreで、処理対象のオブジェクトを含めるか含めないかの指定を一つのファイルで指定できるようになりました。 (Pavel Stehule, Daniel Gustafsson) §

    このオプションは--filterと呼ばれます。

  • いくつかのクライアントアプリケーションに--sync-methodパラメータが追加されました。 (Justin Pryzby, Nathan Bossart) §

    対象となるアプリケーションは、initdbpg_basebackuppg_checksumspg_dumppg_rewindpg_upgradeです。

  • トランザクションバッチでのオブジェクトリストアを可能にする--transaction-sizeオプションがpg_restoreに追加されました。 (Tom Lane) §

    これにより、トランザクションブロックが大きすぎるという問題が発生することなく、トランザクションバッチの性能上の利点が得られます。

  • pgbenchのデバッグモードオプションが-dから--debugに変更されました。 (Greg Sabino Mullane) §

    -dオプションはデータベース名に使用され、新しい--dbnameオプションも使用できるようになりました。

  • クライアントのアボート後に終了するpgbenchオプション--exit-on-abortが追加されました。 (Yugo Nagata) §

  • 同期メッセージの送信を可能にする、pgbenchコマンド\syncpipelineが追加されました。 (Anthonin Bonnefoy) §

  • Allowpg_archivecleanupでのバックアップ履歴ファイルを削除できるようになりました。 (Atsushi Torikoshi) §

    オプションは--clean-backup-historyです。

  • pg_archivecleanupにいくつかの長いオプションが追加されました。 (Atsushi Torikoshi) §

    長いオプションは--debug--dry-run--strip-extensionです。

  • pg_basebackuppg_receivewalの接続指定でdbnameが利用可能になりました。 (Jelte Fennema-Nio) §

    これは、データベース名を必要とするコネクションプーラに役立ちます。

  • pg_upgrade--copy-file-rangeオプションが追加されました。 (Thomas Munro) §

    これはLinuxFreeBSDでサポートされています。

  • reindexdb--indexで、異なるテーブルのインデックスを並列に処理できるようになりました。 (Maxim Orlov, Svetlana Derevyanko, Alexander Korotkov) §

  • reindexdbvacuumdbclusterdbがパターンに一致するすべてのデータベース内のオブジェクトを処理できるようになりました。 (Nathan Bossart) § § §

    新しいオプション--allが、この動作を制御します。

E.1.3.10. ソースコード #

  • OpenSSL 1.0.1のサポートが削除されました。 (Michael Paquier) §

  • OpenSSLFIPSモードでテストに合格できるようになりました。 (Peter Eisentraut) § §

  • ビットカウントにCPU AVX-512命令を使用するようになりました。 (Paul Amonson, Nathan Bossart, Ants Aasma) § §

  • LLVMバージョン10以降が必要になりました。 (Thomas Munro) §

  • 64ビットLoongArchCPUでネイティブCRC命令を使用するようになりました。 (Xudong Yang) §

  • AIXサポートが削除されました。 (Heikki Linnakangas) §

  • Microsoft Visual Studio固有のPostgreSQLビルドオプションが削除されました。 (Michael Paquier) §

    MesonVisual Studioビルドで利用可能な唯一の方法になりました。

  • configureの--disable-thread-safetyオプションが削除されました。 (Thomas Munro, Heikki Linnakangas) § §

    現在では、サポートされているすべてのプラットフォームで十分なスレッドサポートがあることを前提としています。

  • configure--with-CCオプションが削除されました。 します。 (Heikki Linnakangas) §

    CC環境変数を設定することが、コンパイラを指定するための唯一の方法になりました。

  • ユーザ定義のデータ型受信関数は、NULLで終了するデータを受信しなくなりました。 (David Rowley) §

  • 巨大なJSONドキュメントで使用するために、インクリメントJSONパーサが追加されました。 (Andrew Dunstan) §

  • トップレベルのREADMEファイルがMarkdownに変換されました。 (Nathan Bossart) §

  • 不要になったトップレベルのINSTALLファイルが削除されました。 (Tom Lane) §

  • makedistprepオプションが削除されました。 (Peter Eisentraut) §

  • Android共有ライブラリのmakeサポートが追加されました。 (Peter Eisentraut) §

  • バックエンドにインジェクションポイントのサポートが追加されました。 (Michael Paquier) § § § §

    これはサーバのデバッグに使用され、サーバのコンパイル時に有効にする必要があります。

  • 動的共有メモリレジストリが追加されました。 (Nathan Bossart) §

    これにより、起動時に初期化されていない共有ライブラリが、動的な共有メモリアクセスを調整できるようになります。

  • 同じ問い合わせの他のログレコードと同じ時間値を使用するようにemit_log_hookが修正されました。 (Kambam Vinay, Michael Paquier) §

  • 述語チェックにjsonpathを使用するための文書が改善されました。 (David Wheeler) §

E.1.3.11. 追加モジュール #

  • 結合以外の条件を持つ結合を、外部サーバとカスタムスキャンにプッシュダウンできるようになりました。 (Richard Guo, Etsuro Fujita) §

    外部データラッパーとカスタムスキャンは、これらのケースを処理できるように修正されている必要があります。

  • postgres_fdwの外部サーバにEXISTSINの副問い合わせがプッシュダウンできるようになりました。 (Alexander Pyhalov) §

  • デフォルトの外部データラッパータプルコストが増加しました。 (David Rowley, Umair Shahid) § §

    この値はオプティマイザで使用されます。

  • dblinkのデータベース操作が中断できるようになりました。 (Noah Misch) §

  • ltree列にハッシュインデックスが作成できるようになりました。 (Tommy Pavlicek) §

    これにより、ltree列でのハッシュ結合とハッシュ集約も可能になります。

  • unaccentの文字変換ルールに空白と引用符を含めることができるようになりました。 (Michael Paquier) §

    unaccent.rulesファイルの構文が変更されました。

  • 新しいオプション--checkuniqueを使用して、amcheckが一意制約違反をチェックできるようになりました。 (Anastasia Lubennikova, Pavel Borisov, Maxim Orlov) §

  • OpenSSLFIPSモードでcitextテストに合格できるようになりました。 (Peter Eisentraut) §

  • OpenSSLFIPSモードでpgcryptoテストに合格できるようになりました。 (Peter Eisentraut) §

  • いくつかの未使用のSPIマクロが削除されました。 (Bharath Rupireddy) §

  • adminpackcontrib拡張が削除されました。 (Daniel Gustafsson) §

    これは、現在はサポートが終了したpgAdmin IIIで使用されていました。

  • ALTER OPERATORでより多くの最適化属性が設定できるようになりました。 (Tommy Pavlicek) §

    これは拡張に役立ちます。

  • 拡張でカスタム待機イベントが定義できるようになりました。 (Masahiro Ikeda) § § § §

    postgres_fdwdblinkにカスタム待機イベントが追加されました。

  • 共有バッファの削除を可能にするpg_buffercachepg_buffercache_evict()関数が追加されました。 (Palak Chaturvedi, Thomas Munro) §

    これはテストに役立ちます。

E.1.3.11.1. pg_stat_statements #
  • pg_stat_statements内のCALLパラメータがプレースホルダに置き換えられるようになりました。 (Sami Imseih) §

  • pg_stat_statementsに保存されているセーブポイント名がプレースホルダに置き換えられるようになりました。 (Greg Sabino Mullane) §

    これにより、SAVEPOINTRELEASE SAVEPOINTROLLBACK TO SAVEPOINTコマンドを記録するために必要なエントリ数が大幅に削減されます。

  • pg_stat_statementsに格納されている2相コミットのGIDがプレースホルダに置き換えられました。 (Michael Paquier) §

    これにより、PREPARE TRANSACTIONCOMMIT PREPAREDROLLBACK PREPAREDを記録するために必要なエントリ数が大幅に削減されます。

  • pg_stat_statementsDEALLOCATEを追跡するようになりました。 (Dagfinn Ilmari Mannsåker, Michael Paquier) §

    DEALLOCATE名はプレースホルダとしてpg_stat_statementsに保存されます。

  • pg_stat_statementsにローカルI/Oブロックの読み取り/書き込みタイミング統計列が追加されました。 (Nazir Bilal Yavuz) § §

    新しい列は、local_blk_read_timelocal_blk_write_timeです。

  • pg_stat_statementsJITdeform_counterの詳細が追加されました。 (Dmitry Dolgov) §

  • 最小/最大統計処理のみをリセットできるように、pg_stat_statements_reset()にオプションの4番目の引数(minmax_only)が追加されました。 (Andrei Zubkov) §

    この引数のデフォルトはfalseです。

  • エントリ作成時刻と最後の最小/最大リセット時刻を追跡するために、pg_stat_statementsstats_sinceminmax_stats_since列が追加されました。 (Andrei Zubkov) §

E.1.4. 謝辞 #

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

Abhijit Menon-Sen
Adnan Dautovic
Aidar Imamov
Ajin Cherian
Akash Shankaran
Akshat Jaimini
Alaa Attya
Aleksander Alekseev
Aleksej Orlov
Alena Rybakina
Alex Hsieh
Alex Malek
Alex Shulgin
Alex Work
Alexander Korotkov
Alexander Kozhemyakin
Alexander Kuzmenkov
Alexander Lakhin
Alexander Pyhalov
Alexey Palazhchenko
Alfons Kemper
Álvaro Herrera
Amadeo Gallardo
Amit Kapila
Amit Langote
Amul Sul
Anastasia Lubennikova
Anatoly Zaretsky
Andreas Karlsson
Andreas Ulbrich
Andrei Lepikhov
Andrei Zubkov
Andres Freund
Andrew Alsup
Andrew Atkinson
Andrew Bille
Andrew Dunstan
Andrew Kane
Andrey Borodin
Andrey Rachitskiy
Andrey Sokolov
Andy Fan
Anthonin Bonnefoy
Anthony Hsu
Anton Kirilov
Anton Melnikov
Anton Voloshin
Antonin Houska
Ants Aasma
Antti Lampinen
Aramaki Zyake
Artem Anisimov
Artur Zakirov
Ashutosh Bapat
Ashutosh Sharma
Atsushi Torikoshi
Attila Gulyás
Ayush Tiwari
Ayush Vatsa
Bartosz Chrol
Benoît Ryder
Bernd Helmle
Bertrand Drouvot
Bharath Rupireddy
Bo Andreson
Boshomi Phenix
Bowen Shi
Boyu Yang
Bruce Momjian
Cameron Vogt
Cary Huang
Cédric Villemain
Changhong Fei
Chantal Keller
Chapman Flack
Chengxi Sun
Chris Travers
Christian Maurer
Christian Stork
Christoph Berg
Christoph Heiss
Christophe Courtois
Christopher Kline
Claudio Freire
Colin Caine
Corey Huinker
Curt Kolovson
Dag Lem
Dagfinn Ilmari Mannsåker
Damir Belyalov
Daniel Fredouille
Daniel Gustafsson
Daniel Shelepanov
Daniel Vérité
Daniel Westermann
Darren Rush
Dave Cramer
Dave Page
David Christensen
David Cook
David G. Johnston
David Geier
David Hillman
David Perez
David Rowley
David Steele
David Wheeler
David Zhang
Dean Rasheed
Denis Erokhin
Denis Laxalde
Devrim Gündüz
Dilip Kumar
Dimitrios Apostolou
Dmitry Dolgov
Dmitry Koval
Dmitry Vasiliev
Dominique Devienne
Dong Wook Lee
Donghang Lin
Dongming Liu
Drew Callahan
Drew Kimball
Dzmitry Jachnik
Egor Chindyaskin
Egor Rogov
Ekaterina Kiryanova
Elena Indrupskaya
Elizabeth Christensen
Emre Hasegeli
Eric Cyr
Eric Mutta
Eric Radman
Eric Ridge
Erik Rijkers
Erik Wienhold
Erki Eessaar
Ethan Mertz
Etsuro Fujita
Eugen Konkov
Euler Taveira
Evan Macbeth
Evgeny Morozov
Fabien Coelho
Fabrízio de Royes Mello
Farias de Oliveira
Feliphe Pozzer
Fire Emerald
Flavien Guedez
Floris Van Nee
Francesco Degrassi
Frank Streitzig
Gabriele Bartolini
Garrett Thornburg
Gavin Flower
Gavin Panella
Gilles Darold
Gilles Parc
Grant Gryczan
Greg Nancarrow
Greg Sabino Mullane
Greg Stark
Gurjeet Singh
Haiying Tang
Hajime Matsunaga
Hal Takahara
Hanefi Onaldi
Hannu Krosing
Hans Buschmann
Hao Wu
Hao Zhang
Hayato Kuroda
Heikki Linnakangas
Hemanth Sandrana
Himanshu Upadhyaya
Hironobu Suzuki
Holger Reise
Hongxu Ma
Hongyu Song
Horst Reiterer
Hubert Lubaczewski
Hywel Carver
Ian Barwick
Ian Ilyasov
Ilya Nenashev
Isaac Morland
Israel Barth Rubio
Ivan Kartyshov
Ivan Kolombet
Ivan Lazarev
Ivan Panchenko
Ivan Trofimov
Jacob Champion
Jacob Speidel
Jacques Combrink
Jaime Casanova
Jakub Wartak
James Coleman
James Pang
Jani Rahkola
Japin Li
Jeevan Chalke
Jeff Davis
Jeff Janes
Jelte Fennema-Nio
Jeremy Schneider
Jian Guo
Jian He
Jim Jones
Jim Keener
Jim Nasby
Jingtang Zhang
Jingxian Li
Jingzhou Fu
Joe Conway
Joel Jacobson
John Ekins
John Hsu
John Morris
John Naylor
John Russell
Jonathan Katz
Jordi Gutiérrez
Joseph Koshakow
Josh Kupershmidt
Joshua D. Drake
Joshua Uyehara
Jubilee Young
Julien Rouhaud
Junwang Zhao
Justin Pryzby
Kaido Vaikla
Kambam Vinay
Karen Talarico
Karina Litskevich
Karl O. Pinc
Kashif Zeeshan
Kim Johan Andersson
Kirill Reshke
Kirk Parker
Kirk Wolak
Kisoon Kwon
Koen De Groote
Kohei KaiGai
Kong Man
Konstantin Knizhnik
Kouhei Sutou
Krishnakumar R
Kuntal Ghosh
Kurt Roeckx
Kyotaro Horiguchi
Lang Liu
Lars Kanis
Laurenz Albe
Lauri Laanmets
Legs Mansion
Lukas Fittl
Magnus Hagander
Mahendrakar Srinivasarao
Maiquel Grassi
Manos Emmanouilidis
Marcel Hofstetter
Marcos Pegoraro
Marian Krucina
Marina Polyakova
Mark Dilger
Mark Guertin
Mark Sloan
Markus Winand
Marlene Reiterer
Martín Marqués
Martin Nash
Martin Schlossarek
Masahiko Sawada
Masahiro Ikeda
Masaki Kuwamura
Masao Fujii
Mason Sharp
Matheus Alcantara
Mats Kindahl
Matthias Kuhn
Matthias van de Meent
Maxim Boguk
Maxim Orlov
Maxim Yablokov
Maxime Boyer
Melanie Plageman
Melih Mutlu
Merlin Moncure
Micah Gate
Michael Banck
Michael Bondarenko
Michael Paquier
Michael Wang
Michael Zhilin
Michail Nikolaev
Michal Bartak
Michal Kleczek
Mikhail Gribkov
Mingli Zhang
Miroslav Bendik
Mitsuru Hinata
Moaaz Assali
Muralikrishna Bandaru
Nathan Bossart
Nazir Bilal Yavuz
Neil Tiffin
Ngigi Waithaka
Nikhil Benesch
Nikhil Raj
Nikita Glukhov
Nikita Kalinin
Nikita Malakhov
Nikolay Samokhvalov
Nikolay Shaplov
Nisha Moond
Nishant Sharma
Nitin Jadhav
Noah Misch
Noriyoshi Shinoda
Ole Peder Brandtzæg
Oleg Bartunov
Oleg Sibiryakov
Oleg Tselebrovskiy
Olleg Samoylov
Onder Kalaci
Ondrej Navratil
Pablo Kharo
Palak Chaturvedi
Pantelis Theodosiou
Paul Amonson
Paul Jungwirth
Pavel Borisov
Pavel Kulakov
Pavel Luzanov
Pavel Stehule
Pavlo Golub
Pedro Gallegos
Pete Storer
Peter Eisentraut
Peter Geoghegan
Peter Smith
Philip Warner
Philipp Salvisberg
Pierre Ducroquet
Pierre Fortin
Przemyslaw Sztoch
Quynh Tran
Raghuveer Devulapalli
Ranier Vilela
Reid Thompson
Rian McGuire
Richard Guo
Richard Vesely
Ridvan Korkmaz
Robert Haas
Robert Scott
Robert Treat
Roberto Mello
Robins Tharakan
Roman Lozko
Ronan Dunklau
Rui Zhao
Ryo Matsumura
Ryoga Yoshida
Sameer Kumar
Sami Imseih
Samuel Dussault
Sanjay Minni
Satoru Koizumi
Sebastian Skalacki
Sergei Glukhov
Sergei Kornilov
Sergey Prokhorenko
Sergey Sargsyan
Sergey Shinderuk
Shaozhong Shi
Shaun Thomas
Shay Rojansky
Shihao Zhong
Shinya Kato
Shlok Kyal
Shruthi Gowda
Shubham Khanna
Shulin Zhou
Shveta Malik
Simon Riggs
Soumyadeep Chakraborty
Sravan Velagandula
Stan Hu
Stepan Neretin
Stepan Rutz
Stéphane Schildknecht
Stephane Tachoires
Stephen Frost
Steve Atkins
Steve Chavez
Suraj Khamkar
Suraj Kharage
Svante Richter
Svetlana Derevyanko
Sylvain Frandaz
Takayuki Tsunakawa
Tatsuo Ishii
Tatsuro Yamada
Tender Wang
Teodor Sigaev
Thom Brown
Thomas Munro
Tim Carey-Smith
Tim Needham
Tim Palmer
Tobias Bussmann
Tom Lane
Tomas Vondra
Tommy Pavlicek
Tomonari Katsumata
Tristan Partin
Tristen Raab
Tung Nguyen
Umair Shahid
Uwe Binder
Valerie Woolard
Vallimaharajan G
Vasya Boytsov
Victor Wagner
Victor Yegorov
Victoria Shepard
Vidushi Gupta
Vignesh C
Vik Fearing
Viktor Leis
Vinayak Pokale
Vitaly Burovoy
Vojtech Benes
Wei Sun
Wei Wang
Wenjiang Zhang
Will Mortensen
Willi Mann
Wolfgang Walther
Xiang Liu
Xiaoran Wang
Xing Guo
Xudong Yang
Yahor Yuzefovich
Yajun Hu
Yaroslav Saburov
Yong Li
Yongtao Huang
Yugo Nagata
Yuhang Qiu
Yuki Seino
Yura Sokolov
Yurii Rashkovskii
Yuuki Fujii
Yuya Watari
Yves Colin
Zhihong Yu
Zhijie Hou
Zongliang Quan
Zubeyr Eryilmaz
Zuming Jiang