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 通用可用性之前,使用您的工作負載和測試工具測試即將釋出版本,以發現 Bug 和迴歸。由於這是 Beta 版,資料庫行為、功能細節和 API 仍有可能進行少量更改。您的反饋和測試將有助於確定新功能的最終調整,因此請在不久的將來進行測試。使用者測試的質量將決定我們何時可以釋出最終版本。
PostgreSQL Wiki 上公開提供了一個 未解決問題 列表。您可以使用 PostgreSQL 網站上的此表單 報告 Bug。
https://postgres.tw/account/submitbug/
如果您對此版本公告有任何更正或建議,請將其傳送至 pgsql-www@lists.postgresql.org 公共 郵件列表。