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

發布於 2021-02-01,作者:PWN
PWN

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

Crunchy PostgreSQL Operator 4.6.0 已發布,這是一個在 Kubernetes 上部署和管理開源 PostgreSQL 叢集的系統。https://access.crunchydata.com/documentation/postgres-operator/latest/releases/4.6.0/

pgAdmin4 4.30 已發布,這是一個用於 PostgreSQL 的 Web 和原生 GUI 控制中心。https://www.pgadmin.org/docs/pgadmin4/dev/release_notes_4_30.html

PostgreSQL 產品新聞

一月份的 PostgreSQL 工作

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

PostgreSQL 新聞報導

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

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

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

已套用的修補程式

Tom Lane 推送了

  • 將時區資料檔案更新至 tzdata 版本 2021a。俄羅斯(伏爾加格勒時區)和南蘇丹的 DST 法規變更。澳洲、巴哈馬、貝里斯、百慕達、迦納、以色列、肯亞、奈及利亞、巴勒斯坦、塞席爾和萬那杜的歷史修正。值得注意的是,Australia/Currie 時區已修正到與 Australia/Hobart 時區完全相同。https://git.postgresql.org/pg/commitdiff/c7edf4ac246b67073563354c2808c78868cbac36

  • 使 storage/standby.h 再次可以獨立編譯。自 commit 0650ff230 以來,此檔案已無法通過 headerscheck/cpluspluscheck 驗證,這是由於在未包含適當標頭的情況下引用了 typedef TimestampTz 的結果。https://git.postgresql.org/pg/commitdiff/a4b03de589c1df0845e9732da203f505f2eedb6d

  • Doc:改善 pg_proc.protrftypes 的文件。新增指向 pg_type 的 "references" 連結,如同我們對其他型別 OID 的陣列所做的一樣。稍微潤飾一下說明。Joel Jacobson,我進行了額外編輯討論:https://postgr.es/m/d1cc628c-3953-4209-957b-29427acc38c8@www.fastmail.com https://git.postgresql.org/pg/commitdiff/951862eda57e5dc8f78c97b3c30fe2032a5562b8

  • 修正了 function TRANSFORM 子句中 ruleutils 支援的問題。我不小心注意到這會由於錯誤的 Assert 而導致核心轉儲。更糟的是,自 v11 以來,輸出格式一直錯誤。顯然,我們需要在此進行一些迴歸測試。討論:https://postgr.es/m/d1cc628c-3953-4209-957b-29427acc38c8@www.fastmail.com https://git.postgresql.org/pg/commitdiff/07d46fceb4254b00e79f3d06419cbae13b0ecb5a

  • 不要在 Kerberos 測試中覆蓋呼叫使用者的認證快取。這個測試腳本中令人尷尬的疏忽,幸運的是預設情況下不會執行。由 Jacob Champion 報告和修補。討論:https://postgr.es/m/1fcb175bafef6560f47a8c31229fa7c938486b8d.camel@vmware.com https://git.postgresql.org/pg/commitdiff/881933f194221abcce07fb134ebe8685e5bb58dd

  • 提高 plpgsql 程序中重複 CALL 的效能。這個修補程式基本上是清理 plpgsql 程序的原始實作所留下的技術債務,特別是 commit d92bc83c4。如果我們處於非原子環境中,該修補程式(或更準確地說,後續修補程式修復了其最嚴重的錯誤)迫使我們每次都重新規劃 CALL 和 DO 語句。這並不是出於任何根本原因,而是因為使用保存的計畫需要有一個 ResourceOwner 來保存計畫的引用計數,而我們手邊沒有合適的 resowner,現有的 API 也不支援使用一個。雖然為 CALL/DO 建立一個「計畫」並不昂貴,但這些週期在重複執行中會累加起來。因此,這個修補程式對 API 進行了以下更改:* GetCachedPlan/ReleaseCachedPlan 被修改為允許呼叫者指定用於固定計畫的 resowner,而不是強制使用 CurrentResourceOwner。* spi.c 獲得了一個 "SPI_execute_plan_extended" 進入點,允許呼叫者說出用於固定計畫的 resowner。這借鑒了最近新增的 SPI_prepare_extended 中的選項結構的想法,希望允許在不進行更多 API 變更的情況下新增未來的選項。這取代了 SPI_execute_plan_with_paramlist(我已標記為已棄用)以及 SPI_execute_plan_with_receiver(v14 中的新增功能,所以我直接將其刪除)。* 我也藉此機會刪除了讓 plpgsql 進入 SPI 私有資料結構以將 SPI 計畫標記為 "no_snapshot" 的粗略駭客行為。最好將其視為 SPI_prepare_extended 的一個選項。現在,當運行包含任何 CALL 或 DO 命令的非原子程序或 DO 塊時,plpgsql 會建立一個 ResourceOwner,該 ResourceOwner 將用於固定 CALL/DO 命令的計畫。(在原子環境中,我們像以前一樣使用 CurrentResourceOwner。)完成此操作後,我們可以像往常一樣保存 CALL/DO 計畫,無論它們是否跨事務邊界使用。對於具有一些簡單參數表達式的平凡程序的 CALL 來說,這似乎可以加快大約 2 倍的速度。透過限制像這樣建立額外的 ResourceOwner,在無法受益的情況下基本上沒有任何懲罰。Pavel Stehule,我進行了一些進一步的駭客攻擊討論:https://postgr.es/m/CAFj8pRCLPdDAETvR7Po7gC5y_ibkn_-bOzbeJb39WHms01194Q@mail.gmail.com https://git.postgresql.org/pg/commitdiff/ee895a655ce4341546facd6f23e3e8f2931b96bf

  • psql 的 helpSQL() 函數的程式碼審查。用於識別單字邊界的迴圈可能會存取輸入字串的末尾。很可能永遠不會導致實際的崩潰,但這會使 valgrind 不高興。當輸入有兩個單字但我們只有與第一個單字的匹配時,嘗試不同單字數量的邏輯不起作用,例如 "\h with select"。(我們必須 "continue" pass 迴圈,而不是 "break"。)計算 nl_count 的邏輯非常奇怪,並且在至少兩個程式碼路徑中可能會以 nl_count = 0 呼叫 PageOutput,導致無法分頁應該傳送到分頁器的輸出。此外,在 v12 及更高版本中,nl_count 計算尚未更新以考慮新增 URL。包含命令語法詳細資訊的 PQExpBuffer 沒有被釋放,導致會話生命週期的記憶體洩漏。在此期間,改善了一些註解,為變數選擇了更具描述性的名稱,並修正了另一個變數的不一致資料類型選擇。依照 Alexander Lakhin 的錯誤 #16837。這段程式碼非常舊,因此回溯修補到所有支援的分支。Kyotaro Horiguchi 和 Tom Lane 討論:https://postgr.es/m/16837-479bcd56040c71b3@postgresql.org https://git.postgresql.org/pg/commitdiff/f76a85000bba2f1b1c926cbbe525e47b246215f1

  • 抑制來自 commit ee895a655 的編譯器警告。由於某些難以理解的原因,一些 buildfarm 成員現在開始抱怨 plpgsql_call_handler 的 "retval" 變數可能在使用前未初始化。看起來它和之前的 commit 相比並沒有更不安全,但這些抱怨(大部分?)是新的。我認為在宣告變數的地方初始化它就足以消除這些警告。我也注意到一些編譯器警告關於 setjmp 覆蓋了相同的變數,這或許更站得住腳。將其標記為 volatile 以消除該警告。此外,重新排列邏輯,給 procedure_resowner 一個單一的初始化點,希望能消除一些關於它的 setjmp 覆蓋警告。(將其標記為 volatile 也可以,但它的兄弟變數依賴於單一賦值,所以我們堅持使用該方法。)討論: https://postgr.es/m/E1l4F1z-0000cN-Lx@gemulon.postgresql.org https://git.postgresql.org/pg/commitdiff/7292fd8f1c781278021407276474d9188845113d

  • 重新思考最近新增的 SPI 介面。SPI_execute_with_receiver 和 SPI_cursor_parse_open_with_paramlist 是 v14 中的新功能(參見 commit 2f48ede08)。在它們發布之前,讓我們修改它們的 API,以遵循最近由 SPI_prepare_extended 等建立的實踐:將所有可選參數塞入一個結構中,呼叫者應該預先將其歸零。希望允許未來添加更多選項,而無需 API 破壞或持續增加新的 SPI 進入點。考慮到這一點,為它們選擇稍微更通用的名稱:分別為 SPI_execute_extended 和 SPI_cursor_parse_open。討論: https://postgr.es/m/CAFj8pRCLPdDAETvR7Po7gC5y_ibkn_-bOzbeJb39WHms01194Q@mail.gmail.com https://git.postgresql.org/pg/commitdiff/d5a83d79c9f9b660a6a5a77afafe146d3c8c6f46

  • 文件:改進 UNNEST() 的文件。根據使用者的提問,明確說明 UNNEST() 依儲存順序傳回陣列元素;也提供一個範例來說明多維陣列的行為。同時,也釐清 SELECT 參考頁面中 WITH ORDINALITY 的描述。這些細節已經在 7.2.1.4 中給出,但參考頁面不應省略細節。向後移植到 v13;舊版本中的表格沒有空間。討論: https://postgr.es/m/FF1FB31F-0507-4F18-9559-2DE6E07E3B43@gmail.com https://git.postgresql.org/pg/commitdiff/662affcfe9e816584e3d8602b3b4005236931bbb

  • 使 ecpg 的 rjulmdy() 和 rmdyjul() 與其宣告一致。我們的 extern 宣告中有 "short *mdy",但實際函數定義中有 "short mdy[3]"。根據 C99,這些是等效的,但最新版本的 gcc 已經開始發布關於不一致性的警告。在警告變得更廣泛之前清理它。向後移植,以防有人想使用 bleeding-edge 編譯器構建較舊的 PG 版本。討論: https://postgr.es/m/2401575.1611764534@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/1b242f42ba1e732b202f35265ab1a1614ce7d859

  • 修復具有非對稱分割區集合的雜湊分割區修剪。perform_pruning_combine_step() 沒有學習到雜湊分割區中使用的分割區索引的數量;更令人尷尬的是,get_matching_hash_bounds() 也弄錯了。這些錯誤在所有分割區具有相同的模數且沒有分割區遺失的常見情況下被掩蓋。但是,在遺失或大小不等的分割區中,我們可能會錯誤地修剪一些需要掃描的分割區,導致查詢答案無聲地錯誤。雖然對此進行最小化修改的方法是導出 get_partition_bound_num_indexes 並使不正確的函數使用它,但我認為該函數根本不應該存在。PartitionBoundInfoData 缺乏對其 indexes[] 陣列長度的任何明確記錄,這不是合理資料結構設計。也許當它始終可以假設等於 ndatums 時,這一切都是對的,但是一旦停止為真,就應該做一些事情。放入一個明確的 "nindexes" 欄位,使 partition_bounds_equal() 和 partition_bounds_copy() 比以前更簡單、更安全、更快,並且也從其他一些地方刪除了對分割區索引數量的顯式了解。此變更也使 get_hash_partition_greatest_modulus 過時。我將其保留,以防任何外部程式碼使用它,但沒有任何核心程式碼再使用它。根據 Michał Albrycht 提出的錯誤 #16840。向後移植到引入雜湊分割程式碼的 v11。(在向後分支中,將新欄位添加到 PartitionBoundInfoData 的末尾,以最小化 ABI 風險。)討論: https://postgr.es/m/16840-571a22976f829ad4@postgresql.org https://git.postgresql.org/pg/commitdiff/1d9351a87c9a9e82c7091aab03d9299982670ce0

  • 消除另一個 gcc 11 警告。根據 buildfarm 和本地實驗,bleeding-edge gcc 不相信 reorder_function_arguments() 中的 MemSet 是安全的。通過添加一個明確的檢查,檢查 pronargs 是否為負數,並將 MemSet 更改為 memset 來消除它。(看起來這兩個更改中的任何一個都足以在 -O2 時消除警告,但為了確保,我們兩個都做。) https://git.postgresql.org/pg/commitdiff/1046dbedde2fc3fe55f007ff3255ab65ab98f858

  • 文件:改進 SET/SHOW 的交叉引用。相應的函數 set_config 和 current_setting 大多數情況下未超連結。也稍微釐清它們的描述。討論: https://postgr.es/m/161183356250.4077.687338658090583892@wrigleys.postgresql.org https://git.postgresql.org/pg/commitdiff/f743a2bbd4e511ad58b6ce01f81841e5e1611474

Amit Kapila 推送

David Rowley 推送

  • 修復堆積向後掃描中的假設錯誤。 heapgettup() 和 heapgettup_pagemode() 都錯誤地設置了向後掃描中要掃描的第一頁,其中要掃描的頁數由 heap_setscanlimits() 指定。當 startBlk 為 0 時,程式碼錯誤地從關係的末尾開始掃描,否則從 startBlk - 1 開始掃描,這在僅掃描頁面的子集時都是不正確的。此處的修復檢查 heap_setscanlimits() 是否已更改要掃描的頁數,如果是,則我們在向後掃描期間將要掃描的第一頁設置為指定範圍中的最後一頁。在 9.5 中添加 heap_setscanlimits() 時,忘記正確調整此程式碼。但是,實際上,核心程式碼中沒有任何地方在使用 heap_setscanlimits() 之後執行向後掃描,但是,擴充功能可能會以這種方式使用堆積函數,因此進行向後移植。即將到來的修補程式確實將 heap_setscanlimits() 與向後掃描一起使用,因此必須先修復此問題才能進入。作者:David Rowley 討論: https://postgr.es/m/CAApHDvpGc9h0_oVD2CtgBcxCS1N-qDYZSeBRnUh+0CWJA9cMaA@mail.gmail.com 向後移植:9.5,所有受支援的版本 https://git.postgresql.org/pg/commitdiff/16dfe253e31f75b60e93acc0c2b5bbf19936c074

Peter Eisentraut 推送

Robert Haas 推送

  • 移除 CheckpointLock。到目前為止,我們在執行檢查點或重新啟動點時都持有此鎖,但 2004 年的 commit 076a055acf3c55314de267c62b03191586d79cf6 和 2009 年的 commit 7e48b77b1cebb9a43f9fdd6b17128a0ba36132f9 共同移除了對此的所有需求。在當前代碼中,只有一個進程有權嘗試檢查點:正常操作期間的 checkpointer,或單用戶操作期間的 postmaster。因此,我們不需要鎖。進行此更改的一個可能的顧慮是,這意味著由於先前的 LWLockAcquire(),先前 HOLD_INTERRUPTS() 生效的大量代碼現在將在沒有它的情況下運行。這可能意味著 ProcessInterrupts() 會在以前沒有的地方被調用。但是,這似乎不太可能做很多事情,因為檢查點沒有任何信號映射到 die(),因此不清楚 ProcDiePending = true 如何首先發生。ClientConnectionLost 和恢復衝突也是如此。此外,如果存在任何此類問題,我們可能希望修復它們,而不是恢復此操作,因為暫停中斷處理的情況下運行大量代碼通常是不好的。我提供的補丁,根據 Amul Sul 的詢問。Tom Lane 和 Michael Paquier 的審閱。討論:http://postgr.es/m/CAAJ_b97XnBBfYeSREDJorFsyoD1sHgqnNuCi=02mNQBUMnA=FA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/d18e75664a2fda2e4d5cc433d68e37fc0e9499f2

  • 將 StartupCLOG() 調用移動到初始化 ShmemVariableCache 之後。之前,hot_standby=off 的代碼路徑在恢復結束時執行此操作,而 hot_standby=on 的代碼路徑在恢復開始時執行此操作。最好只在一個地方執行此操作,因為 (a) 它更簡單,(b) StartupCLOG() 很簡單,因此嘗試延遲工作沒有用,並且 (c) 這將使簡化其他一些邏輯成為可能。我提供的補丁,Heikki Linnakangas 審閱。討論:http://postgr.es/m/CA+TgmoZYig9+AQodhF5sRXuKkJ=RgFDugLr3XX_dz_F-p=TwTg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/1f113abdf87cd085dee3927960bb4f70442b7250

  • 在 clog_redo() 中,不要設置 XactCtl->shared->latest_page_number。該註釋不再準確,並且自引入 Hot Standby 以來一直不完全準確。這裡最初的想法是 StartupCLOG() 不會被調用到恢復結束,因此當到達此代碼時,該值將未初始化,但 Hot Standby 僅在 hot_standby=off 時才使其為真,並且 commit 1f113abdf87cd085dee3927960bb4f70442b7250 意味著即使重播開始之前,該值現在也始終初始化。此代碼的最初目的是繞過 SimpleLruTruncate() 中的健全性檢查,這將不再發生:現在,如果出現問題,該健全性檢查可能會在恢復期間觸發。這可能是一件好事,因為在當前代碼庫中,latest_page_number 應該始終被初始化,因此我們希望健全性檢查通過。如果沒有,則出現了問題,抱怨它是適當的。我提供的補丁,Heikki Linnakangas 審閱。討論:http://postgr.es/m/CA+TgmoZYig9+AQodhF5sRXuKkJ=RgFDugLr3XX_dz_F-p=TwTg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/0fcc2decd485a61321a3220d8f76cb108b082009

  • 在 TrimCLOG() 中,不要重置 XactCtl->shared->latest_page_number。由於 CLOG 頁碼沒有直接記錄在檢查點記錄中,我們必須使用 ShmemVariableCache->nextXid 來計算恢復開始時的最新 CLOG 頁碼。但是,隨著恢復的進行,CLOG/EXTEND 記錄的重播將更新我們對最新頁碼的理解,我們應該依賴於它的準確性,而不是根據更新的 nextXid 概念重新計算該值。ShmemVariableCache->nextXid 在恢復期間無論如何都只是一個近似值,而 CLOG/EXTEND 記錄是對 SLRU 如何更新的權威表示。Commit 0fcc2decd485a61321a3220d8f76cb108b082009 使這種簡化成為可能,因為在該更改之前,clog_redo() 可能在這裡注入一個虛假值,並且我們希望在進入正常運行之前擺脫它。我提供的補丁,Heikki Linnakangas 審閱。討論:http://postgr.es/m/CA+TgmoZYig9+AQodhF5sRXuKkJ=RgFDugLr3XX_dz_F-p=TwTg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/69059d3b2f0754c8e661ba479f7121e6631cdf4a

Andres Freund 推送

Fujii Masao 推送

  • postgres_fdw:新增捨棄快取連線的函式。本次提交引入兩個新的函式 postgres_fdw_disconnect() 和 postgres_fdw_disconnect_all()。前者函式捨棄到指定外部伺服器的快取連線。後者函式捨棄所有快取連線。如果連線正在目前的交易中使用,則不會關閉連線,並且會發出警告訊息。例如,當使用者想要明確關閉不再需要的外部伺服器連線,以避免它們耗盡外部伺服器的連線容量時,這些函式會很有用。作者:Bharath Rupireddy,由 Fujii Masao 略作調整。審閱者:Alexey Kondratov、Zhijie Hou、Zhihong Yu、Fujii Masao。討論:https://postgr.es/m/CALj2ACVvrp5=AVp2PupEm+nAC8S4buqR3fJMmaCoc7ftT0aD2A@mail.gmail.com https://git.postgresql.org/pg/commitdiff/411ae64997dc3a42d19eda6721c581841ce2cb82

  • postgres_fdw:穩定 postgres_fdw_disconnect_all() 的迴歸測試。在 commit 411ae64997 中新增的迴歸測試導致建置農場失敗。失敗的原因是測試中輸出的警告訊息順序不穩定。為了解決這個問題,本次提交在執行產生這些警告的測試時,暫時將 client_min_messages 設定為 ERROR。根據建置農場的失敗。討論:https://postgr.es/m/2147113.1611644754@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/6adc5376dca4ef8b7d591c0ee7338cb9ff660216

  • postgres_fdw:修正使用 -DENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS 時的測試失敗。迴歸測試建立的角色名稱應該以 "regress_" 開頭,而 commit 411ae64997 中引入的測試沒有這樣做。根據建置農場成員 longfin。討論:https://postgr.es/m/73fc5ae4-3c54-1262-4533-f8c547de2e60@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/0c3fc09fe359a6dc46f1870ceccf60ec60396bc9

  • postgres_fdw:修正 CLOBBER_CACHE_ALWAYS 的測試。在 commits 708d165ddb 和 411ae64997 中新增的迴歸測試在啟用 CLOBBER_CACHE_ALWAYS 時導致建置農場失敗。本次提交穩定了這些測試。postgres_fdw 建立的外部伺服器連線的行為,取決於是否啟用 CLOBBER_CACHE_ALWAYS。如果未啟用,則這些連線會被快取。另一方面,如果啟用了,當連線在交易區塊之外建立時,它們不會被快取 (也就是說,它們會在建立它們的查詢結束時立即關閉)。因此,後續的 postgres_fdw_get_connections() 無法列出這些連線,並且 postgres_fdw_disconnect() 無法關閉它們 (因為它們已經關閉了)。當連線在交易區塊內建立時,無論是否啟用 CLOBBER_CACHE_ALWAYS,它們都會被快取。但是如果啟用了,它們會立即被標記為無效,否則不會。這導致後續的 postgres_fdw_get_connections() 在 "valid" 欄位中傳回不同的結果,具體取決於是否啟用 CLOBBER_CACHE_ALWAYS。本次提交防止上述行為差異影響迴歸測試。根據 trilobite 上的建置農場失敗。原始補丁由 Bharath Rupireddy 提供。我 (Fujii Masao) 從中提取了迴歸測試修正程式,並進行了一些修改。回報者:Tom Lane。作者:Bharath Rupireddy。審閱者:Fujii Masao。討論:https://postgr.es/m/2688508.1611865371@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/f77717b2985aa529a185e6988de26b885ca10ddb

Michaël Paquier 推送

Peter Geoghegan 推送

Andrew Gierth 推送

  • 不要為非 strict 的反序列化呼叫添加 bailout 調整。在構建聚合表達式步驟時,strict 檢查需要一個 bailout 跳轉,以便在遇到 null 值時跳轉,因此有一個步驟列表需要稍後調整。為實際上不是 strict 的步驟將條目添加到該列表中是無害的,但有一個 Assert 會捕獲它們。這會導致在斷言構建中出現虛假錯誤,對於觸發具有非 strict 反序列化函式的聚合並行聚合的資料集(核心系統中不存在此類聚合)。透過在不需要時不添加調整條目來修復。反向移植到引入程式碼的 11。根據來自 PostGIS 專案的 Darafei (Komzpa) 的報告;由我分析和修補。討論:https://postgr.es/m/87mty7peb3.fsf@news-spur.riddles.org.uk https://git.postgresql.org/pg/commitdiff/a3367aa3c4552170004c92369681730d85e384c6

Heikki Linnakangas 推送

Álvaro Herrera 推送

Thomas Munro 推送了

Alexander Korotkov 推送了

Noah Misch 推送了

待處理的 Patch

Amit Langote 提交了另一個修訂版的 patch,用於延遲設定 ForeignScanState.resultRelInfo、在所有結果關係中設定 ResultRelInfo.ri_PartitionRoot 以及延遲初始化結果關係資訊。

Takamichi Osumi 提交了另一個修訂版的 patch,以確保封存恢復不會遺漏資料。

Amit Langote 提交了另一個修訂版的 patch,用於在分割資料表中建立外鍵觸發程序,並在跨分割區更新期間正確強制執行外鍵。

Pavel Borisov 提交了另一個修訂版的 patch,用於透過新的 CONFIGURATION 指令自動產生 HASH 和 LIST 分割區。

Bucoo 提交了另一個修訂版的 patch,以支援使用 batch hashagg 和 sort 進行平行 union/distinct/aggregate 運算。

Vigneshwaran C 提交了另一個修訂版的 patch,用於在 CREATE/ALTER SUBSCRIPTION 運算期間識別發布者中遺漏的發布。

Bertrand Drouvot 提交了一個 patch,用於將 --extension 標記新增到 pg_dump,以傾印特定擴充功能。

David Cramer 提交了另外兩個修訂版的 patch,用於在交易失敗時擲回錯誤並回滾,而不是靜默回滾。

Konstantin Knizhnik 提交了另外兩個修訂版的 patch,讓 auto_explain 建立統計資料。

Michaël Paquier 和 Sehrope Sarkuni 交換了將 sha1 暴露給 SQL 的 patch。

Takayuki Tsunakawa、Iwata Aya 和 Kirk Jamison 交換了將追蹤新增到 libpq 的 patch。

Masahiro Ikeda 送出了關於新增寫入/同步 wal 記錄相關統計資訊,以及讓 wal 接收器回報 WAL 統計資訊的補丁的另外三個修訂版本。

Masahiko Sawada 送出了關於在堆積和索引 vacuum 之前選擇 vacuum 策略、如果索引沒有增長則跳過 btree bulkdelete,以及對 anti-wraparound 和 aggressive vacuums 停用索引清理的補丁的另外兩個修訂版本。

Peter Smith 和 Amit Kapila 交換了補丁,以允許 tablesync worker 每次使用多個交易。

Bruce Momjian 送出了關於實作金鑰管理的補丁的另外四個修訂版本。

Dilip Kumar 送出了關於提供新介面來取得恢復暫停狀態的補丁的另外三個修訂版本。

David Rowley 送出了補丁的另一個修訂版本,以新增 TID 範圍掃描來支援有效率的 TID 範圍掃描。

Bertrand Drouvot 送出了補丁的另一個修訂版本,以在備用伺服器上實作最小的邏輯解碼。

Surafel Temesgen 送出了補丁的另一個修訂版本,以實作系統版本的時間表。

Jim Finnerty 送出了補丁的另一個修訂版本,以實作 64 位元的 XID。

Amit Langote 送出了補丁的另一個修訂版本,以徹底修改更新如何計算新 tuple,並修改如何處理繼承的更新和刪除。

Li Japin 送出了修正 ALTER SUBSCRIPTION ... SET PUBLICATION 文件中的錯誤的補丁。

Daniel Gustafsson 送出了補丁的另一個修訂版本,以支援在執行中的叢集中啟用/停用 checksum。

Takashi Menjo 送出了補丁的另一個修訂版本,以使其可以使用 NVRAM 作為 WAL 緩衝區。

Masahiko Sawada 送出了補丁的另一個修訂版本,以實作涉及多個 postgres 外部伺服器的交易。

Dean Rasheed 送出了補丁的另一個修訂版本,以使其可以在表達式上建立和使用擴展統計資訊。

Amit Langote 送出了補丁的另一個修訂版本,以匯出 get_partition_for_tuple() 並避免對某些 RI 檢查使用 SPI。

Denis Laxalde 送出了一個補丁,用於在 pg_upgrade 中將預設交易設定為伺服器啟動時的唯讀。

Amit Khandekar 送出了補丁的另一個修訂版本,透過對區塊使用 popcount64() 而不是 xor'ing char 值,以及避免對 pg_popcount32/64() 呼叫進行函數指標解引用,來加速 tsvectors 的兩個 gist 索引簽名的 xor'ing。

Konstantin Knizhnik 送出了補丁的另一個修訂版本,以擴展 auto_explain 擴展,以在選擇性估算錯誤的情況下產生擴展統計資訊,並在計算聯結選擇性時考慮擴展統計資訊。

Michail Nikolaev 送出了補丁的另一個修訂版本,以在備用伺服器上新增對索引 LP_DEAD hint bits 的完整支援。

Nathan Bossart 送出了補丁的另一個修訂版本,以避免過早地將區段標記為已準備好存檔。

Anastasia Lubennikova 送出了補丁的另一個修訂版本,旨在修復一個錯誤,該錯誤表現為 pg_upgrade 在非標準 ACL 的情況下失敗。

Paul Guo 送出了補丁,透過僅 fsync() 受影響的檔案/目錄,以及使用 copy_file_range() 進行檔案複製,來加速 pg_rewind。

Kyotaro HORIGUCHI 和 Heikki Linnakangas 交換了補丁,以新增 catcache 過期。

Heikki Linnakangas 和 Daniel Gustafsson 交換了補丁,以支援在執行中的執行個體中啟用/停用頁面 checksum。

Mark Rofail 送出了關於實作外鍵陣列的補丁的另外兩個修訂版本。

Vigneshwaran C 送出了補丁的另外三個修訂版本,以使其可以使用新的函數 pg_print_backtrace() 來列印任何 postgres 程序的堆疊追蹤,該函數是呼叫該函數的執行個體的一部分。

Michaël Paquier 和 Daniel Gustafsson 交換了補丁,以使其可以使用 NSS 作為 libpq 的 TLS 提供者。

Bharath Rupireddy 送出了補丁的另外兩個修訂版本,以避免在 slot_store_error_callback 和 conversion_error_callback 中存取目錄。

Takamichi Osumi 送出了一個補丁,用於記錄何時/何地將 wal_level 從較高層級變更為 'minimal',以使舊備份失效或向使用者發出警報。

Amul Sul 送出了補丁的另一個修訂版本,以使用全域屏障實作 wal 禁止狀態。

Greg Nancarrow 送出了補丁的另一個修訂版本,以使其可以在 INSERT ... SELECT 中使用並行 select,以及在安全的情況下並行 INSERT 或 SELECT。

Justin Pryzby 送出了補丁的另一個修訂版本,以使其可以在分割表格上並行執行 CREATE INDEX CONCURRENTLY。

Andrew Dunstan 送出了補丁的兩個修訂版本,以實作 PostgresNodePath,它是 PostgresNode 的一個子類別,它在給定的 PostgreSQL 安裝路徑的上下文中執行命令。

David Rowley 送出了補丁的另一個修訂版本,以新增結果快取執行器節點。

Nathan Bossart 送出了補丁的另外兩個修訂版本,以向 VACUUM 新增 PROCESS_TOAST 選項。

Paul Martinez 送出了一個補丁,用於澄清不允許複製連線時發生的訊息。

Jacob Champion 送出了一個補丁,用於儲存角色的原始驗證身分以進行記錄。

Mark Dilger 送出了關於實作新的 pg_amcheck contrib 擴展的補丁的另外三個修訂版本。

Hou Zhijie 送出了補丁的另一個修訂版本,以新增新的 GUC 和相應的表格選項 enable_parallel_dml。

Marco Montagna 送出了一個補丁,透過在為相同名稱產生的名稱前加上一個隨機數,來降低 fdw 預備語句衝突的可能性。

Peter Eisentraut 送出了 pg_dump 的補丁的另一個修訂版本,以修復繼承的產生欄位的轉儲。

Antonin Houska 送出了補丁的另一個修訂版本,以使用復原日誌清理孤立檔案。

Dilip Kumar 和 Justin Pryzby 交換了補丁,以實作自訂表格壓縮方法。

Álvaro Herrera 送出了補丁的另一個修訂版本,以新增 pg_atomic_monotonic_advance_u64,在 xlog.c 中使用原子操作,並新增屏障。

Fabien COELHO 送出了補丁的另一個修訂版本,以將屏障新增至 pgbench。

Thomas Munro 送出了補丁的兩個修訂版本,以使用全域屏障來修復 Windows 上的 DROP TABLESPACE,並使用條件變數來處理 ProcSignalBarriers。

Andrew Dunstan 送出了補丁的另一個修訂版本,以允許從用戶端憑證比對整個 DN。

Thomas Munro 送出了一個補丁,用於在執行 dsm_detach() 回呼時保持中斷。

Joel Jacobson 送出了一個補丁,用於改善系統檢視中可以為零的 oid 欄位的說明文件。

Vigneshwaran C 送出了補丁的另一個修訂版本,以新增對 CREATE PUBLICATION 的結構描述支援。

Tom Lane 送出了一個補丁,用於記錄系統目錄的外鍵關係。

Euler Taveira de Oliveira 送出了補丁的另一個修訂版本,以實作邏輯複製的列篩選。