リリース日: 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)
year
Mmonth
Dday
型変換エラーをチェックする関数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 |