2025年9月25日: PostgreSQL 18 釋出!

PostgreSQL 每週新聞 - 2021 年 12 月 19 日

釋出於 2021-12-20,作者:PWN
PWN

PostgreSQL 每週新聞 - 2021 年 12 月 19 日

FOSDEM PGDay 2022 將於 2022 年 2 月 5-6 日線上舉行。https://fosdem.org/2022/

一本 PostgreSQL 遷移指南,其中包含許多寶貴的經驗,有法語和英語版本,已釋出

pgDay Paris 2022 將於 2022 年 3 月 24 日在法國巴黎舉行。論文徵集截止日期為 2021 年 12 月 31 日午夜(巴黎時間)。

Citus Con,一個全球虛擬開發者大會,將於 2022 年 4 月 12-13 日舉行。論文徵集現已開放。

PostgreSQL 產品新聞

Pgpool-II 4.3.0,一個 PostgreSQL 的連線池和語句複製系統,已釋出

Access-to-PostgreSQL v2.3 已釋出

check_pgbackrest 2.2,一個相容 Nagios 的 pgBackRest 監控工具,已釋出。https://github.com/dalibo/check_pgbackrest/releases

DB Comparer 5.0 for PostgreSQL 已釋出

Database .NET v33.6,一個多資料庫管理工具,現已支援 PostgreSQL,已釋出

pgAdmin4 6.3,一個 PostgreSQL 的 Web 和原生 GUI 控制中心,已釋出

pgFormatter 5.2,一個 SQL 程式碼的格式化/美化工具,已釋出。https://github.com/darold/pgFormatter/blob/master/ChangeLog

MySQL-to-PostgreSQL v5.5 已釋出

12 月 PostgreSQL 工作崗位

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

PostgreSQL 本地活動

2022 Nordic PGDay 將於2022年3月22日在芬蘭赫爾辛基的希爾頓赫爾辛基斯特蘭德酒店舉行。論文徵集(CfP)將於2021年12月31日截止,請 在此 提交。

PostgreSQL 相關新聞

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

本週 PostgreSQL 週報由 David Fetter 提供。

請在太平洋標準時間(PST8PDT)週日晚上3:00之前將新聞和公告發送至 david@fetter.org。

已應用補丁

Michaël Paquier 提交

  • 改進 psql 對檢視、FDW、序列和轉換的製表符補全。已完成以下改進:- 為 ALTER SEQUENCE AS 新增型別補全。- 忽略轉換的 ALTER,因為該命令不受支援。- 為 ALTER FOREIGN DATA WRAPPER 新增更多補全。- 為 ALTER VIEW 新增與列相關的選項。這是 0cd6d3b 中工作的延續。作者:Ken Kato 討論:https://postgr.es/m/9497ae9ca1b31eb9b1e97aded1c2ab07@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/f44ceb46ec2d8da48f6e145bf462d5620c25e079

  • 在更新時集中控制檔案的時戳計算。此提交將控制檔案的時戳計算移至 src/common/ 中負責更新後端控制檔案的例程,該檔案由多個前端工具(pg_rewind、pg_checksums 和 pg_resetwal)以及後端本身共享。此更改的直接影響是,當在 pg_rewind 和 pg_checksums 中寫入控制檔案時,控制檔案的時戳會更新,這有助於跟蹤這些操作的控制檔案更新,後端在啟動時也會在日誌中跟蹤這一點。這部分可以說是一個錯誤,因為每次寫入新版本的控制檔案時都應該更新 ControlFileData->time,但這是一個行為更改,因此不進行向後移植。作者:Amul Sul 評審者:Nathan Bossart、Michael Paquier、Bharath Rupireddy 討論:https://postgr.es/m/CAAJ_b97nd_ghRpyFV9Djf9RLXkoTbOUqnocq11WGq9TisX09Fw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/6fb7c5d67cdd55454fe6317f939a191f85e96473

  • 修復 win32stat.c 中標準流 fstat() 的相容性問題。在 _WIN32_WINNT < 0x0600 的編譯環境中,無法使用 GetFinalPathNameByHandleA(),這意味著 Postgres 仍需支援的 MinGW 下的某些 buildfarm 成員使用的 Windows XP。這被 buildfarm 報告為編譯警告,但實際上比報告更糟糕,因為程式碼根本無法工作。取而代之的是,此更改切換到 GetFileInformationByHandle(),該函式可以對標準流失敗並對重定向的流成功,這正是我們在模擬 fstat() 的程式碼中所尋找的。由於 win32stat.c 的現有邏輯,我們也知道它可以在所有仍受支援的環境中工作。由 10260c7 引入的問題,因此向後移植到 14。報告者:Justin Pryzby,透過 buildfarm 成員 jacana 作者:Michael Paquier 評審者:Juan José Santamaría Flecha 討論:https://postgr.es/m/20211129050122.GK17618@telsasoft.com 向後移植到:14 https://git.postgresql.org/pg/commitdiff/58651d8dd6a56af306a361e2c386db798164c0f1

  • 修復拼寫錯誤。作者:Lingjie Qiang 討論:https://postgr.es/m/OSAPR01MB71654E773F62AC88DC1FC8CC80669@OSAPR01MB7165.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/98105e53e0ab472b7721a3e8d7b9f1750a635120

  • 修復一些 GUC 的標誌並改進一些描述。此提交修復了一些 GUC 問題:- enable_incremental_sort 未標記為 GUC_EXPLAIN,導致在使用非預設值時,它不會出現在 EXPLAIN (SETTINGS) 的輸出中,這與其他規劃器級別的 GUC 相反。- trace_recovery_messages 缺少 GUC_NOT_IN_SAMPLE,與其他開發選項一樣。- ssl_renegotiation_limit 應標記為 COMPAT_OPTIONS_PREVIOUS。在處理此問題時,還修復了與 autovacuum_freeze_max_age 相關的一個不正確的註釋,並改進了最近引入的一些 GUC 的描述。來自同一作者的大型補丁集提取。作者:Justin Pryzby 描述:https://postgr.es/m/20211129030833.GJ17618@telsasoft.com https://git.postgresql.org/pg/commitdiff/be5455124b0f073ba3924ae2ba302a27b1686230

  • 改進 psql 對各種 DROP 命令的製表符補全。已完成以下改進:- 對 DROP OWNED、matviews 和 policies 的 RESTRICT/CASCADE 進行處理。- 對 DROP TRANSFORM 進行處理。這是 0cd6d3b 和 f44ceb4 工作任務的延續。作者:Ken Kato 評審者:Asif Rehman 討論:https://postgr.es/m/0fafb73f3a0c6bcec817a25ca9d5a853@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/9270778f467dad0d78d3b9e435a89a6039322b2f

  • 修復 slotfuncs.c 中的註釋語法錯誤。作者:Bharath Rupireddy 討論:https://postgr.es/m/CALj2ACUkrNR2xTak+QaqxoTjPKGn8zXWripv7SR27t+Q5qF1Wg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/7799d4e3bdd14c90989d829a9b24e73d4ff4d4ad

  • 將 pg_upgrade 測試中使用的所有 SQL 查詢移至單獨的檔案。現有的 pg_upgrade/test.sh 和 buildfarm 程式碼在進行跨版本升級測試時會包含相同的一組 SQL 查詢,以調整升級前回歸測試建立的物件(主要是,不相容或不存在的物件需要從源中刪除,可能需要重新建立)。這會將所有這些 SQL 查詢移到一個新的、單獨的檔案中,幷包含一組 \if 子句,用於根據待升級叢集的舊版本處理版本檢查。長期計劃是讓 buildfarm 程式碼重用這個新的 SQL 檔案,以便提交者能夠透過重新整理核心程式碼來修復 pg_upgrade 測試中的任何相容性問題,而無需干預 buildfarm 客戶端。請注意,這隻能處理主要的迴歸測試套件,目前尚未對 contrib 模組進行任何處理(這些模組存在更多問題,例如資料庫名稱)。已進行向下到 10 的向後移植,並調整了版本檢查,因為此指令碼只需要向後相容,以便能夠清理 buildfarm 客戶端中的最大程式碼量。作者:Justin Pryzby、Michael Paquier 討論:https://postgr.es/m/20201206180248.GI24052@telsasoft.com 向後移植到:10 https://git.postgresql.org/pg/commitdiff/0df9641d39057f431655b92b8a490b89c508a0b3

  • pg_waldump:被 SIGINT 中斷時發出統計摘要。先前,pg_waldump 在被 SIGINT(例如簡單的 Ctrl+C)中斷時不會顯示其統計摘要。此提交為此添加了一個 SIGINT 的訊號處理程式,捕獲訊號以在最早方便時退出,以便在退出前顯示統計摘要。這使得報告更具互動性,類似於 strace -c。這種新行為使得 --stats 和 --follow 選項的組合更有用,這樣使用者在這種情況下就能獲得任何 pg_waldump 呼叫的報告。有關計算統計的 LSN 範圍的資訊已作為標題新增到顯示的報告中。此實現來自 Álvaro Herrera 和我的建議,基於我對這個補丁的作者關於 --stats 和 --follow 最初不相容的抱怨。如文件所示,此功能在 Windows 上不受支援,儘管透過捕獲與 Ctrl+C 相關的終端事件等可以支援它(這可能需要更集中的實現,因為其他工具也可以從公共 API 中受益)。作者:Bharath Rupireddy 討論:https://postgr.es/m/CALj2ACUUx3PcK2z9h0_m7vehreZAUbcmOky9WSEpe8TofhV=PQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/f2c52eeba919a1b191f60445001371bd7c53aaa9

  • 改進各種 GUC 的描述。此提交修復了某些 GUC 描述中的一些不一致之處,同時使其措辭在所依賴的單位方面更加通用。對於大多數 GUC,這消除了使用“N 秒”或“N 位元組”之類的術語,這些術語可能不適用於所有翻譯這些字串的語言(根據我自己的經驗,這在法語和英語中有效,在日本語中效果較差)。根據下面列出的作者之間的討論。作者:Justin Pryzby、Michael Paquier 討論:https://postgr.es/m/20211129030833.GJ17618@telsasoft.com https://git.postgresql.org/pg/commitdiff/03774f9bb304d49fae3379806115aaa5d1fafea2

  • 修復 CONCURRENTLY REINDEX 時的 toast 索引損壞。對 toast 索引或 toast 關係執行的 REINDEX CONCURRENTLY 可能會損壞重建的目標索引,因為並行執行的修改 toast 值的後端會在完成區域性操作後立即釋放對 toast 關係的鎖,而不是在修改 toast 值的事務提交後釋放。這裡的修復很簡單:現在,在儲存或刪除 toast 值時,我們會一直持有對 toast 關係的 ROW EXCLUSIVE 鎖,直到處理 toast 值的事務提交為止,這樣併發進行的 reindex 操作就可以等待任何活動並看到新插入(或刪除)的行。添加了一個隔離測試來檢查修復此問題的場景,該測試設計得有些巧妙,因為它依賴於 allow_system_table_mods 來重新命名 toast 表及其索引為固定的名稱。這樣,就可以直接對它們進行 reindex,而無需依賴底層關係的 OID。請注意,這也無法使用 DO 塊,因為 REINDEX CONCURRENTLY 不能在事務塊中執行。由於 c4a7a39,可以允許在測試套件中使用 allow_system_table_mods,因此該測試已向後移植到 13。報告者:Alexey Ermakov 分析者:Andres Freund、Noah Misch 作者:Michael Paquier 評審者:Nathan Bossart 討論:https://postgr.es/m/17268-d2fb426e0895abd4@postgresql.org 向後移植到:12 https://git.postgresql.org/pg/commitdiff/f99870dd867331f576a84e37438da86a866559c4

  • 改進 CREATE/ALTER SUBSCRIPTION 選項的解析。這簡化了程式碼,因此 parse_subscription_options() 的呼叫者不再需要將其歸零,而是持有提供的選項以及預設/已解析選項值的點陣圖。這還簡化了在檢查不相容性時與命令支援的選項相關的一些檢查。同時,重新排序了為不支援的“slot_name = NONE”組合生成的錯誤。這可能會生成與先前主要版本不同的錯誤,但使用者需要遍歷所有這些錯誤才能在這種情況下獲得正確的命令,如果使用了錯誤的選項值“enabled”和“create\slot”,則最終結果命令將保持不變。作者:Peter Smith 評審者:Nathan Bossart 討論:https://postgr.es/m/CAHut+PtXHfLgLHDDJ8ZN5f5Be_37mJoxpEsRg8LNmm4XCr06Rw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/00029deaf65aad47044d9290fe80f2f68601f7ac

  • 修復 {a,an} 的一些拼寫錯誤。其中一項更改影響了文件,因此需要向後移植。作者:Peter Smith 討論:https://postgr.es/m/CAHut+Pu6+c+r3mY24VT7u+H+E_s6vMr5OdRiZ8NT3EOa-E5Lmw@mail.gmail.com 向後移植到:14 https://git.postgresql.org/pg/commitdiff/5d08137076fd39694188ec4625013756aab889e1

  • 改進有關事務命令的一些 WAL 記錄的描述。此提交改進了事務 RMGR 的一些 WAL 記錄的描述:- 跟蹤事務提交的 remote_apply。此 GUC 是使用者可設定的,因此此資訊對於除錯可能很有用。- 為 PREPARE TRANSACTION 新增複製源資訊,包括源 ID、LSN 和時間戳- 同上,用於 ROLLBACK PREPARED。這會影響 pg_waldump 或任何使用這些描述例程的格式,因此不進行向後移植。作者:Masahiko Sawada、Michael Paquier 討論:https://postgr.es/m/CAD21AoD2dJfgsdxk4_KciAZMZQoUiCvmV9sDpp8ZuKLtKCNXaA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/c8b733c4c4b0c5b7aa93553aa5b7f2c1d0bf00bf

  • 刪除 PREPARE TRANSACTION 中複製源的斷言。使用複製源時,pg_replication_origin_xact_setup() 是一個可選的選擇,可以將 LSN 和時間戳設定為標記源,該源將額外新增到 WAL 中用於事務提交或中止(包括 2PC 事務)。PREPARE TRANSACTION 程式碼路徑中的一個斷言假設此資料總是設定的,因此在使用不設定源 LSN 的複製源時會觸發。添加了一些測試來更全面地覆蓋這種情況。提交 1eb6d65 中的疏忽。根據與 Amit Kapila 和 Masahiko Sawada 的討論。討論:https://postgr.es/m/YbbBfNSvMm5nIINV@paquier.xyz 向後移植到:11 https://git.postgresql.org/pg/commitdiff/ece8c76192fee0b78509688325631ceabca44ff5

  • 調整 MSVC 的 TAP 測試的一些環境變數設定。edc2332 在 vcregress.pl 中引入了對 LZ4、TAR 和 GZIP_PROGRAM 環境變數的控制,以允許任何 TAP 測試使用這些命令。這使得設定與 src/Makefile.global.in 更加一致,因為 Make 和 MSVC 構建使用了相同的預設值。每個引數都可以在 buildenv.pl 中更改,但在載入 buldenv.pl 後會分配一個預設值,因此無法取消設定任何這些引數,使用空值也不適用於“||=”。由於某些環境可能沒有 PATH 中相容的命令(例如來自 MinGW 的 tar 是一個問題),這可能會導致測試失敗,而沒有退出路徑可以繞過任何失敗的測試。此提交的更改使得 LZ4、TAR 和 GZIP_PROGRAM 的預設值在載入 buildenv.pl 之前分配,而不是之後。這樣,我們就能與 GNU 構建保持相同的相容性,並使用相同的預設值,並且可以取消設定這些值中的任何一個。同時,在專門介紹 MSVC 的 TAP 測試的部分中,添加了關於這三個變數的一些文件。根據與 Andrew Dunstan 的討論。討論:https://postgr.es/m/YbGYe483803il3X7@paquier.xyz 向後移植到:10 https://git.postgresql.org/pg/commitdiff/7acd01015c4a5edb253ea9468ccb71ef99cabd1a

  • 為 pg_upgrade 新增 -N/--no-sync 選項。此選項與 src/bin/ 中的其他工具(pg_checksums、pg_dump、pg_rewind 和 pg_basebackup)提供的功能一致,有助於在測試時利用 I/O 成本。不應用於生產環境。pg_upgrade 的所有迴歸測試都已更新以使用此新選項。在 I/O 受限的環境中,這最多可以節省幾秒鐘,透過避免重新整理新升級叢集的資料資料夾。作者:Michael Paquier 評審者:Peter Eisentraut 討論:https://postgr.es/m/YbrhzuBmBxS/DkfX@paquier.xyz https://git.postgresql.org/pg/commitdiff/3d5ffccb6df323f528cf870c26d0d0517ffe3eaa

  • 修復 pg_receivewal 的 TAP 測試中的拼寫錯誤。引入於 d62bcc8,在修改該區域時發現。https://git.postgresql.org/pg/commitdiff/22592e10b41a95f841642fa16127521989177bbc

Tom Lane 提交

Peter Geoghegan 提交

  • vacuumlazy.c:將 dead_tuples 重新命名為 dead_items。提交 8523492d 簡化了“dead”的含義,以便 VACUUM:記憶體中收集的 TIDs(為索引 vacuuming 做準備)必須始終來自堆頁上的 LP_DEAD 存根行指標,這些指標是在修剪後找到的。這正式化了索引 vacuuming(和堆 vacuuming)是可選過程的想法。與修剪不同,它們可以無限期延遲,而不會有違反基本不變數的風險。例如,留下 LP_DEAD 項顯然不會增加事務 ID 迴繞的風險。沒有事務 ID 就無法實現事務 ID 迴繞。重新命名任何引用 DEAD 元組(帶有儲存的元組)的內容都加強了這一點。vacuumlazy.c 之外的程式碼繼續模糊了死元組/已刪除元組和 LP_DEAD 項之間的區別。這是必需的,因為自動 vacuum 排程仍然主要由“死專案/元組”統計資訊驅動。將來,我們可能會發現用更復雜的模型替換此模型很有用,作為教會自動 vacuum 執行更頻繁的 vacuuming 的一步,而不是針對碰巧因版本更新而容易膨脹的單個索引。順便,簡化了處理 VACUUM 的 dead_items 陣列的一些函式簽名。作者:Peter Geoghegan pg@bowt.ie 評審者:Masahiko Sawada sawada.mshk@gmail.com 討論:https://postgr.es/m/CAH2-WzktGBg4si6DEdmq3q6SoXSDqNi6MtmB8CmmTmvhsxDTLA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/4f8d9d1217956798e761491d236af576b27f5e12

  • vacuumlazy.c:修復剩餘的“dead tuple”引用。提交 4f8d9d12 中的疏忽。報告者:Masahiko Sawada sawada.mshk@gmail.com 討論:https://postgr.es/m/CAD21AoDm38Em0bvRqeQKr4HPvOj65Y8cUgCP4idMk39iaLrxyw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/4bdfe6855901a4104dbdac2be53d465b626e244d

  • 標準化 cleanup lock 術語。術語“super-exclusive lock”是“buffer cleanup lock”的同義詞,該術語多年前首次出現在 nbtree 中。透過一致地使用“cleanup lock”一詞來標準化。這完成了提交 276db875 中開始的工作。沒有理由有兩個術語。但只有一個術語是有充分理由的:避免混淆 VACUUM 在索引 AM 中呼叫 ambulkdelete 時為何會獲取完整的 cleanup lock(而不僅僅是普通的 exclusive lock)。這與保護物理索引資料結構本身無關。它對於實現一種鎖定協議是必需的,該協議確保指向堆/表結構的 TID 在 VACUUM 之前不會被標記為可回收(這與 VACUUM 在其第一個堆傳遞期間如何使用 cleanup lock 有些相似)。請注意,索引 AM 不一定需要實現此鎖定協議——一些索引 AM 使用 MVCC 快照作為其唯一的內部鎖定,以防止不安全的 TID 回收。順便,更新 nbtree README。將上述索引 vacuuming 鎖定協議的討論與提交 2ed5b87f 新增的“drop leaf page pin”最佳化分開。我們現在透過描述單個索引掃描如何安全地選擇退出應用標準鎖定協議(因此可以避免阻塞 VACUUM 的進度)來組織對後者的討論。還記錄了為什麼該最佳化不適用於 nbtree 索引掃描。作者:Peter Geoghegan pg@bowt.ie 討論:https://postgr.es/m/CAH2-WzngHgQa92tz6NQihf4nxJwRzCV36yMJO_i8dS+2mgEVKw@mail.gmail.com 討論:https://postgr.es/m/CAH2-WzkHPgsBBvGWjz=8PjNhDefy7XRkDKiT5NxMs-n5ZCf2dA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/bcf60585e6e0e95f0b9e5d64c7a6edca99ec6e86

Amit Kapila 提交

Daniel Gustafsson 提交

Álvaro Herrera 提交

Tomáš Vondra 提交了

Peter Eisentraut 提交

Robert Haas 提交

  • 記錄 tar 存檔現在已正確終止。提交 5a1007a5088cd6ddf892f7422ea8dbaef362372f 改變了伺服器行為,但我沒有注意到現有行為已被記錄,因此沒有更新文件。此提交完成了此操作。我選擇提到行為已更改,而不是僅僅刪除對偏離標準的引用。我認為這可能對工具作者有所幫助。討論:http://postgr.es/m/CA+TgmoaYZbz0=Yk797aOJwkGJC-LK3iXn+wzzMx7KdwNpZhS5g@mail.gmail.com https://git.postgresql.org/pg/commitdiff/81fca310b38e7808dff9c01a26564e8f2db10893

  • 預設 log_checkpoints=on,log_autovacuum_min_duration=10m。這裡的想法是,當已知在某個時間點發生了效能問題時,如果日誌中有一些資訊可以幫助弄清楚當時可能發生了什麼,那就很好了。此更改引起了超出平均水平的反對意見,因為它意味著預設設定的伺服器即使沒有出現問題也會產生一些日誌輸出。但是,據我計算,郵件列表的討論中有大約兩倍多的人贊成此更改而不是反對。認為額外日誌輸出在實踐中不成問題的理由是:(1)在正確配置的系統上,此設定可以生成的每條訊息的速率每隔幾分鐘就被限制為一條,並且(2)生產系統傾向於在日誌中包含更多由於連線嘗試失敗、應用程式活動產生的 ERROR 訊息等引起的垃圾資訊。Bharath Rupireddy,由 Fujii Masao 和我審閱。許多其他人評論了該主題,但據我所見,那是對更改的優點進行的討論,而不是對補丁的審閱。討論:https://postgr.es/m/CALj2ACX-rW_OeDcp4gqrFUAkf1f50Fnh138dmkd0JkvCNQRKGA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/64da07c41a8c0a680460cdafc79093736332b6cf

  • 刪除 InitXLOGAccess()。RecoveryInProgress() 呼叫 InitXLOGAccess() 並不理想,因為狀態查詢函式通常不應具有執行初始化的副作用。我們可以透過從其他地方呼叫 InitXLOGAccess() 來解決此問題,但相反,讓我們將其完全刪除。InitXLogAccess() 所做的一件事是初始化 wal_segment_size,但它不需要這樣做。在 postmaster 中,PostmasterMain() 呼叫 LocalProcessControlFile(),所有子程序將繼承該值 — 除了 EXEC_BACKEND 構建之外,但那時每個後端都會執行 SubPostmasterMain(),它也呼叫 LocalProcessControlFile()。InitXLogAccess() 所做的另一件事是更新 RedoRecPtr 並執行 pageWrites,但這並不關鍵,因為所有使用它們的程式碼如果發現它們已更改,將只是重試。唯一的區別是,大多數程式碼現在將看到一個絕對無效的初始值,而不是一個可能剛剛過時的值,但這每個後端生命週期只會發生一次,所以不應該是一個大問題。由我提交補丁,由 Nathan Bossart、Michael Paquier、Andres Freund、Heikki Linnakangas 和 Álvaro Herrera 審閱。討論:http://postgr.es/m/CA+TgmoY7b65qRjzHN_tWUk8B4sJqk1vj1d31uepVzmgPnZKeLg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/fa0e03c15a9f67671f0a6e0ec66d5e2ac7119c8a

Fujii Masao 提交

  • postgres_fdw:修復意外報告空訊息。postgres_fdw 中的 pgfdw_report_error() 從 PGresult 或 PGconn 獲取一條訊息,以報告從遠端伺服器收到的錯誤。以前,如果它既不能從 PGresult 也不能從 PGconn 獲取訊息,它就會意外地報告空訊息。此問題的原因是 pgfdw_report_error() 未正確處理無法獲取任何訊息的情況,並且其本地變數 message_primary 被設定為 '\0'。此提交改進了 pgfdw_report_error(),以便在它未獲取到任何訊息且 message_primary 設定為 '\0' 時報告“無法獲取...”的訊息。這與 message_primary 為 NULL 時的行為相同。dblink 中的 dblink_res_error() 存在相同的問題,因此此提交也以相同的方式改進了它。向所有支援的分支回填。作者:Fujii Masao 審閱者:Bharath Rupireddy 討論:https://postgr.es/m/477c16c8-7ea4-20fc-38d5-ed3a77ed616c@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/557c39bba925d553c6bb12b5e80d1964d355583b

  • postgres_fdw:在獲取查詢結果時超時時報告警告。中止遠端事務或向遠端伺服器傳送取消請求時,postgres_fdw 呼叫 pgfdw_get_cleanup_result() 來等待事務中止查詢或取消請求的結果到達。如果超時或發生連線問題,它將無法獲取結果。以前,即使在 pgfdw_get_cleanup_result() 中發生超時或連線問題,postgres_fdw 也不會報告警告訊息。這可能會在發生此類事件時使故障排除更加困難。此提交使 pgfdw_get_cleanup_result() 在失敗時告訴其呼叫者發生了什麼問題(超時或連線錯誤),並使其呼叫者根據該資訊報告適當的警告訊息。作者:Fujii Masao 審閱者:Bharath Rupireddy 討論:https://postgr.es/m/15aa988c-722e-ad3e-c936-4420c5b2bfea@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/815d61fcd485e8c60dba22988bf5a90fc12df32d

  • doc:新增關於 postgres_fdw.application_name 的註釋。postgres_fdw.application_name 可以是任何長度的任何字串,甚至可以包含非 ASCII 字元。然而,當它被傳遞並用作外伺服器中的 application_name 時,它會被截斷為小於 NAMEDATALEN 個字元,並且其中的任何非可列印 ASCII 字元都將被問號替換。此提交將這些註釋新增到文件中。作者:Hayato Kuroda 審閱者:Kyotaro Horiguchi、Fujii Masao 討論:https://postgr.es/m/TYCPR01MB5870D1E8B949DAF6D3B84E02F5F29@TYCPR01MB5870.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/58e2e6eb67fec14c793c74207407e172d7e0291d

Andrew Dunstan 推送

Thomas Munro 推送

Alexander Korotkov 提交了

Andres Freund 提交