PostgreSQL 10.4、9.6.9、9.5.13、9.4.18 和 9.3.23 已發布!

發布於 2018-05-10,由 PostgreSQL Global Development Group
PostgreSQL 專案

PostgreSQL Global Development Group 已發布我們資料庫系統所有支援版本的更新,包括 10.4、9.6.9、9.5.13、9.4.18、9.3.23。此版本修復了一個安全性問題以及過去三個月報告的多個錯誤。使用者應計劃在下一次方便的停機時間更新。

請參閱「更新」章節,了解安全性修復和「不正確的 volatility 和 parallel-safety 標記」修復的安裝後步驟。

請注意,PostgreSQL 在發布 10.0 版時更改了其版本控制方案,因此從 10.0、10.1、10.2 或 10.3 更新到 10.4 版被視為小版本更新。

安全性問題

此版本已修復一個安全性漏洞

  • CVE-2018-1115:pg_logfile_rotate() 函數上過於寬鬆的存取控制清單

請參閱下面的「更新」章節,了解更新後步驟。

錯誤修復和改進

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

這些修復包括

  • 修正多個內建函數上不正確的 volatility 和 parallel-safety 標記,以確保正確的查詢計劃最佳化
  • 針對分割區的多項修復,包括潛在的崩潰,以及允許 TRUE 和 FALSE 用作分割區邊界
  • 修復了新的 TOAST 值可能被分配給已刪除但尚未進行 vacuum 的 TOAST OID 的問題,這會導致類似於 "unexpected chunk number 0 (expected 1) for toast value nnnnn" 的錯誤
  • 修復了 32 位元平台上具有 bigint identity 欄位的 "CREATE TABLE ... LIKE"
  • 修復了重複執行 hash joins 的查詢執行期間的記憶體洩漏
  • 圍繞使用 GROUPING SET 的查詢的多個崩潰修復
  • 避免在提交預備交易時發生查詢取消或會話終止中斷時發生失敗
  • 減少 autovacuum 工作排程期間的鎖定,這可以防止潛在的工作並行性損失
  • 修復了可能緩慢執行 REFRESH MATERIALIZED VIEW CONCURRENTLY 的問題
  • 圍繞使用「僅索引」掃描的查詢計劃的多項修復
  • 避免在 SERIALIZABLE 或 REPEATABLE READ 交易隔離下執行的並行 CREATE INDEX CONCURRENTLY 命令中發生死鎖
  • 針對 SP-GiST 索引的多項修復,包括一個對文字欄位進行定序感知搜尋的修復
  • 與計算部分 GiST、SP-GiST 和 Bloom 索引中 tuples 數量相關的修復
  • 針對邏輯解碼和複寫的多項修復
  • 修復了在 dumps 中錯誤引用清單值 GUC 變數(例如 local_preload_libraries、session_preload_libraries、shared_preload_libraries、temp_tablespaces)的值的問題
  • 針對 pg_stat_activity 的多項修復
  • 針對 ecpg 的多項修復
  • 修復了 pg_recvlogical 以確保與 10 之前發布的 PostgreSQL 版本相容
  • 針對 pg_rewind 的多項修復

此更新還包含 tzdata release 2018d,其中包含 Palestine 和 Antarctica (Casey Station) 的更新,以及葡萄牙及其殖民地,以及 Enderbury、Jamaica、Turks & Caicos Islands 和 Uruguay 的歷史修正。

更新

所有 PostgreSQL 更新版本都是累積的。與其他小版本一樣,使用者不需要 dump 和 reload 他們的資料庫或使用 pg_upgrade 來應用此更新版本(雖然對於此版本,請參閱關於「volatility 和 parallel-safety 標記」的註解);您可以簡單地關閉 PostgreSQL 並更新其二進位檔。

跳過一個或多個更新版本的用戶可能需要運行其他更新後步驟;請參閱早期版本的發布說明以獲取詳細資訊。

CVE-2018-1115 的安裝後步驟

如果您在任何 PostgreSQL 9.6 或 10 版本中安裝了「adminpack」,則需要讓您的資料庫管理員在安裝了「adminpack」的每個資料庫中執行以下命令

ALTER EXTENSION adminpack UPDATE;

函數標記的安裝後步驟

應標記為 "volatile" 的函數

  • cursor_to_xml
  • cursor_to_xmlschema
  • query_to_xml
  • query_to_xml_and_xmlschema
  • query_to_xmlschema

應標記為 "parallel-unsafe" 的函數

  • binary_upgrade_create_empty_extension
  • brin_desummarize_range
  • brin_summarize_new_values
  • brin_summarize_range
  • cursor_to_xml
  • cursor_to_xmlschema
  • gin_clean_pending_list
  • pg_import_system_collations
  • ts_rewrite
  • ts_stat

如果您使用上述任何函數,您可以透過以下方式更新標記

選項 1:在您使用的每個資料庫的 "pg_proc" 表中手動更新標記

這些函數。您可以透過以資料庫超級使用者身份執行以下命令來實現此目的

/* Functions that should be marked "volatile" */
ALTER FUNCTION pg_catalog.cursor_to_xml(refcursor, int, boolean, boolean, text) VOLATILE;
ALTER FUNCTION pg_catalog.cursor_to_xmlschema(refcursor, boolean, boolean, text) VOLATILE;
ALTER FUNCTION pg_catalog.query_to_xml(text, boolean, boolean, text) VOLATILE;
ALTER FUNCTION pg_catalog.query_to_xml_and_xmlschema(text, boolean, boolean, text) VOLATILE;
ALTER FUNCTION pg_catalog.query_to_xmlschema(text, boolean, boolean, text) VOLATILE;
/* Functions that should be marked "parallel-unsafe" */
ALTER FUNCTION pg_catalog.binary_upgrade_create_empty_extension(text, text, bool, text, _oid, _text, _text) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.brin_desummarize_range(regclass, bigint) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.brin_summarize_new_values(regclass) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.brin_summarize_range(regclass, bigint) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.cursor_to_xml(refcursor, int, boolean, boolean, text) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.cursor_to_xmlschema(refcursor, boolean, boolean, text) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.gin_clean_pending_list(regclass) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.pg_import_system_collations(regnamespace) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.ts_rewrite(tsquery, text) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.ts_stat(text) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.ts_stat(text, text) PARALLEL UNSAFE;

選項 2:執行 pg_upgrade 到包含正確標記資料的版本(例如 10.4 及以上版本)

連結

  • 下載:https://postgres.tw/download/
  • 發布說明:https://postgres.tw/docs/current/static/release.html
  • 安全性頁面:https://postgres.tw/support/security/
  • 版本控制政策:https://postgres.tw/support/versioning/
  • 在 Twitter 上關注 @postgresql:https://twitter.com/postgresql