2025年9月25日: PostgreSQL 18 釋出!

PostgreSQL 10.5、9.6.10、9.5.14、9.4.19、9.3.24 和 11 Beta 3 釋出!

釋出於 2018-08-09,作者:PostgreSQL 全球開發組
PostgreSQL 專案

PostgreSQL 全球開發組釋出了對所有支援版本資料庫系統的更新,包括 10.5、9.6.10、9.5.14、9.4.19、9.3.24。本次釋出修復了兩個安全問題以及過去三個月報告的 bug。

如果您有不受信任的使用者訪問您的系統,並且您正在執行 PostgreSQL 9.5 或更新版本,或者已經安裝了 dblinkpostgres_fdw 擴充套件,則必須儘快應用此更新。所有其他使用者可以在下次方便的停機時間進行升級。

請注意,PostgreSQL 在 10.0 版本釋出後更改了其版本號方案,因此從任何 10.x 版本更新到 10.5 版本被視為小版本更新。

PostgreSQL 全球開發組還宣佈,PostgreSQL 11 的第三個 beta 版本現已可供下載。此版本包含了 PostgreSQL 11 最終版本中所有功能(儘管釋出的一些細節在最終版本之前可能會有所更改),以及在第二個 beta 版本期間報告的 bug 修復。

安全問題

本次釋出解決了兩個安全漏洞

CVE-2018-10915:某些主機連線引數會繞過客戶端安全防禦

libpq 是 PostgreSQL 的客戶端連線 API,也被其他連線庫使用,存在一個內部問題,在嘗試重新連線時不會重置所有連線狀態變數。特別是,決定連線是否需要密碼的狀態變數不會被重置,這可能允許使用需要 libpq 的功能(如 dblinkpostgres_fdw 擴充套件)的使用者登入他們本不應訪問的伺服器。

您可以透過在 PostgreSQL shell 中執行以下命令來檢查您的資料庫是否安裝了任一擴充套件

\dx dblink|postgres_fdw

建議使用者儘快升級其 libpq 安裝。

PostgreSQL 全球開發組感謝 Andrew Krasichkov 報告此問題。

CVE-2018-10925INSERT ... ON CONFLICT DO UPDATE 中的記憶體洩露和授權缺失

能夠發出 CREATE TABLE 的攻擊者可以使用 upsert (INSERT ... ON CONFLICT DO UPDATE) 查詢讀取伺服器記憶體中的任意位元組。預設情況下,任何使用者都可以利用這一點。擁有特定 INSERT 許可權和給定表上至少一個列的 UPDATE 許可權的使用者也可以使用檢視和 upsert 查詢來更新其他列。

錯誤修復和改進

此更新還修復了過去幾個月報告的 40 多個 bug。其中一些問題僅影響版本 10,但許多問題影響所有支援的版本。

這些修復包括

  • 幾項與 VACUUM 相關的修復,包括可能導致某些系統目錄表資料損壞的問題
  • 幾項用於重放預寫日誌的修復,包括一個場景,即剛剛提升為主伺服器的備用伺服器在第一次恢復後檢查點之前崩潰時不會重新啟動
  • 對重放預寫日誌的幾項效能改進
  • 幾項用於邏輯複製和邏輯解碼的修復,包括確保邏輯 WAL 傳送器正確報告流式狀態
  • 允許在單使用者模式下刪除複製槽
  • 修復使 variance 和類似的聚合函式在並行查詢執行時返回準確結果
  • 修復 SQL 標準的 FETCH FIRST 語法,允許使用引數 ($n),正如標準所期望的
  • 修復以確保進行並行索引掃描的程序會響應訊號,例如中止查詢的訊號
  • 修復 EXPLAIN 對並行工作負載中資源使用情況(特別是緩衝區訪問)的核算
  • 幾項針對查詢規劃器的修復,包括改進雜湊連線的成本估算,以及選擇為複合型別列上的合併連線使用索引
  • 修復與 Linux 或 FreeBSD 多 CPU 系統上 POSIX 訊號量相關的效能迴歸
  • 修復 GIN 索引,該修復可能導致從 PostgreSQL 9.4 之前的版本升級後出現斷言失敗
  • 修復 SHOW ALL 以向允許讀取所有設定的角色顯示超級使用者配置設定
  • 修復 COPY FROM .. WITH HEADER 在處理 4,294,967,296 行後會丟棄一行的錯誤
  • 幾項 XML 支援的修復,包括使用文件節點作為 XPath 查詢的上下文,如 SQL 標準中所定義,這會影響 xpathxpath_exists 函式,以及 XMLTABLE
  • 修復 libpq 在某些使用 hostaddr 的情況下的問題
  • 幾項 ecpg 在 Windows 上的修復
  • 修復 Windows 客戶端程式中的密碼提示,以正確停用回顯
  • 幾項 pg_dump 的修復,包括正確輸出約束索引的 REPLICA IDENTITY 屬性
  • 使 pg_upgrade 檢查舊伺服器是否已乾淨關閉

此更新還包含 tzdata 版本 2018e,並對朝鮮進行了更新。2018e 版本還重新引入了最初在 2018a 版本中引入的負 DST 更改,這會影響愛爾蘭(1971-)的歷史和當前時間戳,以及奈米比亞(1994-2017)和前捷克斯洛伐克(1946-1947)的歷史時間戳。如果您的應用程式儲存了受影響日期範圍內的這些時區的時間戳,我們要求您進行測試,以確保您的應用程式按預期執行。

PostgreSQL 11 Beta 3 修復和改進

PostgreSQL 11 Beta 3 包含了累積釋出中的適用 bug 修復以及其自身的 20 多個修復。有關 PostgreSQL 11 Beta 3 修復的完整列表,請訪問 待處理專案頁面。

PostgreSQL 9.3 的 EOL 警告

PostgreSQL 9.3 將在下一次計劃於 11 月釋出的版本後生命週期結束。我們敦促使用者儘快開始計劃升級到更新版本的 PostgreSQL。有關更多資訊,請參閱我們的版本策略。

更新

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

跳過了一個或多個更新版本的使用者可能需要執行額外的、更新後的步驟;有關詳細資訊,請參閱早期版本的釋出說明。

升級到 PostgreSQL 11 Beta 3

要從 Beta 1 或 2 或早期版本的 PostgreSQL 升級到 PostgreSQL 11 Beta 3,您需要使用與升級 PostgreSQL 主版本(例如 pg_upgradepg_dump / pg_restore)類似的策略。有關更多資訊,請訪問關於 升級的文件部分。

PostgreSQL 11 Beta 計劃和測試

這是 11 版本的第三個 beta 版本。PostgreSQL 專案將在需要時釋出其他 beta 版本進行測試,然後釋出一個或多個候選版本,直到 2018 年底最終釋出。有關更多資訊,請參閱 Beta 測試頁面。

每個 PostgreSQL 版本的穩定性在很大程度上取決於您——社群——透過您的工作負載和測試工具測試即將釋出的版本,以便在 PostgreSQL 11 釋出之前找出 bug 和迴歸。我們非常感謝迄今為止所做的所有測試,隨著我們越來越接近最終釋出。您的反饋和測試將有助於確定新功能的最終微調,請繼續進行測試。使用者測試的質量有助於決定我們何時可以進行最終釋出。

PostgreSQL wiki 上公開提供了一個 待處理專案列表。您可以使用 PostgreSQL 網站上的此表單 報告 bug

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

連結