PostgreSQL 每週新聞 - 2021 年 10 月 31 日

張貼於 2021-11-01 由 PWN
PWN

PostgreSQL 每週新聞 - 2021 年 10 月 31 日

萬聖節快樂!

PostgreSQL 產品新聞

pg_statement_rollback v1.3,一個添加伺服器端事務並在語句級別回滾的擴展,已發布

十月份的 PostgreSQL 工作

https://archives.postgresql.org/pgsql-jobs/2021-10/

PostgreSQL 新聞

Planet PostgreSQL: https://planet.postgresql.org/

PostgreSQL 每週新聞由 David Fetter 本週為您帶來

請在太平洋標準時間/太平洋夏令時間 (PST8PDT) 星期日下午 3:00 前將新聞和公告提交至 david@fetter.org。

已應用的補丁

Michaël Paquier 推送

Heikki Linnakangas 推送

  • 釐清新的平衡合併程式碼中的一些邏輯。在 selectnewtape() 中,使用 'nOutputTapes' 而不是 'nOutputRuns' 來檢查是否要啟動新的磁帶或將新的執行附加到現有磁帶。在達到 'maxTapes' 之前,nOutputTapes 始終等於 nOutputRuns,因此它不會改變邏輯,但比較磁帶數量與磁帶數量似乎更合理。此外,目前在合併開始後永遠不會修改 maxTapes,但以這種方式編寫,即使修改了,程式碼仍然可以運作。(儘管需要刪除 nOutputRuns == nOutputTapes 斷言,並且使用 nOutputRuns % nOutputTapes 將執行平均分配到磁帶上將不再有效)。同樣地,在 mergeruns() 中,更改為 USEMEM(state->tape_buffer_mem) 以考慮用於磁帶緩衝區的記憶體。它目前等於 availMem,但 tape_buffer_mem 更直接且更具前瞻性。例如,如果我們更改邏輯,僅將剩餘記憶體的一半分配給磁帶緩衝區,USEMEM(state->tape_buffer_mem) 仍然是正確的。 Coverity 抱怨了這些問題。希望這個補丁有助於它更好地理解邏輯。感謝 Tom Lane 的初步分析。 https://git.postgresql.org/pg/commitdiff/166f94377c886516ca986ef8a623cd2e854fe911

Robert Haas 推送

Thomas Munro 推送

Daniel Gustafsson 推送了更新

Fujii Masao 推送了更新

  • 改善當 FDW 報告沒有有效選項時的 HINT 訊息。當命令中給定的選項無效時,外部資料包裝器 (foreign data wrapper) 的驗證器函數會提供一個 HINT 訊息,其中包含 CREATE 或 ALTER 命令中指定的物件的有效選項清單。先前,postgresql_fdw_validator() 以及 postgres_fdw 和 dblink_fdw 的驗證器函數即使物件中沒有有效選項,也會以這種方式運作,這可能導致 HINT 訊息帶有空清單(因為沒有有效選項)。例如,ALTER FOREIGN DATA WRAPPER postgres_fdw OPTIONS (format 'csv') 會報告以下 ERROR 和 HINT 訊息。這種行為令人困惑。ERROR: invalid option "format" HINT: Valid options in this context are: file_fdw 中沒有這樣的問題。在這種情況下,file_fdw 的驗證器函數會報告 HINT 訊息 "There are no valid options in this context."。此 commit 改善了 postgresql_fdw_validator() 以及 postgres_fdw 和 dblink_fdw 的驗證器函數,使其也執行相同的操作。例如,此變更會導致上述 ALTER FOREIGN DATA WRAPPER 命令報告以下訊息。ERROR: invalid option "nonexistent" HINT: There are no valid options in this context. 作者:Kosei Masumura 審閱者:Bharath Rupireddy, Fujii Masao 討論:https://postgr.es/m/557d06cebe19081bfcc83ee2affc98d3@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/5fedf7417b69295294b154a219edd8a26eaa6ab6

Jeff Davis 推送了更新

Amit Kapila 推送了更新

  • 允許發布 schema 中的 table。Create/Alter Publication 中的一個新選項 "FOR ALL TABLES IN SCHEMA" 允許指定一個或多個 schema,Publisher 將選擇這些 schema 中的 table,以便將資料發送到 Subscriber。新的語法允許同時指定 table 和 schema。例如:CREATE PUBLICATION pub1 FOR TABLE t1,t2,t3, ALL TABLES IN SCHEMA s1,s2; OR ALTER PUBLICATION pub1 ADD TABLE t1,t2,t3, ALL TABLES IN SCHEMA s1,s2; 新增了一個新的系統資料表 "pg_publication_namespace",以維護使用者想要透過 Publication 發布的 schema。修改了輸出插件 (pgoutput),以便在 relation 是 schema Publication 的一部分時發布變更。更新了 pg_dump 以識別和傾印 (dump) schema Publication。更新了 \d 系列命令以顯示 schema Publication,並且 \dRp+ 變體現在將顯示相關聯的 schema(如果有的話)。作者:Vignesh C, Hou Zhijie, Amit Kapila 語法建議者:Tom Lane, Alvaro Herrera 審閱者:Greg Nancarrow, Masahiko Sawada, Hou Zhijie, Amit Kapila, Haiying Tang, Ajin Cherian, Rahila Syed, Bharath Rupireddy, Mark Dilger 測試者:Haiying Tang 討論:https://postgres.tw/message-id/CALDaNm0OANxuJ6RXqwZsM1MSY4s19nuH3734j4a72etDwvBETQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/5a2832465fd8984d089e8c44c094e6900d987fcd

  • 為 schema Publication 新增 tap 測試。這為 commit 5a2832465f ("允許發布 schema 中的 table") 新增了額外的測試。這允許測試透過 schema Publication 發布的 table 中的資料串流。作者:Vignesh C, Haiying Tang 審閱者:Greg Nancarrow, Hou Zhijie, Amit Kapila 討論:https://postgres.tw/message-id/CALDaNm0OANxuJ6RXqwZsM1MSY4s19nuH3734j4a72etDwvBETQ%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/6b0f6f79eef2168ce38a8ee99c3ed76e3df5d7ad

Magnus Hagander 推送了更新

Peter Geoghegan 推送了更新

Tom Lane 已推送

  • 改善 contrib/amcheck 對於 CREATE INDEX CONCURRENTLY 的測試。commit fdd965d07 和 3cd9c3b92 透過同時啟動兩個單獨的 pgbench 執行來測試 CREATE INDEX CONCURRENTLY。這是必要的,以便只有一個客戶端執行緒會執行 CREATE INDEX CONCURRENTLY,避免兩個 CIC 之間的死鎖。但是,有一種更好的方法,即使用 advisory lock 來防止並行的 CIC。這更好,部分原因在於測試程式碼更短且更易讀,但主要是因為它會自動調整規模,以啟動相對於 INSERT 交易的適當數量的 CIC。在提交時,通常有一半到四分之三的 CIC 交易是毫無意義的,因為 INSERT 交易已經停止。順便一提,移除 background_pgbench,它是為了支援這些測試而新增的,現在不再需要。如果我們以後發現它有用途,我們可以隨時將其放回去。回溯修補至 v12;較舊的 pgbench 版本缺少此方法所需的條件執行功能。Tom Lane 和 Andrey Borodin 討論:https://postgr.es/m/139687.1635277318@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/7f580aa5d88a9b03d66fcb9a1d7c4fcd69d9e126

  • 加速 snprintf.c 中整數的列印速度。由於唯一可能的除數是 8、10 和 16,因此用三個使用常數除數的副本替換除法迴圈不會花費太多程式碼空間。在大多數機器上,除以常數比除以任意值便宜得多。一個僅測試 snprintf("foo %d") 和 9 位數值的微基準測試顯示我的速度提高了約 2 倍 (tgl)。Postgres 的大部分並不太依賴 snprintf 的速度,因此在實際案例中,效果幾乎無法測量。儘管如此,節省一個週期就是賺到一個週期。Arjan van de Ven 討論:https://postgr.es/m/40a4b32a-b841-4667-11b2-a0baedb12714@linux.intel.com 討論:https://postgr.es/m/6e51c644-1b6d-956e-ac24-2d1b0541d532@linux.intel.com https://git.postgresql.org/pg/commitdiff/3c17926eedd51c4094db7c62f59950918044ab1c

  • 將時區資料檔案更新至 tzdata 發布版本 2021e。斐濟、約旦、巴勒斯坦和薩摩亞的 DST 法律變更。巴貝多、庫克群島、蓋亞那、紐埃、葡萄牙和東加的歷史修正。此外,Pacific/Enderbury 區域已重新命名為 Pacific/Kanton。以下區域已合併到附近的、人口更多的區域,這些區域的時鐘自 1970 年以來一直一致:Africa/Accra、America/Atikokan、America/Blanc-Sablon、America/Creston、America/Curacao、America/Nassau、America/Port_of_Spain、Antarctica/DumontDUrville 和 Antarctica/Syowa。https://git.postgresql.org/pg/commitdiff/937aafd6d5580b81134c7f303d04cf7561ad0309

  • 測試並記錄 plpgsql 中初始化交叉引用的行為。我們有一個測試顯示,變數在其自身的初始化運算式中,以及在同一個區塊的先前運算式中是無法引用的。它可以在同一個區塊的後續運算式中引用,但 AFAICS 沒有測試案例來驗證這一點。新增一個,並新增一些錯誤案例。此外,記錄這是可能的,因為文件未能涵蓋這一點。根據來自 tomás at tuxteam 的問題。我認為沒有必要回溯修補這個,但我們應該確保我們將來不會破壞它。討論:https://postgr.es/m/20211029121435.GA5414@tuxteam.de https://git.postgresql.org/pg/commitdiff/a2a731d6c9db0ba650aa6f7c4fe349ccf712f74d

Peter Eisentraut 已推送