PostgreSQL 全球開發團隊已發布對所有支援的 PostgreSQL 版本的更新,包括 15.4、14.9、13.12、12.16 和 11.21,以及 PostgreSQL 16 的第三個 Beta 版本。此版本修復了兩個安全漏洞以及過去幾個月報告的 40 多個錯誤。
如果您使用 BRIN 索引來查詢 NULL
值,則需要在升級到此版本後 重新建立索引。在 PostgreSQL 12 及更高版本上,您可以使用 REINDEX CONCURRENTLY
以避免阻止對受影響索引和資料表的寫入,例如
REINDEX INDEX CONCURRENTLY your_index_name;
有關更改的完整列表,請參閱發布說明。
PostgreSQL 11 將於 2023 年 11 月 9 日停止接收修復程式。如果您在生產環境中運行 PostgreSQL 11,我們建議您計劃升級到更新、受支援的 PostgreSQL 版本。請參閱我們的 版本控制策略 以取得更多資訊。
@substitutions@
在引用中允許 SQL 注入。受支援的易受攻擊版本:11 - 15。 安全團隊通常不測試不受支援的版本,但此問題相當舊。
如果 擴充套件腳本在引用結構(dollar quoting, ''
, 或 ""
)中使用 @extowner@
、@extschema@
或 @extschema:...@
,則該腳本易受攻擊。 沒有捆綁的擴充套件容易受到攻擊。 易受攻擊的用法確實出現在文件範例和非捆綁的擴充套件中。 因此,攻擊的前提是管理員已安裝易受攻擊的、受信任的、非捆綁的擴充套件的檔案。 在該前提下,這使具有資料庫層級 CREATE
權限的攻擊者能夠以 bootstrap 超級使用者的身分執行任意程式碼。 PostgreSQL 將在核心伺服器中阻止此攻擊,因此無需修改個別擴充套件。
PostgreSQL 專案感謝 Micah Gate、Valerie Woolard、Tim Carey-Smith 和 Christoph Berg 報告此問題。
MERGE
未能強制執行 UPDATE
或 SELECT
列安全性原則。受支援的易受攻擊版本:15。
PostgreSQL 15 引入了 MERGE
命令,該命令無法針對為 UPDATE
和 SELECT
定義的列安全性原則測試新列。 如果 UPDATE
和 SELECT
原則禁止 INSERT
原則不禁止的某些列,則使用者可以儲存此類列。 後續結果取決於應用程式。 這僅影響使用 CREATE POLICY
定義列安全性原則的資料庫。
PostgreSQL 專案感謝 Dean Rasheed 報告此問題。
此版本標誌著 PostgreSQL 16 的第三個 Beta 版本發布,並使社群更接近暫定於第三季末左右全面上市。
秉持開源 PostgreSQL 社群的精神,我們強烈建議您在系統上測試 PostgreSQL 16 的新功能,以幫助我們消除可能存在的錯誤或其他問題。 雖然我們不建議您在生產環境中運行 PostgreSQL 16 Beta 3,但我們鼓勵您找到在 Beta 版本上運行典型應用程式工作負載的方法。
您的測試和回饋將有助於社群確保 PostgreSQL 16 堅持我們交付世界上最先進的開源關係型資料庫的穩定、可靠版本的標準。 請閱讀更多關於我們的 Beta 測試流程 以及您如何貢獻
https://postgres.tw/developer/beta/
您可以在發布說明中找到有關 PostgreSQL 16 的所有功能和變更的資訊
https://postgres.tw/docs/16/release-16.html
此更新修復了過去幾個月報告的 40 多個錯誤。 下面列出的問題會影響 PostgreSQL 15。其中一些問題也可能影響其他受支援的 PostgreSQL 版本。
NULL
值的方法。 此修復不適用於現有的 BRIN 索引 - 您需要運行 REINDEX
來修復用於搜尋 NULL 值的任何 BRIN 索引。ALTER EXTENSION ... SET SCHEMA
,如果擴充套件包含擴充套件結構描述之外的任何物件,則會出錯。SERIALIZABLE
交易隔離模式下衝突偵測中的競爭狀況。datetime()
方法輸入中的小數秒。pg_hba.conf
和 pg_ident.conf
中的 token 限制增加到 10,240 個位元組。FATAL
錯誤,而不是 C++ 異常。VACUUM
在偵測到某些類型的 B 樹索引損壞後繼續。 雖然此修復允許 VACUUM 繼續,但您仍然需要 REINDEX
以修復損壞的索引。fsync
。pg_waldump
和 walsender
的不準確訊息。difference()
函式以正確處理空輸入。intarray
的修復,包括不允許 GiST 索引中的超大輸入陣列。pg_dump
以正確處理 SQL 標準函式主體 (BEGIN ATOMIC
),這些主體需要在唯一索引上具有剖析時依賴性。有關可用的變更的完整列表,請參閱 發布說明。
\drg
命令新增到 psql
以顯示有關角色授權的資訊。pg_waldump --save-fullpage
產生的檔案名稱中。VACUUM
工作程序中發生死鎖後崩潰的問題。請參閱發布說明以獲取完整的新增和變更功能列表。
https://postgres.tw/docs/16/release-16.html
所有 PostgreSQL 更新版本都是累積性的。與其他小版本更新一樣,使用者不需要傾印和重新載入資料庫,也不需要使用 pg_upgrade
來套用此更新版本;您可以簡單地關閉 PostgreSQL 並更新其二進制檔案。
如果您使用 BRIN 索引來查詢 NULL
值,則需要在升級到此版本後 重新建立索引。在 PostgreSQL 12 及更高版本上,您可以使用 REINDEX CONCURRENTLY
以避免阻止對受影響索引和資料表的寫入,例如
REINDEX INDEX CONCURRENTLY your_index_name;
跳過一個或多個更新版本的使用者可能需要執行額外的更新後步驟;請參閱早期版本的發布說明以了解詳細資訊。
有關更多詳細資訊,請參閱發布說明。
若要從先前的 PostgreSQL 16 Beta 版本或先前的 PostgreSQL 主要版本升級到 PostgreSQL 16 Beta 3,您需要使用類似於在 PostgreSQL 主要版本之間升級的策略 (例如,pg_upgrade
或 pg_dump
/ pg_restore
)。有關更多資訊,請訪問關於升級的文件章節。
每個 PostgreSQL 版本的穩定性很大程度上取決於您,社群成員,使用您的工作負載和測試工具來測試即將推出的版本,以便在 PostgreSQL 16 正式發布之前找到錯誤和迴歸。由於這是一個 Beta 版本,因此資料庫行為、功能細節和 API 仍有可能進行細微更改。您的回饋和測試將有助於確定新功能的最終調整,因此請在近期進行測試。使用者測試的品質有助於確定我們何時可以發布最終版本。
未解決問題的列表可在 PostgreSQL Wiki 上公開取得。您可以使用 PostgreSQL 網站上的此表單報告錯誤。
https://postgres.tw/account/submitbug/
如果您對此發布公告有更正或建議,請將它們發送到 pgsql-www@lists.postgresql.org 公共郵件列表。