PostgreSQL 全球開發團隊已發布了對我們資料庫系統所有支援版本的更新,包括 11.4、10.9、9.6.14、9.5.18 和 9.4.23,以及 PostgreSQL 12 的第二個 Beta 版本。 此版本修復了一個安全性問題和自 5 月份上次累計更新以來的 25 多個錯誤。
此版本是在正常更新發布時間表之外發布的,因為安全性漏洞被認為非常嚴重,需要盡快發布修復程式。 執行 PostgreSQL 10、PostgreSQL 11 或 PostgreSQL 12 Beta 的使用者應盡快升級。
所有其他使用者應計畫在下次排定的停機時間套用此更新。
此版本修補了一個安全性漏洞
受影響的版本:10、11、12 Beta。
已驗證的使用者可以透過將自己的密碼變更為精心製作的值來建立堆疊型緩衝區溢位。 除了能夠使 PostgreSQL 伺服器崩潰之外,還可以進一步利用它來以 PostgreSQL 作業系統帳戶的身分執行任意程式碼。
此外,惡意伺服器可以在 SCRAM 驗證過程中傳送特別製作的訊息,並導致啟用 libpq 的用戶端崩潰或以用戶端作業系統帳戶的身分執行任意程式碼。
透過升級和重新啟動 PostgreSQL 伺服器以及 libpq 安裝來解決此問題。 建議所有執行 PostgreSQL 10、11 和 12 Beta 的使用者盡快升級。
PostgreSQL 專案感謝 Alexander Lakhin 報告此問題。
自 5 月份的上次累計更新以來,此更新還修復了 25 多個錯誤。 其中一些問題僅影響版本 11,但許多問題影響所有支援的版本。
其中一些修復包括
pg_dump
現在使用 CREATE TABLE
和 ALTER TABLE .. ATTACH PARTITION
重新建立資料表分割區,而不是在建立命令中包含 PARTITION OF
initdb
確定要選擇哪個系統時區的方式(如果時區有等效的名稱)。 也明確地優先選擇 UTC
而不是 UCT
ALTER TABLE .. ALTER COLUMN TYPE
的失敗COMMENT
命令的失敗json_to_record()
和 json_populate_record()
中的 JSON 類型輸出欄位{1,1}
量詞的不正確最佳化INCLUDE
子句涵蓋的欄位的邊緣案例失敗期間的問題,該問題在 VACUUM 期間會出現錯誤。 如果您受到此問題的影響,則需要重新索引特定索引pg_dump
和 pg_dumpall
針對資料庫和資料表空間發出的 GRANT 命令的順序reindexdb
的誤導性錯誤報告vacuumdb
會傳回正確的狀態contrib/auto_explain
,以避免在平行查詢中引起問題,從而導致類似「在 shm TOC 中找不到金鑰 N」的失敗contrib/postgres_fdw
中本機 BEFORE ROW UPDATE
觸發程式可能進行的資料修改SQL_ASCII
並且我們嘗試記錄非 ASCII 字串時發生失敗所有 PostgreSQL 更新版本都是累計的。 與其他次要版本一樣,使用者不需要傾印和重新載入其資料庫或使用 pg_upgrade
即可套用此更新版本;您可以簡單地關閉 PostgreSQL 並更新其二進位檔。
如果您使用 INCLUDE
子句的 B 樹索引之一受到上述問題的影響,則需要重新索引任何受影響的索引。 該問題會根據 VACUUM 期間發生的錯誤來顯現出來。 您可以在此處閱讀有關重新索引的更多資訊
https://postgres.tw/docs/current/sql-reindex.html
跳過一個或多個更新版本的使用者可能需要執行其他更新後步驟;有關詳細資訊,請參閱早期版本的發布說明。
PostgreSQL 9.4 將於 2020 年 2 月 13 日停止接收修復程式。 有關更多資訊,請參閱我們的 版本控制政策。
這包括版本 12 的第二個 Beta 版。 PostgreSQL 專案將根據測試需要發布其他 Beta 版,然後發布一個或多個候選版本,直到 2019 年底的最終版本。 有關更多資訊,請參閱 Beta 測試頁面。