2025年9月25日: PostgreSQL 18 釋出!

PostgreSQL 17.5, 16.9, 15.13, 14.18, and 13.21 釋出!

釋出於 2025-05-08,作者:PostgreSQL 全球開發組
PostgreSQL 專案 安全

PostgreSQL 全球開發組已釋出所有受支援版本的 PostgreSQL 的更新,包括 17.5、16.9、15.13、14.18 和 13.21。此次釋出修復了 1 個安全漏洞和過去幾個月報告的 60 多個錯誤。

有關更改的完整列表,請參閱 發行說明

PostgreSQL 13 結束生命週期 (EOL) 通知

PostgreSQL 13 將於 2025 年 11 月 13 日停止接收修復。如果您正在生產環境中使用 PostgreSQL 13,我們建議您計劃升級到更新的、受支援的 PostgreSQL 版本。有關更多資訊,請參閱我們的版本策略

安全問題

CVE-2025-4207:PostgreSQL GB18030 編碼驗證可能在文字驗證失敗時讀取超出分配區域的一個位元組

CVSS v3.1 基本分:5.9

受支援的、有漏洞的版本:13 - 17。

PostgreSQL GB18030 編碼驗證中的緩衝區溢位讀取允許資料庫輸入提供者在 1 位元組溢位讀取可能導致程序終止的平臺上實現臨時拒絕服務。這會影響資料庫伺服器以及 libpq。PostgreSQL 17.5、16.9、15.13、14.18 和 13.21 之前的版本受到影響。

錯誤修復和改進

此次更新修復了過去幾個月報告的 60 多個錯誤。以下列出的問題會影響 PostgreSQL 17。其中一些問題也可能影響 PostgreSQL 的其他受支援版本。

  • 正確處理分割槽表上的自引用外部索引鍵。建立或附加分割槽時,如果約束引用的表是同一個分割槽表,則建立或附加分割槽未能為外部索引鍵約束生成所需的目錄條目。這導致約束未能完全強制執行。要解決此問題,請參閱“更新”部分中的說明。
  • 修復了在使用 BRIN bloom 索引(例如使用 date_bloom_ops 運算子類)時可能導致資料丟失的問題。
  • 修復了在分割槽表上使用 DO NOTHING 操作的 MERGE
  • 當表具有GENERATED且該列為域型別,並且該域的約束不允許 NULL 值時,防止 INSERT 命令失敗。
  • 修復了 ALTER TABLE .. ADD COLUMN 以正確處理具有自身預設值的域型別且未設定列的 DEFAULT 的情況。
  • 修復了在 JSON 建構函式表示式的鍵中執行轉換時出現的問題。
  • 修復了 XMLSERIALIZE(),以便在檢視或規則中存在 INDENT 選項時,它能被正確轉儲。這在恢復時很明顯。
  • 多項查詢規劃器修復,包括避免在具有 FILTER 子句以及 ORDER BYDISTINCT 子句的聚合函式中過早評估引數,這可能導致不必要的失敗。
  • 修復了在對同一表執行沒有輸出列的點陣圖掃描時,如果同時進行 vacuum 操作,可能返回不正確結果的問題。
  • 修復了當存在大量搜尋鍵時,GIN 索引搜尋啟動的效能問題,例如 jsonbcol ?| array[...](其中陣列元素有數萬個)。
  • 確保在最多一秒內報告活動 WAL 傳送器的 I/O 統計資訊。
  • 修復了啟動後立即處理 synchronous_standby_names 時出現的競爭條件,在該條件下,後端可能未能等待同步提交。
  • 避免在 scram_iterations 設定為 INT_MAX 時出現無限迴圈。
  • 多項邏輯複製修復,包括處理刪除行周圍的 vacuum(這些行仍然是邏輯解碼所必需的)。
  • 防止在不獲取強鎖的模式修改操作(DDL)影響正在邏輯複製的表時可能發生的資料丟失。
  • 防止在邏輯複製中出現可能由於應用工作程序錯誤處理而導致重複資料應用的問題。
  • 改進了 reindexdb 處理並行 reindex 操作排程的能力,以實現預期的並行度。

此次釋出還更新了時區資料檔案至 tzdata release 2025b,以處理智利的 DST 法規變更,以及伊朗的歷史修正。此外,新增了時區 America/Coyhaique,用於智利的 Aysén 地區,該地區全年採用 UTC-03,與 America/Santiago 不同。

更新

所有 PostgreSQL 更新版本都是累積的。與其他次要版本一樣,使用者不需要轉儲和重新載入資料庫或使用 pg_upgrade 來應用此更新版本;您可以直接關閉 PostgreSQL 並更新其二進位制檔案。

如果您在分割槽表上建立了自引用外部索引鍵,更新後,如果自引用外部索引鍵的建立以來已有分割槽被建立或附加,您應該刪除並重新建立這些外部索引鍵。分割槽中可能存在違反此約束的行,在這種情況下,重新建立約束將失敗,您需要先更正這些行,然後再重試。

跳過一個或多個更新版本的使用者可能需要執行額外的更新後步驟;請參閱早期版本的發行說明以獲取詳細資訊。

有關更多詳細資訊,請參閱 發行說明

連結

如果您對此版本公告有任何更正或建議,請將其傳送至 pgsql-www@lists.postgresql.org 公共 郵件列表