PostgreSQL 全球開發團隊已發布所有支援的 PostgreSQL 版本更新,包括 16.4、15.8、14.13、13.16 和 12.20,以及 PostgreSQL 17 的第三個 Beta 版本。此版本修復了 1 個安全性漏洞和過去幾個月回報的超過 55 個錯誤。
如需完整的變更列表,請參閱發布說明。
PostgreSQL 12 將於 2024 年 11 月 14 日停止接收修復。如果您在生產環境中執行 PostgreSQL 12,我們建議您規劃升級到較新、受支援的 PostgreSQL 版本。請參閱我們的版本政策以獲取更多資訊。
CVSS v3.1 基本分數:8.8
受支援的漏洞版本:12 - 16。
能夠建立和刪除非暫時物件的攻擊者可以注入 SQL 程式碼,該程式碼將由同時執行的 pg_dump
工作階段執行,並具有執行 pg_dump
角色的權限(通常是超級使用者)。 攻擊涉及使用將執行惡意程式碼的視圖或外部表替換序列或類似物件。 為了防止這種情況,引入一個新的伺服器參數 restrict_nonsystem_relation_kind
,它可以禁用非內建視圖的擴展以及對外部表的訪問,並教導 pg_dump
在可用時設定它。 請注意,只有當 pg_dump
及其轉儲的伺服器都足夠新以具有此修復時,才能防止攻擊。
PostgreSQL 專案感謝 Noah Misch 回報此問題。
此更新修復了過去幾個月回報的超過 55 個錯誤。 下面列出的問題會影響 PostgreSQL 16。 其中一些問題也可能影響其他受支援的 PostgreSQL 版本。
VACUUM
中的無限迴圈。ALTER TABLE DETACH ... PARTITION CONCURRENTLY
期間的分區修剪設定。CALL
語句參數的穩定函數的行為。pg_sequence_last_value()
現在返回 NULL
而不是拋出錯誤。websearch_to_tsquery()
中被忽略運算符的解析。INSERT ... DEFAULT
目標視圖列的可更新性。ALTER TABLE ... SET LOGGED|UNLOGGED
期間鎖定擁有的序列。AFTER
觸發器不再存在,則不要拋出錯誤。INSERT ... ON CONFLICT
的仲裁索引選擇,當所需的索引具有表達式或謂詞時,例如,透過可更新的視圖。ALTER TABLE
修改另一個工作階段的臨時表。CREATE TABLE ... LIKE STATISTICS
中表達式上擴展統計資訊的處理。MIN()
或 MAX()
聚合產生的子查詢。FOR i IN 1_001..1_002
)。pg_restore -l
正確報告相依的目錄條目。pg_stat_statements
現在為出現在 SQL 語言函數中的實用程式(非 SELECT
/INSERT
/UPDATE
)語句傳遞查詢 ID。postgres_fdw
在將外部表映射到非平凡遠端視圖時的問題。postgres_fdw
不再將 FETCH FIRST WITH TIES
子句發送到遠端伺服器。所有 PostgreSQL 更新版本都是累積的。 與其他次要版本一樣,使用者不需要轉儲和重新載入其資料庫或使用 pg_upgrade
即可套用此更新版本; 您可以簡單地關閉 PostgreSQL 並更新其二進制檔案。
跳過一個或多個更新版本的使用者可能需要執行其他更新後步驟; 請參閱先前版本的發布說明以獲取詳細資訊。
有關更多詳細資訊,請參閱發布說明。
此版本標誌著 PostgreSQL 17 的第三個 beta 版本,並使社群更接近暫定於第三季度末的一般可用性。
本著開源 PostgreSQL 社群的精神,我們強烈建議您在您的系統上測試 PostgreSQL 17 的新功能,以幫助我們消除可能存在的錯誤或其他問題。 雖然我們不建議您在生產環境中執行 PostgreSQL 17 Beta 3,但我們鼓勵您找到方法來針對此 beta 版本執行您的典型應用程式工作負載。
您的測試和回饋將幫助社群確保 PostgreSQL 17 版本堅持我們交付世界上最先進的開源關係資料庫的穩定、可靠版本的標準。 請閱讀更多關於我們的 beta 測試流程以及您如何做出貢獻
https://postgres.tw/developer/beta/
若要從早期版本的 PostgreSQL 升級到 PostgreSQL 17 Beta 3,您需要使用類似於在 PostgreSQL 主要版本之間升級的策略(例如 pg_upgrade
或 pg_dump
/ pg_restore
)。 有關更多資訊,請訪問關於升級的文件部分。
PostgreSQL 17 Beta 3 中的修復和更改包括
standby_slot_names
參數重新命名為 synchronized_standby_slots
。pg_combinebackup --clone
。pg_createsubscriber
,使其能處理包含空格的資料庫名稱。pg_createsubscriber
時,它會移除先前存在的訂閱。pg_upgrade
期間檢索訂閱資訊的效率。sslmode=prefer
期間的 TLS 回退行為,使其在伺服器於啟動過程中發送錯誤時,會產生錯誤。pg_basebackup
的增量備份時,會發生此錯誤。pg_upgrade --transaction-size
可能導致後端使用超過一個數量級 RAM 的問題。請參閱發布說明以獲取完整的新增和變更功能列表,以及PostgreSQL 17 開放項目以獲取有關修復和變更的更多詳細資訊。
每個 PostgreSQL 版本的穩定性極大地取決於您(社群),在 PostgreSQL 17 正式發布之前,使用您的工作負載和測試工具測試即將推出的版本,以找出錯誤和回歸。 由於這是 Beta 版本,因此資料庫行為、功能細節和 API 仍有可能進行細微變更。 您的回饋和測試將有助於確定新功能的最終調整,因此請在近期進行測試。 使用者測試的品質有助於確定我們何時可以發布最終版本。
開放問題的列表已在 PostgreSQL Wiki 上公開提供。您可以使用 PostgreSQL 網站上的此表格回報錯誤。
https://postgres.tw/account/submitbug/
如果您對此發布公告有更正或建議,請將它們發送到 pgsql-www@lists.postgresql.org 公共郵件列表。