釋出日期:2025-09-25
PostgreSQL 18 包含許多新特性和增強功能,包括
非同步 I/O (AIO) 子系統,可以提高順序掃描、點陣圖堆掃描、清理和其他操作的效能。
pg_upgrade 現在保留最佳化器統計資訊。
支援“跳過掃描”查詢,允許在更多情況下使用多列 B 樹索引。
虛擬生成列,它們在讀操作期間計算其值。這現在是生成列的預設設定。
OAuth 認證支援。
在 INSERT、UPDATE、DELETE 和 MERGE 命令的 RETURNING 子句中支援 OLD 和 NEW。
對於 PRIMARY KEY、UNIQUE 和 FOREIGN KEY 約束的時間約束或範圍約束。
下面幾節將更詳細地解釋上述專案以及 PostgreSQL 18 的其他新特性。
對於希望從任何以前的版本遷移資料的人來說,需要使用 pg_dumpall 進行轉儲/恢復,或者使用 pg_upgrade 或邏輯複製。有關遷移到新主要版本的通用資訊,請參閱 第 18.6 節。
版本18包含許多可能影響與以前版本相容性的更改。請注意以下不相容性
將 initdb 預設更改為啟用資料校驗和(Greg Sabino Mullane) §
可以使用新的 initdb 選項 --no-data-checksums 停用校驗和。pg_upgrade 要求匹配叢集校驗和設定,因此這個新選項對於升級不帶校驗和的舊叢集很有用。
更改時區縮寫處理(Tom Lane) §
系統現在將優先考慮當前會話的時區縮寫,然後檢查伺服器變數 timezone_abbreviations。以前是先檢查 timezone_abbreviations。
對 MD5 密碼的支援將在未來的主要版本中移除。CREATE ROLE 和 ALTER ROLE 現在在設定 MD5 密碼時會發出棄用警告。可以透過將 md5_password_warnings 引數設定為 off 來停用這些警告。
更改 VACUUM 和 ANALYZE 以處理父表的繼承子表(Michael Harris) §
可以使用新的 ONLY 選項執行以前的行為。
防止 COPY FROM 在讀取檔案時將 \. 視為檔案結束標記CSV檔案(Daniel Vérité, Tom Lane) § §
psql 在從 STDIN 讀取檔案時仍會將 \. 視為檔案結束標記。CSV較舊的 psql 客戶端連線到 PostgreSQL 18 伺服器可能會遇到 \copy 問題。此版本還強制要求 \. 必須單獨出現在一行中。
禁止未記錄的分割槽表(Michael Paquier) §
以前 ALTER TABLE SET [UN]LOGGED 不執行任何操作,並且建立未記錄的分割槽表也不會導致其子表未記錄。
在觸發器事件排隊時處於活動狀態的角色執行 AFTER 觸發器(Laurenz Albe) §
以前,此類觸發器在觸發器執行時(例如,在 COMMIT 時)處於活動狀態的角色執行。這對於在排隊時間和事務提交之間角色發生變化的情況很重要。
移除 GRANT/REVOKE 中規則許可權的非功能性支援(Fujii Masao) §
自 PostgreSQL 8.2 以來,這些功能一直是非功能性的。
移除列 pg_backend_memory_contexts.parent(Melih Mutlu) §
由於添加了 pg_backend_memory_contexts.path,不再需要此功能。
將 pg_backend_memory_contexts.level 和 pg_log_backend_memory_contexts() 更改為從1開始(Melih Mutlu, Atsushi Torikoshi, David Rowley, Fujii Masao) § § §
這些以前是從零開始的。
更改 全文搜尋 以使用叢集的預設排序規則提供程式來讀取配置檔案和字典,而不是始終使用 libc(Peter Eisentraut) §
預設使用非 libc 排序規則提供程式(例如 ICU,內建)的叢集,對於 LC_CTYPE 處理的字元,其行為可能與 libc 不同,可能會在某些全文搜尋函式以及 pg_trgm 擴充套件的行為中觀察到變化。使用 pg_upgrade 升級此類叢集時,建議在升級後重新索引所有與全文搜尋和 pg_trgm 相關的索引。
下面您將找到 PostgreSQL 18 與以前主要版本之間變化的詳細說明。
自動刪除一些不必要的表自連線(Andrey Lepikhov, Alexander Kuzmenkov, Alexander Korotkov, Alena Rybakina) §
可以使用伺服器變數 enable_self_join_elimination 停用此最佳化。
將一些 IN (VALUES ...) 轉換為 x = ANY ... 以獲得更好的最佳化器統計資訊(Alena Rybakina, Andrei Lepikhov) §
允許將 OR 子句轉換為陣列以加快索引處理(Alexander Korotkov, Andrey Lepikhov) §
加快 INTERSECT、EXCEPT、視窗聚合和 檢視列別名的處理速度(Tom Lane, David Rowley) § § § §
允許 SELECT DISTINCT 的鍵在內部重新排序以避免排序(Richard Guo) §
可以使用 enable_distinct_reordering 停用此最佳化。
忽略功能上依賴於其他列的 GROUP BY 列(Zhang Mingli, Jian He, David Rowley) §
如果 GROUP BY 子句包含唯一索引的所有列以及同一表的其他列,則這些其他列是冗餘的,可以從分組中刪除。對於非延遲主鍵,這已經成立。
允許將 HAVING 子句中某些 GROUPING SETS 推送到 WHERE 子句(Richard Guo) § § § §
這允許更早地進行行過濾。此版本還修復了一些以前返回不正確結果的 GROUPING SETS 查詢。
改進使用 numeric 和 timestamp 值的 generate_series() 的行估計(David Rowley, Song Jinzhou) § §
允許最佳化器使用 Right Semi Join 計劃(Richard Guo) §
半連線用於查詢是否存在至少一個匹配項。
提高訪問多個分割槽的查詢規劃效率(Ashutosh Bapat, Yuya Watari, David Rowley) § §
在更多情況下允許 分割槽式連線,並減少其記憶體使用(Richard Guo, Tom Lane, Ashutosh Bapat) § §
改進分割槽查詢的成本估算(Nikita Malakhov, Andrei Lepikhov) §
改進停用最佳化器功能的處理(Robert Haas) §
新增非同步 I/O 子系統(Andres Freund, Thomas Munro, Nazir Bilal Yavuz, Melanie Plageman) § § § § § § § § § § §
此功能允許後端排隊多個讀取請求,從而實現更高效的順序掃描、點陣圖堆掃描、清理等。這由伺服器變數 io_method 啟用,並添加了伺服器變數 io_combine_limit 和 io_max_combine_limit 來控制它。這還使得對於不支援 fadvise() 的系統,effective_io_concurrency 和 maintenance_io_concurrency 的值大於零成為可能。新的系統檢視 pg_aios 顯示用於非同步 I/O 的檔案控制代碼。
改進訪問許多關係查詢的鎖定效能(Tomas Vondra) §
提高雜湊連線和 GROUP BY 的效能並減少記憶體使用(David Rowley, Jeff Davis) § § § § §
這也改進了 EXCEPT 使用的雜湊集操作和子計劃值的雜湊查詢。
允許普通清理凍結某些頁面,即使它們都是可見的(Melanie Plageman) § §
這減少了後期全關係凍結的開銷。其激進性可以透過伺服器變數和每表設定 vacuum_max_eager_freeze_failure_rate 控制。以前,在需要凍結之前,清理從不處理所有可見頁面。
新增伺服器變數 vacuum_truncate 以控制 VACUUM 期間的檔案截斷(Nathan Bossart, Gurjeet Singh) §
已經存在一個具有相同名稱和行為的儲存級別引數。
將伺服器變數 effective_io_concurrency 和 maintenance_io_concurrency 的預設值增加到 16(Melanie Plageman) § §
這更準確地反映了現代硬體。
增加伺服器變數 log_connections 的日誌記錄粒度(Melanie Plageman) §
此伺服器變數以前僅為布林值,現在仍支援。
新增 log_connections 選項以報告連線階段的持續時間(Melanie Plageman) §
新增 log_line_prefix 轉義 %L 以輸出客戶端IP地址(Greg Sabino Mullane) §
新增伺服器變數 log_lock_failures 以記錄鎖獲取失敗(Yuki Seino, Fujii Masao) § §
具體來說,它報告 SELECT ... NOWAIT 鎖失敗。
修改 pg_stat_all_tables 及其變體以報告在 VACUUM、ANALYZE 及其自動變體中花費的時間(Sami Imseih) §
新列是 total_vacuum_time、total_autovacuum_time、total_analyze_time 和 total_autoanalyze_time。
向 VACUUM 和 ANALYZE 新增延遲時間報告(Bertrand Drouvot, Nathan Bossart) § §
此資訊出現在伺服器日誌、系統檢視 pg_stat_progress_vacuum 和 pg_stat_progress_analyze 以及 VERBOSE 模式下的 VACUUM 和 ANALYZE 的輸出中;必須使用伺服器變數 track_cost_delay_timing 啟用跟蹤。
新增WAL, CPU以及平均讀取統計資訊輸出到 ANALYZE VERBOSE(Anthonin Bonnefoy) § §
新增完整WAL緩衝區計數到 VACUUM/ANALYZE (VERBOSE) 和 autovacuum 日誌輸出(Bertrand Drouvot) §
新增每後端 I/O 統計資訊報告(Bertrand Drouvot) § §
統計資訊透過 pg_stat_get_backend_io() 訪問。每後端 I/O 統計資訊可以透過 pg_stat_reset_backend_stats() 清除。
新增 pg_stat_io 列以位元組報告 I/O 活動(Nazir Bilal Yavuz) §
新列是 read_bytes、write_bytes 和 extend_bytes。op_bytes 列(始終等於 BLCKSZ)已移除。
新增WALpg_stat_io 的 I/O 活動行(Nazir Bilal Yavuz, Bertrand Drouvot, Michael Paquier) § § §
這包括WAL接收器活動以及此類寫入的等待事件。
更改伺服器變數 track_wal_io_timing 以控制跟蹤WALpg_stat_io 中的時間而不是 pg_stat_wal(Bertrand Drouvot) §
從 pg_stat_wal 中移除讀/同步列(Bertrand Drouvot) § §
這會移除列 wal_write、wal_sync、wal_write_time 和 wal_sync_time。
新增函式 pg_stat_get_backend_wal() 以返回每後端WAL統計資訊(Bertrand Drouvot) §
每後端WAL統計資訊可以透過 pg_stat_reset_backend_stats() 清除。
新增函式 pg_ls_summariesdir() 以專門列出 PGDATA/pg_wal/summaries 的內容(Yushi Ogiwara) §
新增列 pg_stat_checkpointer.num_done 以報告已完成的檢查點數量(Anton A. Melnikov) §
列 num_timed 和 num_requested 同時計算已完成和已跳過的檢查點。
新增列 pg_stat_checkpointer.slru_written 以報告SLRU寫入的緩衝區(Nitin Jadhav) §
此外,修改檢查點伺服器日誌訊息以報告單獨的共享緩衝區和SLRU緩衝區值。
新增列到 pg_stat_database 以報告並行工作者活動(Benoit Lobréau) §
新列是 parallel_workers_to_launch 和 parallel_workers_launched。
讓常量列表的 查詢 ID 計算只考慮第一個和最後一個常量(Dmitry Dolgov, Sami Imseih) § § §
洗牌由 pg_stat_statements 使用。
調整查詢 ID 計算以將使用相同關係名稱的查詢組合在一起(Michael Paquier, Sami Imseih) §
即使不同模式中的表具有不同的列名,這也是成立的。
新增列 pg_backend_memory_contexts.type 以報告記憶體上下文的型別(David Rowley) §
新增列 pg_backend_memory_contexts.path 以顯示記憶體上下文父級(Melih Mutlu) §
新增函式 pg_get_acl() 以檢索資料庫訪問控制詳細資訊(Joel Jacobson) § §
新增函式 has_largeobject_privilege() 以檢查大型物件許可權(Yugo Nagata) §
允許 ALTER DEFAULT PRIVILEGES 定義大型物件預設許可權(Takatsuka Haruka, Yugo Nagata, Laurenz Albe) §
新增預定義角色 pg_signal_autovacuum_worker(Kirill Reshke) §
這允許向自動清理工作者傳送訊號。
新增對 OAuth 認證方法的支援(Jacob Champion, Daniel Gustafsson, Thomas Munro) §
這向 pg_hba.conf 添加了 oauth 認證方法、libpq OAuth 選項、一個用於載入令牌驗證庫的伺服器變數 oauth_validator_libraries,以及一個 --with-libcurl 配置標誌以新增所需的編譯時庫。
新增伺服器變數 ssl_tls13_ciphers 以允許指定多個以冒號分隔的 TLSv1.3 密碼套件(Erica Zhang, Daniel Gustafsson) §
將伺服器變數 ssl_groups 的預設值更改為包含橢圓曲線 X25519(Daniel Gustafsson, Jacob Champion) §
將伺服器變數 ssl_ecdh_curve 重新命名為 ssl_groups,並允許指定多個以冒號分隔的ECDH曲線(Erica Zhang, Daniel Gustafsson) §
以前的名稱仍然有效。
將 取消請求鍵 設為 256 位(Heikki Linnakangas, Jelte Fennema-Nio) § §
這隻有在伺服器和客戶端支援本版本中引入的線協議版本3.2時才可能實現。
新增伺服器變數 autovacuum_worker_slots 以指定後臺工作者的最大數量(Nathan Bossart) §
設定此變數後,autovacuum_max_workers 可以在執行時調整到此最大值,而無需重新啟動伺服器。
允許指定觸發 自動清理 的死元組的固定數量(Nathan Bossart, Frédéric Yhuel) §
伺服器變數是 autovacuum_vacuum_max_threshold。百分比仍用於觸發。
更改伺服器變數 max_files_per_process 以僅限制後端開啟的檔案(Andres Freund) §
以前,postmaster 開啟的檔案也計入此限制。
新增伺服器變數 num_os_semaphores 以報告所需訊號量的數量(Nathan Bossart) §
這對於作業系統配置很有用。
新增伺服器變數 extension_control_path 以指定擴充套件控制檔案的位置(Peter Eisentraut, Matheus Alcantara) § §
允許使用伺服器變數 idle_replication_slot_timeout 自動使非活動複製槽失效(Nisha Moond, Bharath Rupireddy) §
新增伺服器變數 max_active_replication_origins 以控制最大活動複製源(Euler Taveira) §
這以前由 max_replication_slots 控制,但這個新設定允許在需要較少槽位的情況下具有更高的源計數。
允許 生成列 的值進行邏輯複製(Shubham Khanna, Vignesh C, Zhijie Hou, Shlok Kyal, Peter Smith) § § § §
如果釋出指定了列列表,則釋出所有指定的列(生成的和非生成的)。如果沒有指定的列列表,則釋出選項 publish_generated_columns 控制是否釋出生成的列。以前生成的列不進行復制,訂閱者必須在可能的情況下計算值;這對於缺少此類功能的非 PostgreSQL 訂閱者特別有用。
將 CREATE SUBSCRIPTION 流式選項的預設值從 off 更改為 parallel(Vignesh C) §
允許 ALTER SUBSCRIPTION 更改複製槽的兩階段提交行為(Hayato Kuroda, Ajin Cherian, Amit Kapila, Zhijie Hou) § §
在應用邏輯複製更改時記錄 衝突(Zhijie Hou, Nisha Moond) § § § § §
同時在 pg_stat_subscription_stats 的新列中報告。
允許 生成列 是虛擬的,並使它們成為預設值(Peter Eisentraut, Jian He, Richard Guo, Dean Rasheed) § § §
虛擬生成列在讀取時生成其值,而不是在寫入時生成。寫入行為仍然可以透過 STORED 選項指定。
在DML查詢中向 RETURNING 新增 OLD/NEW 支援(Dean Rasheed) §
以前,RETURNING 只返回 INSERT 和 UPDATE 的新值,以及 DELETE 的舊值;MERGE 將返回為執行的內部查詢的適當值。此新語法允許 INSERT/UPDATE/DELETE/MERGE 的 RETURNING 列表透過使用特殊別名 old 和 new 顯式返回舊值和新值。這些別名可以重新命名以避免識別符號衝突。
允許像現有本地表一樣建立外部表(Zhang Mingli) §
允許文字位置搜尋函式與非確定性排序規則一起使用(Peter Eisentraut) §
這些以前會生成錯誤。
新增內建排序規則提供程式 PG_UNICODE_FAST(Jeff Davis) §
此區域設定支援大小寫對映,但按程式碼點順序排序,而非自然語言順序。
允許 VACUUM 和 ANALYZE 處理分割槽表而不處理其子表(Michael Harris) §
這透過新的 ONLY 選項啟用。這很有用,因為自動清理不處理分割槽表,只處理其子表。
新增函式以修改每關係和每列最佳化器統計資訊(Corey Huinker) § § §
這些函式是 pg_restore_relation_stats()、pg_restore_attribute_stats()、pg_clear_relation_stats() 和 pg_clear_attribute_stats()。
新增伺服器變數 file_copy_method 以控制檔案複製方法(Nazir Bilal Yavuz) §
這控制 CREATE DATABASE ... STRATEGY=FILE_COPY 和 ALTER DATABASE ... SET TABLESPACE 是使用檔案複製還是克隆。
允許指定不重疊的 PRIMARY KEY、UNIQUE 和 外部索引鍵 約束(Paul A. Jungwirth) § §
這透過 WITHOUT OVERLAPS 用於 PRIMARY KEY 和 UNIQUE,並透過 PERIOD 用於外部索引鍵,所有這些都應用於最後一個指定的列。
允許將 CHECK 和 外部索引鍵 約束指定為 NOT ENFORCED(Amul Sul) § §
這還添加了列 pg_constraint.conenforced。
要求 主鍵/外部索引鍵 關係使用確定性排序規則或相同的非確定性排序規則(Peter Eisentraut) §
如果這些要求不滿足,pg_dump 的恢復(pg_upgrade 也使用)將失敗;必須對模式進行更改才能使這些升級方法成功。
將列 NOT NULL 規範儲存在 pg_constraint 中(Álvaro Herrera, Bernd Helmle) § §
這允許為 NOT NULL 約束指定名稱。這還向外表添加了 NOT NULL 約束,並向本地表添加了 NOT NULL 繼承控制。
允許 ALTER TABLE 設定 NOT NULL 約束的 NOT VALID 屬性(Rushabh Lathia, Jian He) §
允許分割槽表上的 NOT VALID 外部索引鍵約束(Amul Sul) §
允許在分割槽表上 僅 丟棄約束(Álvaro Herrera) §
這以前被錯誤地禁止了。
新增 REJECT_LIMIT 以控制 COPY FROM 可以忽略的無效行數(Atsushi Torikoshi) §
這在 ON_ERROR = 'ignore' 時可用。
允許 COPY TO 從已填充的物化檢視複製行(Jian He) §
新增 COPY LOG_VERBOSITY 級別 silent 以抑制被忽略行的日誌輸出(Atsushi Torikoshi) §
當 on_error = 'ignore' 時,此新級別會抑制被丟棄的輸入行的輸出。
禁止在外部表上 COPY FREEZE(Nathan Bossart) §
以前,COPY 可以工作,但 FREEZE 會被忽略,所以禁止此命令。
自動將 BUFFERS 輸出包含在 EXPLAIN ANALYZE 中(Guillaume Lelarge, David Rowley) §
新增完整WAL緩衝區計數到 EXPLAIN (WAL) 輸出(Bertrand Drouvot) §
在 EXPLAIN ANALYZE 中,報告每個索引掃描節點使用的索引查詢次數(Peter Geoghegan) §
修改 EXPLAIN 以輸出小數行計數(Ibrar Ahmed, Ilia Evdokimov, Robert Haas) § §
將記憶體和磁碟使用詳細資訊新增到 Material、Window Aggregate 和通用表表達式節點到 EXPLAIN 輸出(David Rowley, Tatsuo Ishii) § § § §
將視窗函式引數的詳細資訊新增到 EXPLAIN 輸出(Tom Lane) §
將 Parallel Bitmap Heap Scan 工作者快取統計資訊新增到 EXPLAIN ANALYZE(David Geier, Heikki Linnakangas, Donghang Lin, Alena Rybakina, David Rowley) §
在 EXPLAIN ANALYZE 輸出中指示已停用節點(Robert Haas, David Rowley, Laurenz Albe) § § §
改進 Unicode 全大小寫對映和轉換(Jeff Davis) § §
這增加了進行條件和標題大小寫對映的能力,以及將單個字元大小寫對映到多個字元的能力。
允許將 jsonb null 值轉換為標量型別為 NULL(Tom Lane) §
以前這樣的轉換會產生錯誤。
向 json{b}_strip_nulls 新增可選引數,以允許刪除空陣列元素(Florents Tselai) §
新增函式 array_sort(),它對陣列的第一維進行排序(Junwang Zhao, Jian He) §
新增函式 array_reverse(),它反轉陣列的第一維(Aleksander Alekseev) §
允許在整數型別和 bytea 之間進行轉換(Aleksander Alekseev) §
整數值儲存為 bytea 二進位制補碼值。
改進 XML 錯誤程式碼以更接近SQL標準(Tom Lane) §
這些錯誤透過 SQLSTATE 報告。
新增函式 casefold() 以允許更復雜的忽略大小寫匹配(Jeff Davis) §
這允許更準確的比較,即一個字元可以有多個大寫或小寫等價物,或者大寫或小寫轉換會改變字元的數量。
允許在陣列和複合型別上進行 MIN()/MAX() 聚合(Aleksander Alekseev, Marat Buharov) § §
改進 EXTRACT(QUARTER ...) 對負值的輸出(Tom Lane) §
向 to_number() 新增羅馬數字支援(Hunaid Sohail) §
這透過 RN 模式訪問。
新增 UUID 版本7生成函式 uuidv7()(Andrey Borodin) §
此 UUID 值可按時間排序。已新增函式別名 uuidv4() 以顯式生成版本4 UUID。
允許在 PL/pgSQL 中命名遊標引數使用 => 語法(Pavel Stehule) §
我們以前只接受 :=。
允許 regexp_match[es]()/regexp_like()/regexp_replace()/regexp_count()/regexp_instr()/regexp_substr()/regexp_split_to_table()/regexp_split_to_array() 使用命名引數(Jian He) §
新增函式 PQfullProtocolVersion() 以報告完整的(包括次要版本)協議版本號(Jacob Champion, Jelte Fennema-Nio) §
新增 libpq 連線 引數 和 環境變數 以指定連線的最小和最大可接受協議版本(Jelte Fennema-Nio) § §
向客戶端報告 search_path 更改(Alexander Kukushkin, Jelte Fennema-Nio, Tomas Vondra) § §
新增 libpq 連線引數 sslkeylogfile,該引數會轉儲SSL關鍵材料(Abhishek Chanda, Daniel Gustafsson) §
這對於除錯很有用。
修改一些 libpq 函式簽名以使用 int64_t(Thomas Munro) §
這些以前使用 pg_int64,現已棄用。
允許 psql 解析、繫結和關閉命名預處理語句(Anthonin Bonnefoy, Michael Paquier) § §
這透過新命令 \parse、\bind_named 和 \close_prepared 完成。
新增 psql 反斜槓命令以允許發出管道查詢(Anthonin Bonnefoy) § § §
新命令是 \startpipeline、\syncpipeline、\sendpipeline、\endpipeline、\flushrequest、\flush 和 \getresults。
允許將管道狀態新增到 psql 提示符並新增相關狀態變數(Anthonin Bonnefoy) §
新的提示符字元是 %P,新的 psql 變數是 PIPELINE_SYNC_COUNT、PIPELINE_COMMAND_COUNT 和 PIPELINE_RESULT_COUNT。
允許將連線服務名稱新增到 psql 提示符或透過 psql 變數訪問它(Michael Banck) §
新增 psql 選項,在所有列表命令上使用擴充套件模式(Dean Rasheed) §
新增反斜槓字尾 x 啟用此功能。
更改 psql 的 \conninfo 以使用表格格式幷包含更多資訊(Álvaro Herrera, Maiquel Grassi, Hunaid Sohail) §
將函式的防洩漏指示器新增到 psql 的 \df+、\do+、\dAo+ 和 \dC+ 輸出(Yugo Nagata) §
新增 psql 變數 WATCH_INTERVAL 以設定預設的 \watch 等待時間(Daniel Gustafsson) §
更改 initdb 預設啟用校驗和(Greg Sabino Mullane) § §
新的 initdb 選項 --no-data-checksums 停用校驗和。
新增 initdb 選項 --no-sync-data-files 以避免同步堆/索引檔案(Nathan Bossart) §
initdb 選項 --no-sync 仍然可用,以避免同步任何檔案。
新增 vacuumdb 選項 --missing-stats-only 以僅計算缺失的最佳化器統計資訊(Corey Huinker, Nathan Bossart) § §
此選項只能由超級使用者執行,並且只能與選項 --analyze-only 和 --analyze-in-stages 一起使用。
新增 pg_combinebackup 選項 -k/--link 以啟用硬連結(Israel Barth Rubio, Robert Haas) §
只有某些檔案可以硬連結。如果備份將獨立使用,則不應使用此功能。
允許 pg_verifybackup 驗證 tar 格式備份(Amul Sul) §
如果 pg_rewind 的 --source-server 指定了資料庫名稱,則在 --write-recovery-conf 輸出中使用它(Masahiko Sawada) §
新增 pg_resetwal 選項 --char-signedness 以更改預設的 char 有符號性(Masahiko Sawada) §
新增 pg_dump 和 pg_dumpall 選項 --sequence-data 以轉儲通常會被排除的序列資料(Nathan Bossart) § §
新增 pg_dump、pg_dumpall 和 pg_restore 選項 --statistics-only、--no-statistics、--no-data 和 --no-schema(Corey Huinker, Jeff Davis) §
新增選項 --no-policies 以停用 pg_dump、pg_dumpall、pg_restore 中的行級安全策略處理(Nikolay Samokhvalov) §
這對於遷移到具有不同策略的系統很有用。
允許 pg_upgrade 保留最佳化器統計資訊(Corey Huinker, Jeff Davis, Nathan Bossart) § § § §
不保留擴充套件統計資訊。同時新增 pg_upgrade 選項 --no-statistics 以停用統計資訊保留。
允許 pg_upgrade 並行處理資料庫檢查(Nathan Bossart) § § § § § § § § § §
這由現有 --jobs 選項控制。
新增 pg_upgrade 選項 --swap 以交換目錄而不是複製、克隆或連結檔案(Nathan Bossart) §
此模式可能是最快的。
新增 pg_upgrade 選項 --set-char-signedness 以設定新叢集的預設 char 符號性(Masahiko Sawada) § §
這是為了處理 PostgreSQL 18 之前叢集的預設CPU符號性與新叢集不匹配的情況。
新增 pg_createsubscriber 選項 --all 以建立所有資料庫的邏輯副本(Shubham Khanna) §
新增 pg_createsubscriber 選項 --enable-two-phase 以啟用預備事務(Shubham Khanna) §
新增 pg_recvlogical 選項 --enable-failover 以指定故障轉移槽(Hayato Kuroda) §
還新增選項 --enable-two-phase 作為 --two-phase 的同義詞,並棄用後者。
允許 pg_recvlogical --drop-slot 在沒有 --dbname 的情況下工作(Hayato Kuroda) §
分離 注入點 的載入和執行(Michael Paquier, Heikki Linnakangas) § §
現在可以透過 INJECTION_POINT_LOAD() 建立注入點但不執行,並且可以透過 INJECTION_POINT_CACHED() 執行這些注入點。
支援注入點中的執行時引數(Michael Paquier) §
允許使用 IS_INJECTION_POINT_ATTACHED() 的內聯注入點測試程式碼(Heikki Linnakangas) §
使用 x86AVX-512 指令加速 CRC32C 計算(Raghuveer Devulapalli, Paul Amonson) §
新增ARMNeon 和SVE CPU用於 popcount(整數位計數)的內在函式(Chiranmoy Bhattacharya, Devanga Susmitha, Rama Malladi) § §
新增配置選項--with-libnuma以啟用NUMA(Jakub Wartak, Bertrand Drouvot) § § §
函式pg_numa_available()報告NUMA,以及報告共享記憶體跨節點分佈的系統檢視pg_shmem_allocations_numa和pg_buffercache_numa。NUMA節點。
移除列pg_attribute.attcacheoff(David Rowley) §
將amgettreeheight、amconsistentequality和amconsistentordering新增到索引訪問方法API(Mark Dilger) § §
新增GiST支援函式stratnum()(Paul A. Jungwirth) §
記錄char在pg_controldata中的預設有符號性(Masahiko Sawada) §CPU的預設有符號性。
在PL/Python中新增對Python“Limited”的支援(Peter Eisentraut) § §API“的支援。
這有助於防止由於Python 3.x 版本不匹配引起的問題。
將最低支援的Python版本更改為3.6.8(Jacob Champion) §
如果啟用LLVM,則要求版本14或更高(Thomas Munro) §
新增宏PG_MODULE_MAGIC_EXT以允許擴充套件報告其名稱和版本(Andrei Lepikhov) §
此資訊可以透過新函式pg_get_loaded_modules()訪問。
文件指出SPI_connect()/SPI_connect_ext()總是返回成功(SPI_OK_CONNECT)(Stepan Neretin) §
錯誤總是透過ereport()報告。
移除Windows上Meson構建的實驗性標記(Aleksander Alekseev) §
移除配置選項--disable-spinlocks和--disable-atomics(Thomas Munro) § §
現在需要32位原子操作。
移除對HPPA/PA-RISC架構的支援(Tom Lane) §
新增擴充套件pg_logicalinspect以檢查邏輯快照(Bertrand Drouvot) §
新增擴充套件pg_overexplain,它向EXPLAIN輸出新增除錯細節(Robert Haas) §
向postgres_fdw_get_connections()新增輸出列(Hayato Kuroda, Sagar Dilip Shedge) § § § §
新的輸出列used_in_xact指示外部資料包裝器是否正在被當前事務使用,closed指示它是否已關閉,user_name指示使用者名稱,remote_backend_pid指示遠端後端程序識別符號。
允許將客戶端的SCRAM認證傳遞給postgres_fdw伺服器(Matheus Alcantara, Peter Eisentraut) §
這避免了在資料庫中儲存postgres_fdw認證資訊,並透過postgres_fdw use_scram_passthrough連線選項啟用。libpq使用新的連線引數scram_client_key和scram_server_key。
向file_fdw新增on_error和log_verbosity選項(Atsushi Torikoshi) §
這些控制file_fdw如何處理和報告無效檔案行。
新增reject_limit以控制file_fdw可以忽略的無效行數(Atsushi Torikoshi) §
這在ON_ERROR = 'ignore'時啟用。
向passwordcheck新增可配置變數min_password_length(Emanuele Musella, Maurizio Boriani) §
這控制最小密碼長度。
新增isn伺服器變數weak以控制無效校驗位接受(Viktor Holmberg) §
這以前僅由函式isn_weak()控制。
允許對值進行排序以加快btree_gist索引的構建(Bernd Helmle, Andrey Borodin) §
新增amcheck檢查函式gin_index_check()以驗證GIN索引(Grigory Kryachko, Heikki Linnakangas, Andrey Borodin) §
新增函式pg_buffercache_evict_relation()和pg_buffercache_evict_all()以逐出未固定的共享緩衝區(Nazir Bilal Yavuz) §
現有函式pg_buffercache_evict()現在返回緩衝區重新整理狀態。
允許CREATE TABLE AS和DECLARE的查詢被pg_stat_statements跟蹤(Anthonin Bonnefoy) §
它們現在也被分配了查詢ID。
允許pg_stat_statements中SET值的引數化(Greg Sabino Mullane, Michael Paquier) §
這減少了由於具有不同常量的SET語句引起的資料膨脹。
新增pg_stat_statements列以報告並行活動(Guillaume Lelarge) §
新列是 parallel_workers_to_launch 和 parallel_workers_launched。
新增pg_stat_statements.wal_buffers_full以報告滿WAL緩衝區(Bertrand Drouvot) §
新增pgcrypto演算法sha256crypt和sha512crypt(Bernd Helmle) §
新增函式fips_mode()以報告伺服器的FIPS模式(Daniel Gustafsson) §
新增pgcrypto伺服器變數builtin_crypto_enabled以允許停用內建非FIPS模式加密函式(Daniel Gustafsson, Joe Conway) §
這對於保證FIPS模式行為很有用。
以下個人(按字母順序)作為補丁作者、提交者、審閱者、測試人員或問題報告者為本版本做出了貢獻。
| Abhishek Chanda |
| Adam Guo |
| Adam Rauch |
| Aidar Imamov |
| Ajin Cherian |
| Alastair Turner |
| Alec Cozens |
| Aleksander Alekseev |
| Alena Rybakina |
| Alex Friedman |
| Alex Richman |
| Alexander Alehin |
| Alexander Borisov |
| Alexander Korotkov |
| Alexander Kozhemyakin |
| Alexander Kukushkin |
| Alexander Kuzmenkov |
| Alexander Kuznetsov |
| Alexander Lakhin |
| Alexander Pyhalov |
| Alexandra Wang |
| Alexey Dvoichenkov |
| Alexey Makhmutov |
| Alexey Shishkin |
| Ali Akbar |
| Álvaro Herrera |
| Álvaro Mongil |
| Amit Kapila |
| Amit Langote |
| Amul Sul |
| Andreas Karlsson |
| Andreas Scherbaum |
| Andreas Ulbrich |
| Andrei Lepikhov |
| Andres Freund |
| Andrew |
| Andrew Bille |
| Andrew Dunstan |
| Andrew Jackson |
| Andrew Kane |
| Andrew Watkins |
| Andrey Borodin |
| Andrey Chudnovsky |
| Andrey Rachitskiy |
| Andrey Rudometov |
| Andy Alsup |
| Andy Fan |
| Anthonin Bonnefoy |
| Anthony Hsu |
| Anthony Leung |
| Anton Melnikov |
| Anton Voloshin |
| Antonin Houska |
| Antti Lampinen |
| Arseniy Mukhin |
| Artur Zakirov |
| Arun Thirupathi |
| Ashutosh Bapat |
| Asphator |
| Atsushi Torikoshi |
| Avi Weinberg |
| Aya Iwata |
| Ayush Tiwari |
| Ayush Vatsa |
| Bastien Roucariès |
| Ben Peachey Higdon |
| Benoit Lobréau |
| Bernd Helmle |
| Bernd Reiß |
| Bernhard Wiedemann |
| Bertrand Drouvot |
| Bertrand Mamasam |
| Bharath Rupireddy |
| Bogdan Grigorenko |
| Boyu Yang |
| Braulio Fdo Gonzalez |
| Bruce Momjian |
| Bykov Ivan |
| Cameron Vogt |
| Cary Huang |
| Cédric Villemain |
| Cees van Zeeland |
| ChangAo Chen |
| Chao Li |
| Chapman Flack |
| Charles Samborski |
| Chengwen Wu |
| Chengxi Sun |
| Chiranmoy Bhattacharya |
| Chris Gooch |
| Christian Charukiewicz |
| Christoph Berg |
| Christophe Courtois |
| Christopher Inokuchi |
| Clemens Ruck |
| Corey Huinker |
| Craig Milhiser |
| Crisp Lee |
| Dagfinn Ilmari Mannsåker |
| Daniel Elishakov |
| Daniel Gustafsson |
| Daniel Vérité |
| Daniel Westermann |
| Daniele Varrazzo |
| Daniil Davydov |
| Daria Shanina |
| Dave Cramer |
| Dave Page |
| David Benjamin |
| David Christensen |
| David Fiedler |
| David G. Johnston |
| David Geier |
| David Rowley |
| David Steele |
| David Wheeler |
| David Zhang |
| Davinder Singh |
| Dean Rasheed |
| Devanga Susmitha |
| Devrim Gündüz |
| Dian Fay |
| Dilip Kumar |
| Dimitrios Apostolou |
| Dipesh Dhameliya |
| Dmitrii Bondar |
| Dmitry Dolgov |
| Dmitry Koval |
| Dmitry Kovalenko |
| Dmitry Yurichev |
| Dominique Devienne |
| Donghang Lin |
| Dorjpalam Batbaatar |
| Drew Callahan |
| Duncan Sands |
| Dwayne Towell |
| Dzmitry Jachnik |
| Egor Chindyaskin |
| Egor Rogov |
| Emanuel Ionescu |
| Emanuele Musella |
| Emre Hasegeli |
| Eric Cyr |
| Erica Zhang |
| Erik Nordström |
| Erik Rijkers |
| Erik Wienhold |
| Erki Eessaar |
| Ethan Mertz |
| Etienne LAFARGE |
| Etsuro Fujita |
| Euler Taveira |
| Evan Si |
| Evgeniy Gorbanev |
| Fabio R. Sluzala |
| Fabrízio de Royes Mello |
| Feike Steenbergen |
| Feliphe Pozzer |
| Felix |
| Fire Emerald |
| Florents Tselai |
| Francesco Degrassi |
| Frank Streitzig |
| Frédéric Yhuel |
| Fredrik Widlert |
| Gabriele Bartolini |
| Gavin Panella |
| Geoff Winkless |
| George MacKerron |
| Gilles Darold |
| Grant Gryczan |
| Greg Burd |
| Greg Sabino Mullane |
| Greg Stark |
| Grigory Kryachko |
| Guillaume Lelarge |
| Gunnar Morling |
| Gunnar Wagner |
| Gurjeet Singh |
| Haifang Wang |
| Hajime Matsunaga |
| Hamid Akhtar |
| Hannu Krosing |
| Hari Krishna Sunder |
| Haruka Takatsuka |
| Hayato Kuroda |
| Heikki Linnakangas |
| Hironobu Suzuki |
| Holger Jakobs |
| Hubert Lubaczewski |
| Hugo Dubois |
| Hugo Zhang |
| Hunaid Sohail |
| Hywel Carver |
| Ian Barwick |
| Ibrar Ahmed |
| Igor Gnatyuk |
| Igor Korot |
| Ilia Evdokimov |
| Ilya Gladyshev |
| Ilyasov Ian |
| Imran Zaheer |
| Isaac Morland |
| Israel Barth Rubio |
| Ivan Kush |
| Jacob Brazeal |
| Jacob Champion |
| Jaime Casanova |
| Jakob Egger |
| Jakub Wartak |
| James Coleman |
| James Hunter |
| Jan Behrens |
| Japin Li |
| Jason Smith |
| Jayesh Dehankar |
| Jeevan Chalke |
| Jeff Davis |
| Jehan-Guillaume de Rorthais |
| Jelte Fennema-Nio |
| Jian He |
| Jianghua Yang |
| Jiao Shuntian |
| Jim Jones |
| Jim Nasby |
| Jingtang Zhang |
| Jingzhou Fu |
| Joe Conway |
| Joel Jacobson |
| John Hutchins |
| John Naylor |
| Jonathan Katz |
| Jorge Solórzano |
| José Villanova |
| Josef Šimánek |
| Joseph Koshakow |
| Julien Rouhaud |
| Junwang Zhao |
| Justin Pryzby |
| Kaido Vaikla |
| Kaimeh |
| Karina Litskevich |
| Karthik S |
| Kartyshov Ivan |
| Kashif Zeeshan |
| Keisuke Kuroda |
| Kevin Hale Boyes |
| Kevin K Biju |
| Kirill Reshke |
| Kirill Zdornyy |
| Koen De Groote |
| Koichi Suzuki |
| Koki Nakamura |
| Konstantin Knizhnik |
| Kouhei Sutou |
| Kuntal Ghosh |
| Kyotaro Horiguchi |
| Lakshmi Narayana Velayudam |
| Lars Kanis |
| Laurence Parry |
| Laurenz Albe |
| Lele Gaifax |
| Li Yong |
| Lilian Ontowhee |
| Lingbin Meng |
| Luboslav Špilák |
| Luca Vallisa |
| Lukas Fittl |
| Maciek Sakrejda |
| Magnus Hagander |
| Mahendra Singh Thalor |
| Mahendrakar Srinivasarao |
| Maiquel Grassi |
| Maksim Korotkov |
| Maksim Melnikov |
| Man Zeng |
| Marat Buharov |
| Marc Balmer |
| Marco Nenciarini |
| Marcos Pegoraro |
| Marina Polyakova |
| Mark Callaghan |
| Mark Dilger |
| Marlene Brandstaetter |
| Marlene Reiterer |
| Martin Rakhmanov |
| Masahiko Sawada |
| Masahiro Ikeda |
| Masao Fujii |
| Mason Mackaman |
| Mat Arye |
| Matheus Alcantara |
| Mats Kindahl |
| Matthew Gabeler-Lee |
| Matthew Kim |
| Matthew Sterrett |
| Matthew Woodcraft |
| Matthias van de Meent |
| Matthieu Denais |
| Maurizio Boriani |
| Max Johnson |
| Max Madden |
| Maxim Boguk |
| Maxim Orlov |
| Maximilian Chrzan |
| Melanie Plageman |
| Melih Mutlu |
| Mert Alev |
| Michael Banck |
| Michael Bondarenko |
| Michael Christofides |
| Michael Guissine |
| Michael Harris |
| Michaël Paquier |
| Michail Nikolaev |
| Michal Kleczek |
| Michel Pelletier |
| Mikaël Gourlaouen |
| Mikhail Gribkov |
| Mikhail Kot |
| Milosz Chmura |
| Muralikrishna Bandaru |
| Murat Efendioglu |
| Mutaamba Maasha |
| Naeem Akhter |
| Nat Makarevitch |
| Nathan Bossart |
| Navneet Kumar |
| Nazir Bilal Yavuz |
| Neil Conway |
| Niccolò Fei |
| Nick Davies |
| Nicolas Maus |
| Niek Brasa |
| Nikhil Raj |
| Nikita |
| Nikita Kalinin |
| Nikita Malakhov |
| Nikolay Samokhvalov |
| Nikolay Shaplov |
| Nisha Moond |
| Nitin Jadhav |
| Nitin Motiani |
| Noah Misch |
| Noboru Saito |
| Noriyoshi Shinoda |
| Ole Peder Brandtzæg |
| Oleg Sibiryakov |
| Oleg Tselebrovskiy |
| Olleg Samoylov |
| Onder Kalaci |
| Ondrej Navratil |
| Patrick Stählin |
| Paul Amonson |
| Paul Jungwirth |
| Paul Ramsey |
| Pavel Borisov |
| Pavel Luzanov |
| Pavel Nekrasov |
| Pavel Stehule |
| Peter Eisentraut |
| Peter Geoghegan |
| Peter Mittere |
| Peter Smith |
| Phil Eaton |
| Philipp Salvisberg |
| Philippe Beaudoin |
| Pierre Giraud |
| Pixian Shi |
| Polina Bungina |
| Przemyslaw Sztoch |
| Quynh Tran |
| Rafia Sabih |
| Raghuveer Devulapalli |
| Rahila Syed |
| Rama Malladi |
| Ran Benita |
| Ranier Vilela |
| Renan Alves Fonseca |
| Richard Guo |
| Richard Neill |
| Rintaro Ikeda |
| Robert Haas |
| Robert Treat |
| Robins Tharakan |
| Roman Zharkov |
| Ronald Cruz |
| Ronan Dunklau |
| Rui Zhao |
| Rushabh Lathia |
| Rustam Allakov |
| Ryo Kanbayashi |
| Ryohei Takahashi |
| RyotaK |
| Sagar Dilip Shedge |
| Salvatore Dipietro |
| Sam Gabrielsson |
| Sam James |
| Sameer Kumar |
| Sami Imseih |
| Samuel Thibault |
| Satyanarayana Narlapuram |
| Sebastian Skalacki |
| Senglee Choi |
| Sergei Kornilov |
| Sergey Belyashov |
| Sergey Dudoladov |
| Sergey Prokhorenko |
| Sergey Sargsyan |
| Sergey Soloviev |
| Sergey Tatarintsev |
| Shaik Mohammad Mujeeb |
| Shawn McCoy |
| Shenhao Wang |
| Shihao Zhong |
| Shinya Kato |
| Shlok Kyal |
| Shubham Khanna |
| Shveta Malik |
| Simon Riggs |
| Smolkin Grigory |
| Sofia Kopikova |
| Song Hongyu |
| Song Jinzhou |
| Soumyadeep Chakraborty |
| Sravan Kumar |
| Srinath Reddy |
| Stan Hu |
| Stepan Neretin |
| Stephen Fewer |
| Stephen Frost |
| Steve Chavez |
| Steven Niu |
| Suraj Kharage |
| Sven Klemm |
| Takamichi Osumi |
| Takeshi Ideriha |
| Tatsuo Ishii |
| Ted Yu |
| Tels |
| Tender Wang |
| Teodor Sigaev |
| Thom Brown |
| Thomas Baehler |
| Thomas Krennwallner |
| Thomas Munro |
| Tim Wood |
| Timur Magomedov |
| Tobias Wendorff |
| Todd Cook |
| Tofig Aliev |
| Tom Lane |
| Tomas Vondra |
| Tomasz Rybak |
| Tomasz Szypowski |
| Torsten Foertsch |
| Toshi Harada |
| Tristan Partin |
| Triveni N |
| Umar Hayat |
| Vallimaharajan G |
| Vasya Boytsov |
| Victor Yegorov |
| Vignesh C |
| Viktor Holmberg |
| Vinícius Abrahão |
| Vinod Sridharan |
| Virender Singla |
| Vitaly Davydov |
| Vladlen Popolitov |
| Vladyslav Nebozhyn |
| Walid Ibrahim |
| Webbo Han |
| Wenhui Qiu |
| Will Mortensen |
| Will Storey |
| Wolfgang Walther |
| Xin Zhang |
| Xing Guo |
| Xuneng Zhou |
| Yan Chengpen |
| Yang Lei |
| Yaroslav Saburov |
| Yaroslav Syrytsia |
| Yasir Hussain |
| Yasuo Honda |
| Yogesh Sharma |
| Yonghao Lee |
| Yoran Heling |
| Yu Liang |
| Yugo Nagata |
| Yuhang Qiu |
| Yuki Seino |
| Yura Sokolov |
| Yurii Rashkovskii |
| Yushi Ogiwara |
| Yusuke Sugie |
| Yuta Katsuragi |
| Yuto Sasaki |
| Yuuki Fujii |
| Yuya Watari |
| Zane Duffield |
| Zeyuan Hu |
| Zhang Mingli |
| Zhihong Yu |
| Zhijie Hou |
| Zsolt Parragi |
如果您發現文件中有任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表單報告文件問題。