### **譯者:朱君鵬**
### **發表于2020年2月13日 作者:PostgreSQL全球開發小組**
#### 全球開發小組已發布的更新涵蓋所有支持的版本,包括12.2,11.7,10.12,9.6.17,9.5.21和9.4.26。該版本修正了一個在PostgreSQL服務器發現中發現的安全問題,在過去的三個月報告了超過75個錯誤,?用戶應計劃盡快更新。
### **譯者簡介**
#### 朱君鵬,華東師范大學博士研究生,個人興趣主要集中在:新型硬件(GPU、RDMA、FPGA等)在數據庫中的應用,架構設計與并行計算。
### **PostgreSQL 9.4 Now EOL**
#### 這次發布針對PostgreSQL 9.4,它將不再接收安全更新和bug修復。PostgreSQL 9.4引入了新的功能,如JSONB支撐,ALTER SYSTEM命令,將邏輯更改流到輸出插件的能力,等等。
#### 我們非常自豪從此版本開始,這些功能也將出現在PostgreSQL較新的版本中。這些功能也獲得改善,并且,根據我們的版本政策,現在是時候讓PostgreSQL 9.4退休了。
#### 要獲得持續的支持,我們建議您做計劃升級到PostgreSQL支持的更高版本。請參閱有關更多PostgreSQL的版本政策信息。
### **安全問題**
#### CVE-2020-1720: ALTER ... DEPENDS ON EXTENSION缺乏授權檢查。
#### 受到影響的版本:9.6-12
#### ALTER ... DEPENDS ON EXTENSION?命令不執行授權檢查,這使得一個非特權用戶在某種情況下能夠刪除任何一個函數、過程、物化視圖、索引或觸發器。如果管理員安裝了一個擴展,而一個沒有特權的用戶可以創建該擴展,或者擴展所有者可以執行可預測的DROP EXTENSION,或者可以說服他執行DROP EXTENSION,那么就可能發生這種攻擊。
#### PostgreSQL工程感謝Tom Lane報告這個問題。
### **錯誤修復和改進**
#### 這次更新修復了前幾個月報告的超過75個錯誤。其中的一些僅僅影響到了12版本,但是另外一些影響到了所有的支持版本。
#### 一些修復包括:
#### ?修復了在TRUNCATE…CASCADE中帶外鍵約束的分區表不能刪除所有數據的問題。如果你之前在使用TRUNCATE…CASCADE在帶晚間約束的分區表上,請參見“更新”部分的確認和清理步驟。
#### ?修復了向帶有子分區的表(即多級分區表)添加外鍵約束的錯誤。如果您以前使用過此功能,則可以通過分離和重新附加受影響的分區,或刪除外鍵約束并重新添加到父表來修復它。您可以在ALTER TABLE文檔中找到關于如何執行這些步驟的更多信息。
#### ?修復了CVE-2017-7484的修復所引入的分區表的性能問題,該修復現在允許查詢計劃使用子表列上的統計信息,用于在查詢包含leaky操作符時授予用戶對父表的訪問權限。
#### ?其他幾個分區表的修復和更改,包括不允許返回偽類型(如RECORD)的分區鍵表達式。
#### ?修復了邏輯復制服務器執行每列更UPDATE觸發器的問題。
#### ?修復了邏輯復制訂閱者和發布者的一些崩潰和失敗。
#### ?改進了帶有REPLICA IDENTITY FULL的邏輯復制的性能
#### ?確保在物理復制槽上調用pg_replication_slot_advance()將在重啟時持久化更改。
#### ?一些walsender進程的問題修復。
#### ?改進了具有非常大的內層關系的hash join的性能。
#### ?通過將“已刪除的子計劃”字段與其父追加或合并追加計劃放置在一起,修正了EXPLAIN輸出中“已刪除的子計劃”字段的位置。
#### ?修復了一些并行查詢執行計劃問題。
#### ?幾個查詢計劃器錯誤的修復,包括影響到單行子查詢的連接。
#### ?MCV的幾個修復擴展了統計信息,包括一個OR子句的錯誤估計。
#### ?在多核cpu上提高并行哈希連接的效率。
#### ?在對臨時表執行索引創建、刪除或重索引時,請忽略CONCURRENTLY選項。
#### ?當并行化的CREATE INDEX沒有可用的動態共享內存槽時,退回到非并行索引構建。
#### ?GIST和GIN索引修復。
#### ?修正了在使用box、range和inet數據類型時,在BRIN索引操作中可能出現的崩潰。
#### ?修正了對BRIN Hypothetical索引的支持。
#### ?修復ALTER TABLE表中的錯誤,當在GENERATED表達式中引用的列被增加或被改變早于ALTER TABLE。
#### ?修復了對一個外部表上多個AFTER ROW觸發器的操作。
#### ?修復了一個從結果提取年的操作。
#### ?在pg_hba.conf文件中防止不想要的小寫和RADIUS驗證參數的截斷。
#### ?對GSSAPI支持的幾個修復,包括讓libpq接受所有gss相關的連接參數,即使沒有編譯GSSAPI代碼也是如此。
#### ?pg_dump和pg_restore在并行模式下運行時的一些錯誤修復。
#### ?修復了試圖在遠程服務器上執行遠程查詢(如UPDATE remote_tab SET (x,y) = (SELECT…)時postgres_fdw崩潰的問題。
#### ?在contrib/tablefunc的cross stab()函數中不允許空類別值,以防止崩潰。
#### ?Windows的幾個修復,包括一個競爭條件,可能會導致NOTIFY時間。
#### ?幾個ecpg修復。
#### 有關可用修復的完整列表,請查看發布說明。
### **更新**
#### 所有的PostgreSQL更新版本都是累積的。與其他次版本一樣,用戶不需要轉儲和重新加載數據庫或使用pg_upgrade來應用這個更新版本;您可以簡單地關閉PostgreSQL并更新它的二進制文件。
#### 跳過一個或多個更新版本的用戶可能需要運行額外的更新步驟;有關早期版本的詳細信息,請參閱發行說明。
#### 如果您以前執行過TRUNCATE ... CASCADE在分區表的子分區上,并且分區表有來自另一個表的外鍵引用,您可能必須在另一個表上執行TRUNCATE,或者執行DELETE(如果您在運行TRUNCATE... CASCADE之后添加了行)。這個問題在此版本中得到了修復,但是您必須執行此步驟以確保清除了所有數據。
#### 有關可用修復的完整列表,請查看發布說明。
### **原文鏈接:**
