PostgreSQL:PostgreSQL 13.4、12.8、11.13、10.18、9.6.23 和 14 Beta 3 已發布!

由 PostgreSQL Global Development Group 於 2021-08-12 發布
PostgreSQL 專案 安全性

PostgreSQL Global Development Group 已經發布了我們資料庫系統所有受支援版本的更新,包括 13.4、12.8、11.13、10.18 和 9.6.23,以及 PostgreSQL 14 的第三個 Beta 版本。此版本修補了一個安全性漏洞,並修正了過去三個月回報的 75 個以上的錯誤。

如需完整的變更列表,請查看發布說明

PostgreSQL 9.6 EOL 即將到期

PostgreSQL 9.6 將於 2021 年 11 月 11 日停止接收修補程式。如果您在生產環境中運行 PostgreSQL 9.6,我們建議您規劃升級到更新、受支援的 PostgreSQL 版本。請參閱我們的版本發布政策以取得更多資訊。

安全性問題

CVE-2021-3677:某些查詢中的記憶體洩漏

受影響的版本:11 - 13。

精心設計的查詢可以讀取伺服器記憶體的任意位元組。在預設配置中,任何經過身份驗證的資料庫使用者都可以隨意完成此攻擊。該攻擊不需要建立物件的能力。如果伺服器設定包含 max_worker_processes=0,則已知的此攻擊版本是不可行的。但是,未發現的攻擊變體可能獨立於該設定。

關於 PostgreSQL 14 Beta 的說明

此版本標誌著 PostgreSQL 14 的第三個 Beta 版本發布,並使社群更接近大約在第三季度末正式發布。

本著開源 PostgreSQL 社群的精神,我們強烈建議您在資料庫系統中測試 PostgreSQL 14 的新功能,以協助我們消除可能存在的任何錯誤或其他問題。雖然我們不建議您在生產環境中運行 PostgreSQL 14 Beta 3,但我們鼓勵您找到方法針對此 Beta 版本運行您的典型應用程式工作負載。

您的測試和回饋將有助於社群確保 PostgreSQL 14 版本維持我們提供世界上最先進的開源關聯式資料庫之穩定、可靠版本的標準。

錯誤修正與改進

此更新還修復了過去幾個月回報的 75 個以上的錯誤。其中一些問題僅影響版本 13,但許多問題影響所有受支援的版本。

其中一些修復包括

  • 完全停用 TLS/SSL 重新協商。 之前已停用此功能,但伺服器仍會執行用戶端啟動的重新協商請求。
  • 在程序中的 COMMITROLLBACK 之後,還原入口層級的快照。 此變更修正了在 COMMIT/ROLLBACK 之後立即嘗試提取 tosted 值會失敗,並出現類似「沒有已知的快照」或「toast 值的缺少區塊編號 0」等錯誤的情況。
  • 避免在保存讀取不穩定查詢的游標的輸出時發生錯誤行為。
  • 拒絕 WITH 中的查詢重寫為僅 NOTIFY 的情況,這會導致崩潰。
  • 數值型別的幾個邊緣情況修正。
  • ALTER EXTENSION 現在在新增或移除成員物件時鎖定擴充功能。
  • 當分割表格的觸發程序複製到新的分割區時,現在會複製「已啟用」狀態。
  • 避免在為 REFRESH MATERIALIZED VIEW CONCURRENTLY 產生的查詢中發生別名衝突。 此命令在包含具有特定名稱(尤其是 mvnewdata)之欄位的實體化檢視上失敗。
  • 不允許在 GENERATED 表達式中使用整列變數。
  • 針對與列層級安全性 (RLS) 策略相關的 DROP OWNED BY 行為進行了幾項修正。
  • 重新允許 CREATE COLLATION 命令中使用舊式的 Windows 地區設定名稱。
  • walsender 現在在 pg_stat_activity 中顯示其最新的複製命令,而不是僅顯示最新的 SQL 命令。
  • 當移除 postgresql.conf 中的相關條目時,pg_settings.pending_restart 現在顯示為 true
  • 在 64 位元 Windows 上,允許 work_mem * hash_mem_multiplier 的有效值超過 2GB。
  • 當交易中止記錄的 WAL 重播導致檔案截斷時,更新最小復原點。
  • 在複製槽失效後,正確推進最舊的必要 WAL 區段界線。 這修正了伺服器的 WAL 儲存空間可能耗盡的問題。
  • 改進平行 B 樹索引建置之排序階段的進度報告。
  • 修正分割表格更新的邏輯複製以及觸發分割表格的 AFTER 觸發程序時發生的各種崩潰情況。
  • 防止 SP-GiST 索引插入中的無限迴圈。
  • 確保 SP-GiST 索引插入可以透過查詢取消請求來終止。
  • psql 和其他用戶端程式中,處理編碼無效的資料時,避免超過字串的末端。
  • 修正 pg_dump 以正確處理分割表格上其啟用狀態與其父觸發程序狀態不同的觸發程序。
  • 避免在對不同時區中建立的檔案運行 pg_restore 時出現「標頭中的建立日期無效」警告。
  • pg_upgrade 現在會延續舊安裝的 oldestXID 值,並且不再強制執行反包裝 VACUUM。」
  • 擴展 pg_upgrade 以偵測並警告應升級的擴充功能。
  • 修正 contrib/postgres_fdw 以更好地與產生的欄位配合使用,只要外部表格中的產生的欄位代表遠端表格中的產生的欄位。

如需可用變更的完整清單,請查看發布說明

更新

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

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

如需更多詳細資訊,請參閱發布說明

注意:PostgreSQL 9.6 將於 2021 年 11 月 11 日停止接收修補程式。 請參閱我們的版本發布政策以取得更多資訊。

PostgreSQL 14 Beta 3 說明

PostgreSQL 14 Beta 3 引入了 multirange 型別的 unnest 函數以及幾項錯誤修正。

如需 PostgreSQL 14 Beta 3 中包含的變更清單,請查看未解決項目頁面

https://wiki.postgresql.org/wiki/PostgreSQL_14_Open_Items#resolved_before_14beta3

若要從 Beta 2、Beta 1 或 PostgreSQL 的早期版本升級到 PostgreSQL 14 Beta 3,您需要使用類似於在 PostgreSQL 的主要版本之間升級的策略(例如 pg_upgradepg_dump / pg_restore)。 如需更多資訊,請造訪升級上的文件部分。

錯誤與相容性測試

PostgreSQL 的每個版本的穩定性極大程度取決於您,也就是社群,使用您的工作負載和測試工具來測試即將推出的版本,以便在 PostgreSQL 14 正式發布之前找到錯誤和迴歸。由於目前是 Beta 版,資料庫行為、功能細節和 API 仍有可能進行小幅變更。您的意見回饋和測試將有助於確定新功能的最終調整,因此請盡快進行測試。使用者測試的品質有助於決定我們何時可以發布最終版本。

PostgreSQL Wiki 上公開提供一份未解決問題的清單。您可以使用 PostgreSQL 網站上的此表單回報錯誤

https://postgres.tw/account/submitbug/

Beta 版時程

這是 14 版本的第三個 Beta 版本。PostgreSQL 專案將根據測試需要發布額外的 Beta 版本,然後發布一個或多個候選版本,直到 2021 年底發布最終版本。如需更多資訊,請參閱Beta 測試頁面。

連結