PostgreSQL Global Development Group 已發布我們資料庫系統所有支援版本的更新,包括 12.2、11.7、10.12、9.6.17、9.5.21 和 9.4.26。 此版本修復了 PostgreSQL 伺服器中發現的一個安全性問題,以及過去三個月報告的 75 多個錯誤。
使用者應盡快計畫更新。
這是 PostgreSQL 9.4 的最後一個版本,它將不再收到安全性更新和錯誤修復。PostgreSQL 9.4 引入了新功能,例如 JSONB 支援、ALTER SYSTEM
命令、將邏輯變更串流到輸出外掛程式的能力,以及更多。
雖然我們對這個版本感到非常自豪,但這些功能也可以在較新版本的 PostgreSQL 中找到。 其中許多功能也得到了改進,並且根據我們的版本政策,現在是淘汰 PostgreSQL 9.4 的時候了。
為了獲得持續支援,我們建議您計畫升級到更新、受支援的 PostgreSQL 版本。 請參閱 PostgreSQL 版本政策以獲取更多資訊。
ALTER ... DEPENDS ON EXTENSION
缺少授權檢查。受影響版本:9.6 - 12
ALTER ... DEPENDS ON EXTENSION
子命令不執行授權檢查,這可能允許未授權的使用者在特定條件下刪除任何函數、程序、實體化檢視、索引或觸發器。 如果管理員已安裝擴充功能,且未授權的使用者可以 CREATE
,或者擴充功能擁有者可預測地執行 DROP EXTENSION
或被說服執行 DROP EXTENSION
,則可能會發生此攻擊。
PostgreSQL 專案感謝 Tom Lane 報告此問題。
此更新還修復了過去幾個月報告的 75 多個錯誤。 其中一些問題僅影響版本 12,但也可能影響所有支援的版本。
其中一些修復包括:
TRUNCATE ... CASCADE
不會刪除所有資料的問題。 如果您之前在具有外部鍵參考的分區表上使用過 TRUNCATE ... CASCADE
,請參閱「更新」部分以獲取驗證和清理步驟。RECORD
)的分區鍵表達式。UPDATE
觸發器。REPLICA IDENTITY FULL
的邏輯複寫效率。pg_replication_slot_advance()
會在重新啟動後保留變更。CONCURRENTLY
選項。box
、range
和 inet
資料類型的 BRIN 索引操作中可能發生的崩潰。ALTER TABLE
語句中,在類型新增或變更較早的情況下,ALTER TABLE
中引用的 GENERATED
表達式中的欄位失敗的問題。AFTER ROW
觸發程序的處理。EXTRACT(ISOYEAR FROM timestamp)
的一個偏移一的結果。pg_hba.conf
檔案中不必要地將 RADIUS 身份驗證參數轉換為小寫並截斷。pg_dump
和 pg_restore
的幾個修復。UPDATE remote_tab SET (x,y) = (SELECT ...)
)時,postgres_fdw
崩潰的問題。contrib/tablefunc
的 crosstab()
函數中使用 NULL 類別值,以防止崩潰。NOTIFY
的時序異常的競爭條件。如需完整的變更清單,請查看發行說明。
所有的 PostgreSQL 更新版本都是累積性的。如同其他的小版本更新,使用者不需要傾印和重新載入資料庫,或是使用 pg_upgrade
來套用這個更新版本;您可以直接關閉 PostgreSQL 然後更新其二進位檔案。
跳過一個或多個更新版本的使用者可能需要執行額外的更新後步驟;請參閱先前版本的發布說明以取得詳細資訊。
如果您之前在分割資料表的子分割區上執行過 TRUNCATE ... CASCADE
,且該分割資料表有來自另一個資料表的外鍵參照,則您可能需要在另一個資料表上執行 TRUNCATE
,或者如果您自執行 TRUNCATE ... CASCADE
以來已新增資料列,則執行 DELETE
。 導致此問題的原因已在此版本中修正,但您需要執行此步驟以確保您的所有資料都已清除。
更多詳細資訊,請參閱發布說明。