PostgreSQL 15.2、14.7、13.10、12.14 和 11.19 版本已發布!

發布於 2023-02-09,由 PostgreSQL Global Development Group 發布
PostgreSQL 專案 安全性

PostgreSQL Global Development Group 發布了 PostgreSQL 所有受支援版本的更新,包括 15.2、14.7、13.10、12.14 和 11.19。 此版本修補了一個安全性漏洞,並修正了過去幾個月中回報的 60 多個錯誤。

如需完整的變更列表,請參閱發布說明

安全性問題

CVE-2022-41862:使用 Kerberos 連接到修改後的伺服器時,用戶端記憶體洩漏。

影響版本:12 - 15。

未經身份驗證的修改伺服器或未經身份驗證的中間人可以在建立 Kerberos 傳輸加密期間發送未終止的字串。 當libpq用戶端應用程式具有 Kerberos 憑證快取,並且沒有明確停用選項gssencmode時,伺服器可能會導致libpq過度讀取並報告包含來自及其接收緩衝區之後的未初始化位元組的錯誤訊息。 如果libpq的呼叫者以某種方式使攻擊者可以存取該訊息,則可以洩漏過度讀取的位元組。 我們尚未確認或排除攻擊的可行性,這些攻擊會安排崩潰或在洩漏的位元組中存在值得注意的機密資訊。

PostgreSQL 專案感謝 Jacob Champion 回報此問題。

錯誤修復和改進

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

包含在此版本中

  • 修復了分割資料表,以在子資料表中正確更新 GENERATED 欄位,如果 GENERATED 欄位不存在於父資料表中,或者子產生的欄位具有與父資料表不同的依賴項。
  • 修復了 MERGE 指令的幾個問題。
  • 允許 WITH RECURSIVE ... CYCLE 查詢存取其 SET 輸出欄位。
  • 修復了外部資料表上的大量插入問題,該問題可能導致邏輯不一致,例如,BEFORE ROW 觸發器可能不會處理應該可用的列。
  • 拒絕在 jsonpath 存在性檢查中使用未定義的變數。
  • 修復了直接來自資料表中 text 欄位的 jsonb 下標
  • 重新載入時,會採用更新後的 checkpoint_completion_target 值。
  • recovery_target_xid 模式下,記錄正確的結束時間戳記。
  • 修復了使用邏輯複製時允許超過 100 個欄位清單的問題。
  • 避免在 VACUUM 結束時出現「錯誤的元組長度」錯誤。
  • 使用查詢管線時,避免在 ANALYZE 之後立即提交。
  • 對查詢規劃器進行了多項修復,其中包括一個提供更多機會使用具有分區式聯接的記憶體緩存
  • 修復了統計資訊收集,以正確處理關係變更類型的情況(例如,資料表轉換為檢視表)。
  • 確保在執行片語比對時可以取消 全文檢索 查詢。
  • 修復了 DROP DATABASE 和邏輯複製工作程序之間的死鎖。
  • 修復了 CREATE SUBSCRIPTION 連線嘗試失敗時的小型會期生命週期記憶體洩漏。
  • 改善了啟用 hot_standby 的複本在處理 SELECT 查詢時的效能。
  • 對邏輯解碼進行了幾項修復,以提高其穩定性和膨脹處理能力。
  • 修復了預設邏輯複製外掛程式 pgoutput,使其不傳送未列在資料表複製欄位清單中的欄位。
  • 修復了 pg_basebackup 中非常大的表格空間地圖檔案可能發生的損壞。
  • public 結構描述具有非預設擁有者時,從 --if-exists 模式下的 pg_dump 中移除無害的警告。
  • 修復了 psql 指令 \sf\ef 以處理具有 SQL 標準函式主體(即 BEGIN ATOMIC)的 SQL 語言函式。
  • 修復了 ALTER FUNCTION/PROCEDURE/ROUTINE ... SET SCHEMA 的 Tab 鍵自動完成功能。
  • 更新 pageinspect 擴充功能,以將其磁碟存取函式標記為 PARALLEL RESTRICTED
  • 修復了 seg 擴充功能,以防止在輸入數字超過 127 位數時崩潰或列印垃圾資訊。

此版本還將時區資料檔案更新為 tzdata 版本 2022g,以進行格陵蘭和墨西哥的 DST 法律變更,以及加拿大北部、哥倫比亞和新加坡的歷史修正。 值得注意的是,一個新的時區 America/Ciudad_Juarez 已從 America/Ojinaga 中分離出來。

如需完整的變更列表,請參閱發布說明

更新

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

跳過一個或多個更新版本的使用者可能需要執行其他更新後步驟; 有關詳細資訊,請參閱早期版本的發布說明。

更多詳情,請參閱發行說明

連結