釋出日期: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 |
如果您發現文件中有任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表單報告文件問題。