支援版本:目前 (16)

E.3. 版本 16 #

發布日期: 2023-09-14

E.3.1. 概觀 #

PostgreSQL 16 包含許多新功能和強化功能,包括

  • 允許平行處理 FULL 和內部右 OUTER hash 連接

  • 允許從備用伺服器進行邏輯複製

  • 允許邏輯複製訂閱者平行套用大型交易

  • 允許使用新的 pg_stat_io 檢視監控 I/O 統計資料

  • 新增 SQL/JSON 建構函數和身分函數

  • 改善真空冷凍的效能

  • 新增支援,可在 pg_hba.conf 中對使用者和資料庫名稱進行正規表達式比對,並可在 pg_ident.conf 中對使用者名稱進行正規表達式比對

以下項目和 PostgreSQL 16 的其他新功能會在以下各節中更詳細地說明。

E.3.2. 移轉至版本 16 #

對於想要從任何先前版本移轉資料的人來說,必須使用 pg_dumpall 進行傾印/還原,或使用 pg_upgrade 或邏輯複製。請參閱 第 19.6 節,以取得有關移轉至主要新版本的一般資訊。

版本 16 包含許多變更,可能會影響與先前版本的相容性。請注意以下不相容性

  • 變更 PL/pgSQL 繫結游標變數的指定規則 (Tom Lane)

    先前,此類變數的字串值會在游標指定期間設定為與變數名稱相符;現在會在 OPEN 期間指定,且不會與變數名稱相符。若要還原先前的行為,請在 OPEN 之前將所需的入口名稱指定給游標變數。

  • 禁止 NULLS NOT DISTINCT 主鍵索引 (Daniel Gustafsson)

  • 變更 REINDEX DATABASEreindexdb,使其不會處理系統目錄上的索引 (Simon Riggs)

    仍可以使用 REINDEX SYSTEMreindexdb --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 規則手動 建立檢視 的功能 (Tom Lane)

  • 移除伺服器變數 vacuum_defer_cleanup_age (Andres Freund)

    自從新增 hot_standby_feedback複寫槽 之後,此變數就已不再必要。

  • 移除伺服器變數 promote_trigger_file (Simon Riggs)

    此變數用於將備用伺服器提升為主要伺服器,但現在可以使用 pg_ctl promotepg_promote() 更輕鬆地完成此動作。

  • 移除唯讀伺服器變數 lc_collatelc_ctype (Peter Eisentraut)

    校對和地區設定會因資料庫而異,因此將它們設為唯讀伺服器變數並無助益。

  • 角色繼承現在會控制在 GRANT 期間新增的成員角色的預設繼承狀態 (Robert Haas)

    角色預設的繼承行為可以使用新的 GRANT ... WITH INHERIT 子句覆寫。這允許繼承某些角色而不繼承其他角色,因為成員的繼承狀態是在 GRANT 時間設定的。先前,成員角色的繼承狀態僅由角色的繼承狀態控制,而角色繼承狀態的變更會影響所有先前和未來的成員角色。

  • 限制 CREATEROLE 的權限及其修改其他角色的能力(Robert Haas)

    先前具有 CREATEROLE 權限的角色可以變更任何非超級使用者角色的許多面向。此類變更,包括新增成員,現在需要要求變更的角色具有 ADMIN OPTION 權限。例如,他們現在只能在同時具有這些權限的情況下變更 CREATEDBREPLICATIONBYPASSRLS 屬性。

  • 移除 postmaster 二進位檔的符號連結(Peter Eisentraut)

E.3.3. 變更 #

以下您將找到 PostgreSQL 16 和前一個主要版本之間變更的詳細說明。

E.3.3.1. 伺服器 #

E.3.3.1.1. 最佳化器 #
  • 在更多情況下允許遞增排序,包括 DISTINCT(David Rowley)

  • 新增具有 ORDER BYDISTINCT 的聚合使用預先排序資料的能力(David Rowley)

    新的伺服器變數 enable_presorted_aggregate 可用於停用此功能。

  • 允許在 UNION ALL 上方記憶(Richard Guo)

  • 允許反連接與非可為 Null 的輸入作為內部關係一起執行(Richard Guo)

  • 允許平行化 FULL 和內部右方 OUTER hash 連接(Melanie Plageman、Thomas Munro)

  • 改善 GIN 索引存取最佳化器成本的準確度(Ronan Dunklau)

E.3.3.1.2. 一般效能 #
  • 允許更有效率地新增堆積和索引頁面(Andres Freund)

  • 在非凍結作業期間,在適當的地方執行頁面 凍結(Peter Geoghegan)

    這使得全表凍結真空吸塵較不必要。

  • 允許視窗函數在 RANGE 模式處於作用中但並非必要時,在內部使用較快的 ROWS 模式(David Rowley)

  • 允許最佳化始終遞增的視窗函數 ntile()cume_dist()percent_rank()(David Rowley)

  • 允許聚合函數 string_agg()array_agg() 平行處理(David Rowley)

  • 透過快取 RANGELIST 分割查詢來提升效能(Amit Langote、侯志傑、David Rowley)

  • 允許控制真空吸塵和分析所使用的共用緩衝區(Melanie Plageman)

    VACUUM/ANALYZE 選項為 BUFFER_USAGE_LIMIT,而 vacuumdb 選項為 --buffer-usage-limit。預設值由伺服器變數 vacuum_buffer_usage_limit 設定,它也控制自動真空吸塵。

  • Windows 上支援 wal_sync_method=fdatasync(Thomas Munro)

  • 允許 HOT 更新,如果只更新 BRIN 編制索引的欄位(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)

E.3.3.1.3. 監控 #
  • 新增系統檢視 pg_stat_io 檢視,以追蹤 I/O 統計資料(Melanie Plageman)

  • 記錄資料表上最後的順序和索引掃描的統計資料(Dave Page)

    這些資訊會顯示在 pg_stat_*_tablespg_stat_*_indexes 中。

  • 記錄已更新列移動到新頁面的發生次數的統計資料(Corey Huinker)

    pg_stat_*_tables 欄位是 n_tup_newpage_upd

  • 新增推測鎖定資訊至 pg_locks 系統檢視(Masahiko Sawada、Noriyoshi Shinoda)

    交易識別碼會顯示在 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() 和相關函式使用不變的後端識別碼(Nathan Bossart)

    先前索引值可能會在工作階段的生命週期中變更。

  • 報告具有特殊後端類型 (Melanie Plageman) 的獨立後端

  • 新增等待事件 SpinDelay 以報告自旋鎖睡眠延遲 (Andres Freund)

  • 建立新的等待事件 DSMAllocate 以表示等待動態共享記憶體配置 (Thomas Munro)

    此類型的等待先前報告為 DSMFillZeroWrite,也由 mmap() 配置使用。

  • 將資料庫名稱新增至邏輯 WAL 傳送者的 程序標題 (Tatsuhiro Nakamori)

    實體 WAL 傳送者不會顯示資料庫名稱。

  • 將檢查點和 REDO LSN 資訊新增至 log_checkpoints 訊息 (Bharath Rupireddy、Kyotaro Horiguchi)

  • 在用戶端憑證失敗期間提供其他詳細資料 (Jacob Champion)

E.3.3.1.4. 權限 #
  • 新增預先定義的角色 pg_create_subscription,具有建立訂閱的權限 (Robert Haas)

  • 允許訂閱不需要密碼 (Robert Haas)

    這透過選項 password_required=false 來達成。

  • 簡化 LOCK TABLE 的權限 (Jeff Davis)

    先前,使用者在各種鎖定層級執行 LOCK TABLE 的能力僅限於他們有權限在表格上執行的命令所需要的鎖定層級。例如,具有 UPDATE 權限的人員可以執行所有鎖定層級,除了 ACCESS SHARE,即使它是較低的鎖定層級。現在,如果使用者已經有較高鎖定層級的權限,他們可以發出較低的鎖定層級。

  • 允許 ALTER GROUP group_name ADD USER user_nameADMIN OPTION 一起執行 (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 記錄的授予者依賴性追蹤 (Robert Haas)

    這保證 pg_auth_members.grantor 值始終有效。

  • 允許多個角色成員資格記錄 (Robert Haas)

    以前,新的成員資格授予會移除先前的匹配成員資格授予,即使授予的其他方面不匹配。

  • 禁止移除引導使用者的超級使用者權限 (Robert Haas)

    復原此類使用者可能會導致錯誤。

  • 允許 makeaclitem() 接受多個權限名稱 (Robins Tharakan)

    以前只接受單一權限名稱,例如 SELECT

E.3.3.1.5. 伺服器組態 #
  • 新增對 Kerberos 憑證委派的支援 (Stephen Frost)

    這會使用伺服器變數 gss_accept_delegationlibpq 連線參數 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_libraryarchive_command (Nathan Bossart)

    以前 archive_library 會覆寫 archive_command

  • 允許郵件伺服器使用中止訊號終止子行程 (Tom Lane)

    這允許收集卡住的子程式的核心傾印。這由 send_abort_for_crashsend_abort_for_kill 控制。郵件伺服器的 -T 參數現在與設定 send_abort_for_crash 相同。

  • 移除非功能性的郵件伺服器 -n 選項 (Tom Lane)

  • 允許伺服器為具有 pg_use_reserved_connections 會員資格的角色保留後端時段 (Nathan Bossart)

    保留時段的數量由伺服器變數 reserved_connections 設定。

  • 允許 大頁面 在較新版本的 Windows 10 上運作 (Thomas Munro)

    這新增了在較新版本的 Windows 10 上啟用大頁面所需的特殊處理。

  • 新增 debug_io_direct 設定供開發人員使用 (Thomas Munro, Andres Freund, Bharath Rupireddy)

    雖然主要供開發人員使用,wal_sync_method=open_sync/open_datasync 已修改為不使用直接 I/O 搭配 wal_level=minimal;這現在已啟用 debug_io_direct=wal

  • 新增函式 pg_split_walfile_name() 來報告 WAL 檔案名稱的區段和時間軸值 (Bharath Rupireddy)

E.3.3.1.6. pg_hba.conf #
  • 新增支援在 pg_hba.conf 中的資料庫和角色項目上進行正規表示式比對 (Bertrand Drouvot)

    正規表示式模式以斜線為前置詞。如果在 pg_hba.conf 中參照,以斜線開頭的資料庫和角色名稱需要使用雙引號。

  • 改善 pg_ident.conf 的使用者欄位處理,以符合 pg_hba.conf (Jelte Fennema)

    特別是,新增支援 all、使用 + 的角色會員資格,以及以斜線開頭的正規表示式。任何符合這些模式的使用者名稱都必須使用雙引號。

  • 允許在 pg_hba.confpg_ident.conf 中包含檔案 (Julien Rouhaud)

    這些由 includeinclude_if_existsinclude_dir 控制。系統檢視 pg_hba_file_rulespg_ident_file_mappings 現在顯示檔案名稱。

  • 允許 pg_hba.conf 權杖長度不限 (Tom Lane)

  • 將規則和對應數字新增至系統檢視 pg_hba_file_rules (Julien Rouhaud)

E.3.3.1.7. 在地化 #
  • 使用 ICU 時,從地區設定中判斷預設編碼 (Jeff Davis)

    先前預設值永遠是 UTF-8

  • CREATE DATABASECREATE COLLATIONLOCALE 選項,以及 initdbcreatedb--locale 選項,控制非 libc 校對提供者 (Jeff Davis)

    先前它們只控制 libc 提供者。

  • 新增預先定義的校對 unicodeucs_basic (Peter Eisentraut)

    這僅在啟用 ICU 支援時才有效。

  • 允許建立自訂 ICU 校對規則 (Peter Eisentraut)

    這是使用 CREATE COLLATION 的新 RULES 子句,以及 CREATE DATABASEcreatedbinitdb 的新選項來完成的。

  • 允許 Windows 自動匯入系統地區設定 (Juan José Santamaría Flecha)

    先前,只能在 Windows 上匯入 ICU 地區設定。

E.3.3.2. 邏輯複製 #

  • 允許在備用伺服器上進行 邏輯解碼 (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 控制。等待事件 LogicalParallelApplyMainLogicalParallelApplyStateChangeLogicalApplySendData 也已新增。欄位 leader_pid 已新增至系統檢視 pg_stat_subscription 以追蹤並行活動。

  • 改善沒有主鍵的 邏輯複製應用 效能(Onder Kalaci、Amit Kapila)

    特別是,REPLICA IDENTITY FULL 現在可以使用 B-tree 索引,而不是循序掃描表格來尋找相符項。

  • 允許邏輯複製訂閱者僅處理沒有來源的變更(Vignesh C、Amit Kapila)

    這可用於避免複製迴圈。這由新的 CREATE SUBSCRIPTION ... ORIGIN 選項控制。

  • 執行邏輯複製 SELECTDML 動作為表格擁有者(Robert Haas)

    這改善了安全性,現在要求訂閱擁有者為超級使用者或對複製組中擁有表格的所有角色具有 SET ROLE 權限。以前以訂閱擁有者身分執行所有操作的行為可以使用訂閱 run_as_owner 選項啟用。

  • wal_retrieve_retry_interval 以每個訂閱為基礎運作(Nathan Bossart)

    以前重試時間是全域套用。這也新增了等待事件 >LogicalRepLauncherDSALogicalRepLauncherHash

E.3.3.3. 公用程式指令 #

  • 新增 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 可以控制這個。

  • 允許在外部資料表上 截斷觸發器 (Yugo Nagata)

  • 允許 VACUUMvacuumdb 只處理 TOAST 資料表 (Nathan Bossart)

    這是透過讓 VACUUM 關閉 PROCESS_MAIN 或讓 vacuumdb 使用 --no-process-main 選項來完成。

  • 新增 VACUUM 選項以略過或更新所有 凍結 的統計資料 (Tom Lane, Nathan Bossart)

    這些選項為 SKIP_DATABASE_STATSONLY_DATABASE_STATS

  • 變更 REINDEX DATABASEREINDEX SYSTEM 不再需要引數 (Simon Riggs)

    以前必須指定資料庫名稱。

  • 允許 CREATE STATISTICS 在未指定時產生統計資料名稱 (Simon Riggs)

E.3.3.4. 資料類型 #

  • 允許非十進制的 整數文字(Peter Eisentraut)

    例如,0x42F0o2730b100101

  • 允許 NUMERIC 處理任何大小的十六進位、八進位和二進位整數(Dean Rasheed)

    以前,僅支援使用這些非十進位基數的未加引號的八位元組整數。

  • 允許在整數和數字 常數 中使用底線(Peter Eisentraut、Dean Rasheed)

    這可以改善長數字串的可讀性。

  • 在日期時間輸入中接受拼寫 +infinity(Vik Fearing)

  • 防止在日期時間字串中同時指定 epochinfinity 以及其他欄位(Joseph Koshakow)

  • 移除對以 YMD 形式輸入日期的未記載支援(Joseph Koshakow)

  • 新增函數 pg_input_is_valid()pg_input_error_info() 來檢查類型轉換錯誤(Tom Lane)

E.3.3.5. 一般查詢 #

  • 允許 FROM 子句中的子查詢省略別名(Dean Rasheed)

  • SQL/JSON 路徑中新增對增強數字文字的支援(Peter Eisentraut)

    例如,允許十六進位、八進位和二進位整數以及數字之間的底線。

E.3.3.6. 函數 #

  • 新增 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() 對於 ORNOT 表達式的處理(Tom Lane)

  • 新增函數在指定時區中新增、減去和產生 timestamptz 值(Przemyslaw Sztoch、Gurjeet Singh)

    這些函數為 date_add()date_subtract()generate_series()

  • date_trunc(unit, timestamptz, time_zone) 變更為不可變函數(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)

  • 將位元組規格 (B) 新增至 pg_size_bytes() (Peter Eisentraut)

  • 允許 to_reg* 函式接受數字 OID 作為輸入 (Tom Lane)

E.3.3.7. PL/pgSQL #

E.3.3.8. libpq #

  • 新增 libpq 連線選項 require_auth 來指定可接受的身分驗證方法清單 (Jacob Champion)

    這也可拿來禁止特定的身分驗證方法。

  • 允許隨機選取多個 libpq 指定的主機 (Jelte Fennema)

    這可透過 load_balance_hosts=random 來啟用,並可拿來進行負載平衡。

  • 新增 libpq 選項 sslcertmode 來控制用戶端憑證的傳輸 (Jacob Champion)

    選項值為 disableallowrequire

  • 允許 libpq 使用系統憑證池來進行憑證驗證 (Jacob Champion, Thomas Habets)

    這可透過 sslrootcert=system 來啟用,這也會啟用 sslmode=verify-full

E.3.3.9. 客戶端應用程式 #

  • 允許 ECPG 變數宣告使用與未保留 SQL 關鍵字相符的 typedef 名稱(Tom Lane)

    此變更可防止與 C typedef 名稱相符的關鍵字在後續 EXEC SQL 區塊中被當作關鍵字處理。

E.3.3.9.1. psql #
  • 允許 psql 控制展開格式中標題列的最大寬度(Platon Pronko)

    這由 xheader_width 控制。

  • 新增 psql 命令 \drg 來顯示角色成員資格詳細資料(Pavel Luzanov)

    已從 \du\dg 移出 Member of 輸出欄位,因為這個新命令會更詳細地顯示此資訊。

  • 允許 psql 的存取權限命令顯示系統物件(Nathan Bossart)

    選項為 \dpS\zS

  • 新增 FOREIGN 指定到 psql \d+ 以表示外部資料表子層級和分割(Ian Lawrence Barwick)

  • 防止 \df+ 顯示函數原始碼(Isaac Morland)

    函數主體較容易使用 \sf 查看。

  • 允許 psql 使用延伸查詢通訊協定提交查詢(Peter Eisentraut)

    傳遞引數給此類查詢時使用新的 psql \bind 命令。

  • 允許 psql \watch 限制執行次數(Andrey Borodin)

    指定 \watch 選項時,現在可以命名這些選項。

  • 偵測 psql \watch 的無效值,並允許零表示不延遲(Andrey Borodin)

  • 允許 psql 腳本取得 shell 命令和查詢的結束狀態(Corey Huinker、Tom Lane)

    新的 psql 控制變數為 SHELL_ERRORSHELL_EXIT_CODE

  • 各種 psql 標籤完成改進(Vignesh C、Aleksander Alekseev、Dagfinn Ilmari Mannsåker、Shi Yu、Michael Paquier、Ken Kato、Peter Smith)

E.3.3.9.2. pg_dump #
  • 新增 pg_dump 控制傾印子表格和分區(Gilles Darold)

    新的選項為 --table-and-children--exclude-table-and-children--exclude-table-data-and-children

  • 新增 LZ4Zstandard 壓縮到 pg_dump(Georgios Kokolatos、Justin Pryzby)

  • 允許 pg_dumppg_basebackup 使用 long 模式進行壓縮(Justin Pryzby)

  • 改進 pg_dump 以接受更一致的壓縮語法(Georgios Kokolatos)

    選項如 --compress=gzip:5

E.3.3.10. 伺服器應用程式 #

  • 新增 initdb 選項,用於設定伺服器變數,以供 initdb 和所有未來伺服器啟動期間使用(Tom Lane)

    選項為 -c name=value

  • 新增選項至 createuser 以控制更多使用者選項(Shinya Kato)

    具體而言,新的選項控制有效日期、繞過列級安全性,以及角色成員資格。

  • 捨棄 createuser 選項 --role(Nathan Bossart)

    此選項很容易與新的 createuser 角色成員資格選項混淆,因此已新增選項 --member-of,具有相同功能。仍可以使用 --role 選項。

  • 允許控制 vacuumdb 架構處理(Gilles Darold)

    這些由選項 --schema--exclude-schema 控制。

  • 使用新的 VACUUM 選項以改善 vacuumdb 的效能(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 接受十六進位值 (Peter Eisentraut)

  • 新增支援進度回報至 pg_verifybackup (Masahiko Sawada)

  • 允許 pg_rewind 正確追蹤時間軸變更 (Heikki Linnakangas)

    先前如果在時間軸切換後但在檢查點發出前執行 pg_rewind,它可能會錯誤地判定不需要倒轉。

  • pg_receivewalpg_recvlogicalSIGTERM 上乾淨地退出 (Christoph Berg)

    此訊號通常由 systemd 使用。

E.3.3.11. 原始碼 #

  • 預設建置 ICU 支援 (Jeff Davis)

    這會移除 建置旗標 --with-icu,並新增旗標 --without-icu

  • 新增對 x86-64 架構上 SSE2 (串流 SIMD 延伸 2) 向量運算的支援 (John Naylor)

  • 新增對 ARM 架構上進階 SIMD (單一指令多重資料) (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 VistaWindows XP

  • 需要 Perl 5.14 或更新版本(John Naylor)

  • 需要 Bison 2.3 或更新版本(John Naylor)

  • 需要 Flex 2.5.35 或更新版本(John Naylor)

  • 需要 MIT Kerberos 以支援 GSSAPI(Stephen Frost)

  • 移除對 Visual Studio 2013 的支援(Michael Paquier)

  • 移除對 HP-UX 的支援(Thomas Munro)

  • 移除對 HP/Intel Itanium 的支援(Thomas Munro)

  • 移除對 M68KM88KM32RSuperH CPU 架構的支援(Thomas Munro)

  • 移除 libpqSCM 憑證驗證的支援(Michael Paquier)

    PostgresSQL 9.1 中已移除後端對此驗證方法的支援。

  • 新增 meson 建置系統(Andres Freund、Nazir Bilal Yavuz、Peter Eisentraut)

    最終將取代 Autoconf 和基於 WindowsMSVC 建置系統。

  • 允許控制建置系統所使用的 openssl 二進位檔位置(Peter Eisentraut)

    讓尋找 openssl 程式成為 configuremeson 選項

  • 新增建置選項以允許測試小型表格區塊大小(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_ctagsmake_etags(Yugo Nagata)

  • 調整 pg_attribute 欄位以提升效率(Peter Eisentraut)

E.3.3.12. 其他模組 #

  • 改善在布林欄位上使用基於擴充功能的索引(Zongliang Quan、Tom Lane)

  • fuzzystrmatch 新增對 Daitch-Mokotoff Soundex 的支援(Dag Lem)

  • 允許 auto_explain 記錄傳遞給參數化陳述式的值 (Dagfinn Ilmari Mannsåker)

    這會影響使用伺服器端 PREPARE/EXECUTE 和用戶端解析/繫結的查詢。記錄由 auto_explain.log_parameter_max_length 控制;預設情況下,查詢參數會在沒有長度限制的情況下記錄。

  • auto_explainlog_verbose 模式遵循 compute_query_id 的值 (Atsushi Torikoshi)

    先前即使已啟用 compute_query_idlog_verbose 也不會顯示查詢識別碼。

  • ltree 標籤的最大長度從 256 變更為 1000,並允許連字號 (Garen Torikian)

  • pg_stat_statements 標準化用於公用程式命令的常數 (Michael Paquier)

    先前常數會出現在佔位符中,例如 $1

  • 新增 pg_walinspect 函式 pg_get_wal_block_info() 以報告 WAL 區塊資訊 (Michael Paquier, Melanie Plageman, Bharath Rupireddy)

  • 變更 pg_walinspect 函式 pg_get_wal_records_info()pg_get_wal_stats() 解釋結束 LSN 的方式 (Bharath Rupireddy)

    先前表示不存在 WAL 位置的結束 LSN 會產生錯誤,而現在會將它們解釋為 WAL 的結束。

  • pg_walinspectpg_waldump 中新增 WAL 記錄的詳細說明 (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@ 在延伸的生命週期內被視為常數。

E.3.3.12.1. postgres_fdw #
  • 允許 postgres_fdw 並行中斷(Etsuro Fujita)

    這已啟用 postgres_fdw 選項 parallel_abort

  • ANALYZE 在外部 postgres_fdw 表格上更有效率(Tomas Vondra)

    postgres_fdw 選項 analyze_sampling 控制抽樣方法。

  • 限制 postgres_fdwreg* 型別常數的出貨,僅限於參照內建物件或標記為可出貨的延伸(Tom Lane)

  • postgres_fdwdblink 在建立連線期間處理中斷(Andres Freund)

E.3.4. 致謝 #

以下人員(按字母順序)已作為修補程式作者、提交者、審查者、測試人員或問題報告者,為此版本做出貢獻。

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
德米特里·多爾戈夫
德米特里·科瓦爾
李東旭
劉冬明
德魯·德沃爾特
鄧肯·桑茲
埃德·馬斯特
葉戈爾·欽迪亞斯金
葉卡捷琳娜·基里亞諾娃
艾琳娜·因德魯普斯卡婭
埃馬紐埃爾·昆塞羅特
埃里克·穆塔
埃里克·賴克爾斯
埃爾基·埃薩爾
埃爾溫·布蘭德施泰特
藤田悅郎
尤金尼·朱日涅夫
尤拉·塔維拉
埃文·瓊斯
埃夫根尼·莫羅佐夫
法布里齊奧·德·羅耶斯·梅洛
法里亞斯·德·奧利維拉
弗洛林·艾里昂
弗朗茨-約瑟夫·法伯
加倫·托里奇安
喬治奧斯·科科拉托斯
吉爾斯·達羅爾德
格雷格·斯塔克
紀堯姆·勒拉格
岡納·布魯斯
岡納·莫林
古吉特·辛格
王海陽
唐海英
哈米德·阿克塔爾
漢斯·布施曼
吳浩
黑田早人
希思·洛德
海基·林納坎加斯
希曼舒·烏帕迪亞亞
河內久裕
宋宏宇
胡伯特·盧巴切夫斯基
洪阮
伊恩·巴威克
伊布拉爾·艾哈邁德
伊利亞·格拉德舍夫
伊利亞·涅納舍夫
艾薩克·莫蘭德
以色列·巴特·魯比奧
雅各布·錢皮恩
雅各布·斯佩德爾
海梅·卡薩諾瓦
雅庫布·瓦爾塔克
詹姆斯·科爾曼
詹姆斯·英福姆
詹姆斯·范恩斯
揚·維克
李賈平
吉萬·拉德
傑夫·戴維斯
傑夫·簡斯
讓-紀堯姆·德·羅爾泰
傑爾特·芬內馬
何健
吉姆·瓊斯
陳金寶
喬·康威
喬爾·雅各布森
約翰·內勒
喬納森·卡茨
約瑟夫·西馬內克
約瑟夫·科沙科夫
胡安·何塞·桑塔瑪麗亞·弗萊查
朱利安·魯豪德
朱利安·羅澤
趙俊旺
賈斯汀·普里茲比
賈斯汀·張
卡琳娜·利特斯克維奇
卡爾·O·平克
黑田啟介
加藤健
凱文·麥基賓
基蘭·麥卡斯克
柯克·沃拉克
康斯坦丁·克尼日尼克
柴垣浩志
川本浩太郎
劉奎
堀口恭太郎
拉克希米·納拉亞南·斯里塔
勞倫斯·帕里
勞倫茨·阿爾貝
盧卡·費拉里
盧卡斯·菲特爾
馬切克·薩克雷達
馬格努斯·哈甘德
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
高道大通
出井武志
中森達裕
石井達夫
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
王偉
曾文靜
Whale Song
Will Mortensen
Wolfgang Walther
文欣
郭星
徐興旺
趙雪靜
雷延亮
莫友繆
永田裕吾
Yura Sokolov
桂木優太
甄明陽
李政
于志宏
侯志傑
全宗良
姜祖明

提交更正

如果您在文件中看到任何不正確、與您使用特定功能的經驗不符或需要進一步說明的地方,請使用此表單回報文件問題。