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
https://archives.postgresql.org/pgsql-jobs/2021-01/
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 推送
Peter Eisentraut 推送
移除重複的 include。 報告人:Ashutosh Sharma ashu.coek88@gmail.com 討論: https://postgres.tw/message-id/flat/CAE9k0PkORqHHGKY54-sFyDpP90yAf%2B05Auc4fs9EAn4J%2BuBeUQ%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/ecc4b1318c92594abdf9bd2933fb6feaa9d56229
移除不必要的已棄用的 SELECT INTO 用法。長期以來,在 ecpg 和 PL/pgSQL 之外,CREATE TABLE AS 一直是比 SELECT INTO 更好的選擇。但仍然有一些在測試和文件中使用 SELECT INTO 的案例,有些是舊的,有些是較新的。此變更將它們改為 CREATE TABLE AS。測試中仍然保留了一些情況,它們專門測試 SELECT INTO 的語法解析或類似的功能。討論:https://postgres.tw/message-id/flat/96dc0df3-e13a-a85d-d045-d6e2c85218da%40enterprisedb.com https://git.postgresql.org/pg/commitdiff/b034ef9b376dbe712caa076541d6a750f37d85ce
修正錯字。 https://git.postgresql.org/pg/commitdiff/2592be8be5aed6448a1e2b386fffd75ad69eb6c5
允許在正常的 GRANT 和 REVOKE 語句中使用 GRANTED BY 子句。SQL 標準允許在 GRANT 和 REVOKE (權限) 語句中使用 GRANTED BY 子句,該子句可以指定 CURRENT_USER 或 CURRENT_ROLE。在 PostgreSQL 中,這兩者都是預設行為。由於我們已經擁有 GRANT (角色) 語句的全部語法解析支持,因此我們不妨也為權限變體添加基本的支持。這允許我們勾選 SQL 功能 T332。將來,也許可以用它來做更有趣的事情。審閱人:Simon Riggs simon@2ndquadrant.com 討論:https://postgres.tw/message-id/flat/f2feac44-b4c5-f38f-3699-2851d6a76dc9@2ndquadrant.com https://git.postgresql.org/pg/commitdiff/6aaaa76bb47db11cd6f567eafa3d1ee81ca59556
doc:釐清參考頁面上 SELECT INTO 的狀態。文件以及源代碼註釋並未完全清楚 SELECT INTO 是否真正被棄用(因此理論上最終將被刪除),或者僅僅是較不推薦的變體。經過討論後,似乎其他實現也以類似於 PostgreSQL 的方式在直接 SQL 中使用 SELECT INTO,因此似乎值得保留它以實現兼容性。更新文檔中的措辭以反映這一點。討論:https://postgres.tw/message-id/flat/96dc0df3-e13a-a85d-d045-d6e2c85218da%40enterprisedb.com https://git.postgresql.org/pg/commitdiff/65330622441d7ee08f768c4326825ae903f2595a
向系統目錄添加主鍵和唯一約束。對於那些具有唯一索引的系統目錄,使用 ALTER TABLE ... PRIMARY KEY/UNIQUE USING INDEX 建立主鍵和唯一約束。這對尋找主鍵的 GUI 工具很有幫助,並且將來可能允許聲明外鍵,以製作模式圖。約束創建語句由 genbki.pl 從 DECLARE_UNIQUE_INDEX 指令自動創建。要指定哪個可用唯一索引是主鍵,請使用新的指令 DECLARE_UNIQUE_INDEX_PKEY 代替。按照慣例,如果目錄具有 OID 列,我們通常將其作為主鍵。審閱人:Tom Lane tgl@sss.pgh.pa.us 討論:https://postgres.tw/message-id/flat/dc5f44d9-5ec1-a596-0251-dadadcdede98@2ndquadrant.com https://git.postgresql.org/pg/commitdiff/dfb75e478cacb33d277432e0df5e2f9a2a2b52d9
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 推送
修正 postgres_fdw 中釋放預備語句時的記憶體洩漏。洩漏很小,因此不進行回溯修補。21734d2 中的疏忽。回報者:Tom Lane https://git.postgresql.org/pg/commitdiff/7b4c660466dd8a1d25ca316ac02099a7cf0e5896
重構 tablecmds.c 中的程式碼以檢查和處理表空間移動。tablecmds.c 的兩個程式碼路徑 (針對具有儲存和不具有儲存的關係) 使用相同的邏輯來檢查是否允許將關係移動到新的表空間,並更新 pg_class.reltablespace 和 pg_class.relfilenode。REINDEX、CLUSTER 和 VACUUM FULL 的潛在 TABLESPACE 子句需要類似的檢查,以確保不會以非法方式移動任何內容 (沒有對應的關係,共享關係僅在 pg_global 中,沒有移動其他後端擁有的暫存表)。此操作重新組織了 ALTER TABLE 的現有程式碼,以便所有這些邏輯都由兩個新的常式控制,這些常式可以重複用於其他能夠跨表空間移動關係的指令,從而限制了需要相同保護的程式碼路徑數量。這也移除了 ALTER TABLE 針對具有和不具有儲存的表而重複的一些程式碼。作者:Alexey Kondratov、Michael Paquier。討論:https://postgr.es/m/YA+9mAMWYLXJMVPL@paquier.xyz https://git.postgresql.org/pg/commitdiff/4c9c359d38ff1e2de388eedd860785be6a49201c
doc:移除 TRUNCATE 權限的檢視表參考。關於權限權利的頁面提到 TRUNCATE 可以應用於檢視表甚至其他關係類型。這是令人困惑的,因為此指令只能在表和分割表上使用。afc4a78 中的疏忽。回報者:Harisai Hari。審閱者:Laurenz Albe。討論:https://postgr.es/m/161157636877.14625.15340884663716426087@wrigleys.postgresql.org Backpatch-through:12 https://git.postgresql.org/pg/commitdiff/32bef758296142ce0fff944c3478d63fdefdaf33
重構 cryptohashfuncs.c 中 SHA-2 的 SQL 函式。在編譯 SHA-2 雜湊時,相同的程式碼模式重複了四次。如果向 pg_cryptohash_type 新增一個值,這個重構具有發出編譯警告的優點,以便在這個領域進行新增的任何人都需要考慮是否需要支援新的 SQL 函式。作者:Sehrope Sarkuni、Michael Paquier。討論:https://postgr.es/m/YA7DvLRn2xnTgsMc@paquier.xyz https://git.postgresql.org/pg/commitdiff/f854c69a5b36ba7aa85bee9e9590c3e517970156
修正未載入程式庫時 pg_stat_statements_info()
的崩潰。其他程式碼路徑已經針對這種情況進行了保護,並且 _PG_init() 在 pg_stat_statements.c 中對此發出警告。雖然在上面,我檢查了樹的其他擴充功能,但沒有注意到任何漏洞。9fbc3f3 中的疏忽。作者:Jaime Casanova。審閱者:Julien Rouhaud。討論:https://postgr.es/m/CAJKUy5gF4=_=qhJ1VX_tSGFfjKHb9BvzhRYWSApJD=Bfwp2SBw@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/bca96ddab57c7c64ce442b0f9f35558741c7f8bd
調整 CheckRelationTableSpaceMove() 和 SetRelationTableSpace() 的註解。引入這兩個函式的 4c9c359 過於樂觀地認為,將關聯移動到新的表空間只需要 ShareUpdateExclusiveLock。實際上需要 AccessExclusiveLock,但在特定情況下,例如 REINDEX CONCURRENTLY,即使使用較低層級的鎖,由於等待先前的交易,操作也是安全的,此時可以使用 ShareUpdateExclusiveLock。目前的程式碼只做了前者,因此更新現有的註解以反映這一點。一旦引入 REINDEX (TABLESPACE),這些註解將需要額外更新,以提及他們的新用途。同時,修正一個不正確的變數名稱。根據與 Álvaro Herrera 的討論。討論:https://postgr.es/m/20210127140741.GA14174@alvherre.pgsql https://git.postgresql.org/pg/commitdiff/24843297a96d7be16cc3f4b090aacfc6e5e6839e
文件:改進 repslot 統計資料區段的措辭。此文件已在 9868167 中添加,因此不需要反向移植。作者:Justin Pryzby, Michael Paquier 討論:https://postgr.es/m/20201222041153.GK30237@telsasoft.com https://git.postgresql.org/pg/commitdiff/2a5862f013647dd185de3e1b496fd4f614d12f0e
Peter Geoghegan 推送
修復 GiST 索引刪除斷言問題。避免使用空的 deltids 陣列呼叫 heap_index_delete_tuples(),以避免斷言失敗。這個問題可以說是在提交 b5f58cf2 中的疏忽,儘管失敗的斷言本身是由我最近的提交 d168b666 添加的。不需要反向移植,因為這個疏忽在後續分支中是無害的。作者:Peter Geoghegan pg@bowt.ie 報告者:Jaime Casanova jcasanov@systemguards.com.ec 討論:https://postgr.es/m/CAJKUy5jscES84n3puE=sYngyF+zpb4wv8UMtuLnLPv5z=6yyNw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/e42b3c3bd6a9c6233ac4c8a2e9b040367ba2f97c
降低 vacuum_cost_page_miss 的預設值。當提交 f425b605 在 2004 年引入基於成本的 vacuum 延遲時,預設值反映了當時的硬體趨勢,以及 PostgreSQL 中的某些歷史限制。自那時以來,這兩個方面都有了巨大的改進。在提交 cbccac37 之後,成本限制 GUC 的預設值最終變得更能代表當前的趨勢,該提交將 PostgreSQL 12 的 autovacuum_vacuum_cost_delay 的預設值降低了 10 倍(從 20 毫秒降至僅 2 毫秒)。相對成本也發生了變化。預設值也應該考慮到這一點。更具體地說,避免在 VACUUM 中弄髒頁面的相對重要性大大提高,這主要是由於主記憶體容量擴展和快閃儲存趨勢。在 Postgres 內部,像索引 vacuuming 期間的循序存取(至少在 nbtree 和 GiST 索引中)這樣的改進也做出了貢獻。為了反映所有這些,將 vacuum_cost_page_miss 的預設值降低到 2。由於 vacuum_cost_page_dirty 的預設值仍然是 20,因此預設情況下,弄髒頁面的「成本」現在被認為比頁面未命中高 10 倍。作者:Peter Geoghegan pg@bowt.ie 討論:https://postgr.es/m/CAH2-WzmLPFnkWT8xMjmcsm7YS3+_Qi3iRWAb2+_Bc8UhVyHfuA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/e19594c5c059d2e071b67d87ae84f569a52d2e32
移除未使用的 _bt_delitems_delete() 參數。nbtree 刪除操作使用的 latestRemovedXid 值由 _bt_delitems_delete() 的呼叫者決定,因此沒有理由傳遞單獨的 heapRel 參數。提交 d168b666823 中的疏忽。https://git.postgresql.org/pg/commitdiff/dc43492e46c7145a476cb8ca6200fc8eefe673ef
Andrew Gierth 推送
Heikki Linnakangas 推送
添加特定於每種編碼的 mbverifystr() 函式。這使得 pg_verify_mbstr() 函式更快,因為它允許更有效率的編碼特定實作。此提交中包含的所有實作都非常簡單,它們只呼叫先前使用的相同編碼特定 verifychar 函式,但這已經提供了一個效能提升,因為緊湊的逐字元迴圈更簡單。審閱者:John Naylor 討論:https://postgres.tw/message-id/e7861509-3960-538a-9025-b75a61188e01@iki.fi https://git.postgresql.org/pg/commitdiff/b80e10638e36b9d2f0b39170c613837af2ca2aac
在 EUC_TW 和 Big5 之間添加直接轉換常式。EUC_TW 和 Big5 之間的轉換先前是透過首先將整個輸入轉換為 MIC,然後再從 MIC 轉換為目標編碼來實作的。實作函式以在這兩者之間直接轉換。現在這樣做的原因是,我正在開發一個修補程式,它將更改轉換函式簽名,以便如果輸入無效,我們會盡可能多地轉換並傳回成功轉換的位元組數。如果我們使用中介格式,這是行不通的,因為如果在中介 -> 最終轉換中發生錯誤,我們會遺失原始輸入中無效字元的位置。避免中介步驟也會使轉換更快。審閱者:John Naylor 討論:https://postgres.tw/message-id/b9e3167f-f84b-7aa4-5738-be578a4db924%40iki.fi https://git.postgresql.org/pg/commitdiff/6c5576075b0f93f2235ac8a82290fe3b6e82300d
Álvaro Herrera 推送
pgbench:移除無效程式碼。doConnect() 永遠不會傳回狀態為 CONNECTION_BAD 的連線,因此檢查該狀態毫無意義。移除執行此操作的程式碼。此程式碼自 20 年前的 ba708ea3dc84 以來一直是無效的。討論:https://postgr.es/m/20210126195224.GA20361@alvherre.pgsql 審閱者:Tom Lane tgl@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/6819b9042fe69154ff3fd2337c5028038d3cfab4
移除 BEFORE UPDATE 觸發程序中不合理的限制。為了保護使用者免於不一致的行為,commit 487e9861d0cf "Enable BEFORE row-level triggers for partitioned tables" 試圖阻止 BEFORE UPDATE FOR EACH ROW 觸發程序將資料列從一個分割區移動到另一個分割區。然而,事實證明這個限制在兩個方面是錯誤的:首先,它會誤報錯誤,阻止有效的情況運作,如 bug #16794 所示;其次,它們無法防止任何錯誤行為,因為 tuple routing 會處理一切。通過移除該限制來修正。我們保留了對 BEFORE INSERT FOR EACH ROW 觸發程序的相同限制,因為它在那裡是有效且有用的。未來,我們可以透過讓 tuple reroute 像處理更新一樣處理插入來移除它。向後移植到版本 13。作者:Álvaro Herrera alvherre@alvh.no-ip.org 報告人:Phillip Menke pg@pmenke.de 討論:https://postgr.es/m/16794-350a655580fbb9ae@postgresql.org https://git.postgresql.org/pg/commitdiff/6f5c8a8ec23f8ab00da4d2b77bfc8af2a578c4d3
Thomas Munro 推送了
停用 pg_standby。pg_standby 在十多年前很有用,但現在已經過時。有人多次提議停用它。現在似乎是最終這樣做的最佳時機,因為「等待還原命令」與建議的恢復預取功能不相容。討論:https://postgr.es/m/20201029024412.GP5380%40telsasoft.com 作者:Justin Pryzby pryzby@telsasoft.com 審閱人:Heikki Linnakangas hlinnaka@iki.fi 審閱人:Peter Eisentraut peter.eisentraut@enterprisedb.com 審閱人:Michael Paquier michael@paquier.xyz 審閱人:藤井 雅生 masao.fujii@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/514b411a2b5226167add9ab139d3a96dbe98035d
移除等待 restore_command 的文件。在移除 pg_standby 後,也移除描述如何按照相同方式編寫自己的「等待還原命令」的文件章節。討論:https://postgr.es/m/20201029024412.GP5380%40telsasoft.com 審閱人:Michael Paquier michael@paquier.xyz https://git.postgresql.org/pg/commitdiff/5c6d184213bb9feac0800eee1a16769bec9e8d58
Alexander Korotkov 推送了
記錄寬鬆模式下 .**
jsonpath 存取子的行為。當 .**
jsonpath 存取子處理陣列時,它會選擇陣列及其每個元素。使用寬鬆模式時,後續的存取子會自動解包陣列。因此,每個陣列元素的內容可能會被選擇兩次。即使此行為違反直覺,但它是正確的,因為一切都按設計運作。此 commit 記錄了它。向後移植到引入 jsonpath 語言的版本 12。報告人:Thomas Kellerer Bug: #16828 討論:https://postgr.es/m/16828-2b0229babfad2d8c%40postgresql.org 討論:https://postgr.es/m/CAPpHfdtS-nNidT%3DEqZbAYOPcnNOWh_sd6skVdu2CAQUGdvpT8Q%40mail.gmail.com 作者:Alexandex Korotkov,Tom Lane 修訂 審閱人:Alvaro Herrera、Thomas Kellerer、Tom Lane 向後移植範圍:12 https://git.postgresql.org/pg/commitdiff/b41645460af563cfd4e4f57f354058cf69ef3b14
修正將複雜的詞形變化解析為 tsquery 的問題。當 to_tsquery() 或 websearch_to_tsquery() 遇到包含位於相鄰位置的多個單字的複雜詞形變化時,這些單字會以 OP_AND 運算符連接。這會導致令人驚訝的結果。例如,websearch_to_tsquery('"pg_class pg"') 和 to_tsquery('pg_class <-> pg') 都會產生 '( pg & class ) <-> pg' tsquery。此 tsquery 要求 'pg' 和 'class' 單字位於相同位置,且不符合 to_tsvector('pg_class pg')。這似乎是荒謬的行為,需要修正。此 commit 使 to_tsquery() 或 websearch_to_tsquery() 使用 OP_PHRASE 連接位於相鄰位置的單字。因此,現在這些單字通常會與其他 OP_PHRASE 運算符連結。上述範例現在產生 'pg <-> class <-> pg' tsquery,符合 to_tsvector('pg_class pg')。此 commit 的另一個影響是,即使沒有周圍的 OP_PHRASE,複雜詞形變化單字位置現在也需要符合 tsvector。此行為變更通常看起來像是一種改進,但使得此 commit 無法向後移植。報告人:Barry Pederson Bug: #16592 討論:https://postgr.es/m/16592-70b110ff9731c07d@postgresql.org 討論:https://postgr.es/m/CAPpHfdv0EzVhf6CWfB1_TTZqXV_2Sn-jSY3zSd7ePH%3D-%2B1V2DQ%40mail.gmail.com 作者:Alexander Korotkov 審閱人:Tom Lane、Neil Chen https://git.postgresql.org/pg/commitdiff/0c4f355c6a5fd437f71349f2f3d5d491382572b7
Noah Misch 推送了
修正同時進行預備交易時 CREATE INDEX CONCURRENTLY 的錯誤。在啟用預備交易的叢集中使用 CREATE INDEX CONCURRENTLY 時,使用結果索引的查詢可能會靜默地找不到資料列。透過讓它像等待普通交易一樣等待預備交易來修正此問題,以用於未來的 CREATE INDEX CONCURRENTLY。這擴展了 VirtualTransactionId 結構網域以容納預備交易。可能需要重新索引才能從過去的發生中恢復。向後移植到 9.5(所有支援的版本)。Andrey Borodin,由 Tom Lane 和 Michael Paquier 審閱(在早期版本中)。討論:https://postgr.es/m/2E712143-97F7-4890-B470-4A35142ABC82@yandex-team.ru https://git.postgresql.org/pg/commitdiff/8a54e12a38d1545d249f1402f66c8cde2837d97c
修正 CREATE PUBLICATION、wal_level=minimal 和新資料表的問題。當應用於在目前交易中建立或重寫的永久關係時,CREATE PUBLICATION 發生了錯誤。對另一個具有相同語義意圖的站點進行相同的更改;第二個實例沒有使用者可見的後果。向後移植到 v13,其中 commit c6b92041d38512a4176ed76ad06f713d2e6c01a8 破壞了此功能。Kyotaro Horiguchi 討論:https://postgr.es/m/20210113.160705.2225256954956139776.horikyota.ntt@gmail.com https://git.postgresql.org/pg/commitdiff/360bd2321b1ad9c47466bc485ee5eb2f4515372e
在使用 wal_level=minimal 和 SET TABLESPACE 的情況下恢復 "snapshot too old" 的問題。給定在目前交易中重寫的永久關係,old_snapshot_threshold 機制假定該關係從未受到早期修剪的影響。因此,當重寫發生在早期截斷之後時,查詢可能會無法報告 "snapshot too old"。ALTER TABLE SET TABLESPACE 可能是唯一能夠暴露此錯誤的重寫機制。REINDEX 設置 indcheckxmin,避免了該問題。CLUSTER 自 old_snapshot_threshold 存在之前就已將頁面 LSN 清零,因此 old_snapshot_threshold 從未與其協同工作。ALTER TABLE ... SET DATA TYPE 使每個過去的快照的資料表看起來都是空的,情況更糟。向後移植到 v13,其中 commit c6b92041d38512a4176ed76ad06f713d2e6c01a8 破壞了此功能。Kyotaro Horiguchi 和 Noah Misch 討論:https://postgr.es/m/20210113.160705.2225256954956139776.horikyota.ntt@gmail.com https://git.postgresql.org/pg/commitdiff/7da83415e5bc01bba0093f34f4f612b70c70b678
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 送出了補丁的另一個修訂版本,以實作邏輯複製的列篩選。