リリース日: 2023-09-14
PostgreSQL 16には、以下をはじめとする多数の新機能と拡張が含まれます。
FULLハッシュ結合および内部右OUTERハッシュ結合で並列処理ができるようになりました。
     
スタンバイサーバからの論理レプリケーションができるようになりました。
論理レプリケーションのサブスクライバーで大規模なトランザクションを並列に適用できるようになりました。
新しいpg_stat_ioビューを使用したI/O統計情報の監視ができるようになりました。
     
SQL/JSONコンストラクタと識別関数を追加しました。
バキューム凍結の性能を改善しました。
pg_hba.confのユーザ名とデータベース名、およびpg_ident.confのユーザ名の正規表現マッチングがサポートされました。
     
PostgreSQL 16の上記の項目とその他の新機能は次節でより詳しく説明されます。
以前のリリースからデータを移行したい時は、どのリリースについても、pg_dumpallを利用したダンプとリストア、あるいはpg_upgradeや論理レプリケーションの使用が必要です。 新たなメジャーバージョンへの移行に関する一般的な情報については19.6を参照してください。
バージョン16には、以前のバージョンとの互換性に影響するかもしれない多数の変更点が含まれています。以下の非互換性に注意してください。
PL/pgSQLのバウンドカーソル変数の割り当て規則が変更されました。 (Tom Lane)
以前は、このような変数の文字列値は、カーソル割り当て時に変数名に一致するように設定されていました。
これからは、OPEN時に割り当てられ、変数名と一致しません。
以前の動作に戻すには、OPENの前にカーソル変数に目的のポータル名を割り当ててください。
     
主キーに対するNULLS NOT DISTINCTインデックスを禁止しました。
(Daniel Gustafsson)
     
REINDEX DATABASEとreindexdbがシステムカタログのインデックスを処理しないように変更しました。
(Simon Riggs)
     
このようなインデックスの処理は、REINDEX SYSTEMとreindexdb --systemを使用して引き続き可能です。
     
継承テーブルとパーティションテーブルに対するGENERATED式の制限を強化しました。
(Amit Langote, Tom Lane)
     
親テーブル(パーティションテーブル)と子テーブル(パーティション)の列はすべて同じ生成状態を持つ必要があります。しかし、実際の生成式は異なっていても構いません。
pg_walinspect関数pg_get_wal_records_info_till_end_of_wal()とpg_get_wal_stats_till_end_of_wal()を削除しました。
(Bharath Rupireddy)
     
サーバパラメータforce_parallel_modeをdebug_parallel_queryに変更しました。
(David Rowley)
     
ON SELECTルールを使用したcreate viewsを禁止しました。
(Tom Lane)
     
サーバパラメータvacuum_defer_cleanup_ageを削除しました。
(Andres Freund)
     
hot_standby_feedbackとレプリケーションスロットが追加されたことで、これは不要になりました。
     
サーバパラメータpromote_trigger_fileを削除しました。
(Simon Riggs)
     
これはスタンバイからプライマリへの昇格に使用されていましたが、現在はpg_ctl promoteまたはpg_promote()関数で容易に実行できます。
     
読み取り専用サーバパラメータlc_collateとlc_ctypeを削除しました。
(Peter Eisentraut)
     
照合順序とロケールはデータベースによって異なる可能性があるため、読み取り専用のサーバパラメータは役に立っていませんでした。
ロール継承で、GRANTの実行時に追加されたメンバロールのデフォルトの継承ステータスが制御されるようにしました。
(Robert Haas)
     
ロールのデフォルトの継承動作は、新しいGRANT ... WITH INHERIT句で上書きできます。
これにより、メンバの継承ステータスはGRANT時に設定されるため、一部のロールだけが継承され、他のロールは継承されません。
以前は、メンバの継承ステータスはロールの継承ステータスによってのみ制御され、ロールの継承ステータスに対する変更は、以前と将来のすべてのメンバロールに影響していました。
     
CREATEROLEの権限と他のロールを変更する能力を制限しました。
(Robert Haas)
     
以前は、CREATEROLE権限を持つロールは、スーパーユーザ以外のロールの多くの側面を変更することができました。
メンバの追加を含むこれらの変更には、変更を要求するロールにADMIN OPTION権限が要求されるようになりました。
たとえば、CREATEDB、REPLICATION、BYPASSRLSプロパティを変更できるのは、これらの権限を持つ場合に限られます。
     
postmasterバイナリへのシンボリックリンクを削除しました。 (Peter Eisentraut)
PostgreSQL 16と前メジャーリリースとの詳細な変更点を記載しました。
インクリメンタルソートがDISTINCTを含むより多くの場合で使用可能にしました。
(David Rowley)
       
ORDER BYまたはDISTINCTを持つ集約で、ソート済みのデータを使用できるようにしました。
(David Rowley)
       
新しいサーバパラメータenable_presorted_aggregateを使用することで、この機能を無効にできます。
       
UNION ALLの最上位ノードでMemoizeを利用可能にしました。
(Richard Guo)
       
非NULL入力を内部リレーションとするアンチ結合を実行可能にしました。 (Richard Guo)
FULLハッシュ結合と内部の右OUTERハッシュ結合で並列処理が実行できるようにしました。
(Melanie Plageman, Thomas Munro)
       
GINインデックスアクセスのオプティマイザコスト精度を改善しました。
(Ronan Dunklau)
       
ヒープページとインデックスページをより効率的に追加できるようにしました。 (Andres Freund)
非凍結処理中でも、必要に応じてページの凍結を実行するようにしました。 (Peter Geoghegan)
これにより、テーブル全体の凍結バキュームの必要性が低くなります。
RANGEモードがアクティブであるが不要な場合に、ウィンドウ関数が内部的に高速なROWSモードを使用できるようにしました。
(David Rowley)
       
常に増加するウィンドウ関数ntile()、cume_dist()、percent_rank()の最適化を可能にしました。
(David Rowley)
       
集約関数string_agg()とarray_agg()で並列処理をできるようにしました。
(David Rowley)
       
RANGEおよびLISTパーティション検索をキャッシュすることでパフォーマンスを改善しました。
(Amit Langote, Hou Zhijie, David Rowley)
       
VACUUMとANALYZEによる共有バッファ使用量の制御が可能になりました。 (Melanie Plageman)
VACUUM/ANALYZEオプションはBUFFER_USAGE_LIMITで、vacuumdbオプションは--buffer-usage-limitです。
デフォルト値はサーバパラメータvacuum_buffer_usage_limitで設定され、自動バキュームもこれで制御されます。
       
Windowsでwal_sync_method=fdatasyncがサポートされました。
(Thomas Munro)
       
BRINインデックスの列のみが更新される場合でもHOT更新できるようにしました。
(Matthias van de Meent, Josef Simanek, Tomas Vondra)
       
プロセスタイトルの更新速度を改善しました。 (David Rowley)
xid/subxid検索とASCII文字列検出でベクトル演算が使用できるようになりました。
(Nathan Bossart, John Naylor)
       
ASCII文字列検出は、COPY FROMで特に役立ちます。
ベクトル演算は、いくつかのC配列検索にも使用されます。
       
メモリ割り当てのオーバーヘッドを削減しました。 (Andres Freund, David Rowley)
I/O統計を追跡するためのpg_stat_ioシステムビューを追加しました。
(Melanie Plageman)
       
テーブルに対する最後のシーケンシャルスキャンとインデックススキャンに関する統計情報を記録するようにしました。 (Dave Page)
この情報はpg_stat_*_tablesとpg_stat_*_indexesに表示されます。
       
新しいページへの移動が発生した更新された行の統計情報を記録するようにしました。 (Corey Huinker)
pg_stat_*_tables列はn_tup_newpage_updです。
       
投機的ロックの情報をpg_locksシステムビューに追加しました。
(Masahiko Sawada, Noriyoshi Shinoda)
       
トランザクションIDはtransactionid列に、投機的挿入トークンはobjid列に表示されます。
       
pg_prepared_statementsビューにプリペアド文の結果型の表示を追加しました。
(Dagfinn Ilmari Mannsåker)
       
stats_resetが正確になるように、サブスクリプション作成時にサブスクリプション統計エントリを作成するようにしました。
(Andres Freund)
       
以前は、最初の統計が報告されたときにのみエントリが作成されていました。
pg_stat_databaseで表示される一時リレーション書き込みのI/O集計を修正しました。
(Melanie Plageman)
       
セッションのサブトランザクションキャッシュを報告するpg_stat_get_backend_subxact()関数を追加しました。
(Dilip Kumar)
       
pg_stat_get_backend_idset()、pg_stat_get_backend_activity()、および関連する関数で、変更されないバックエンドIDを使用するようにしました。
(Nathan Bossart)
       
以前は、セッションの存続期間中にインデックス値が変更される可能性がありました。
特別なバックエンドタイプを持つスタンドアローンのバックエンドが表示されるようになりました。 (Melanie Plageman)
スピンロック遅延時間を報告するための待機イベントSpinDelayを追加しました。
(Andres Freund)
       
動的共有メモリ割り当て待機を示す新しい待機イベントDSMAllocateを作成しました。
(Thomas Munro)
       
以前は、このタイプの待機はmmap()割り当てでも使用されているDSMFillZeroWriteと報告されていました。
       
論理WAL送信のプロセスタイトルにデータベース名を追加しました。 (Tatsuhiro Nakamori)
物理WAL送信ではデータベース名を表示しません。
チェックポイントとREDO LSN情報をlog_checkpointsメッセージに追加しました。
(Bharath Rupireddy, Kyotaro Horiguchi)
       
クライアント証明書のエラー時に、より詳細な情報を提供するようにしました。 (Jacob Champion)
サブスクリプション作成の権限を持つ定義済みロールpg_create_subscriptionを追加しました。
(Robert Haas)
       
パスワードを必要としないサブスクリプションが利用可能になりました。 (Robert Haas)
これは、password_required=falseオプションで実現できます。
       
LOCK TABLEの権限を単純化しました。
(Jeff Davis)
       
以前は、ユーザがさまざまなロックレベルでLOCK TABLEを実行できる機能は、テーブルに対して実行する権限を持つコマンドに必要なロックレベルに制限されていました。
たとえば、UPDATE権限を持つユーザは、たとえそれが低いロックレベルであっても、ACCESS SHAREを除くすべてのロックレベルを実行できました。
現在ではユーザは、より大きなロックレベルの権限を持っていれば、より小さなロックレベルを発行できるようになりました。
       
ADMIN OPTIONを伴ったALTER GROUP group_name ADD USER user_nameを実行できるようにしました。
(Robert Haas)
       
以前はCREATEROLE権限が必要でした。
       
GRANTでWITH ADMIN TRUE/FALSE構文を使用できるようにしました。
(Robert Haas)
       
以前は、WITH ADMIN OPTION構文のみがサポートされていました。
       
他のロールを作成するロールが、新しいロールの権限、または新しいロールにSET ROLEをする機能を自動的に継承できるようにしました。
(Robert Haas, Shi Yu)
       
これはサーバパラメータcreaterole_self_grantで制御します。
       
ユーザが継承していないロールのデフォルト権限を変更できないようにしました。 (Robert Haas)
これからは、継承されたロールに対してのみ許可されるようになりました。
ロールのメンバシップを付与するときに、付与元のロールが適切な権限を持つロールであることを要求されるようになりました。 (Robert Haas)
これは、ブートストラップ以外のスーパーユーザがロールメンバシップを付与する場合でも必要です。
スーパーユーザ以外のユーザが、現在のユーザでない付与元のユーザを使用して権限を付与できるようにしました。 (Robert Haas)
現在のユーザは、依然として指定された付与元のユーザによって与えられた権限を持っている必要があります。
GRANTにSET ROLEを使用する権限の制御を追加しました。
(Robert Haas)
       
これは新しいGRANT ... SETオプションで制御されます。
       
付与された権限を持つロールの依存関係を追跡するようになりました。 (Robert Haas)
たとえば、ADMIN OPTIONを使用している権限がある場合、そのオプションの削除は失敗します。
依存する権限を取り消すにはCASCADEを使用する必要があります。
       
GRANTレコードの権限所有者(grantor)の依存関係の追跡を追加しました。
(Robert Haas)
       
これにより、pg_auth_members.grantorの値が常に有効であることが保証されます。
       
複数のロールメンバシップを持つレコードが許可されるようになりました。 (Robert Haas)
以前は、新しいメンバシップ付与が付与の他の側面と一致していなくても、以前の一致するメンバシップ付与を削除していました。
ブートストラップユーザからのスーパーユーザ権限の削除を禁止しました。 (Robert Haas)
このようなユーザをリストアすると、エラーが発生する可能性があります。
makeaclitem()が複数の権限名を受け付けられるようにしました。
(Robins Tharakan)
       
以前はSELECTなどのように、1つの権限名しか受け付けませんでした。
       
Kerberosの認証情報の委任をサポートしました。 (Stephen Frost)
これは、サーバパラメータgss_accept_delegationとlibpq接続パラメータgssdelegationで有効にできます。
       
サーバパラメータscram_iterationsでSCRAMの繰り返し回数を設定できるようにしました。
(Daniel Gustafsson)
       
サーバパラメータ管理のパフォーマンスを改善しました。 (Tom Lane)
サーバパラメータのリセットに関する制限を強化しました。 (Masahiko Sawada)
以前は、transaction_isolationのような特定の変数はRESET ALLの影響を受けませんでしたが、不適切な状況では個別にリセットする可能性がありました。
       
さまざまなpostgresql.conf項目を新しいカテゴリに移動しました。
(Shinya Kato)
       
これはpg_settingsビューに表示されるカテゴリにも影響します。
       
設定ファイルが10レベルを超えて再帰アクセスすることを防止しました。 (Julien Rouhaud)
autovacuumが遅延設定の変更をより頻繁に確認するようにしました。 (Melanie Plageman)
各リレーションの開始時にのみ変更を確認するのではなく、各ブロックの開始時にも確認するようになりました。
アーカイブファイルの名前を永続的に変更する制限を削除しました。 (Nathan Bossart)
archive_commandコマンドは、クラッシュ後にすでにアーカイブ済みのファイルを呼び出す可能性が高くなりました。
       
archive_libraryとarchive_commandを同時に設定できないようにしました。
(Nathan Bossart)
       
以前は、archive_libraryがarchive_commandよりも優先されていました。
       
postmasterがABORTシグナルで子プロセスを終了できるようにしました。 (Tom Lane)
これにより、停止した子プロセスのコアダンプを収集できるようになりました。
これはsend_abort_for_crashとsend_abort_for_killで制御されます。
現在、postmasterの-Tスイッチはsend_abort_for_crashを設定することと同じです。
       
機能しないpostmaster-nオプションを削除しました。
(Tom Lane)
       
pg_use_reserved_connectionsメンバシップであるロールに対して、バックエンドスロットを予約できるようにサーバを設定しました。
(Nathan Bossart)
       
予約スロット数は、サーバパラメータreserved_connectionsで設定します。
       
Windows 10以降のバージョンでhuge pagesを使用できるようにしました。 (Thomas Munro)
これにより、Windows 10以降のバージョンでヒープページを有効にするために必要となる特別な処理が追加されます。
開発者用のdebug_io_direct設定を追加しました。
(Thomas Munro, Andres Freund, Bharath Rupireddy)
       
主に開発者向けですが、wal_sync_method=open_sync/open_datasyncは、wal_level=minimalでのダイレクトI/Oを使用しないように修正されました。
これは、debug_io_direct=walで有効にできます。
       
WALファイル名のセグメント値とタイムライン値を報告するpg_split_walfile_name()関数を追加しました。
(Bharath Rupireddy)
       
pg_hba.conf内のデータベースエントリとロールエントリで正規表現マッチングをサポートしました。
(Bertrand Drouvot)
       
正規表現パターンはスラッシュで始まります。
スラッシュで始まるデータベース名とロール名は、pg_hba.confで参照される場合、二重引用符で囲む必要があります。
       
pg_ident.confのユーザ列処理をpg_hba.confと一致するよう改善しました。
(Jelte Fennema)
       
具体的にはall、+でのロールメンバシップ、先頭にスラッシュを付けた正規表現のサポートを追加しました。
これらのパターンに一致するユーザ名は二重引用符で囲む必要があります。
       
pg_hba.confとpg_ident.confでファイルのインクルードができるようになりました。
(Julien Rouhaud)
       
これらはinclude、include_if_exists、include_dirで制御されます。
システムビューpg_hba_file_rulesとpg_ident_file_mappingsにファイル名が表示されるようになりました。
       
pg_hba.confでのトークンの長さ制限を無くしました。
(Tom Lane)
       
システムビューpg_hba_file_rulesにルール番号とマップ番号を追加しました。
(Julien Rouhaud)
       
ICUを使用する場合はロケールからデフォルトのエンコーディングを決定するようにしました。 (Jeff Davis)
以前のデフォルトは常にUTF-8でした。
       
CREATE DATABASEとCREATE COLLATIONのLOCALEオプション、およびinitdbとcreatedbの--localeオプションは、libc以外の照合順序プロバイダを制御するようにしました。
(Jeff Davis)
       
以前は、libcプロバイダのみを制御していました。
定義済み照合順序としてunicodeとucs_basicを追加しました。
(Peter Eisentraut)
       
これはICUサポートが有効になっている場合にのみ機能します。
カスタムICU照合ルールの作成できるようにしました。 (Peter Eisentraut)
これは、CREATE COLLATIONの新しいRULES句と、CREATE DATABASE、createdb、initdbの新しいオプションを使用して行われます。
       
Windowsでシステムロケールを自動的にインポートできるようにしました。 (Juan José Santamaría Flecha)
以前はWindows上ではICUロケールのみインポートできました。
スタンバイでのロジカルデコーディングができるようになりました。 (Bertrand Drouvot, Andres Freund, Amit Khandekar)
スナップショットWALレコードはロジカルスロットの作成に必要ですが、スタンバイでは作成できません。
遅延を回避するために、新しい関数pg_log_standby_snapshot()でこのようなレコードの作成ができるようになりました。
      
ロジカルデコーディングのパブリッシャーが変更を転送する方法と、サブスクライバーが変更を適用する方法を制御するためのサーバパラメータを追加しました。 (Shi Yu)
そのパラメータはdebug_logical_replication_streamingです。
      
論理レプリケーションの初期テーブル同期で行をバイナリ形式でコピーできるようにしました。 (Melih Mutlu)
これは、バイナリとしてマークされたサブスクリプションに対してのみ可能です。
論理レプリケーションのパラレル適用が可能になりました。 (Hou Zhijie, Wang Wei, Amit Kapila)
CREATE SUBSCRIPTIONのSTREAMINGオプションで、パラレルワーカーによる大規模なトランザクションの適用を可能にする新たなparallelをサポートするようになりました。
パラレルワーカー数は新しいサーバパラメータmax_parallel_apply_workers_per_subscriptionで制御されます。
また、待機イベントLogicalParallelApplyMain、LogicalParallelApplyStateChange、およびLogicalApplySendDataも追加されました。
パラレルアクティビティを追跡するために、システムビューpg_stat_subscriptionにleader_pid列が追加されました。
      
主キーを使用しない論理レプリケーション適用のパフォーマンスを改善しました。 (Onder Kalaci, Amit Kapila)
具体的には、REPLICA IDENTITY FULLは一致を見つけるためにテーブルをシーケンシャルスキャンするのではなく、Btreeインデックスを使用できるようになりました。
      
論理レプリケーションのサブスクライバーが、オリジンを持たない変更のみを処理できるようにしました。 (Vignesh C, Amit Kapila)
これを使用することで、レプリケーションループを回避できます。
これは、新しいCREATE SUBSCRIPTION ... ORIGINオプションで制御されます。
      
論理レプリケーションのSELECTとDMLアクションをテーブルの所有者として実行するようにしました。
(Robert Haas)
      
これによりセキュリティが向上し、サブスクリプションの所有者はスーパーユーザであるか、またはレプリケーションセット内のテーブルを所有するすべてのロールに対するSET ROLE権限を持っている必要があります。
以前の動作である、すべての操作をサブスクリプション所有者として実行するには、サブスクリプションのrun_as_ownerオプションを使用することで可能です。
      
wal_retrieve_retry_intervalがサブスクリプション単位で動作するようになりました。
(Nathan Bossart)
      
以前は、リトライ時間はグローバルに適用されていました。
これにより、待機イベントLogicalRepLauncherDSAおよびLogicalRepLauncherHashも追加されます。
      
パラメータ化された問い合わせの汎用プランを表示するEXPLAINのGENERIC_PLANを追加しました。
(Laurenz Albe)
      
COPY FROMで列のDEFAULTに値をマップできるようにしました。
(Israel Barth Rubio)
      
外部テーブルへのCOPYで行をバッチ追加できるようにしました。
(Andrey Lepikhov, Etsuro Fujita)
      
これはpostgres_fdwのbatch_sizeオプションで制御します。
      
CREATE TABLEでSTORAGEタイプを指定できるようにしました。
(Teodor Sigaev, Aleksander Alekseev)
      
以前は、ALTER TABLEのみがこれを制御できました。
      
外部テーブルでのTRUNCATEトリガができるようにしました。 (Yugo Nagata)
VACUUMとvacuumdbがTOASTテーブルのみを処理できるようにしました。
(Nathan Bossart)
      
これは、VACUUMでPROCESS_MAINをオフにするか、vacuumdbで--no-process-mainオプションを使用して実現できます。
      
VACUUMに凍結された統計情報をスキップまたはすべて更新するオプションを追加しました。
(Tom Lane, Nathan Bossart)
      
オプションはSKIP_DATABASE_STATSとONLY_DATABASE_STATSです。
      
REINDEX DATABASEとREINDEX SYSTEMで引数が不要になりました。
(Simon Riggs)
      
以前は、データベース名を指定する必要がありました。
何も指定されていない場合はCREATE STATISTICSで統計名を生成できるようにしました。
(Simon Riggs)
      
10進数以外の整数リテラルが利用可能になりました。 (Peter Eisentraut)
例えば、0x42F、0o273、0b100101などです。
      
NUMERICが任意のサイズの16進数、8進数、2進数の整数を処理できるようにしました。
(Dean Rasheed)
      
以前は、これらの非10進数では、引用符で囲まれていない8バイトの整数のみがサポートされていました。
整数と数値の定数でアンダースコアを使用できるようにしました。 (Peter Eisentraut, Dean Rasheed)
これにより、長い数字列の読みやすさが向上します。
日時入力で+infinityの表現を受け付けるようにしました。
(Vik Fearing)
      
日時文字列で他のフィールドと一緒にepochとinfinityを指定することを禁止しました。
(Joseph Koshakow)
      
文書化されていないY形式の日付入力サポートを削除しました。
(Joseph Koshakow)
      yearMmonthDday
型変換エラーをチェックする関数pg_input_is_valid()とpg_input_error_info()を追加しました。
(Tom Lane)
      
FROM句の副問い合わせで別名を省略できるようにしました。
(Dean Rasheed)
      
SQL/JSONパスで拡張された数値リテラルに対応しました。 (Peter Eisentraut)
たとえば、16進数、8進数、および2進数の整数で、桁間のアンダースコアが利用可能になりました。
SQL/JSONのコンストラクタを追加しました。 (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Amit Langote)
新しい関数JSON_ARRAY()、JSON_ARRAYAGG()、JSON_OBJECT()、およびJSON_OBJECTAGG()は、SQL標準の一部です。
      
SQL/JSONオブジェクト検査を追加しました。 (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Amit Langote, Andrew Dunstan)
IS JSON検査は、値、配列、オブジェクト、スカラ、一意キーの検査を含みます。
      
JSON文字列解析でベクトル演算を使用できるようにしました。 (John Naylor)
全文検索結果を強調する(ts_headline())関数でのORおよびNOT式に対する処理を改善しました。
(Tom Lane)
      
指定したタイムゾーンのtimestamptz値を加算、減算、生成する関数を追加しました。
(Przemyslaw Sztoch, Gurjeet Singh)
      
関数はdate_add()、date_subtract()、generate_series()です。
      
date_trunc(unit, timestamptz, time_zone)を不変(immutable)関数に変更しました。
(Przemyslaw Sztoch)
      
これにより、この関数を使用して式インデックスを作成できます。
サーバパラメータSYSTEM_USERを追加しました。
(Bertrand Drouvot)
      
認証方式と認証したユーザを報告します。
関数array_sample()とarray_shuffle()を追加しました。
(Martin Kalcher)
      
集合から任意の値を返す集約関数ANY_VALUE()を追加しました。
(Vik Fearing)
      
正規分布の乱数を提供するrandom_normal()関数を追加しました。
(Paul Ramsey)
      
誤差関数erf()と相補誤差関数erfc()を追加しました。
(Dean Rasheed)
      
整数の指数に対するpower()の数値の精度を改善しました。
(Dean Rasheed)
      
出力を読みやすく表示するためのXMLSERIALIZE()関数のINDENTオプションを追加しました。
(Jim Jones)
      
デフォルトの照合順序に対して妥当な値を返すようにpg_collation_actual_version()関数を変更しました。
(Jeff Davis)
      
以前はNULLを返していました。
      
pg_read_file()とpg_read_binary_file()があるべき場所に無いファイルを無視できるようにしました。
(Kyotaro Horiguchi)
      
pg_size_bytes()にバイト指定の(B)を追加しました。
(Peter Eisentraut)
      
to_reg*関数群がOIDの数値を入力として受け付けるようにしました。
(Tom Lane)
      
PL/pgSQLで現在の関数のOIDを取得する機能を追加しました。 (Pavel Stehule)
受け入れ可能な認証方式のリストを指定するためのlibpq接続オプションrequire_authを追加しました。
(Jacob Champion)
      
これは、特定の認証方式を禁止するためにも使用できます。
libpqで指定した複数のホストからランダムに選択できるようにしました。 (Jelte Fennema)
これはload_balance_hosts=randomで有効になり、ロードバランシングに使用できます。
      
クライアント証明書の送信を制御するlibpqのsslcertmodeオプションを追加しました。
(Jacob Champion)
      
オプションの値は、disable、allow、requireです。
      
libpqが証明書の検証にシステム証明書プールを使用できるようにしました。 (Jacob Champion, Thomas Habets)
これはsslrootcert=systemで有効になります。
これによりsslmode=verify-fullも有効にします。
      
ECPGの変数宣言で予約されていないSQLキーワードに一致するtypedef名を使用できるようにしました。
(Tom Lane)
      
この変更により、Cのtypedef名と一致するキーワードは、後のEXEC SQLブロックでキーワードとして処理されなくなります。
      
psqlで展開された形式でのヘッダ行の最大幅を制御できるようにしました。 (Platon Pronko)
これはxheader_widthで制御します。
       
psqlにロールメンバシップの詳細を表示する\drgコマンドを追加しました。
(Pavel Luzanov)
       
この新しいコマンドでより詳細な情報を表示するため\duと\dgからMember of出力列が削除されました。
       
psqlのアクセス権限コマンドでシステムオブジェクトを表示できるようにしました。 (Nathan Bossart)
psqlの\d+に外部テーブルの子テーブルとパーティションのFOREIGN表示を追加しました。
(Ian Lawrence Barwick)
       
\df+で関数のソースコードを表示しないようにしました。
(Isaac Morland)
       
関数本体は\sfで見やすくなりました。
       
psqlが拡張問い合わせプロトコルを使用して問い合わせを送信できるようにしました。 (Peter Eisentraut)
このような問い合わせへの引数の渡しは、新しいpsqlの\bindコマンドを使って行います。
       
psqlの\watchを実行回数を制限できるようにしました。
(Andrey Borodin)
       
\watchオプションは、指定されたときに名前を付けることができるようになりました。
       
psqlの\watchで無効な値を検出し、遅延なしを指定できるよう0を許可しました。
(Andrey Borodin)
       
psqlスクリプトでシェルコマンドや問い合わせの終了ステータスを取得できるようにしました。 (Corey Huinker, Tom Lane)
新しいpsql制御変数は、SHELL_ERRORとSHELL_EXIT_CODEです。
       
様々なpsqlのタブ補完機能を改善しました。 (Vignesh C, Aleksander Alekseev, Dagfinn Ilmari Mannsåker, Shi Yu, Michael Paquier, Ken Kato, Peter Smith)
pg_dumpで子テーブルとパーティションのダンプを制御できるようにしました。 (Gilles Darold)
新しいオプションは--table-and-children、--exclude-table-and-children、--exclude-table-data-and-childrenです。
       
pg_dumpにLZ4圧縮とZstandard圧縮を追加しました。 (Georgios Kokolatos, Justin Pryzby)
pg_dumpとpg_basebackupで圧縮にlongモードを使用できるようにしました。
 (Justin Pryzby)
       
pg_dumpを改良して、より一貫性のある圧縮構文を受け付けるようにしました。 (Georgios Kokolatos)
--compress=gzip:5のようなオプションです。
       
initdbおよび将来のすべてのサーバ起動時にサーバパラメータを設定するためのinitdbオプションを追加しました。 (Tom Lane)
オプションは-c name=valueです。
      
createuserに、より多くのユーザオプションを制御するオプションを追加しました。 (Shinya Kato)
具体的には、新しいオプションは、有効期限、行レベルのセキュリティのバイパス、およびロールメンバシップを制御します。
createuserの--roleオプションを非推奨としました。
(Nathan Bossart)
      
このオプションは、新しいcreateuserロールのメンバシップオプションと混同されやすいため、同じ機能を持つ--member-ofオプションが追加されました。
--roleオプションは引き続き使用できます。
      
vacuumdbでスキーマ処理の制御ができるようにしました。 (Gilles Darold)
これらは、--schemaおよび--exclude-schemaオプションで制御されます。
      
vacuumdbのパフォーマンスを改善するために新しいVACUUMオプションを使用するようにしました。
(Tom Lane, Nathan Bossart)
      
pg_upgradeで新しいクラスタのロケールとエンコーディングを設定しました。 (Jeff Davis)
これにより、新しいクラスタを同じロケールとエンコーディング設定で作成する必要がなくなります。
pg_upgradeにデフォルトの転送モードを指定するためのオプションを追加しました。 (Peter Eisentraut)
そのオプションは--copyです。
      
pg_basebackupが数値の圧縮オプションを受け付けるように改善しました。 (Georgios Kokolatos, Michael Paquier)
--compress=server-5のようなオプションがサポートされるようになりました。
      
pg_basebackupでPGDATAディレクトリに格納されたテーブル空間を処理できるように修正しました。
(Robert Haas)
      
pg_waldumpにページ全体のイメージをダンプするための--save-fullpageオプションを追加しました。
(David Christensen)
      
pg_waldumpの-t/--timelineオプションで16進数値を受け付けるようにしました。
(Peter Eisentraut)
      
pg_verifybackupに進捗レポート機能を追加しました。 (Masahiko Sawada)
pg_rewindがタイムラインの変更を正しく追跡できるようにしました。 (Heikki Linnakangas)
以前は、pg_rewindがタイムラインの切り替え後でチェックポイントが発行される前に実行された場合、pg_rewindは巻き戻しが不要であると誤って判断する可能性がありました。
pg_receivewalとpg_recvlogicalがSIGTERMで正常終了するようになりました。
(Christoph Berg)
      
このシグナルは、systemdによってしばしば使用されます。
ICUサポートのビルドがデフォルトになりました。 (Jeff Davis)
これにより、ビルドフラグの--with-icuが削除され、--without-icuフラグが追加されます。
      
x86-64アーキテクチャでのSSE2(Streaming SIMD Extensions 2)ベクトル演算のサポートを追加しました。 (John Naylor)
ARMアーキテクチャで高度なSIMD(Single Instruction Multiple Data)(NEON)命令のサポートを追加しました。 (Nathan Bossart)
MSVCによるWindowsバイナリビルドでRandomizedBaseAddress(ASLR)を使用するようにしました。
(Michael Paquier)
      
これはすでにMinGWビルドで有効になっています。
拡張ライブラリのシンボルがデフォルトでエクスポートしないようにしました。 (Andres Freund, Tom Lane)
コアバックエンドや他の拡張機能から呼び出す必要のある関数は、明示的にPGDLLEXPORTとマークする必要があります。
      
Windows 10以降のバージョンが必要になりました。 (Michael Paquier, Juan José Santamaría Flecha)
以前は、Windows VistaとWindows XPがサポートされていました。
Perlバージョン5.14以降が必要になりました。 (John Naylor)
Bisonバージョン2.3以降が必要になりました。 (John Naylor)
Flexバージョン2.5.35以降が必要になりました。 (John Naylor)
GSSAPIサポートのためにMITKerberosを必要になりました。 (Stephen Frost)
Visual Studio 2013のサポートを削除しました。 (Michael Paquier)
HP-UXのサポートを削除しました。 (Thomas Munro)
HP/Intel Itaniumのサポートを削除しました。 (Thomas Munro)
M68K、M88K、M32R、SuperH CPUアーキテクチャのサポートを削除しました。 (Thomas Munro)
SCM証明書認証用のlibpqサポートを削除しました。 (Michael Paquier)
この認証方式のバックエンドサポートはPostgreSQL 9.1で削除されました。
mesonビルドシステムを追加しました。 (Andres Freund, Nazir Bilal Yavuz, Peter Eisentraut)
これは最終的に、AutoconfとWindowsベースのMSVCビルドシステムを置き換えることになります。
ビルドシステムが使用するopensslバイナリの場所を制御できるようにしました。 (Peter Eisentraut)
configureまたはmesonオプションでopensslプログラムの検索をできるようにしました。
小さなテーブルセグメントサイズのテストを可能にするビルドオプションを追加しました。 (Andres Freund)
ビルドオプションは--with-segsize-blocksと-Dsegsize_blocksです。
      
pgindentオプションを追加しました。 (Andrew Dunstan)
新しいオプションは--show-diff、--silent-diff、--commit、--helpで、複数の--excludeオプションが可能です。
また、typedefファイルを明示的に指定する必要があります。
オプション--code-baseと--buildは削除されました。
      
pg_bsd_indentソースコードをメインツリーに追加しました。 (Tom Lane)
make_ctagsとmake_etagsを改善しました。 (Yugo Nagata)
効率を上げるためにpg_attributeの列を調整しました。
(Peter Eisentraut)
      
boolean型の列で拡張ベースのインデックスを使用する機能を改善しました。 (Zongliang Quan, Tom Lane)
fuzzystrmatchでDaitch-Mokotoff Soundexがサポートされました。 (Dag Lem)
auto_explainがパラメータ化された文に渡された値をログへ記録するようになりました。 (Dagfinn Ilmari Mannsåker)
これは、サーバ側のPREPARE/EXECUTEとクライアント側のPARSE/BINDを使用する問い合わせに影響します。
ログの記録はauto_explain.log_parameter_max_lengthで制御されます。
デフォルトでは、問い合わせパラメータは長さ制限なしでログに記録されます。
      
auto_explainのlog_verboseモードがcompute_query_idの値を遵守するようになりました。
(Atsushi Torikoshi)
      
以前は、compute_query_idが有効になっていても、log_verboseは問い合わせ識別子を表示していませんでした。
      
ltreeラベルの最大長が256から1000に変更され、ハイフンが利用可能になりました。 (Garen Torikian)
pg_stat_statementsでユーティリティコマンドで使用される定数を正規化します。
(Michael Paquier)
      
以前は、プレースホルダの代わりに定数、例えば$1が表示されていました。
      
WALブロック情報を報告するpg_walinspectのpg_get_wal_block_info()関数を追加しました。
(Michael Paquier, Melanie Plageman, Bharath Rupireddy)
      
pg_walinspectのpg_get_wal_records_info()とpg_get_wal_stats()関数が末尾LSNを解釈する方法を変更しました。
(Bharath Rupireddy)
      
以前は存在しないWALの場所を表す末尾のLSNはエラーを生成していましたが、今後はWALの末尾として解釈されます。
WALレコードの詳細な記述をpg_walinspectとpg_waldumpに追加しました。 (Melanie Plageman, Peter Geoghegan)
pageinspectで複数ページの統計を報告するbt_multi_page_stats()関数を追加しました。
(Hamid Akhtar)
      
これはbt_page_stats()と似ていますが、ページの範囲を指定してレポートできる点が異なります。
      
pageinspectのbrin_page_items()関数に空の範囲出力を示す列を追加しました。
(Tomas Vondra)
      
アーカイブモジュールをより柔軟に再設計しました。 (Nathan Bossart)
初期化の変更により、古いバージョンのPostgres用に書かれたモジュールを更新する必要があります。
不正確なpg_stat_statementsの拡張問い合わせプロトコル文追跡を修正しました。 (Sami Imseih)
pg_buffercacheに使用量の合計を報告するpg_buffercache_usage_counts()関数を追加しました。
(Nathan Bossart)
      
pg_buffercacheにバッファの概要を報告するpg_buffercache_summary()関数を追加しました。
(Melih Mutlu)
      
新しい構文@extschema:referenced_extension_name@を使用して、必要な拡張のスキーマを拡張スクリプトで参照できるようにしました。
(Regina Obe)
      
no_relocateを使用して、必要な拡張を再配置不可能としてマークできるようにしました。
(Regina Obe)
      
これにより、@extschema:referenced_extension_name@は、拡張の存続期間中、定数として扱われます。
      
postgres_fdwが並列処理を中断できるようにしました。 (Etsuro Fujita)
これはpostgres_fdwのオプションparallel_abortで有効にできます。
       
外部postgres_fdwテーブルのANALYZEをより効率的にしました。
(Tomas Vondra)
       
postgres_fdwオプションのanalyze_samplingはサンプリング方法を制御します。
       
postgres_fdwでのreg*型の定数の送出を、送出可能としてマークされた組み込みオブジェクトまたは拡張を参照するものに制限しました。
(Tom Lane)
       
postgres_fdwとdblinkで接続確立中の割り込みを処理するようにしました。 (Andres Freund)
以下の人々(アルファベット順)はパッチ作者、コミッター、レビューア、テスターあるいは問題の報告者として本リリースに貢献しました。
| Abhijit Menon-Sen | 
| Adam Mackler | 
| Adrian Klaver | 
| Ahsan Hadi | 
| Ajin Cherian | 
| Ajit Awekar | 
| Alan Hodgson | 
| Aleksander Alekseev | 
| Alex Denman | 
| Alex Kozhemyakin | 
| Alexander Korolev | 
| Alexander Korotkov | 
| Alexander Lakhin | 
| Alexander Pyhalov | 
| Alexey Borzov | 
| Alexey Ermakov | 
| Alexey Makhmutov | 
| Álvaro Herrera | 
| Amit Kapila | 
| Amit Khandekar | 
| Amit Langote | 
| Amul Sul | 
| Anastasia Lubennikova | 
| Anban Company | 
| Andreas Dijkman | 
| Andreas Karlsson | 
| Andreas Scherbaum | 
| Andrei Zubkov | 
| Andres Freund | 
| Andrew Alsup | 
| Andrew Bille | 
| Andrew Dunstan | 
| Andrew Gierth | 
| Andrew Kesper | 
| Andrey Borodin | 
| Andrey Lepikhov | 
| Andrey Sokolov | 
| Ankit Kumar Pandey | 
| Ante Kresic | 
| Anton Melnikov | 
| Anton Sidyakin | 
| Anton Voloshin | 
| Antonin Houska | 
| Arne Roland | 
| Artem Anisimov | 
| Arthur Zakirov | 
| Ashutosh Bapat | 
| Ashutosh Sharma | 
| Asim Praveen | 
| Atsushi Torikoshi | 
| Ayaki Tachikake | 
| Balazs Szilfai | 
| Benoit Lobréau | 
| Bernd Helmle | 
| Bertrand Drouvot | 
| Bharath Rupireddy | 
| Bilva Sanaba | 
| Bob Krier | 
| Boris Zentner | 
| Brad Nicholson | 
| Brar Piening | 
| Bruce Momjian | 
| Bruno da Silva | 
| Carl Sopchak | 
| Cary Huang | 
| Changhong Fei | 
| Chris Travers | 
| Christoph Berg | 
| Christophe Pettus | 
| Corey Huinker | 
| Craig Ringer | 
| Curt Kolovson | 
| Dag Lem | 
| Dagfinn Ilmari Mannsåker | 
| Daniel Gustafsson | 
| Daniel Vérité | 
| Daniel Watzinger | 
| Daniel Westermann | 
| Daniele Varrazzo | 
| Daniil Anisimov | 
| Danny Shemesh | 
| Dave Page | 
| David Christensen | 
| David G. Johnston | 
| David Geier | 
| David Gilman | 
| David Kimura | 
| David Rowley | 
| David Steele | 
| David Turon | 
| David Zhang | 
| Davinder Singh | 
| Dean Rasheed | 
| Denis Laxalde | 
| Dilip Kumar | 
| Dimos Stamatakis | 
| Dmitriy Kuzmin | 
| Dmitry Astapov | 
| Dmitry Dolgov | 
| Dmitry Koval | 
| Dong Wook Lee | 
| Dongming Liu | 
| Drew DeVault | 
| Duncan Sands | 
| Ed Maste | 
| Egor Chindyaskin | 
| Ekaterina Kiryanova | 
| Elena Indrupskaya | 
| Emmanuel Quincerot | 
| Eric Mutta | 
| Erik Rijkers | 
| Erki Eessaar | 
| Erwin Brandstetter | 
| Etsuro Fujita | 
| Eugeny Zhuzhnev | 
| Euler Taveira | 
| Evan Jones | 
| Evgeny Morozov | 
| Fabrízio de Royes Mello | 
| Farias de Oliveira | 
| Florin Irion | 
| Franz-Josef Färber | 
| Garen Torikian | 
| Georgios Kokolatos | 
| Gilles Darold | 
| Greg Stark | 
| Guillaume Lelarge | 
| Gunnar Bluth | 
| Gunnar Morling | 
| Gurjeet Singh | 
| Haiyang Wang | 
| Haiying Tang | 
| Hamid Akhtar | 
| Hans Buschmann | 
| Hao Wu | 
| Hayato Kuroda | 
| Heath Lord | 
| Heikki Linnakangas | 
| Himanshu Upadhyaya | 
| Hisahiro Kauchi | 
| Hongyu Song | 
| Hubert Lubaczewski | 
| Hung Nguyen | 
| Ian Barwick | 
| Ibrar Ahmed | 
| Ilya Gladyshev | 
| Ilya Nenashev | 
| Isaac Morland | 
| Israel Barth Rubio | 
| Jacob Champion | 
| Jacob Speidel | 
| Jaime Casanova | 
| Jakub Wartak | 
| James Coleman | 
| James Inform | 
| James Vanns | 
| Jan Wieck | 
| Japin Li | 
| Jeevan Ladhe | 
| Jeff Davis | 
| Jeff Janes | 
| Jehan-Guillaume de Rorthais | 
| Jelte Fennema | 
| Jian He | 
| Jim Jones | 
| Jinbao Chen | 
| Joe Conway | 
| Joel Jacobson | 
| John Naylor | 
| Jonathan Katz | 
| Josef Simanek | 
| Joseph Koshakow | 
| Juan José Santamaría Flecha | 
| Julien Rouhaud | 
| Julien Roze | 
| Junwang Zhao | 
| Justin Pryzby | 
| Justin Zhang | 
| Karina Litskevich | 
| Karl O. Pinc | 
| Keisuke Kuroda | 
| Ken Kato | 
| Kevin McKibbin | 
| Kieran McCusker | 
| Kirk Wolak | 
| Konstantin Knizhnik | 
| Koshi Shibagaki | 
| Kotaro Kawamoto | 
| Kui Liu | 
| Kyotaro Horiguchi | 
| Lakshmi Narayanan Sreethar | 
| Laurence Parry | 
| Laurenz Albe | 
| Luca Ferrari | 
| Lukas Fittl | 
| Maciek Sakrejda | 
| Magnus Hagander | 
| Maja Zaloznik | 
| Marcel Hofstetter | 
| Marina Polyakova | 
| Mark Dilger | 
| Marko Tiikkaja | 
| Markus Winand | 
| Martijn van Oosterhout | 
| Martin Jurca | 
| Martin Kalcher | 
| Mary Xu | 
| Masahiko Sawada | 
| Masahiro Ikeda | 
| Masao Fujii | 
| Mason Sharp | 
| Matheus Alcantara | 
| Mats Kindahl | 
| Matthias van de Meent | 
| Matthijs van der Vleuten | 
| Maxim Orlov | 
| Maxim Yablokov | 
| Mehmet Emin Karakas | 
| Melanie Plageman | 
| Melih Mutlu | 
| Micah Gates | 
| Michael Banck | 
| Michael Paquier | 
| Michail Nikolaev | 
| Michel Pelletier | 
| Mike Oh | 
| Mikhail Gribkov | 
| Mingli Zhang | 
| Miroslav Bendik | 
| Mitsuru Hinata | 
| Myo Wai Thant | 
| Naeem Akhter | 
| Naoki Okano | 
| Nathan Bossart | 
| Nazir Bilal Yavuz | 
| Neha Sharma | 
| Nick Babadzhanian | 
| Nicola Contu | 
| Nikhil Shetty | 
| Nikita Glukhov | 
| Nikolay Samokhvalov | 
| Nikolay Shaplov | 
| Nishant Sharma | 
| Nitin Jadhav | 
| Noah Misch | 
| Noboru Saito | 
| Noriyoshi Shinoda | 
| Nuko Yokohama | 
| Oleg Bartunov | 
| Oleg Tselebrovskiy | 
| Olly Betts | 
| Onder Kalaci | 
| Onur Tirtir | 
| Pablo Federico | 
| Palle Girgensohn | 
| Paul Guo | 
| Paul Jungwirth | 
| Paul Ramsey | 
| Pavel Borisov | 
| Pavel Kulakov | 
| Pavel Luzanov | 
| Pavel Stehule | 
| Peifeng Qiu | 
| Peter Eisentraut | 
| Peter Geoghegan | 
| Peter Smith | 
| Phil Florent | 
| Philippe Godfrin | 
| Platon Pronko | 
| Przemyslaw Sztoch | 
| Rachel Heaton | 
| Ranier Vilela | 
| Regina Obe | 
| Reid Thompson | 
| Reiner Peterke | 
| Richard Guo | 
| Riivo Kolka | 
| Rishu Bagga | 
| Robert Haas | 
| Robert Sjöblom | 
| Robert Treat | 
| Roberto Mello | 
| Robins Tharakan | 
| Roman Zharkov | 
| Ronan Dunklau | 
| Rushabh Lathia | 
| Ryo Matsumura | 
| Samay Sharma | 
| Sami Imseih | 
| Sandeep Thakkar | 
| Sandro Santilli | 
| Sebastien Flaesch | 
| Sébastien Lardière | 
| Sehrope Sarkuni | 
| Sergey Belyashov | 
| Sergey Pankov | 
| Sergey Shinderuk | 
| Shi Yu | 
| Shinya Kato | 
| Sho Kato | 
| Shruthi Gowda | 
| Shveta Mallik | 
| Simon Riggs | 
| Sindy Senorita | 
| Sirisha Chamarthi | 
| Sravan Kumar | 
| Stéphane Tachoires | 
| Stephen Frost | 
| Steve Chavez | 
| Stone Tickle | 
| Sven Klemm | 
| Takamichi Osumi | 
| Takeshi Ideriha | 
| Tatsuhiro Nakamori | 
| Tatsuo Ishii | 
| Teja Mupparti | 
| Tender Wang | 
| Teodor Sigaev | 
| Thiago Nunes | 
| Thom Brown | 
| Thomas Habets | 
| Thomas Mc Kay | 
| Thomas Munro | 
| Tim Carey-Smith | 
| Tim Field | 
| Timo Stolz | 
| Tom Lane | 
| Tomas Vondra | 
| Tor Erik Linnerud | 
| Torsten Förtsch | 
| Tristan Partin | 
| Troy Frericks | 
| Tushar Ahuja | 
| Valerie Woolard | 
| Vibhor Kumar | 
| Victor Spirin | 
| Victoria Shepard | 
| Vignesh C | 
| Vik Fearing | 
| Vitaly Burovoy | 
| Vitaly Davydov | 
| Wang Wei | 
| Wenjing Zeng | 
| Whale Song | 
| Will Mortensen | 
| Wolfgang Walther | 
| Xin Wen | 
| Xing Guo | 
| Xingwang Xu | 
| XueJing Zhao | 
| Yanliang Lei | 
| Youmiu Mo | 
| Yugo Nagata | 
| Yura Sokolov | 
| Yuta Katsuragi | 
| Zhen Mingyang | 
| Zheng Li | 
| Zhihong Yu | 
| Zhijie Hou | 
| Zongliang Quan | 
| Zuming Jiang |