PostgreSQL 每週新聞 - 2020 年 11 月 29 日

發布於 2020-11-30 作者:PWN
PWN

PostgreSQL 每週新聞 - 2020 年 11 月 29 日

PostgreSQL 產品新聞

Pgpool-II 4.2.0,PostgreSQL 的連線池和語句複製系統,已發布。https://www.pgpool.net/docs/42/en/html/release-4-2-0.html

pgBadger v11.4,一個用 Perl 編寫的 PostgreSQL 日誌分析器和圖形工具,已發布。https://github.com/darold/pgbadger/releases

Database Lab 2.0,一種用於快速複製大型 PostgreSQL 資料庫以構建非生產環境的工具,已發布:https://postgres.ai/blog/dle-2.0-release/

pgagroal 1.0.0,一個用於 PostgreSQL 的高性能協定原生連線池,已發布。https://agroal.github.io/pgagroal/release/announcement/2020/11/24/pgagroal-1.0.0.html

11 月份的 PostgreSQL 工作

http://archives.postgresql.org/pgsql-jobs/2020-11/

PostgreSQL 新聞

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

本週的 PostgreSQL 每週新聞由 David Fetter 撰寫

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

已應用的修補程式

Tom Lane 推送了

  • 允許多行 INSERT 為產生的欄位指定 DEFAULT。 可以使用 "INSERT INTO tab(generated_col) VALUES (DEFAULT)" 而不會產生錯誤。 但是,對於多行 VALUES 列表的等效情況總是會拋出錯誤,即使在每一行中都正確地使用了 DEFAULT。 修正此問題。 在此同時,改進關於 OVERRIDING SYSTEM/USER 值的附近邏輯的測試案例。Dean Rasheed 討論:https://postgr.es/m/9q0sgcr416t.fsf@gmx.us https://git.postgresql.org/pg/commitdiff/17958972fe3bb03454a4b53756b29d65dc285efa

  • 改進與產生的欄位相關的兩個錯誤訊息的措辭。 明確說明只要插入的是 DEFAULT 預留位置,就可以「插入」到產生的欄位中。 此外,使用 ERRCODE_GENERATED_ALWAYS 代替 ERRCODE_SYNTAX_ERROR;似乎沒有任何理由使用不太具體的錯誤代碼。 討論:https://postgr.es/m/9q0sgcr416t.fsf@gmx.us https://git.postgresql.org/pg/commitdiff/d36228a9fcdccd57a7dc332572eb9837c7c301e6

  • 重新命名「點嚴格位於點之上/之下」比較運算子。 歷史上,它們被稱為 >^ 和 <^,但這與類似的方框、多邊形和圓形運算子不一致,後者分別命名為 |>> 和 <<|。 更糟糕的是,>^ 和 <^ 名稱用於方框類型嚴格之上/之下測試。 因此,發明新的運算子,遵循更常見的命名。 舊的運算子現在仍然可用,並且仍然被相關的索引運算子類別接受。 但是有一個棄用通知,所以也許有一天我們可以擺脫它們。 Emre Hasegeli,由 Pavel Borisov 審閱 討論:https://postgr.es/m/24348.1587444160@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/0cc99327888840f2bf572303b68438e4caf62de9

  • 移除不必要的 #include。 Justin Pryzby 討論:https://postgr.es/m/20201123205505.GJ24052@telsasoft.com https://git.postgresql.org/pg/commitdiff/3b9b01f75d6e2d7bf9e0bf8ec958ce420aa037c2

  • 集中跳過無用 ereport/elog 呼叫的邏輯。 雖然 ereport() 和 elog() 本身在錯誤訊息級別太低而無法列印時非常便宜,但有些地方需要做大量工作才能完全呼叫這些巨集。 為了允許在沒有任何內容要列印時優化掉這種設定工作,請使 elog.c 匯出一個新的函數 message_level_is_interesting(elevel),該函數報告 ereport/elog 是否會執行任何操作。 在各種地方使用它,這些地方對 log_min_messages 等進行了臨時直接測試。 另外,教 ProcSleep 使用它以避免一些工作。 (可能還有其他地方可以有效地使用它;我沒有仔細搜尋。) 在 elog.c 中,重構一點以避免重複的策略設定邏輯副本。 在編寫該程式碼時,我們並未依賴內聯函數的可用性; 因此,為了提高效率,它有一些重複,我已將其刪除。 Alvaro Herrera 和 Tom Lane 討論:https://postgr.es/m/129515.1606166429@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/789b938bf2b8e38d0894261eae6bc84bbbb4714e

  • 在內聯函數的宣告中放置「inline」標記。 我很難判斷 C 標準的文字是否要求這樣做,但我們確實有一些 buildfarm 成員在未完成此操作時會拋出警告。 c532d15dd 中的疏忽。https://git.postgresql.org/pg/commitdiff/ec05bafdbbf474bf0a1416772da31f9f1f27fa1e

  • 避免使用多個 ParameterStatus 訊息來轟炸用戶端。 到目前為止,只要任何 GUC_REPORT 變數的有效值發生任何變更,我們就會立即向用戶端傳送 ParameterStatus 訊息。 在設計該功能時,這只是勉強可以接受的; 現在我們有了函數 SET 子句之類的東西,在查詢中,GUC_REPORT 變數可能會多次變更 --- 甚至可能最終回到其原始值,這是非常合理的用例。 幸運的是,我們的大多數 GUC_REPORT 變數不太可能經常變更; 但有一些提議正在進行中,以擴大該集合,甚至使其可由用戶配置。 因此,讓我們修正一些問題,以確保每個查詢每個變數產生的 ParameterStatus 訊息不超過一個,並且除非查詢結束時的值與我們上次報告的值不同,否則根本不傳送任何訊息。 討論:https://postgr.es/m/5708.1601145259@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/2432b1a04087edc2fd9536c7c9aa4ca03fd1b363

  • 文件:第 11.2 節「索引類型」的微小改進。 將每個索引類型的討論分成 <sect2>,以便在視覺上將它們更清楚地分開並且更易於找到。 改進標記,並進行一些小的措辭調整。 這也修正了一個對現在已棄用的點運算子 <^ 和 >^ 的錯誤引用。 Dagfinn Ilmari Mannsåker,由 David Johnston 和 Jürgen Purtz 審閱 討論:https://postgr.es/m/877dukhvzg.fsf@wibble.ilmari.org https://git.postgresql.org/pg/commitdiff/85b4ba73423b480902206ca04330c1cbea371c3c

  • 在 psql 的 \d 指令中,不要截斷屬性的預設值。 過去,psql 會將欄位預設表達式的文字截斷為 128 個字元。 這與 describe.c 中的任何其他行為都不同,而且現在變得特別令人困惑,因為該限制僅適用於表達式本身,而不適用於可能包裝在其周圍的 "generated always as (...) stored" 文字。 我們在 git 歷史記錄中的挖掘表明,此限制的最初動機並非真正限制顯示寬度(正如我長期以來所假設的那樣),而是為了確保使用固定寬度的輸出緩衝區來儲存結果是安全的。 當然,該實作限制早已消失,但該限制仍然存在。 讓我們擺脫它。 在此同時,重新安排何時釋放輸出字串的邏輯,使其不那麼依賴於關於 attidentity 和 attgenerated 可能值的未聲明假設。 根據 David Turon 的錯誤 #16743。 回溯修補到 v12,GENERATED 是從那時開始的。 (可以說我們可以更進一步地回溯,但我猶豫是否要為此更改長期穩定的分支的行為。) 討論:https://postgr.es/m/16743-7b1bacc4af76e7ad@postgresql.org https://git.postgresql.org/pg/commitdiff/314fb9baeacb3426a5d9a26132aae8d828cc0ad7

  • 修復最近在 LISTEN/NOTIFY 處理中引入的競爭條件。 Commit 566372b3d 修復了一些涉及並發 SimpleLruTruncate 呼叫的競爭條件,但它在 async.c 中引入了新的競爭條件。 一個新監聽的後端可能會嘗試讀取正在被截斷的 Notify SLRU 頁面,這可能會導致錯誤。 此外,QUEUE_TAIL 指標可能會被設定為不等於任何後端的佇列位置的值。 雖然這在 v13 及更高版本中相當無害(感謝 commit 51004c717),但在舊版本中,它導致佇列截斷邏輯幾乎永久停用,因此繼續使用 NOTIFY 會導致佇列填滿警告,並最終無法發送任何更多通知。 (重新啟動伺服器足以使其消失,但仍然非常令人不快。) 問題的核心在於混淆了 QUEUE_TAIL 代表佇列的「邏輯」尾部(即,最舊的仍然有用的資料)還是「物理」尾部(我們尚未截斷的最舊資料)。 為了修復,將其拆分為兩個變數。 QUEUE_TAIL 重新獲得其作為邏輯尾部的定義,並且我們引入一個新變數來追蹤最舊的未截斷頁面。 根據 Mikael Gustavsson 的報告。 與先前的修補程式一樣,回溯修補到所有支援的分支。 討論:https://postgr.es/m/1b8561412e8a4f038d7a491c8b922788@smhi.se https://git.postgresql.org/pg/commitdiff/9c83b54a9ccdb111ce693ada2309475197c19d70

  • 清理 src/test/locale/ 中的測試之後的殘留。 257836a75 中的疏忽,該提交加入了這些測試。 https://git.postgresql.org/pg/commitdiff/b90a7fe15f78b1e2513cbcb27a33f4adc47bcd3d

  • Doc: 闡明 PQconnectdbParams() 的行為。 該文件遺漏了一個關鍵細節,即如果關鍵字陣列條目對應的值陣列條目為 NULL 或空字串,則會直接忽略該條目;它不會覆蓋先前取得的任何參數值。 (請參閱 conninfo_array_parse()。) 我原以為這會強制將設定回復為預設值,這就是導致我陷入錯誤 #16746 的原因;但它並沒有。 在此同時,我忍不住想做一些校對工作,無論是在 PQconnectdbParams() 的描述中還是在關於連線 URI 語法的章節中。 討論:https://postgr.es/m/931505.1606618746@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/d5e2bdf7dda712a60234f08e036ec9de28085a2d

Heikki Linnakangas 推送了

  • 將 copy.c 分割成四個檔案。 Copy.c 變得非常大。 將其分割成更易於管理的部分: - copy.c 現在僅包含 COPY FROM 和 COPY TO 共用的幾個函式。 - copyto.c 包含 COPY TO 的程式碼。 - copyfrom.c 包含初始化 COPY FROM 的程式碼,以及將元組插入正確表格的程式碼。 - copyfromparse.c 包含從用戶端/檔案/程式讀取,以及將輸入文字/CSV/二進位格式剖析成元組的程式碼。 所有這些部分都相當複雜,並且彼此相當獨立。 目前正在討論一個修補程式,以實作平行 COPY FROM,這將向 COPY FROM 路徑添加大量新程式碼,以及另一個修補程式,該修補程式將允許 INSERT 使用與 COPY FROM 相同的多重插入機制,這兩者都需要重構該程式碼。 有了這兩個修補程式,copy.c 中無論如何都會有大量的程式碼變動,所以現在似乎是進行此重構的好時機。 CopyStateData 結構也被分割。 所有格式選項,如 FORMAT、QUOTE、ESCAPE,都放在一個新的 CopyFormatOption 結構中,COPY FROM 和 TO 都使用它。 其他狀態資料保存在單獨的 CopyFromStateData 和 CopyToStateData 結構中。 經 Soumyadeep Chakraborty、Erik Rijkers、Vignesh C、Andres Freund 審閱 討論:https://postgres.tw/message-id/8e15b560-f387-7acc-ac90-763986617bfb%40iki.fi https://git.postgresql.org/pg/commitdiff/c532d15dddff14b01fe9ef1d465013cb8ef186df

  • 修復了一些引用 copy.c 的註解。 在先前的提交中遺漏了這些。 https://git.postgresql.org/pg/commitdiff/68b1a4877ef54f5ee6e05c64876655dd13d2c73b

  • 將每個聚合和每個轉換的重複尋找移至規劃器。 這具有的優點是,聚合的成本估算可以正確地計算轉換和最終函式的呼叫次數。 增加目錄版本,因為視圖可以包含 Aggrefs。 經 Andres Freund 審閱 討論:https://postgres.tw/message-id/b2e3536b-1dbc-8303-c97e-89cb0b4a9a48%40iki.fi https://git.postgresql.org/pg/commitdiff/0a2bc5d61e713e3fe72438f020eea5fcc90b0f0b

  • 修復預期的輸出:聚合權限檢查的順序已變更。 Commit 0a2bc5d61e 更改了檢查聚合的最終和轉換函式權限的順序。 這顯示為此 sepgsql 迴歸測試中列印的 LOG 訊息順序的差異。 調整預期的輸出。 根據 rhinoceros 中的 buildfarm 失敗。 https://git.postgresql.org/pg/commitdiff/8818ad5b1557d42cd58e5196fac7084a2389bdad

Álvaro Herrera 推送了

David Rowley 推送

Michaël Paquier 推送

Fujii Masao 推送

  • doc:從一些索引項目中刪除不必要的空格字元。以前,一些索引項目在文件中包含「 ,」(即,空格 + 逗號),如下所示。由於逗號前的空格字元是不必要的,因此此提交刪除了它,以與其他索引項目保持一致。parallel_leader_participation 組態參數 , 其他規劃器選項 作者:Fujii Masao 審閱者:Euler Taveira 討論:https://postgr.es/m/e87b4ddf-1498-2850-bf55-519df3928fd4@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/e522024bd8dd28a0f13dcccfd39170698f45c939

  • doc: 增加關於預備語句(prepared statement)重新分析與重新規劃的描述。當語句中使用的資料庫物件經過定義上的變更,或是它們的規劃器統計資訊(planner statistics)已經更新時,預備語句會被重新分析與重新規劃。前者之前已經有文件記錄,但後者之前沒有。本次提交將後者的描述加入到文件中。作者:Atsushi Torikoshi 審閱者:Andy Fan, Fujii Masao 討論:https://postgr.es/m/3ac82f4817c9fe274a905c8a38d87bd9@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/4a36eab79a193700b7b65baf6c09c795c90c02c6

  • pg_stat_statements: 追蹤 pgss 條目被釋放的次數。如果觀察到的不同語句比 pg_stat_statements.max 還多,則關於執行次數最少的語句的 pg_stat_statements 條目會被釋放。本次提交使我們能夠追蹤這些條目被釋放的總次數。這個數字可以在本次提交新增的 pg_stat_statements_info 視窗中查看。它在調整 pg_stat_statements.max 參數時很有用。如果它很高,也就是說,這些條目被非常頻繁地釋放,這可能會導致效能下降,我們可以增加 pg_stat_statements.max 以避免這些頻繁的釋放。pg_stat_statements_info 視窗旨在顯示 pg_stat_statements 模組本身的統計資訊。目前它只有一個欄位 "dealloc" 表示條目被釋放的次數。但即將到來的修補程式將在視窗中新增其他欄位(例如,上次重置 pg_stat_statements 統計資訊的時間)。作者:Katsuragi Yuta, Yuki Seino 審閱者:Fujii Masao 討論:https://postgr.es/m/0d9f1107772cf5c3f954e985464c7298@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/9fbc3f318d039c3e1e8614c38e40843cf8fcffde

  • 在 worker_spi 中使用標準的 SIGHUP 和 SIGTERM 訊號處理程序。之前 worker_spi 對於 SIGHUP 和 SIGTERM 使用了自訂的訊號處理程序。本次提交使 worker_spi 使用標準的訊號處理程序,以簡化程式碼。請注意,die() 在 worker_spi 中被用作標準的 SIGTERM 訊號處理程序,而不是 SignalHandlerForShutdownRequest() 或 bgworker_die()。先前,退出處理只能從主迴圈內部退出,而不能從它所呼叫的後端程式碼中退出。這就是為什麼這裡需要使用 die(),以便 worker_spi 可以在執行查詢時響應 SIGTERM 訊號。也許我們可以說 worker_spi 在查詢執行期間無法響應 SIGTERM 是一個錯誤。但由於 worker_spi 只是後台工作程式碼的一個範例,我們不進行回溯修補。感謝 Craig Ringer 報告和調查這個問題。作者:Bharath Rupireddy 審閱者:Fujii Masao 討論:https://postgr.es/m/CALj2ACXDEZhAFOTDcqO9cFSRvrFLyYOnPKrcA1UG4uZn9hUAVg@mail.gmail.com 討論:https://postgr.es/m/CAGRY4nxsAe_1k_9g5b47orA0S011iBoHsXHFMH7cg7HV0O1bwQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/2a0847720ae6fa4180bfbe404e4e6bbf2f737708

  • 在 test_shm_mq worker 中使用標準的 SIGTERM 訊號處理程序 die()。之前,test_shm_mq worker 使用精簡版的 die() 作為 SIGTERM 訊號處理程序。本次提交使其使用 die(),以簡化程式碼。就程式碼而言,die() 和先前使用的精簡版本之間的差異在於訊號處理程序是否可以直接呼叫 ProcessInterrupts()。但這種差異在後台工作程式中不存在,因為在 bgworker 中,DoingCommandRead 標誌永遠不會為真,並且 die() 永遠不會直接呼叫 ProcessInterrupts()。因此,test_shm_mq worker 可以安全地使用 die(),就像其他 bgworker 程序(例如,邏輯複製應用程式啟動器或 autoprewarm worker)目前所做的那樣。感謝 Craig Ringer 報告和調查這個問題。作者:Bharath Rupireddy 審閱者:Fujii Masao 討論:https://postgr.es/m/CAGRY4nxsAe_1k_9g5b47orA0S011iBoHsXHFMH7cg7HV0O1bwQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/ef848f4ac5a4bd072c65867186268775acfb4298

  • 修正 CLUSTER 進度報告中掃描的區塊數。先前,pg_stat_progress_cluster 視窗將堆積掃描中的目前區塊號碼報告為掃描的堆積區塊數(即 heap_blks_scanned)。當啟用 synchronize_seqscans 時,這個報告的數字可能不正確,因為它允許堆積掃描從中間的區塊開始。當堆積掃描迴繞時,這可能導致 heap_blks_scanned 欄位中的迴繞。本次提交透過計算從堆積掃描開始的區塊到掃描中的目前區塊的區塊數,並在 heap_blks_scanned 欄位中報告該數字,來修正這個錯誤。此外,在 pg_stat_progress_cluster 視窗中,如果掃描的最後頁面為空,則先前 heap_blks_scanned 無法在堆積掃描階段結束時達到 heap_blks_total。本次提交透過在堆積掃描階段完成時,手動將 heap_blks_scanned 更新為與 heap_blks_total 相同的值,來修正這個錯誤。回溯修補到引入 pg_stat_progress_cluster 視窗的 v12 版本。報告者:Matthias van de Meent 作者:Matthias van de Meent 審閱者:Fujii Masao 討論:https://postgr.es/m/CAEze2WjCBWSGkVfYag001Rc4+-nNLDpWM7QbyD6yPvuhKs-gYQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/3df51ca8b39f08ef19a77b9776f2547c86b70c49

Andrew Gierth pushed

  • 正確檢查 ExecSupportsMarkRestore 中的索引標記/恢復。先前,此程式碼假設所有 IndexScan 節點都支援標記/恢復,但這是不正確的,因為它取決於可選的索引 AM 支援函數。這可能導致在沒有排序鍵的合併聯結的罕見邊緣情況下,在沒有保護 Materialize 節點的情況下,將未排序的非 btree 索引掃描放置在內部路徑上時,出現關於缺少支援函數的錯誤。(通常,合併聯結需要排序輸入的事實會避免這個錯誤。)由於這個錯誤非常古老,因此一路回溯修補。根據 Eugen Konkov 在 IRC 上的報告。討論:https://postgr.es/m/87o8jn50be.fsf@news-spur.riddles.org.uk https://git.postgresql.org/pg/commitdiff/660b89928d18386de7755565c008439ae75d1218

Amit Kapila pushed

Thomas Munro 推送 (pushed)

Peter Eisentraut 推送 (pushed)

Noah Misch 推送 (pushed)

待處理的補丁 (Pending Patches)

Amul Sul 送出了另一個版本的補丁,以實作 ALTER SYSTEM READ {ONLY|WRITE}。

Daniel Vérité 送出了另一個版本的補丁,以在 libpq 中實作批次處理/管線化 (batch/pipelining)。

Justin Pryzby 和 Tomáš Vondra 交換了補丁,以在表達式上實作擴充的統計資料。

Álvaro Herrera 送出了另一個版本的補丁,以避免 BRIN 摘要中的錯誤,如果索引被同時重新索引,則可能會發生這些錯誤。

Álvaro Herrera 送出了一個補丁,以修復一個錯誤,該錯誤表現為 walsender 在關機期間卡住且 *沒有* 關機,因此阻止 postmaster 透過檢查 XLogRecPtrIsInvalid(replicatedPtr) 是否為 true 來完成關機週期。

Zeng Wenjing 送出了另一個版本的補丁,以實作全域暫存表。

Bharath Rupireddy 送出了另一個版本的補丁,以實作 postgres_fdw 連線快取 - 導致遠端連線持續存在直到本機連線結束。

Bharath Rupireddy 和 Heikki Linnakangas 交換了補丁,以使在 CREATE TABLE AS 中可以使用平行插入,在這種情況下是安全的。

Tomáš Vondra 送出了另一個版本的補丁,以使用非揮發性儲存體作為 WAL 緩衝區。

Takayuki Tsunakawa 送出了另一個版本的補丁,以新增外部表的批次插入。

Justin Pryzby 送出了另一個版本的補丁,以允許 INSERT SELECT 使用 BulkInsertState、使 INSERT SELECT 使用 multi_insert,並動態切換到 multi_insert 模式。

Michaël Paquier 送出了另一個版本的補丁,以重做 SHA2 和加密雜湊 API、將 cryptohash_openssl.c 切換為使用 EVP,並使 pgcrypto 使用核心中的 resowner 機制來處理 EVP。

Justin Pryzby 送出了另一個版本的補丁,以允許 CLUSTER、VACUUM FULL 和 REINDEX 可以在執行時變更表空間。

Keisuke Kuroda 送出了一個補丁,以修復一個錯誤,該錯誤表現為分割表上具有 FK 的巨大記憶體消耗,方法是減少 ri SPI 計劃雜湊的大小。

Konstantin Knizhnik 送出了另一個版本的補丁,以實作 libpq 的自定義壓縮。

Takamichi Osumi 送出了另一個版本的補丁,以可以停用 WAL 記錄,以加速批次載入。

Nathan Bossart 送出了另一個版本的補丁,以在 CHECKPOINT 中新增 FAST 選項。

Amit Kapila、Ajin Cherian 和 Peter Smith 交換了補丁,以實作兩階段交易的邏輯解碼。

David Rowley 送出了一個補丁,以將 pg_attribute_cold 和 pg_attribute_hot 定義為 minGW 8.1 上的空巨集,以避免該工具鏈中的錯誤。

Li Japin 送出了另一個版本的補丁,以允許透過新的 GUC (idle_session_timeout) 終止閒置的連線,並減少呼叫 setitimer() 的頻率。

Euler Taveira de Oliveira 送出了一個補丁,以將邏輯解碼訊息加入到 pgoutput,在串流傳輸時將 xid 加入到訊息中,解釋為何 LOGICAL_REP_MSG_MESSAGE 會被忽略,簡化 parse_output_parameters 函數,使其接收完整的 PGOutputData 而非零碎的資料片段,調整訊息的 in_streaming 狀態,並徹底修改測試以考慮所有這些。

Peter Eisentraut 送出了另一個修訂版本的補丁,以加入 result_format_auto_binary_types 設定。

Michaël Paquier 送出了另一個修訂版本的補丁,以修復一個問題,該問題表現為如果 pg_database tuple 包含 toast 屬性,vac_update_datfrozenxid 將會引發 "wrong tuple length" 錯誤。

Kyotaro HORIGUCHI 送出了另一個修訂版本的補丁,以修復 geometry 類型中 NaN 的處理。

Masahiko Sawada 送出了另一個修訂版本的補丁,以啟用多個外部伺服器的兩階段提交。

Daniel Gustafsson 送出了另一個修訂版本的補丁,使其能夠線上啟用和停用資料校驗和。

Alexander Korotkov 送出了一個補丁,以實作內建基礎設施,用於在自動測試套件中重現並行問題。此基礎設施的核心是「停止事件」,這些事件是程式碼中的特殊位置,可以在某些條件下停止執行。

Peter Eisentraut 送出了另一個修訂版本的補丁,以根據 SQL 標準在通用表表達式中實作 SEARCH 和 CYCLE 子句。

Thomas Munro 送出了另一個修訂版本的補丁,以減少 latches 發送的訊號數量、使用 SIGURG 而非 SIGUSR1 作為 latches 的訊號、使用 signalfd 作為 epoll latches,以及使用 EVFILT_SIGNAL 作為 kqueue latches。

Tom Lane 送出了另一個修訂版本的補丁,以在查詢結束時報告 GUC 變更。

Peter Smith 送出了一個補丁,以使用 enums 作為訊息類型。

David Zhang 送出了三個修訂版本的補丁,以將表格存取方法作為一個選項加入到 pgbench。

Anastasia Lubennikova 送出了一個補丁,以處理傳遞給 normal_rand() 的負數 tuple 數量。

Peter Eisentraut 送出了一個補丁,以在 pageinspect 中將 block number 參數變更為 bigint。

Bertrand Drouvot 送出了另外四個修訂版本的補丁,使其能夠通過新的 GUC log_recovery_conflict_waits 來記錄 standby 復原衝突等待。

Kasahara Tatsuhito 送出了另外三個修訂版本的補丁,以修復一個錯誤,該錯誤表現為具有大量表格時的 autovacuum 問題。

Masahiko Sawada 送出了另一個修訂版本的補丁,以將基本統計資訊加入到 pg_stat_wal 視窗。

Takamichi Osumi 送出了一個補丁,以防止 archive recovery 遇到來自 wal_level=minimal 的 WAL,並且伺服器繼續工作,這種情況可能導致資料無法複製。

Euler Taveira de Oliveira 送出了一個補丁,以在後端崩潰後移除暫存檔案,以避免可能由多次崩潰引起的 ENOSPC 狀況。

Pavel Borisov 送出了另一個修訂版本的補丁,以使用 SP-GiST 索引存取方法實作 covering indexes。

Kirk Jamison 送出了另一個修訂版本的補丁,以防止在復原期間使 smgrextend() 中的 block 無效、在 smgrnblocks() 中為快取 block 新增一個 bool 參數、通過避免在關係足夠小或要失效的 block 總數低於完整掃描的閾值時掃描整個緩衝池,來簡化復原期間的 DropRelFileNodeBuffers(),並且讓 DropRelFileNodesAllBuffers() 在關係足夠小或要失效的 block 數量低於完整掃描閾值時,跳過復原期間耗時的整個緩衝池掃描。

Krunal Bauskar 和 Alexander Korotkov 交換了補丁,以改善 ARM 上的 spinlock 實作。

Arne Roland 送出了三個修訂版本的補丁,以確保重新命名分割表格上的 trigger 也會重新命名分割區上的 trigger。

Bharath Rupireddy 送出了一個補丁,以修復 pg_workers 關閉的錯誤訊息,使其談論背景工作程序,而不是適用於其他情況的不存在的連線。

Stephen Frost 送出了另一個修訂版本的補丁,以在需要時將 GSS 資訊新增到連線授權記錄訊息。

Michael Banck 送出了一個補丁,以闡明 CREATEROLE 角色可以 GRANT 預設角色。

Ashutosh Bapat 和 Alexander Korotkov 交換了補丁,以使其易於列印 LSN。

Andreas Karlsson 送出了一個 PoC 補丁,以修復 inet/cidr 支援透過丟棄 btree_gist 提供的擴充功能中的 netmask 資訊而損壞的事實。

Pavel Stěhule 和 Justin Pryzby 交換了補丁,以使其能夠從檔案中讀取 pg_dump 要轉儲的表格。

Justin Pryzby 送出了另一個修訂版本的補丁,以使 CLUSTER ON 成為 pg_dump 中的一個單獨的轉儲物件、為分割表格實作 CLUSTER、將 indisclustered 的變更傳播到子/父物件、使父索引失效、在連接時使父索引叢集失效,並保留叢集化的分割索引的子物件上的 indisclustered。

Simon Riggs 送出了另一個修訂版本的補丁,以將 FAST_FREEZE 選項新增到 VACUUM。

Simon Riggs 送出了一個補丁,以實作 lazy VACUUM 的 one_freeze 然後 max_freeze。

Justin Pryzby 送出了另一個修訂版本的補丁,以使 pg_ls_* 顯示目錄和共享檔案集。

Justin Pryzby 送出了另一個修訂版本的補丁,以移除對 pg_dump 8.1 之前的 switch 行為的引用。

Justin Pryzby 送出了另一個修訂版本的補丁,以允許在分割表格上執行 CREATE INDEX CONCURRENTLY、為更多整合新增 SKIPVALID 標誌,並使 ReindexPartitions() 設定 indisvalid。

Paul A Jungwirth 送出了另外兩個修訂版本的補丁,以實作 multiranges。

Dean Rasheed 送出了另一個修訂版本的補丁,以改善 OR 子句的估計。

James Coleman 送出了一個補丁,如果在 gather merge 路徑的排序不夠充分時,會發生錯誤。

James Coleman 送出了另一個修訂版本的補丁,以確保 generate_useful_gather_paths 不會跳過未排序的子路徑、強制執行 generate_useful_gather_paths 中 pathkeys 的並行安全、不允許在 proactive sort 中使用 SRF、移除不必要的 volatile expr 目標搜尋,並記錄 prepare_sort_from_pathkeys 中的 find_em_expr_usable_for_sorting_rel。