PostgreSQL 每週新聞 - 2021 年 2 月 28 日

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

PostgreSQL 每週新聞 - 2021 年 2 月 28 日

Database Lab 2.2.1 發布,此工具可用於快速複製大型 PostgreSQL 資料庫以構建非生產環境:https://gitlab.com/postgres-ai/database-lab/-/releases

dbMigration .NET v13.4 發布,此為資料庫遷移和同步工具。https://fishcodelib.com/DBMigration.htm

Joe 0.9.0 發布,此為 Slack 聊天機器人,可協助後端開發人員和 DBA 排除故障並優化 PostgreSQL 查詢。https://gitlab.com/postgres-ai/joe/-/releases#0.9.0

pgAdmin4 5.0 發布,此為適用於 PostgreSQL 的網頁和原生 GUI 控制中心。https://www.pgadmin.org/docs/pgadmin4/5.0/release_notes_5_0.html

pgagroal 1.2.0 發布,此為適用於 PostgreSQL 的高性能、協議原生的連線池。https://agroal.github.io/pgagroal/release/announcement/2021/02/23/pgagroal-1.2.0.html

本週人物:https://postgresql.life/post/takayuki_tsunakawa/

PostgreSQL 產品新聞

二月份的 PostgreSQL 工作

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

PostgreSQL 新聞

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

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

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

已應用修補程式

Tom Lane 推送了

  • 修復 trgm_regexp.c 中的無效陣列存取。08c0d6ad6 中的棕色紙袋錯誤:我漏掉了一個需要防止 RAINBOW 弧顏色的地方。值得注意的是,除了 buildfarm 成員 thorntail 之外,沒有人注意到無效的陣列存取。感謝 Noah Misch 協助追蹤此問題。https://git.postgresql.org/pg/commitdiff/6ee479abfc27a18c37fe77140d16d3ac31f4ac31

  • 簡化 regex DFA 的記憶體管理。 Coverity 抱怨 regexec.c 中的函式可能會洩漏 DFA 儲存空間。 它是錯誤的,但此邏輯非常混亂,以至於 Coverity 無法理解它並不令人驚訝。 重寫以期使其對人類和機器更具可讀性。https://git.postgresql.org/pg/commitdiff/190c79884aae540c92f017701726ed69265e2dab

  • 在新的 regex 比對所有偵測程式碼中抑制編譯器警告。 gcc 10 足夠聰明,可以注意到控制可能會在 depth < 0 的情況下到達此 "hasmatch[depth]" 賦值,但不足以了解這需要嚴重損壞的 NFA 圖形。 將 assert() 變更為純粹的執行階段測試以使其安靜。 根據 Andres Freund 的報告。 討論:https://postgr.es/m/20210223173437.b3ywijygsy6q42gq@alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/3db05e76f92846d4b54d7de251b0875cf1e23aa4

  • 允許在 regex 方括號內使用補碼字元類別跳脫字元。 現在允許在括號表達式中使用補碼類別跳脫字元 \D、\S、\W。 這樣做沒有語義上的困難,但是之前使用的相當笨拙的基於巨集擴充的實作無法應付。 此外,將 "word" 發明為允許的字元類別名稱,因此 "\w" 現在在括號外等效於 "[[:word:]]",在括號內等效於 "[:word:]"。 POSIX 允許這種特定於實作的擴充功能,並且相同的名稱用於例如 bash。 這提出的一個令人驚訝的相容性問題是,現在不允許使用諸如 "[\w-_]" 之類的建構,因為我們的文件一直說應該這樣做:字元類別不能是範圍的端點。 以前,由於 \w 只是 "[:alnum:]_" 的巨集,因此這樣的建構會被讀取為 "[[:alnum:]_-_]",因此只要 "-" 之後的字元在數值上大於或等於 "_",就會被接受。 沿途進行了一些實作清理: * 移除 lexnest() hack,並因此清理 wordchrs() 以不與詞法分析器互動。 * 修復 colorcomplement(),使其在涉及的顏色數量上不是 O(N^2)。 * 擺脫了在 brackpart() 中對單個字元字元元素名稱進行 element() 的無用的呼叫(就我所見)。 element() 總是將這些對應到字元本身,如果它沒有對應到字元本身,事情就會非常糟糕 --- "[a]" 是否應該比 "a" 比對不同的內容? 此外,brackpart() 中的捷徑路徑無論如何都沒有這樣做,使其更加不一致。 討論:https://postgr.es/m/2845172.1613674385@sss.pgh.pa.us 討論:https://postgr.es/m/3220564.1613859619@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/2a0af7fe460eb46f9af996075972bf7c2e3f211d

  • 變更 regex \D 和 \W 簡寫以始終比對換行符號。 換行符號肯定不是數字,也不是單字字元,因此它應該比對這些補碼字元類別是有意義的。 以前,\D 和 \W 預設以這種方式運作,但在換行符號敏感模式('n' 或 'p' 旗標)下,它們不比對換行符號。 之前強制執行此行為,因為顯式補碼字元類別在換行符號敏感模式下不比對換行符號;但從先前的提交開始,該實作限制不再存在。 更改此設定似乎很有用,因為換行符號敏感模式的主要實際用途似乎是比對其他 regex 引擎(例如 Perl 和 Javascript)的預設行為...而它們的預設行為是這些比對換行符號。 舊的行為可以透過編寫顯式補碼字元類別來保留,即 [^[:digit:]] 或 [^[:word:]]。 (這表示 \D 和 \W 與這些字串不完全等效,但它們無論如何都不是。) 討論:https://postgr.es/m/3220564.1613859619@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/7dc13a0f0805a353cea0455ed95701322b39d4dd

  • 文件:移除 src/backend/regex/re_syntax.n。 我們沒有將此檔案作為文件發布,並且它的維護比 func.sgml 中的真實文件要隨意得多,因此我們就將其刪除吧。 我認為我將其包含在 commit 7bcc6d98f 中的唯一原因是 Berkeley 時代的來源在這個目錄中有一個 man 頁面。 討論:https://postgr.es/m/4099447.1614186542@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/301ed8812e3f8b102b85e1f5a59e95990ed9a868

  • 修正 WITH RECURSIVE 處理中的列表操作錯誤。makeDependencyGraphWalker 和 checkWellFormedRecursionWalker 認為它們可以在列表被遞迴呼叫修改時,保持指向列表第一個 cons cell 的指標。當 cons cell 實際上是分開 palloc'd 時,這是可以接受的... 但自從 commit 1cff1b95a 以來,這非常不安全,會導致核心傾印或錯誤地抱怨錯誤的 WITH 巢狀結構。在實際應用中,這至少需要七層深的 WITH 巢狀結構才會導致問題,但啟用 DEBUG_LIST_MEMORY_USAGE 可以讓您在較淺的巢狀深度下看到這個錯誤。根據 Alexander Lakhin 提供的 bug #16801。反向移植到 v13。Michael Paquier 和 Tom Lane 的討論: https://postgr.es/m/16801-393c7922143eaa4d@postgresql.org https://git.postgresql.org/pg/commitdiff/80ca8464fe02296c8efefd53746e6d6a3f456d1e

  • 改善 regex 編譯器中的記憶體管理。先前的邏輯為每個狀態建立一個單獨的 arcs 池,以便每個狀態的 out-arcs 實際上儲存在其中。也許這個選擇是為了避免在每個 arc 中包含一個 "from" 指標;但 Spencer 很久以前就放棄了這個想法,現在很難看出它的價值。然而,這種方法在記憶體消耗方面證明是相當災難性的。首先,這個引擎建立的 NFAs 平均每個狀態大約有 4 個 arcs,其中大多數只有一個或兩個 out-arcs。因此,為每個狀態預先分配 10 個 out-arcs 已經導致了兩倍或更多的膨脹。更糟的是,NFA 優化階段會隨意地移動 arcs。在一個大型 NFA 中,某些狀態將擁有數百個 out-arcs,因此在優化階段的最後,我們有大量的狀態,它們的 arc 池有容納數百個 arcs 的空間,即使只有少數 arcs 正在使用。我們已經在現實世界的 regexes 中看到,這種效應會使記憶體需求膨脹 25 倍甚至更多。因此,放棄每個狀態的 arc 池,而採用一個適用於整個 NFA 的單一 arc 池,使用可變大小的分配批次,而不是每次都請求 10 個。在我們進行這項操作的同時,也對狀態結構進行批次分配,以進一步減少 malloc 流量。這也順便允許以類似於 moveins() 的方式優化 moveouts():當將一個 arc 移動到另一個狀態時,現在可以直接將同一個 arc 結構重新鏈接到不同的 outchain 中,而在以前,程式碼不變性要求我們建立一個物理上新的 arc,然後釋放舊的 arc。這些變更將 regex 編譯器對於平均大小的 regexes 的典型空間消耗減少了大約兩倍,對於大型或複雜的 regexes 則減少更多。在一個大型的現實世界 regexes 測試集中,我們以前有六個案例由於超過 REG_MAX_COMPILE_SPACE 限制(約 150MB)而失敗,並顯示 "regular expression too complex" 錯誤;我們必須將該限制提高到接近 400MB 才能使它們使用舊程式碼工作。現在,這些案例都不需要超過 13MB 來編譯。此外,由於 malloc 流量減少,測試集整體速度提高了約 10%。討論:https://postgr.es/m/168861.1614298592@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/0fc1af174cf7113445e116feb2813405b838a47d

  • 文件:進一步闡明 libpq 對連線字串 URI 的描述。將概要分解為命名部分,使其不那麼令人困惑。盡力應用 SGML 標記。對附近的文字進行一些複製編輯。概要修訂由 Alvaro Herrera 和 Paul Förster 完成,其餘是我的責任。反向移植到出現多主機連線字串的 v10。討論:https://postgr.es/m/6E752D6B-487C-463E-B6E2-C32E7FB007EA@gmail.com https://git.postgresql.org/pg/commitdiff/4e90052c46c7751779ed83627676ed5e74ebe6d4

Thomas Munro 推送

Michaël Paquier 推送

Peter Eisentraut 推送

Fujii Masao 推送

Magnus Hagander 推送

  • 修正網站樣式的文件建置。使用 STYLE=website 建置文件引用了一個早已不存在於網站上的樣式表,因為我們已將其變更為使用版本化的引用。為了減少這種情況再次發生,指向網站上的一個單一樣式表,該樣式表將反過來導入所需的樣式表。這將整個過程置於網站儲存庫的範圍內,因此下次切換版本時,這是唯一需要進行變更的地方,使其不太可能被遺漏。根據與 Peter Geoghegan 和 Jonathan Katz 的(非公開)討論。 https://git.postgresql.org/pg/commitdiff/d22d0fa937616a3112f69ebd6a6ed4f039162441

Álvaro Herrera 推送

Amit Kapila 推送了

Peter Geoghegan 推送了

  • 在已刪除的 nbtree 頁面中使用完整的 64 位元 XID。否則,我們可能會因為使它們無限期地無法回收而「洩漏」已刪除的頁面。Commit 6655a729 對 GiST 索引中已刪除的頁面做了同樣的事情。這裡的工作以此為起點。停止儲存 XID,該 XID 指示 nbtree meta 頁面中所有已刪除但未回收的頁面中最舊的 bpto.xact。不再有任何理由關心該條件/最舊的 XID。只有在 wraparound 是 _bt_vacuum_needs_cleanup() 必須考慮的情況時,這才有意義。btm_oldest_btpo_xact meta 頁面欄位已被重新利用和重新命名。它現在是 btm_last_cleanup_num_delpages,用於記住上次 VACUUM 操作中剩餘多少個未回收的已刪除頁面(實際上,它的值通常是在上次設定該欄位的特定 VACUUM 操作期間_新刪除的_頁面的確切數量)。儲存 btm_last_cleanup_num_delpages 的總體思路是使用它來_某種程度上_考慮到 _bt_vacuum_needs_cleanup() 內的未回收已刪除頁面 -- 儘管永遠不會太多。我們只需要避免在未回收狀態下永久保留過多的已刪除頁面。我們這樣做只是為了涵蓋某些狹窄的情況,在這些情況下,沒有其他因素使 VACUUM 執行完整掃描,但索引繼續增長(因此實際上錯過了回收現有已刪除頁面的機會)。這些 meta 頁面變更會帶來明顯的使用者可見的好處:我們不再僅僅因為大型索引中存在 1 或 2 個已知的已刪除(但未回收)區塊而在 VACUUM 操作期間觸發完整的索引掃描。現在重要的是隨著時間的推移保持成本和收益的平衡。修正自 commit 857f9c36 以來一直存在的問題,該 commit 新增了「跳過索引的完整掃描」機制(即 _bt_vacuum_needs_cleanup() 邏輯)。btm_last_cleanup_num_heap_tuples 的準確性意外地取決於何時儲存源值。我們現在始終在 btvacuumcleanup() 中儲存 btm_last_cleanup_num_heap_tuples。這修正了該問題,因為預期 IndexVacuumInfo.num_heap_tuples(來源欄位)能夠準確地指示 VACUUM 在 btvacuumcleanup() 內部完成資料表的狀態。無法輕易從此 commit 中提取可回溯修補的修復程式。針對該問題的定向修復將在稍後的 commit 中進行,儘管這不會在今天發生。我 (pgeoghegan) 已選擇在 vacuum_cleanup_index_scale_factor GUC/參數的文檔中刪除任何提及已刪除頁面的資訊,因為已刪除(但未回收)的頁面不再是使用者關心的問題。無論如何,文檔中 vacuum_cleanup_index_scale_factor 的描述現在看起來相當不清楚,並且可能需要在不久的將來重寫。也許會在同一時間重新添加一些關於頁面刪除的簡要提及。由於 nbtree WAL 紀錄現在使用完整的 XID,因此增加 XLOG_PAGE_MAGIC。作者:Peter Geoghegan pg@bowt.ie 審閱者:Masahiko Sawada <sawada.mshk@gmail.com> 討論: https://postgr.es/m/CAH2-WznpdHvujGUwYZ8sihX=d5u-tRYhi-F4wnV2uN2zHpMUXw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/e5d8a999030418a1b9e53d5f15ccaca7ed674877

  • VACUUM VERBOSE:計算「新刪除」的索引頁面。教導 VACUUM VERBOSE 報告由目前 VACUUM 操作刪除的頁面 -- 這些是新刪除的頁面。VACUUM VERBOSE 繼續報告整個索引中刪除的頁面總數(沒有變更)。前者是後者的子集。每個類別的已刪除索引頁面之間的區別僅在支援頁面刪除且為了效能原因而與頁面回收分離的索引 AM 中才會出現。這是 commit e5d8a999 的後續工作,該 commit 使 nbtree 在刪除時將 64 位 XID(而不是 32 位 XID)儲存在頁面中。請注意,該 commit 新增的 btm_last_cleanup_num_delpages metapage 欄位通常會設定為 pages_newly_deleted。例外情況(它們不相等的情況)似乎都是頁面刪除和回收的一般實現中棘手的案例。作者:Peter Geoghegan pg@bowt.ie 討論:https://postgr.es/m/CAH2-WznpdHvujGUwYZ8sihX%3Dd5u-tRYhi-F4wnV2uN2zHpMUXw%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/2376361839091b0dcdcc0b77f938b809b5f21646

David Rowley 推送了

  • 新增 TID 範圍掃描以支援有效率地掃描 TID 範圍。這新增了一個名為 TID 範圍掃描的新執行器節點。當在基本關係上發現限定詞時,查詢規劃器將為 TID 範圍掃描產生路徑,這些限定詞在表的 ctid 欄位上搜尋範圍。這些範圍可能在任一端都是開放的。例如,WHERE ctid >= '(10,0)'; 將傳回第 10 頁及以上的全部元組。為了支援這一點,已向表 AM 新增了兩個新的可選回呼函式。scan_set_tidrange 用於將掃描範圍設定為僅給定的 TID 範圍。scan_getnextslot_tidrange 提取給定範圍內的下一個元組。對於掃描 TID 範圍沒有意義的 AM,這些函式可以在 TableAmRoutine 中設定為 NULL。在這種情況下,查詢規劃器不會產生 TID 範圍掃描路徑。作者:Edmund Horner, David Rowley 審閱者:David Rowley, Tomas Vondra, Tom Lane, Andres Freund, Zhihong Yu 討論:https://postgr.es/m/CAMyN-kB-nFTkF=VA_JPwFNo08S0d-Yk0F741S2B7LDmYAi8eyA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/bb437f995d47405ecd92cf66df71f7f7e40ed460

  • 新增遺失的 TidRangeScan readfunc。在 bb437f995 中錯誤地忘記了 https://git.postgresql.org/pg/commitdiff/977b2c08535f2a82ba7c310c88420cbbca1772e8

Noah Misch 推送了

待處理的修補程式

Justin Pryzby 寄來了另一個修補程式版本,該修補程式使 INSERT SELECT 使用 BulkInsertState 和 multi_insert,檢查 volatile 預設值以確保不會遺失對它們的任何依賴關係,使 COPY 根據元組的累積大小而不是行長度來刷新 multi-insert 緩衝區,並檢查元組大小以在計算何時刷新緩衝區時獲得更準確的區塊大小。

Hou Zhijie 寄來了另一個修補程式版本,該修補程式新增了一個 GUC 和一個每表選項,都名為 enable_parallel_dml,以控制 DML 是否包含以平行方式執行的選項。

Bharath Rupireddy 寄來了另一個修補程式版本,該修補程式在 FDW 層級和外部伺服器層級都新增了名為 keep_connections 的 GUC。

Masahiko Sawada 寄來了一個修補程式,該修補程式新增了一個檢查,根據所有堆積頁面中是否有 1% 具有 LP_DEAD 行指標,來判斷是否要執行索引清理 (index vacuum)(和堆積清理 (heap vacuum))。

Shenhao Wang 寄來了一個修補程式,該修補程式使 --enable-coverage 在未找到 lcov 的情況下也能成功,因為實際的涵蓋範圍測試可以在沒有它的情況下執行。

Jim Mlodgenski 寄來了一個修補程式,該修補程式新增了一個剖析器掛鉤。

Mats Kindahl 寄來了一個修補程式,該修補程式新增了一個到 TableAccessMethod 的回呼,當應該排程取消連結表時會呼叫該回呼,並實作堆積存取方法的方法。

Justin Pryzby 寄來了三個更多版本的修補程式,以在 typinput 的錯誤期間報告文字參數,並使用二進位參數在錯誤時執行參數輸出。

Daniel Gustafsson 寄來了兩個更多版本的修補程式,使其可以使用 NSS 作為 libpq 的 TLS 後端。

Jan Wieck 寄來了另一個修補程式版本,使連線協定可插入,並使用相同協定透過 telnet 回答。

Justin Pryzby 寄來了另一個修補程式版本,以潤飾即將發佈版本的文檔。

Iwata Aya 和 Álvaro Herrera 交換了修補程式以改善 libpq 追蹤功能。

Amit Kapila 寄來了一個修補程式,以更新準備好的 xact 解碼的文檔和註解,以符合目前的行為。

Daniel Gustafsson 寄來了另一個修補程式版本,以檢查 pg_upgrade 中目標叢集二進位檔的版本。

Mark Rofail 寄來了另一個修補程式版本,以實作外部鍵陣列。

Matthias van de Meent 寄來了另一個修補程式版本,以新增 COPY 進度報告的進度報告元件,包括一個新的檢視表 pg_stat_progress_copy,新增回到進度報告文檔的反向連結,並為相同元件新增迴歸測試。

Dilip Kumar 寄來了三個更多版本的修補程式,以提供一個新的介面來取得恢復暫停狀態,pg_get_wal_replay_pause_state,該介面會傳回恢復暫停的實際狀態,即如果未請求暫停則為「未暫停」,如果已請求暫停但尚未暫停恢復則為「已請求暫停」,如果恢復實際上已暫停則為「已暫停」。

KaiGai Kohei 寄來了一個修補程式,以將二進位輸入/輸出處理常式新增到 contrib/cube。

Georgios Kokolatos 寄來了另一個修補程式版本,以使 dbsize 更一致。

Mark Dilger 寄來了另一個修補程式版本,以新增 pg_amcheck,這是一個命令列介面,用於針對表和索引執行 amcheck 的驗證。

John Naylor 寄來了兩個更多版本的修補程式,使其可以使用 SIMD 指令來驗證 utf-8。

Hayato Kuroda 寄來了三個版本的修補程式,以重構 ECPGconnect 並允許在那裡進行 IPv6 連線。

Amit Langote、Greg Nancarrow 和 Amit Kapila 交換了修補程式,使其可以使用多個工作程序來執行 INSERT (INTO ... SELECT ...)。

Julien Rouhaud 寄來了另一個修補程式版本,以將新的 COLLATION 選項新增到 REINDEX。

John Naylor 寄來了兩個版本的修補程式,以允許將元組插入到幾乎為空的頁面中。

Paul Martinez 寄來了兩個更多版本的修補程式,以記錄 max_replication_slots 對訂閱者端 (subscriber side) 的影響。

Ajin Cherian 和 Amit Kapila 交換了修補程式,以避免在重新啟動後重複解碼準備好的交易,並新增一個選項以在 pg_create_logical_replication_slot 中啟用兩階段提交。

Peter Eisentraut 送出另一個修訂版的 patch,修正游標敏感度術語,使其與 SQL 標準一致,並移除對支援敏感游標的聲明,並為游標新增一個選項 ASENSITIVE,作為預設行為。

Benoit Lobréau 送出一個 patch,更詳細地記錄了 archive_command 如何根據收到的訊號失敗,以及是否在 pg_stat_archiver 中報告。

Peter Eisentraut 送出另一個修訂版的 patch,為來自客戶端的 SSL 連線設定 SNI,這允許支援 SNI 的代理程式路由連線。

Peter Smith 送出另三個修訂版的 patch,以實作兩階段交易的邏輯解碼。

Amit Kapila 送出另一個修訂版的 patch,更新邏輯複製的文件,以包含最近新增的邏輯複製組態設定,並提及資料表同步 worker 現在使用複製來源來追蹤進度的事實。

Thomas Munro 送出另一個修訂版的 patch,以條件變數取代緩衝區 I/O 鎖定。

Amit Langote 送出另一個修訂版的 patch,修正分割區列移動的錯誤行為,方法是確保在外鍵觸發器在分割區資料表上建立,並使用相同的觸發器在跨分割區更新期間正確強制執行外鍵。

Thomas Munro 送出另一個修訂版的 patch,以防止鎖存器向目前未處於休眠狀態的程序傳送訊號,對鎖存器使用 SIGURG 而非 SIGUSR1,對 epoll 鎖存器使用 signalfd,這透過等待 signalfd 而非訊號處理常式和自我管道來減少系統呼叫和其他管理負擔,並對 kqueue 鎖存器使用 EVFILT_SIGNAL。

Michaël Paquier 送出一個 patch,為 reindexdb 新增 --tablespace 選項,與最近為 REINDEX 新增的功能相符。

Kota Miyake 送出一個 patch,修正在同時設定 PGUSER 和 PGPORT 時,pgbench 在錯誤中報告資料庫名稱的問題。

Amul Sul 送出另一個修訂版的 patch,使用全域屏障實作 wal 禁止狀態,在 WAL 寫入的 START_CRIT_SECTION 之前產生錯誤或 Assert,並記錄相同內容。

Justin Pryzby 送出另一個修訂版的 patch,使在分割區資料表上使用 CREATE INDEX CONCURRENTLY 成為可能。

Jacob Champion 送出另一個修訂版的 patch,儲存使用者原始的已驗證身分以進行記錄。

Daniel Gustafsson 送出另一個修訂版的 patch,透過忽略會開啟 SSL 壓縮的選項來禁止 SSL 壓縮。稍後的 patch 將完全移除該選項,因為它已被棄用。

Daniel Gustafsson 送出一個 patch,從 libpq 的 authtype 參數中移除預設值,因為它已被棄用。

Álvaro Herrera 送出另一個修訂版的 patch,以實作 ALTER TABLE .. DETACH PARTITION CONCURRENTLY。

Dilip Kumar 送出另兩個修訂版的 patch,使設定資料表的壓縮類型成為可能。

Euler Taveira de Oliveira 送出另一個修訂版的 patch,使用 PUBLICATIONs 的 DDL 中的可選 WHERE 子句實作邏輯複製的列篩選。

Thomas Munro 送出另一個修訂版的 patch,為 FeBeWaitSet 位置引入符號名稱,並將 FeBeWaitSet 用於 walsender.c。

Thomas Munro 送出另一個修訂版的 patch,將條件變數用於 ProcSignalBarriers,允許在 interrupt 程式碼中使用條件變數,並使用全域屏障來修復 Windows 上的 DROP TABLESPACE,方法是強制所有後端關閉該平台上的所有 fds。

Andrey Borodin 送出一個 patch,為 FPI 使用不同的壓縮方法。

Julien Rouhaud 送出一個 patch,將 pg_prewarm 和 pg_stat_statements 中的明確對齊使用變更為 CACHELINEALIGN,並根據 CACHELINEALIGN 更新 hash_estimate_size() 中的對齊,以估計 ShmemInitHash 實際將消耗的量。

Thomas Munro 送出一個 patch,移除 Linux < 2.6.27 的 latch.c 解決方案。

Peter Eisentraut 送出另一個修訂版的 patch,psql 預設顯示所有查詢結果。

Jeff Janes 送出一個 patch,使 SCRAM 的行為與 MD5 相符,方法是在使用者的密碼不符時,在 DETAIL 訊息中報告。

Joel Jacobson 送出一個 patch,以實作 regexp_positions() 函數。

Paul Förster 送出一個 patch,在 psql 的 --help 輸出中提及資料庫 URI。

Justin Pryzby 送出一個 patch,以 ATExecForceNoForceRowSecurity 的樣式重構 ATExec{En,Dis}ableRowSecurity,並進行一些進一步的重構。

Justin Pryzby 送出一個 patch,以實作 ALTER TABLE SET TABLE ACCESS METHOD。