PostgreSQL 全球開發團隊已發布我們資料庫系統所有支援版本的更新,包含 12.4、11.9、10.14、9.6.19 和 9.5.23,以及 PostgreSQL 13 的第三個 Beta 版本。此版本修補了兩個安全性漏洞,並修正了過去三個月回報的 50 多個錯誤。
請盡早安排更新。
受影響版本:10 - 12。
PostgreSQL 的 search_path
設定決定了搜尋表格、函數、運算子等的 schema。 CVE-2018-1058 的修復導致大多數 PostgreSQL 提供的客戶端應用程式清理 search_path
,但邏輯複製仍然保持 search_path
不變。複製發布者或訂閱者資料庫的使用者可以在 public
schema 中建立物件,並利用它們以執行複製的身分(通常是超級使用者)執行任意 SQL 函數。已採用記錄在案的安全 schema 使用模式 的安裝不受此漏洞影響。
PostgreSQL 專案感謝 Noah Misch 回報此問題。
CREATE EXTENSION
中不受控制的搜尋路徑元素。受影響版本:9.5 - 12。 安全團隊通常不會測試不受支援的版本,但這個問題已經存在很久了。
當超級使用者執行某些 CREATE EXTENSION
語句時,使用者可能能夠以該超級使用者的身分執行任意 SQL 函數。 攻擊者必須具有在新擴充套件的 schema 或先決條件擴充套件的 schema 中建立物件的權限。並非所有擴充套件都容易受到攻擊。
除了修正 PostgreSQL 提供的擴充套件之外,PostgreSQL 全球開發團隊還發布了第三方擴充套件作者的安全指南。
PostgreSQL 專案感謝 Andres Freund 回報此問題。
此版本標誌著 PostgreSQL 13 的第三個 beta 版本,並使社群更接近今年秋季的正式發布。
秉持 PostgreSQL 開源社群的精神,我們強烈建議您在資料庫系統中測試 PostgreSQL 13 的新功能,以幫助我們消除可能存在的任何錯誤或其他問題。雖然我們不建議您在生產環境中執行 PostgreSQL 13 Beta 3,但我們鼓勵您找到方法針對此 beta 版本執行典型的應用程式工作負載。
您的測試和回饋將幫助社群確保 PostgreSQL 13 版本秉持我們的標準,提供世界上最先進的開源關聯式資料庫的穩定、可靠版本。
PostgreSQL 9.5 將於 2021 年 2 月 11 日停止接收修補程式。 如果您在生產環境中執行 PostgreSQL 9.5,我們建議您規劃升級到較新的、受支援的 PostgreSQL 版本。 請參閱我們的 版本控制政策 以取得更多資訊。
此更新還修復了過去幾個月中報告的 50 多個錯誤。 其中一些問題僅影響版本 12,但許多問題影響所有受支援的版本。
其中一些修復包括
pg_replication_slot_advance()
現在會更新最舊的 xmin 和 LSN 值,因為未能執行此操作可能會阻止資源(例如 WAL 檔案)被清除。ts_headline()
中的效能降低問題。pg_read_file()
和相關函數讀取到 EOF,這修正了與管道和其他虛擬檔案的相容性問題。NaN
值,這些值在 SQL 和 JSON 中都不存在。NaN
輸入的多個修正。 這修正了 PostgreSQL 12 中的一項變更,其中 NaN
值導致以下彙總發出 0
而不是 NaN
的值:corr()
、covar_pop()
、regr_intercept()
、regr_r2()
、regr_slope()
、regr_sxx()
、regr_sxy()
、regr_syy()
、stddev_pop()
和 var_pop()
。24:00:00
的 time
和 timetz
值。EXPLAIN
的多個修正,包括在計劃使用具有「Gather Merge」節點的平行工作程序時,修正回報資源使用情況的問題。ALTER TABLE
中約束重新驗證的時序,這可能會導致奇怪的錯誤。pg_control
可能會以不一致的校驗和寫出的問題,如果資料庫在下次 pg_control
更新之前崩潰,這可能會導致無法重新啟動資料庫。pg_dump
和 pg_basebackup
中正確回報磁碟空間不足錯誤。pg_restore
的多個修正,包括修正對具有表格級別和欄位級別權限的表格執行平行還原的問題。pg_upgrade
以確保它在 vacuum_defer_cleanup_age
設定為 0
的情況下執行。pg_rewind
處理來源資料目錄中剛刪除檔案的方式。contrib/dblink
中正確初始化本地狀態的問題,這可能會導致 dblink_close()
在遠端伺服器上發出意外的 COMMIT
。contrib/amcheck
,使其不回報已刪除的空索引頁面,因為這在 WAL 重播期間是正常的。如需可用的完整變更清單,請參閱版本說明。
所有 PostgreSQL 的更新版本都是累積性的。與其他小版本更新一樣,使用者不需要為了套用此次更新而傾印和重新載入資料庫,也不需要使用 pg_upgrade
。您只需關閉 PostgreSQL 並更新其二進位檔案即可。
跳過一個或多個更新版本的使用者可能需要執行額外的更新後步驟;請參閱先前版本的發布說明以了解詳細資訊。
如需更多詳細資訊,請參閱發布說明。
注意:PostgreSQL 9.5 將於 2021 年 2 月 11 日停止接收修復。請參閱我們的版本政策以了解更多資訊。
PostgreSQL 13 Beta 3 引入了一個新的配置參數 hash_mem_multiplier
,允許使用者調整分配給雜湊聚合的記憶體量。這讓使用者可以更好地控制雜湊聚合是否使用磁碟儲存空間或保留在記憶體中,而後者是 PostgreSQL 13 之前的唯一選項。
PostgreSQL 13 Beta 3 也移除了 hashagg_avoid_disk_plan
配置參數,該參數之前也稱為 enable_hashagg_disk
。
有關 PostgreSQL 13 Beta 3 中包含的變更清單,請查看未解決問題頁面。
https://wiki.postgresql.org/wiki/PostgreSQL_13_Open_Items#resolved_before_13beta3
要從 Beta 2、Beta 1 或更早版本的 PostgreSQL 升級到 PostgreSQL 13 Beta 3,您需要使用類似於 PostgreSQL 主要版本之間升級的策略(例如 pg_upgrade
或 pg_dump
/ pg_restore
)。如需更多資訊,請訪問有關升級的文件章節。
每個 PostgreSQL 版本的穩定性很大程度上取決於您,也就是社群,使用您的工作負載和測試工具測試即將發布的版本,以便在 PostgreSQL 13 正式發布之前找到錯誤和回歸。由於這是一個 Beta 版,因此資料庫行為、功能細節和 API 仍可能進行細微更改。您的回饋和測試將有助於確定新功能的最終調整,因此請盡快進行測試。使用者測試的品質有助於確定我們何時可以發布最終版本。
未解決問題的清單可在 PostgreSQL wiki 中公開取得。您可以使用 PostgreSQL 網站上的此表單報告錯誤。
https://postgres.tw/account/submitbug/
這是版本 13 的第三個 Beta 版。PostgreSQL 專案將根據測試需要發布額外的 Beta 版,然後發布一個或多個候選版本,直到 2020 年底的最終版本。如需更多資訊,請參閱Beta 測試頁面。