Pgpool-II 4.2.7、4.1.10、4.0.17 和 3.7.22 版本釋出,這是一個用於 PostgreSQL 的連線池和語句複製系統,已修訂。
parquet_s3_fdw 0.2.1 版本釋出,這是一個用於 S3 上 parquet 檔案的外部資料包裝器。已釋出。
Database Lab 3.0 版本釋出,這是一個用於快速克隆大型 PostgreSQL 資料庫以構建非生產環境的工具。已釋出。
sqlite_fdw 2.1.1 版本釋出。已釋出。
DynamoDB FDW 1.1.0 版本釋出。已釋出。
pg_query_rewrite 0.0.3 版本釋出,這是一個用於特定型別 PostgreSQL 語句的重寫器。已釋出。
InfluxDB fdw 1.1.1 版本釋出 https://github.com/pgspider/influxdb_fdw
pgspider v2.0 版本釋出,這是一個基於 PostgreSQL 外部資料包裝器的分散式資料叢集引擎。已釋出。
pg_builder 2.0.0 版本釋出,這是一個用於 PostgreSQL 的 PHP 查詢構建器。已釋出。
JDBC FDW 0.1.0 版本釋出。已釋出
griddb_fdw 2.1.1 版本釋出。https://github.com/pgspider/griddb_fdw
https://archives.postgresql.org/pgsql-jobs/2022-01/
Nordic PGDay 2022 將於 2022 年 3 月 22 日在芬蘭赫爾辛基的希爾頓赫爾辛基斯特蘭德酒店舉行。此處
pgDay Paris 2022 將於 2022 年 3 月 24 日在法國巴黎舉行。
FOSDEM PGDay 2022 將於 2022 年 2 月 5 日至 6 日在線上舉行。https://fosdem.org/2022/
Citus Con,一個全球虛擬開發者大會,將於 2022 年 4 月 12 日至 13 日舉行。徵稿現已開放。
Planet PostgreSQL:https://planet.postgresql.org/
本週 PostgreSQL 週報由 David Fetter 提供。
請在太平洋標準時間(PST8PDT)週日晚上3:00之前將新聞和公告發送至 david@fetter.org。
Peter Eisentraut 提交
文件:增加了關於正則表示式和 SQL 標準的更多文件。審閱者:Gilles Darold gilles@darold.net 討論:https://postgres.tw/message-id/b7988566-daa2-80ed-2fdc-6f6630462d26@enterprisedb.com https://git.postgresql.org/pg/commitdiff/222b697ec077047024a96392a2f5cb9b1803ccf7
pg_dump:重構 getIndexes()。以更模組化的新風格重新排列了與版本相關的部分。討論:https://postgres.tw/message-id/flat/67a28a3f-7b79-a5a9-fcc7-947b170e66f0%40enterprisedb.com https://git.postgresql.org/pg/commitdiff/e2c52beecdea152ca680a22ef35c6a7da55aa30f
修復程式碼註釋中的拼寫錯誤。報告者:Kevin Zheng 1642644905@qq.com 討論:https://postgres.tw/message-id/flat/17341-d913ddb626c5c08c%40postgresql.org https://git.postgresql.org/pg/commitdiff/962951be3ce319052df014e0d23b6e7626df587f
修復了格式佔位符的錯誤。https://git.postgresql.org/pg/commitdiff/dfaa346c7c00ff8a3fd8ea436a7d5be7527e67cb
移除未使用的包含。`fmgr.h` 被用於 `load_external_function()`,該函式由 `a05dc4d7fd57d4ae084c1f0801973e5c1a1aa26e` 新增,但被 `f9143d102ffd0947ca904c62b1d3d6fd587e0c80` 移除。https://git.postgresql.org/pg/commitdiff/2f4fd1a73ba59247d4413f33d6178bbcbcfab60f
移除未使用的包含。`utils/builtins.h` 被用於 `pg_strtouint64()`,該函式由 `cff440d368690f94fbda1a475277e90ea2263843` 新增,但被 `3c6f8c011f85df7b35c32f4ccaac5c86c9064a4a` 移除。https://git.postgresql.org/pg/commitdiff/4965f75484aea9d273b11ad4957f57d8dc1ed4b0
修復了格式佔位符的錯誤。https://git.postgresql.org/pg/commitdiff/113fa3945f8969346d6a87b9a56d54afa3d34687
John Naylor 提交了
Tom Lane 提交
向 psql 新增 `\getenv` 命令。`\getenv` 將環境變數的值獲取到 psql 變數中。這與十多年前新增的 `\setenv` 命令作用相反。當時我們沒有看到 `\getenv` 的有力用例,但即將進行的迴歸測試重構提供了新增它的充分理由。討論:https://postgr.es/m/1655733.1639871614@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/33d3eeadb21d2268104840cfef6bc2226ddfc680
刪除迴歸測試指令碼的動態翻譯,第一步。`pg_regress` 長期以來一直提供動態替換回歸測試指令碼和結果檔案中的路徑名的機制,但使用該功能一直很麻煩,主要是因為更新結果檔案需要繁瑣的手動編輯。讓我們用透過環境變數傳遞路徑來擺脫它。除了更易於維護外,這種方式還可以處理需要在執行時轉義的路徑名,例如包含單引號的路徑。(在實際構建具有此類路徑名的路徑方面還有其他障礙,但刪除此路徑似乎是件好事。)實現此目的的關鍵編碼規則是使用 psql 的 `\set` 命令串聯動態可變字串的各個部分,然後使用 `:'variable'` 表示法來引用和跳脫字元串以進行下一級解釋。為了使此更改對“git blame”更加透明,我將其分為兩個步驟。此提交添加了必要的 `pg_regress.c` 支援,並就地更改了所有 `*.source` 檔案,以便它們不再需要任何動態翻譯。下一條提交將僅將它們“git mv”到常規的 `sql/` 和 `expected/` 目錄中。討論:https://postgr.es/m/1655733.1639871614@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/d1029bb5a26cb84b116b0dee4dde312291359f2a
刪除迴歸測試指令碼的動態翻譯,第二步。“git mv”所有 `input/*.source` 和 `output/*.source` 檔案到相應的 `sql/` 和 `expected/` 目錄。然後刪除與動態翻譯相關的 `pg_regress` 和 `Makefile` 基礎設施。討論:https://postgr.es/m/1655733.1639871614@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/dc9c3b0ff21465fa89d71eecf5e6cc956d647eca
將 `dblink` 的路徑測試指令碼合併到其主測試中。現在沒有理由啟動單獨的 psql 執行來建立這些函式。(主迴歸測試也需要一些重構,但這還需要進一步思考。)討論:https://postgr.es/m/1655733.1639871614@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/0e6e7f0806b2080cb31f33ff992ec2e4e35fa6f1
為自定義 GUC 新增 `EmitWarningsOnPlaceholders()` 呼叫。定義任何自定義 GUC 的擴充套件在這樣做之後應該呼叫 `EmitWarningsOnPlaceholders()`,以幫助捕獲拼寫錯誤。然而,我們的許多 contrib 模組都沒有遵循這一點。還將此類呼叫新增到 `src/test/modules` 擴充套件中,這些擴充套件有 GUC。雖然這些並非真正面向用戶,但它們應該說明良好實踐而不是錯誤的實踐。作者:Shinya Kato 討論:https://postgr.es/m/524fa2c0a34f34b68fbfa90d0760d515@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/1fada5d81e6769ded832a4ca62ee9371bac3fb9f
為 psql 的 `\getenv` 新增幫助和製表符補全支援。我在 33d3eeadb 中忘記了這些細節 :-(。由 Christoph Berg 提出。討論:https://postgr.es/m/YcI8i/mduMi91uXY@msg.df7cb.de https://git.postgresql.org/pg/commitdiff/0f2abd05441f524a67bc58ef5f0cc32054f7fb66
重新考慮處理帶有擴充套件保留字首的設定。提交 `75d22069e` 在嘗試設定一個未識別的引數(位於之前由擴充套件保留的名稱空間內)時,會列印一個警告。然而,出於同樣的原因,我們不允許你設定未識別的未限定引數名稱,因此讓它成為一個明確的錯誤似乎更好。無論如何,之前的實現效率低下且有錯誤。在一個更合適的位置執行檢查,並更仔細地處理字首匹配的情況。討論:https://postgr.es/m/116024.1640111629@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/2ed8a8cc5b634d33ea07d681c6b02213da07f792
將 `EmitWarningsOnPlaceholders()` 重新命名為 `MarkGUCPrefixReserved()`。這似乎是更清晰地描述其當前功能。提供一個相容宏,以便擴充套件不必立即轉換為新名稱。討論:https://postgr.es/m/116024.1640111629@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/5609cc01c69b80f8788771dc6f5696a459469119
撤銷關於佔位符警告/錯誤的更改。撤銷提交 `5609cc01c`、`2ed8a8cc5` 和 `75d22069e`,直到我們有一個不那麼有問題的關於如何在並行工作程序中處理此問題的想法。根據 buildfarm 的反饋。討論:https://postgr.es/m/1640909.1640638123@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/cab5b9ab2c066ba904f13de2681872dcda31e207
修復 `pgarch` 新目錄掃描邏輯中的問題。`arch_filenames[]` 陣列元素比所需長度少一個位元組,因此一個最大長度的檔名在之後新增另一個條目時會被損壞。(由 Thomas Munro 發現,由 Nathan Bossart 修復。)將這些陣列移到一個 `palloc` 分配的結構中,這樣我們就不會在每個非歸檔程序中浪費幾 KB 的靜態資料。新增一個 `binaryheap_reset()` 呼叫,以明確表示我們使用空的堆開始目錄掃描。我不認為那裡有活動的 bug,但它看起來很脆弱,而這是一種廉價的保險。提交 `beb4e9ba1` 的清理工作,無需回溯補丁。討論:https://postgr.es/m/CA+hUKGLHAjHuKuwtzsW7uMJF4BVPcQRL-UMZG_HM-g0y7yLkUg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/1fb17b1903414676bd371068739549cd2966fe87
在 `pg_dump` 中進行小的清理/最佳化。在提交 `05649b88c` 和 `5209c0ba0` 之後,`findComments()` 和 `findSecLabels()` 不再使用它們的“Archive `*fout`”引數,因此將其移除。在進行此操作時,我注意到 `dumpCompositeTypeColComments()` 不必自行查詢以獲取複合型別的列名,而呼叫函式剛剛獲取了相同的資料,這沒有太大意義。對其進行調整,以使用該查詢結果。這可能對大多數人來說節省不了多少,因為自 `5209c0ba0` 以來,除非複合型別至少有一個註釋,否則我們不會進入此程式碼。儘管如此,它仍然是一個浪費的查詢。https://git.postgresql.org/pg/commitdiff/c7cf73eb7b9e7911748ebe117a7219f21e504121
pg_dump:使 `dumpPublication` 等與同級函式更相似。`dumpPublication`、`dumpPublicationNamespace`、`dumpPublicationTable` 和 `dumpSubscription` 未檢查 `dataOnly`。這只是一個潛在的 bug,因為 `pg_backup_archiver.c` 稍後會過濾掉 `ArchiveEntry`;但它們在僅資料轉儲中浪費了計算週期,並且這種遺漏有一天可能會成為一個活動的 bug。無論如何,讓一些 `dumpFoo` 函式執行此操作而另一些不執行是不好的。基於相同的理由,使 `dumpPublicationNamespace` 遵循所有其他 `dumpFoo` 函式檢查 `DUMP_COMPONENT_DEFINITION` 標誌的模式。(自 `5209c0ba0` 以來,如果未設定該標誌,我們甚至不會進入此處,因此目前檢查它只是形式上的。但將來可能並非如此。)由於這只是美化或未來相容性,因此無需回溯補丁。https://git.postgresql.org/pg/commitdiff/5e65df64d631257ce60016bec0aca43f042b1d33
pg_dump:透過消除子查詢來小的效能改進。移除“username_subquery”機制,轉而進行本地查詢角色名 OID。PG 後端對於 SELECT 輸出列表中的標量 SubLinks 並不十分智慧,因此這提供了一個小的效能改進,至少在擁有兩個以上使用者的安裝中是如此。無論如何,舊方法並沒有使 SQL 程式碼更易讀。同時,我移除了關於查詢物件所有者失敗的各種自定義警告訊息,轉而直接在本地查詢函式中將其視為致命錯誤。據我所知,現在沒有任何理由將其視為除了目錄損壞之外的任何情況,當然也沒有理由讓翻譯人員處理十幾種不同的訊息,而一種就足夠了。(如果事實證明 `fatal()` 確實是個壞主意,我們可以退回到發出 `pg_log_warning()` 並返回一個空字串,從而產生與之前相同的行為,只是更一致。)還刪除了一個完全不必要的子查詢來檢查序列關係的 `pg_depend` 狀態:我們已經在 FROM 子句中有一個 LEFT JOIN 來獲取感興趣的行。討論:https://postgr.es/m/2460369.1640903318@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/d5e8930f50e31d836d84b353b9dadedd5007bb70
pg_dump:在 `getPolicies()` 中避免不安全的函式呼叫。`getPolicies()` 患有與提交 `e3fcbbd62` 中我修復的其他地方相同的“疾病”,即它為我們不一定擁有鎖的表上的表示式呼叫 `pg_get_expr()`。為了修復,將查詢限制為僅收集感興趣的行,而不是在客戶端進行過濾。與之前的補丁一樣,目前只適用於 HEAD。討論:https://postgr.es/m/2273648.1634764485@sss.pgh.pa.us 討論:https://postgr.es/m/7d7eb6128f40401d81b3b7a898b6b4de@W2012-02.nidsa.loc https://git.postgresql.org/pg/commitdiff/3e6e86abca0138abd7265306beb6346dc2d9e221
當無法返回所有索引列時,修復僅索引掃描計劃。如果索引同時包含可返回和不可返回的列,並且其中一個不可返回的列是使用在可返回列中的 Var 的表示式,那麼返回該表示式的查詢可能會導致僅索引掃描計劃,該計劃會嘗試讀取不可返回的列,而不是按預期從可返回的列重新計算表示式。為了修復,將 `IndexOnlyScan` 計劃節點的“indextlist”列表重新定義為用 `Const` 的 `null` 值代替任何不可返回的列。透過阻止 `setrefs.c` 錯誤地匹配這些條目來解決此問題。執行程式樂於接受,因為它只關心條目的公開型別,並且 `ruleutils.c` 也不關心,因為正確的計劃不會引用這些條目。我還考慮了其他幾種方法來阻止 `setrefs.c` 產生錯誤行為,但這種方法似乎很好,因為(a)它允許非常區域性化的修復,(b)它在許多情況下使 `indextlist` 結構更緊湊,並且(c) `indextlist` 現在更忠實地表示索引 AM 實際會產生什麼,即對任何不可返回的列返回 `null`。自從我們引入了包含列以來,這一點更容易受到影響,但也可以在不使用包含列的情況下構造失敗的示例,如新增的迴歸測試所示。因此,回溯補丁到所有支援的分支。根據 bug #17350,來自 Louis Jachiet。討論:https://postgr.es/m/17350-b5bdcf476e5badbb@postgresql.org https://git.postgresql.org/pg/commitdiff/4ace456776524839ef3279ab0bad8a2c9f6cc2a7
Amit Kapila 提交
將索引 vacuum 例程移動到 `vacuum.c`。即將到來的補丁會將並行 vacuum 程式碼移出 `vacuumlazy.c`。此程式碼重構將允許惰性 vacuum 和並行 vacuum 使用索引 vacuum 函式。作者:Masahiko Sawada 審閱者:Hou Zhijie、Amit Kapila 討論:https://postgres.tw/message-id/20211030212101.ae3qcouatwmy7tbr%40alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/cc8b25712b5ed8809048c7e209882bb0981214d6
將並行 vacuum 程式碼移到 `vacuumparallel.c`。此提交將並行 vacuum 相關程式碼移動到一個新檔案 `commands/vacuumparallel.c`,以便任何支援索引的表 AM 都可以利用並行 vacuum 來呼叫索引 AM 回撥(`ambulkdelete` 和 `amvacuumcleanup`)與並行工作程序。此重構的另一個原因是並行 vacuum 不僅限於堆,因此將其保留在 `heap/vacuumlazy.c` 中沒有意義。作者:Masahiko Sawada,基於 Andres Freund 的建議 審閱者:Hou Zhijie、Amit Kapila、Haiying Tang 討論:https://postgres.tw/message-id/20211030212101.ae3qcouatwmy7tbr%40alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/8e1fae193864527c931a704bd7908e4fbc983f5c
修復提交 `8e1fae1938` 引入的編譯錯誤。作者:Masahiko Sawada 討論:https://postgr.es/m/E1n0HSK-00048l-RE@gemulon.postgresql.org https://git.postgresql.org/pg/commitdiff/94226d4506e66d6e7cbf4b391f1e7393c1962841
Michaël Paquier 提交
刪除 ALTER TABLE .. DETACH PARTITION CONCURRENTLY 的斷言。與此 ALTER TABLE 風格相關的一個程式碼路徑檢查要分離的關係必須是一個普通表或分割槽表,如果使用不同種類的關係執行命令,這將失敗。檢視、序列和物化檢視不能成為分割槽樹的一部分,因此這些命令無論如何都會失敗,但斷言會被觸發。最簡單的解決方案是刪除此斷言,以便我們獲得與非併發程式碼路徑相同的失敗。在處理此問題時,根據 Alexander Lakhin 的建議,為 `postgres_fdw` 新增一個迴歸測試,用於外部表的併發分割槽分離。問題引入於 71f4c8c。報告者:Alexander Lakhin 作者:Michael Paquier、Alexander Lakhin 審閱者:Peter Eisentraut、Kyotaro Horiguchi 討論:https://postgr.es/m/17339-a9e09aaf38a3457a@postgresql.org 回溯到:14 https://git.postgresql.org/pg/commitdiff/2e577c94466fde77d24cd44dc47059cf9cf392a4
更正 `REPLICA_IDENTITY_INDEX` 的註釋和部分文件。`catalog/pg_class.h` 曾說帶有已刪除索引的 `REPLICA_IDENTITY_INDEX` 等同於 `REPLICA_IDENTITY_DEFAULT`。程式碼的說法不同,因為它等同於 `REPLICA_IDENTITY_NOTHING`。此行為自複製身份引入以來一直存在,`fe7fd4e` 甚至為此情況添加了測試,但我有點忘記修復此註釋了。同時,此提交重新組織了 ALTER TABLE 頁面上關於複製身份的文件,並添加了一條關於帶有已刪除索引的 `REPLICA_IDENTITY_INDEX` 的說明。作者:Michael Paquier、Wei Wang 審閱者:Euler Taveira 討論:https://postgr.es/m/OS3PR01MB6275464AD0A681A0793F56879E759@OS3PR01MB6275.jpnprd01.prod.outlook.com 回溯到:10 https://git.postgresql.org/pg/commitdiff/fc95d35b9429096ec4d028d79dcf1fb8b5d4b16e
修復 `pg_control_checkpoint()` 中的欄位計數錯誤。此函式生成 18 列,但我們只有 19 列的空間。由 4b0d28d 引入。作者:Bharath Rupireddy 審閱者:Justin Pryzby、Euler Taveira 討論:https://postgr.es/m/CALj2ACVQ=hAs=sT0n4xriimqRrrgECySfg_tSqA+26Rb_yfs2A@mail.gmail.com https://git.postgresql.org/pg/commitdiff/86d9888d2ead04a1a139bbaef9d7f4648022fe4b
Bruce Momjian 已推送
Fujii Masao 提交
postgres_fdw:允許 `postgres_fdw.application_name` 包含轉義序列。當 `postgres_fdw` 連線到遠端伺服器時使用的 `application_name` 可以在伺服器物件的連線引數和 GUC `postgres_fdw.application_name` 中指定。此提交允許這些引數包含以 % 字元開頭的轉義序列。然後 `postgres_fdw` 會將這些轉義序列替換為狀態資訊。例如,`%d` 和 `%u` 分別被替換為本地伺服器中的使用者名稱和資料庫名。此功能使我們能夠更容易地將資訊新增到遠端連線的 `application_name` 中,以便跟蹤遠端事務或查詢。作者:Hayato Kuroda 審閱者:Kyotaro Horiguchi、Masahiro Ikeda、Hou Zhijie、Fujii Masao 討論:https://postgr.es/m/TYAPR01MB5866FAE71C66547C64616584F5EB9@TYAPR01MB5866.jpnprd01.prod.outlook.com 討論:https://postgr.es/m/TYCPR01MB5870D1E8B949DAF6D3B84E02F5F29@TYCPR01MB5870.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/6e0cb3dec10e460288d68a128e3d79d16a230cdb
postgres_fdw:撤銷 `postgres_fdw.application_name` 的不穩定測試。提交 `6e0cb3dec1` 添加了用於檢查 `postgres_fdw.application_name` 中的轉義序列是否按預期替換為狀態資訊的測試。但它們不穩定,導致一些 buildfarm 成員報告了失敗。此提交撤銷了這些不穩定的測試。https://git.postgresql.org/pg/commitdiff/5e64ad369771b66bb3e916aade735defce6e65a1
Thomas Munro 推送
Daniel Gustafsson 提交
Álvaro Herrera 提交
Andres Freund 提交
Magnus Hagander 已推送