psycopg2 3.0.0,一個 PostgreSQL 的 Python 連接器,已發布
pg_partman 4.6.0,一個用於分割表格的管理系統,已發布。
pgAdmin4 6.0,一個用於 PostgreSQL 的基於 Web 和原生 GUI 控制中心,已發布。
Percona Distribution for PostgreSQL Operator 1.0.0,一個基於 Crunchy Data 的 Kubernetes operator,適用於 PostgreSQL,已發布。
https://archives.postgresql.org/pgsql-jobs/2021-10/
Planet PostgreSQL: https://planet.postgresql.org/
PostgreSQL 每週新聞由 David Fetter 本週為您帶來
請在太平洋標準時間 (PST8PDT) 星期日下午 3:00 前將新聞和公告提交至 david@fetter.org。
Tom Lane 推送了
Doc:更新 src/test/perl/README 中的測試配方。先前的文本沒有提供關於 TAP 測試可移植性策略的清晰解釋。使用 perlbrew 的配方也有一些問題:它導致了一個非共享的 libperl(阻止了 plperl 的測試),並且它導致一些模組更新到當前版本,而該配方的重點是構建一個舊環境。討論:https://postgr.es/m/E1mYY6Z-0006OL-QN@gemulon.postgresql.org https://git.postgresql.org/pg/commitdiff/3eb1f4d09745433c70ccac411cad24d0374b9c3b
進一步修復 SEARCH BREADTH FIRST 查詢的 EXPLAIN。Commit 3f50b8263 有一個疏忽:以前,要反解析附加到計劃節點的表達式,只需在調用 set_deparse_plan 的同時更新 deparse_namespace ancestors 列表。現在必須先更新 ancestors 列表,因為 set_deparse_plan 會查詢它,並且有一個調用站點搞錯了。此錯誤在大多數情況下被掩蓋了,因為 explain.c 對於 ancestors 列表只使用一個 List 物件,在掃描計劃時就地更新它,因此我們意外地在需要之前將正確的 List 分配給 dpns->ancestors。只有當 WorkTableScan 節點是我們嘗試反解析子表達式的第一個節點時才會失敗。根據 Markus Winand 的報告。與之前的修補程式一樣,反向移植到 v14。討論:https://postgr.es/m/648B0505-AA57-42C2-A2DA-E551DE46FA15@winand.at https://git.postgresql.org/pg/commitdiff/39ae0ef8561362304ee512963aa51d5a705e5616
使 configure 檢查所需的最低 IPC::Run 版本。根據圍繞 3eb1f4d09 的討論,讓 configure 驗證可用的 IPC::Run 版本是否至少為 0.79,這是商定的最低版本。似乎不太可能有人會因此而受到影響,但它作為文檔很有用。(基於此,沒有必要進行反向移植。)為了保持一致性,也為我們明確檢查的另一個 Perl 模組 Time::HiRes 提供一個最低版本。我使用了 Perl 5.8.3 附帶的版本。討論:https://postgr.es/m/E1mYY6Z-0006OL-QN@gemulon.postgresql.org https://git.postgresql.org/pg/commitdiff/4a235efddaa78ec78a47614ddc6161644e089290
修復規劃器錯誤,將子查詢表達式拉到函數 RTE 中。如果 FROM 中的函數橫向引用 FROM 子句中較早的子 SELECT 的輸出,並且我們能夠將該子 SELECT 展平到外部查詢中,則複製到函數 RTE 中的表達式會遺漏 eval_const_expressions 的處理。如果這些表達式包含具名參數函數調用語法或具有默認參數的函數,則這將導致執行時出現問題和可能的崩潰。如果查詢包含任何明確的 JOIN 語法,則該錯誤會被掩蓋,這可能有助於解釋我們為什麼沒有注意到。根據 Bernd Dorn 的錯誤 #17227。這是 commit 7266d0997 中的疏忽,因此反向移植到引入該功能的 v13。討論:https://postgr.es/m/17227-5a28ed1512189fa4@postgresql.org https://git.postgresql.org/pg/commitdiff/4d5f651f1d651c6fa79f9188e7b9a04654c7125a
使 pg_dump 獲取要轉儲的分割表格上的鎖。顯然一直以來都有這樣做的意圖,但原始程式碼通過檢查錯誤的陣列元素來實現。我們在 403a3d91c 中順便修復了它,但後來被還原了,我們忘記保留這個錯誤修復。大多數時候,這相對無害,因為一旦我們鎖定了任何分割表格的葉子分割區,就足以防止對分割表格本身進行重大的 DDL 操作。但是,一個沒有子節點的分割表格將在沒有任何相關鎖定的情況下被轉儲,可能會導致轉儲失敗或輸出不一致。與 403a3d91c 不同,不存在版本問題,因為每個具有分割表格的伺服器版本都允許您鎖定一個。反向移植到引入分割表格的 v10。討論:https://postgr.es/m/1018205.1634346327@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/e2ff7d9a83d4b489806281dc6dfce88510b40ad7
避免從 pre-8.3 伺服器轉儲時在 pg_dump 中核心轉儲。Commit f0e21f2f6 遺漏了將 tgisinternal 輸出欄位添加到 pre-8.3 伺服器的 getTriggers' 查詢中。與該 commit 一樣,反向移植到 v11。https://git.postgresql.org/pg/commitdiff/40dfac4fc4776213a02291f13046d36e318f2629
Michaël Paquier 推送了
使用 "(expr) ? true : false" 清理更多程式碼。這與 fd0625c 類似,處理任何值得清理的剩餘程式碼路徑。這也改變了一些使用相反表達式模式的情況。作者:Justin Pryzby,Masahiko Sawada 討論:https://postgr.es/m/CAD21AoCdF8dnUvr-BUWWGvA_XhKSoANacBMZb6jKyCk4TYfQ2Q@mail.gmail.com https://git.postgresql.org/pg/commitdiff/68f7c4b57a27dbcd3e93ba3ff7b0b49664b25e09
在 TAP 測試中新增更多 $Test::Builder::Level。增加報告的呼叫堆疊層級對於除錯很有用,因為它可以控制測試的哪個部分確實失敗了,尤其是在使用子程式(從 Test::More 呼叫例程)構建測試時。這增加了更多 $Test::Builder::Level 的增量,可以提高除錯效果(例如,對於 pg_rewind 等長子程式的路徑沒有意義)。基於 Andrew Dunstan 的建議以及我們雙方的措辭,在 src/test/perl/README 中新增了一條關於該功能的說明。Test::Builder::Level 的使用已在 12 中傳播開來,因此已完成至此版本的反向移植。Reviewed-by:Andrew Dunstan、Peter Eisentraut、Daniel Gustafsson 討論:https://postgr.es/m/YV1CCFwgM1RV1LeS@paquier.xyz Backpatch-through: 12 https://git.postgresql.org/pg/commitdiff/f9c4cb686800d46ef9e9e90ed5133493b23962af
修正跨不同主要版本的 pg_upgrade 測試。 這修正了一系列問題,這些問題在使用 pg_upgrade 的 test.sh 跨不同主要版本進行升級時,會導致不同的損壞或惱人情況: - 當使用 v14 作為新版本時,由於移除了 testtablespace/ 作為 Makefile 規則,test.sh 完全損壞。 較舊版本的 pg_regress 不支援 --make-tablespacedir,阻礙了 tablespace 的建立。 為了修正這一點,在腳本本身中建立這些目錄非常簡單,但僅在涉及舊版本時才這樣做。 此修復需要在 HEAD 和 REL_14_STABLE 上進行。 - 當使用 PG <= v11 作為舊版本時,由於 v12 不支援 WITH OIDS 關聯,腳本將會失敗。 為了修正這一點,這裡借用了一個來自 buildfarm 的方法,該方法使用 DO 區塊來變更所有標記為 WITH OIDS 的關聯,允許 pg_upgrade 通過。 這比對導致問題的關聯使用 ALTER TABLE 查詢更具移植性。 這已修復到 v12,最初由 Andrew Dunstan 編寫。 - 在使用 v11 作為舊版本時,不使用 --extra-float-digits=0 會導致 dump 中出現大量差異,使整個內容無法閱讀。 這僅在使用 v11 作為舊版本時完成。 這已修復到 v12。 buildfarm 程式碼已在使用它。 請注意,新增 --wal-segsize 和 --allow-group-access 會在使用 v10 或更早版本在 initdb 時中斷腳本,因為這些是在 11 中新增的。 10 將在明年 EOL,並且沒有人抱怨過這些問題,因此沒有對此做任何處理。 這意味著此 commit 修正了使用 test.sh 以 v11 作為最小較舊版本的升級測試,直到 HEAD,並且足以將此變更應用到 12。 新舊 dump 仍然會產生差異,仍然需要手動檢查,並且可以做更多的事情來減少雜訊,但這允許測試以相當少的雜訊執行。 我已經使用此 commit 和 test.sh 以 v11 作為所有應用此變更的分支中的最小版本進行了測試。 請注意,此 commit 對於使用簡單的 "make check" 執行的正常 pg_upgrade 測試沒有任何影響。 作者:Justin Pryzby, Andrew Dunstan, Michael Paquier 討論: https://postgr.es/m/20201206180248.GI24052@telsasoft.com Backpatch-through: 12 https://git.postgresql.org/pg/commitdiff/fa66b6dee0843d2bca5bf9c9b8b7be32defbffae
修正 CREATE TYPE 中 multirange 類型發生的 use-after-free 問題。 程式碼正在釋放儲存在解析樹中的 multirange 類型函數的名稱,但不應該這樣做。 例如,事件觸發器可以使用 ddl_command_end 事件查看這種已損壞的解析樹。 作者:Alex Kozhemyakin, Sergey Shinderuk 審閱人:Peter Eisentraut, Michael Paquier 討論: https://postgr.es/m/d5042d46-b9cd-6efb-219a-71ed0cf45bc8@postgrespro.ru Backpatch-through: 14 https://git.postgresql.org/pg/commitdiff/5b0e7fe1d67235a092be1132bc5c97f1d7f29aaf
Peter Geoghegan 推送
amcheck: 在 Hot Standby 中跳過未記錄的關聯。 讓 verify_heapam.c 在 Hot Standby 模式下將未記錄的關聯視為只是空的。 這使其與 verify_nbtree.c 一致,自 bugfix commit 6754fe65a4 以來,後者以相同的方式處理未記錄的關聯。 這是 commit 866e24d47d 中的一個疏忽,該 commit 擴展了 contrib/amcheck 以檢查堆積關聯。 順便一提,降低了在報告跳過關聯時使用的詳細程度,從 NOTICE 到 DEBUG1。 這是適當的,因為跳過行為只是一個實作細節,需要解決在 Hot Standby 模式下,未記錄的表格沒有其主要 fork 的 smgr 層級儲存空間的問題。 受影響的未記錄關聯應被視為「簡單驗證」,而不是跳過。 它們以與完全空的關聯可以驗證的相同意義進行驗證。 這種行為總體而言似乎最不令人驚訝,因為副本上的未記錄關聯在副本升級且 Hot Standby 結束時最初將是空的。 作者:Mark Dilger mark.dilger@enterprisedb.com 審閱人:Peter Geoghegan pg@bowt.ie 討論: https://postgr.es/m/CAH2-Wzk_pukOFY7JmdiFLsrz+Pd3V8OwgC1TH2Vd5BH5ZgK4bA@mail.gmail.com Backpatch: 14-,即引入 heapam 驗證的地方。 https://git.postgresql.org/pg/commitdiff/292698f158ddb3f9a88f536e6eecb9e55d9619c9
Doc: 正規化 vacuum_multixact_failsafe_age ID。 作者:Pavel Luzanov p.luzanov@postgrespro.ru 討論: https://postgr.es/m/c71a3cfc-a267-3d9f-1b44-fbd668d0ab10@postgrespro.ru Backpatch: 14-,引入 failsafe 的地方。 https://git.postgresql.org/pg/commitdiff/00c61a74bcdbc04a3db721d53c7aff62244da198
pg_amcheck: 避免無用的驗證嘗試。 避免使用不適合檢查的關聯呼叫 contrib/amcheck 函數。 具體來說,不要嘗試驗證臨時關聯,或其 pg_index 條目表明索引無效或未準備好的索引。 由於一些基本原因,contrib/amcheck 的任何函數都不支援這些關聯。 例如,REINDEX CONCURRENTLY 的實作可以新增其自己的「瞬態」pg_index 條目,這至少在一般情況下對 B-Tree 驗證函數具有相當不明確的影響 - 因此它們只是將其視為錯誤。 這取決於 amcheck 呼叫者(在這種情況下為 pg_amcheck)以在更高的層級處理這種情況。 pg_amcheck 現在只是將這些條件視為查詢系統目錄時的額外「可見性問題」。 這有點隨意。 在任何可用的替代方案中,它似乎問題最少。 作者:Mark Dilger mark.dilger@enterprisedb.com 報告人:Alexander Lakhin exclusion@gmail.com 審閱人:Peter Geoghegan pg@bowt.ie 審閱人:Robert Haas robertmhaas@gmail.com Bug: #17212 討論: https://postgr.es/m/17212-34dd4a1d6bba98bf@postgresql.org Backpatch: 14-,引入 pg_amcheck 的地方。 https://git.postgresql.org/pg/commitdiff/d2bf06db377967b0d671ae372d513806e2a28052
移除不穩定的 pg_amcheck 測試。 最近的 pg_amcheck bugfix commit d2bf06db 新增了一個建置農場顯示為不可移植的測試案例。 無論如何,保留它似乎沒有特別的價值。 移除它。 討論: https://postgr.es/m/CAH2-Wz=7HKJ9WzAh7+M0JfwJ1yfT9qoE+KPa3P7iGToPOtGhXg@mail.gmail.com Backpatch: 14-,就像原始 commit 一樣。 https://git.postgresql.org/pg/commitdiff/cd3f429d9565b2e5caf0980ea7c707e37bc3b317
移除過時的 nbtree 重複資料刪除註解。 接著 commit 2903f140。 https://git.postgresql.org/pg/commitdiff/b76c1d6e849779e4a5a6c24d159a42125e522154
藤井正雄 推送
Peter Eisentraut 推送
psql:更多測試。為命令行選項處理和說明輸出添加一些基本測試,類似於我們對其他命令行程式所做的。這也創建了一個放置更多一次性測試案例的地方,供日後使用。討論:https://postgres.tw/message-id/2570e2ae-fa0f-aac9-f72f-bb59a9983a20@enterprisedb.com https://git.postgresql.postgresql.org/pg/commitdiff/c0280bc3edeb9e9958efc14083b6f301d2ef79d5
psql:新增處理複製指令的測試。新增一個測試,用於乾淨地處理不支援的複製指令回應。這曾經意外地中斷過,而且它看起來夠特別,在手動測試時很容易忘記。討論:https://postgres.tw/message-id/2570e2ae-fa0f-aac9-f72f-bb59a9983a20@enterprisedb.com https://git.postgresql.org/pg/commitdiff/67c069848a998de1436cad2d67baedbf31c3a28c
psql:修正測試。該測試在 getopt() 不支援選項前方的非選項引數的平台上無法運作。https://git.postgresql.org/pg/commitdiff/d9ddc50bafc062ec1ae7f98b886b7950102d87fc
psql:修正一些 scan-build 警告。重複出現的抱怨是 scan-build 認為,如果在查詢處理期間 \timing 設定變更,則後處理可能會讀取到垃圾時間值。現在這可能不可能發生,但根據程式碼結構來看,這並非完全無法想像。因此,透過小型重組來消除此警告,使它更穩健。其他警告是一些容易移除的無效儲存。討論:https://postgres.tw/message-id/2570e2ae-fa0f-aac9-f72f-bb59a9983a20@enterprisedb.com https://git.postgresql.org/pg/commitdiff/390edeeb570c01de1a14e2985ffed96de001e42e
修正不正確的格式佔位符。https://git.postgresql.org/pg/commitdiff/780054bf31a0a6ba781f46c454f0116efee8a74c
Robert Haas 已推送
重構 basebackup.c 的 _tarWriteDir
() 函式。有時,我們會將資料目錄中找到的符號連結替換為我們在 tar 檔中建立的實際目錄。_tarWriteDir
同時負責進行此替換,以及將結果目錄的 tar 標頭寫入 tar 檔。讓它只做第一件事,並重新命名為 convert_link_to_directory。計劃對此原始程式檔進行大幅重構,但這一小部分內容似乎可以獨立提交。討論:http://postgr.es/m/CA+Tgmobz6tuv5tr-WxURe5JA1vVcGz85k4kkvoWxcyHvDpEqFA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/967a17fe2fa77b61061c8fb1183f64a5df4e080a
從 StartupXLOG() 中重構一些復原結束程式碼。建立一個新的函式 PerformRecoveryXLogAction() 並將寫入復原結束記錄或要求檢查點的程式碼移到該處。另建立一個新的函式 CleanupAfterArchiveRecovery() 以執行我們在實際退出封存復原後但在開始接受新的 WAL 寫入之前想要執行的一些任務。計劃對此檔案進行更多重構,但此提交只是直接的程式碼移動,以使 StartupXLOG() 更短且更易於理解。Robert Haas 和 Amul Sul 討論:http://postgr.es/m/CAAJ_b97abMuq=470Wahun=aS1PHTSbStHtrjjPaD-C0YQ1AqVw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/6df1543abfed6f6a86b76a48fa11a6f019111c01
延後一些與允許 WAL 相關的復原結束操作。CreateOverwriteContrecordRecord()、UpdateFullPageWrites()、PerformRecoveryXLogAction() 和 CleanupAfterArchiveRecovery() 會在 StartupXLOG() 中稍晚一些時間移動。這是為未來的修補程式做準備,該修補程式希望允許在一個時間結束復原,然後稍後才開始允許 WAL 寫入。為此,必須將與允許 WAL 寫入相關的程式碼與僅僅因為復原結束而需要發生的其他事情(例如,初始化依賴於在 redo 完成之前可能不準確的資訊的共享記憶體資料結構)分開。此提交並未實現該目標,但這是朝著該方向邁出的一步。例如,一旦我們完成復原,就有一些不同的程式碼位會將內容寫入 WAL,而且透過此變更,這些程式碼位比以前更靠近彼此,並且穿插的無關程式碼位更少。Robert Haas 和 Amul Sul 討論:http://postgr.es/m/CAAJ_b97abMuq=470Wahun=aS1PHTSbStHtrjjPaD-C0YQ1AqVw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/811051c2e7af1b030467760baf7ee0f4a22bc992
shm_mq:減少更新 mq_bytes_written 的頻率。在我們寫入的資料量大於環形大小的 1/4 之前,不要更新 shm_mq 的 mq_bytes_written,除非 shm_mq_send(v) 的呼叫者要求在訊息結尾進行刷新。這大大減少了對 SetLatch() 的呼叫次數,以及 CPU 快取未命中的次數,從而使 shm_mq 明顯更快。Dilip Kumar,經 Zhihong Yu 和 Tomas Vondra 審閱。我做了一些小的外觀變更。討論:http://postgr.es/m/CAFiTN-tVXqn_OG7tHNeSkBbN+iiCZTiQ83uakax43y1sQb2OBA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/46846433a03dff4f2e08c8a161e54a842da360d6
Etsuro Fujita 已推送
Álvaro Herrera 已推送
Jeff Davis 已推送
Andrew Dunstan 已推送