parquet_s3_fdw 0.1,用於 S3 上 parquet 檔案的外部資料包裝器,已發布。 https://github.com/pgspider/parquet_s3_fdw/releases/tag/v0.1
https://archives.postgresql.org/pgsql-jobs/2021-03/
Planet PostgreSQL: https://planet.postgresql.org/
本週的 PostgreSQL 每週新聞由 David Fetter 撰寫
請在太平洋標準時間/太平洋夏令時間週日下午 3:00 前將新聞和公告提交至 david@fetter.org。
Thomas Munro 推送
移除 Linux < 2.6.27 的 latch.c 解決方案。提交 82ebbeb0 增加了對沒有 epoll_create1() 和 EPOLL_CLOEXEC 的系統的解決方案。Linux < 2.6.27 和 glibc < 2.9 早已過時。現在似乎是刪除額外程式碼的好時機,因為否則我們必須將類似的已失效的解決方案程式碼添加到使用同一核心版本中引入的 XXX_CLOEXEC 標誌的新補丁中。審閱人:Tom Lane tgl@sss.pgh.pa.us 討論:https://postgr.es/m/CA%2BhUKGKL_%3DaO%3Dr30N%3Ds9VoDgTqHpRSzePRbA9dkYO7snc7HsxA%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/d1b90995e8d41df7e59efe48e98f26cd66baba9b
最佳化鎖存器以減少訊號發送。不要向未睡眠的進程發送訊號。作者:Andres Freund andres@anarazel.de 討論:https://postgr.es/m/CA+hUKGJjxPDpzBE0a3hyUywBvaZuC89yx3jK9RFZgfv_KHU7gg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/c8f3bc2401e7df7b79bae39dd3511c91f825b6a4
使用 SIGURG 而不是 SIGUSR1 作為鎖存器。傳統上,SIGUSR1 已被過載用於臨時訊號、procsignal.c 訊號和 latch.c 喚醒。將最後一個用途移動到一個新的專用訊號。SIGURG 通常用於報告頻外(out-of-band)的套接字數據,但 PostgreSQL 不使用該工具。現在由 InitializeLatchSupport() 在所有 postmaster 子進程中安裝訊號處理常式。希望斷開連線的人應呼叫 ShutdownLatchSupport()。未來的補丁將使用這種訊號分離來避免在某些作業系統上需要訊號處理常式。討論:https://postgr.es/m/CA+hUKGJjxPDpzBE0a3hyUywBvaZuC89yx3jK9RFZgfv_KHU7gg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/83709a0d5a46559db016c50ded1a95fd3b0d3be6
將 signalfd(2) 用於 epoll 鎖存器。透過從 signalfd 讀取而不是使用訊號處理常式和自管道來減少系統呼叫和其他開銷。影響 Linux 系統,以及可能包括實現 Linux epoll 和 signalfd 介面的 illumos。審閱人:Andres Freund andres@anarazel.de 討論:https://postgr.es/m/CA+hUKGJjxPDpzBE0a3hyUywBvaZuC89yx3jK9RFZgfv_KHU7gg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/6a2a70a02018d6362f9841cc2f499cc45405e86b
將 EVFILT_SIGNAL 用於 kqueue 鎖存器。透過使用 kqueue 顯式等待 SIGURG 而不是使用訊號處理常式和自管道來減少系統呼叫和其他開銷。影響 *BSD
和 macOS 系統。這僅使 poll 實現具有訊號處理常式和傳統的自管道技巧。討論:https://postgr.es/m/CA+hUKGJjxPDpzBE0a3hyUywBvaZuC89yx3jK9RFZgfv_KHU7gg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/6148656a0be1c6245fbcfcbbeb87541f1b173162
為 FeBeWaitSet 位置引入符號名稱。以前,我們使用 0 和 1 在分散的樹狀結構部分中引用套接字和鎖存器,而沒有任何解釋。此外,在幾個尚未這樣做的位置使用 PGINVALID_SOCKET 而不是 -1。審閱人:Kyotaro Horiguchi horikyota.ntt@gmail.com 討論:https://postgr.es/m/CA%2BhUKGJAC4Oqao%3DqforhNey20J8CiG2R%3DoBPqvfR0vOJrFysGw%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/a042ba2ba7bb44f191f6f9398da27f04a958a0db
將 FeBeWaitSet 用於 walsender.c。這避免了每次我們需要等待時都需要建立和拆除新的 WaitEventSet。我們必須在 postmaster 退出時新增一個顯式退出(FeBeWaitSet 未設定為自動執行此操作),因此將執行此操作的程式碼移動到一個新函數中以避免重複。審閱人:Kyotaro Horiguchi horikyota.ntt@gmail.com (較早版本) 討論:https://postgr.es/m/CA%2BhUKGJAC4Oqao%3DqforhNey20J8CiG2R%3DoBPqvfR0vOJrFysGw%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/6230912f23904aa6cb2a1f948ca9b08235b4f54a
將條件變數用於 ProcSignalBarriers。對於後端 pss_barrierGeneration 進階的任何時候,使用條件變數進行精確喚醒,而不是使用 poll/sleep 循環。討論:https://postgr.es/m/CA+hUKGLdemy2gBm80kz20GTe6hNVwoErE8KwcJk6-U56oStjtg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/814f1d8bc395bb9b4c0ae090ceea60adfbeb8e49
允許在 interrupt 程式碼中使用條件變數。調整條件變數睡眠循環,以便當其內部 CHECK_FOR_INTERRUPTS() 呼叫到達的程式碼與另一個條件變數交互時,可以正確工作。目前沒有這種情況,但一個提議的補丁將會這樣做。討論:https://postgr.es/m/CA+hUKGLdemy2gBm80kz20GTe6hNVwoErE8KwcJk6-U56oStjtg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/f5a5773a9dc4185414fe538525e20d8512c2ba35
刪除 WaitForProcSignalBarrier() 的過時註釋。提交 814f1d8b 移除了描述的行為。報告人:Amit Kapila amit.kapila16@gmail.com https://git.postgresql.org/pg/commitdiff/bd69ddfcdbf650f11af4317f3f6686c012cf66d0
新增 sort_template.h 以用於建立排序函數。將我們的 qsort 實現移動到一個標頭中,該標頭可用於定義專用函數以獲得更好的效能並減少重複。審閱人:Daniel Gustafsson daniel@yesql.se 討論:https://postgr.es/m/CA%2BhUKGJ2-eaDqAum5bxhpMNhvuJmRDZxB_Tow0n-gse%2BHG0Yig%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/0a1f1d3cac6baaa3744b89336673caba702f7628
使用 sort_template.h 處理 qsort() 和 qsort_arg()。透過使用新的範本來減少重複程式碼。審閱者:Daniel Gustafsson daniel@yesql.se 討論:https://postgr.es/m/CA%2BhUKGJ2-eaDqAum5bxhpMNhvuJmRDZxB_Tow0n-gse%2BHG0Yig%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/f374f4d66425060158d3c743dc6fb16cc0a2756a
使用 sort_template.h 處理 qsort_tuple() 和 qsort_ssup()。使用 sort_template.h 取代先前用於產生特定排序函式的 Perl 程式碼。審閱者:Daniel Gustafsson daniel@yesql.se 討論:https://postgr.es/m/CA%2BhUKGJ2-eaDqAum5bxhpMNhvuJmRDZxB_Tow0n-gse%2BHG0Yig%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/8eda3eba3063d619214b59f7bc7ecfc09c21b93a
Amit Kapila 推送了程式碼
更新文件和註解,以說明如何解碼已準備好的交易(prepared xacts)。Commit a271a1b50e 在 ReorderBuffer 的 prepare 時間引入了解碼功能。如果此類交易獨佔鎖定 [使用者] 目錄表,這可能會導致異地邏輯複製解決方案的死鎖,這些解決方案使用此功能來建構分散式 2PC。他們需要通知使用者不要在此類交易中鎖定目錄表(透過明確的 LOCK 指令)。回報者:Andres Freund 討論:https://postgr.es/m/20210222222847.tpnb6eg3yiykzpky@alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/b4e3dc7fd420cdc2287f30a638c4affd071f01b2
更新邏輯複製的文件,以說明 commit ce0fdbfe97。忘記更新邏輯複製設定頁面。在 commit ce0fdbfe97 之後,表格同步工作者也開始使用複製來源來追蹤進度,並且應該在文件中反映出來。作者:Amit Kapila 討論:https://postgr.es/m/CAA4eK1KkbppndxxRKbaT2sXrLkdPwy44F4pjEZ0EDrVjD9MPjQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/cf54e04b9e29a13c5e7c2386c5e2ff785e830414
避免在重新啟動後重複解碼已準備好的交易。在 commit a271a1b50e 中,我們允許在 prepare 時間進行解碼,如果在解碼後重新啟動,prepare 會再次被解碼。這樣做的原因是我們無法區分我們沒有解碼 prepare 是因為它早於一致性快照,還是我們之前已經解碼了它但重新啟動了。為了區分這兩種情況,我們在 slot 層級引入了 initial_consistent_point,這是一個 LSN,表示我們在建立 slot 時找到一致性點的時間。這也是我們匯出初始複製快照的點。因此,在此點之前的 prepare 交易會與 commit prepared 一起傳送。此 commit 由於 SnapBuild 的變更而增加了 SNAPBUILD_VERSION。它會破壞現有的 slot,這在主要版本中是可以接受的。作者:Ajin Cherian,基於 Andres Freund 的想法 審閱者:Amit Kapila 和 Vignesh C 討論:https://postgr.es/m/d0f60d60-133d-bf8d-bd70-47784d8fabf3@enterprisedb.com https://git.postgresql.org/pg/commitdiff/8bdb1332eb51837c15a10a972c179b84f654279e
新增選項,以透過 pg_create_logical_replication_slot 啟用 two_phase commit。Commit 0aa8a01d04 擴展了輸出外掛程式 API,允許解碼已準備好的交易,並允許使用者透過 pg_logical_slot_get_changes() 啟用/停用 two_phase 選項。這可能會導致一個問題,即第一次透過 pg_logical_slot_get_changes() 取得變更時,如果未啟用 two_phase 選項,即使 prepare 在一致性快照之後,也不會取得 prepare。現在下次取得變更時,如果啟用了 two_phase 選項,它可以跳過 prepare,因為到那時開始解碼點已經移動了。因此,使用者只會得到 commit prepared。允許在建立 slot 時啟用/停用此選項,預設值為 false。它會破壞現有的 slot,這在主要版本中是可以接受的。作者:Ajin Cherian 審閱者:Amit Kapila 和 Vignesh C 討論:https://postgr.es/m/d0f60d60-133d-bf8d-bd70-47784d8fabf3@enterprisedb.com https://git.postgresql.org/pg/commitdiff/19890a064ebf53dedcefed0d8339ed3d449b06e6
釐清訂閱端 max_replication_slots 的使用方式。文件中並不明確指出 max_replication_slots 也用於追蹤訂閱端的複製來源。作者:Paul Martinez 審閱者:Amit Kapila 向後移植至:10,這是引入邏輯複製的版本 討論:https://postgr.es/m/CACqFVBZgwCN_pHnW6dMNCrOS7tiHCw6Retf_=U2Vvj3aUSeATw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/8af3c233e423e106a5121000ecd92abf57c11704
Andres Freund 推送了程式碼
Tom Lane 推送了程式碼
改善多行 JSON 資料中語法錯誤的回報。指向偵測到錯誤的特定行;先前的程式碼傾向於包含幾個前面的行。避免重新掃描整個輸入以重新計算是哪一行。稍微簡化邏輯。新增測試案例。Simon Riggs 和 Hamid Akhtar,由 Daniel Gustafsson 和我審閱 討論:https://postgr.es/m/CANbhV-EPBnXm3MF_TTWBwwqgn1a1Ghmep9VHfqmNBQ8BT0f+_g@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/ffd3944ab9d481906137bc7d20f5325a2bd68acc
修正正規表示式反向參照的語意。POSIX 定義了反向參照的行為如下:「反向參照表示式 '\n' 應符合與前述以 '(' 和 ')' 括起來的子表示式所符合的字元串(可能為空)相同的字元串。」就我所見,反向參照應該只考慮被參照的子表示式所符合的資料字元。然而,由於我們的引擎複製了從被參照的子表示式建構的 NFA,它實際上也強制執行了其中的任何約束。舉例來說,'(^.)\1' 應該符合 'xx',或任何其他以相同字元出現兩次的字串開頭;但在我們的程式碼中並非如此,而且實際上無法符合任何東西,因為 '^' 定錨約束包含在反向參照的複製 NFA 中。如果 POSIX 有意如此,你會認為他們會提到它。例如,Perl 的行為並非如此,因此很難得出這不是一個錯誤的結論。透過在從參考複製反向參照的 NFA 後立即修改它來修正,將所有約束弧替換為 EMPTY 弧,以便將約束視為自動滿足。這仍然允許我們強制執行僅依賴於資料字元的匹配規則;例如,在 '(^\d+).*\1'
中,NFA 匹配步驟仍然會知道反向參照只能匹配數字字串。或許令人驚訝的是,此變更不會影響任何相當大的真實世界 regexes 資料集的結果。儘管如此,我不會考慮將其向後移植,因為這是一個明顯的相容性破壞。由我修補,由 Joel Jacobson 審閱。討論:https://postgr.es/m/661609.1614560029@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/4aea704a5bfd4b5894a268499369ccab89940c9c
改善正規表示式反向參照的效能。在某些情況下,當我們對反向參照子表示式是否可以在字串中的特定位置匹配進行基於 NFA 的預先檢查時,我們已經知道被參照的子表示式匹配了哪個子字串。如果是這樣,我們不妨忘記 NFA 並僅比較子字串;這更快,並且給出的是精確的答案而不是近似的答案。一般來說,當我們在 concat 節點的第二個子表示式中進行預先檢查時,此最佳化可能會有所幫助,而捕獲是在第一個子表示式中;然後子字串在第一個子元素的 cdissect() 期間被保存,並且將可用於在 cdissect() 遞迴到第二個子元素時完成的 NFA 檢查。如果樹看起來像這樣,它可以提供很大的幫助: concat / \ capture concat / \ expensive stuff backref 因為我們將能夠避免遞迴地解剖「expensive stuff」,然後發現 backref 對於較低的 concat 節點正在測試的特定中點不滿意。如果 concat 樹是左深的,這沒有幫助,因為捕獲節點不會很快被設定(並且很難在不改變引擎的匹配行為的情況下修復它)。幸運的是,右深 concat 樹是常見的情況。由我修補,由 Joel Jacobson 審閱。討論:https://postgr.es/m/661609.1614560029@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/0c3405cf11a12da1a4278c6833f4d979fe06c866
在更多情況下,抑制不必要的 regex subre 節點。這擴展了 commit cebc1d34e 中所做的變更,教會 parseqatom() 在某些邊緣情況下生成更少或更便宜的 subre 節點。此處感興趣的情況是量化的原子,僅僅因為它具有與之前相反的貪婪性(而捕獲和反向參照本質上是混亂的)。在這種情況下,我們不需要迭代節點,因為我們不關心量詞的子匹配在哪裡;並且我們也可能不需要第二個串聯節點。根據我的測試,這似乎只有邊緣性的實際用途,但我希望在總結這一系列 regex 效能修復之前將其納入。討論:https://postgr.es/m/1340281.1613018383@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/4604f83fdfe030a2f1984159ede5270c1d825310
將 default_transaction_read_only 標記為 GUC_REPORT。這允許客戶端在連接時找出設定,而無需花費查詢往返時間來執行此操作;這在嘗試識別讀/寫伺服器時很有幫助。(還必須查看 in_hot_standby,但這已經是 GUC_REPORT,參見 bf8a662c9。)修改 libpq 以利用這一點將很快到來,但我認為單獨推送伺服器變更會更乾淨。Haribabu Kommi、Greg Nancarrow、Vignesh C;由 Laurenz Albe、Takayuki Tsunakawa、Peter Smith 在不同時間審閱。討論:https://postgr.es/m/CAF3+xM+8-ztOkaV9gHiJ3wfgENTq97QcjXQt+rbFQ6F7oNzt9A@mail.gmail.com https://git.postgresql.org/pg/commitdiff/d16f8c8e416d288bd4734ed5f14076b62ec8d153
擴展 libpq 的 target_session_attrs 參數的功能。除了現有的 "any" 和 "read-write" 選項之外,我們現在還支援 "read-only"、"primary"、"standby" 和 "prefer-standby"。"read-write" 保留其先前的含義「預設情況下交易是讀寫的」,而 "read-only" 則顛倒了這一點。其他三種模式專門測試熱備用狀態,這與之不太相同。(在主要伺服器上設定 default_transaction_read_only 會使它對此邏輯而言是唯讀的,但對備用伺服器則不然。)此外,如果與 v14 或更高版本的伺服器通訊,則無需額外的網路往返來檢測會話的狀態;伺服器提供的 GUC_REPORT 變數就足夠了。當與較舊的伺服器通訊時,會發出 SHOW 或 SELECT 查詢以檢測會話的唯讀性或伺服器的熱備用狀態,視需要而定。Haribabu Kommi、Greg Nancarrow、Vignesh C、Tom Lane;由 Laurenz Albe、Takayuki Tsunakawa、Peter Smith 在不同時間審閱。討論:https://postgr.es/m/CAF3+xM+8-ztOkaV9gHiJ3wfgENTq97QcjXQt+rbFQ6F7oNzt9A@mail.gmail.com https://git.postgresql.org/pg/commitdiff/ee28cacf619f4d9c23af5a80e1171a5adae97381
在 commit ee28cacf6 中消除 perlcritic 警告。根據 buildfarm;此修復來自 Michael Paquier(vignesh C 提出了幾乎相同的)。討論:https://postgr.es/m/YD8IZ9OKfUf9X1eF@paquier.xyz https://git.postgresql.org/pg/commitdiff/d422a2a94b1e7a7bb25da9d5511fffff750c3f21
使 test_target_session_attrs 對連接失敗更具魯棒性。通過 "-c" 而不是 stdin 將所需的命令饋送到 psql,否則 Perl 可能會抱怨它無法將 stdin 推送到已失敗的 psql 進程,如間歇性的 buildfarm 失敗中所見。在它進行時進行一些小的修飾性改進。在 commit ee28cacf6 之前,我們沒有預期連接失敗的測試,因此似乎沒有向後移植的需要。討論:https://postgr.es/m/CALDaNm2mo8YED=M2ZJKGf1U3F3mw6SaQuLXWCK8rZP6sECYcrA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/3769e11a31831fc2f3bd4c4a24b4f45c352fb8fb
新增 trim_array() 函數。此函數自 2008 年以來已納入 SQL 規範中。它實際上是對陣列切片功能的一層薄封裝,但規範要求我們提供它,所以這裡提供它。 Vik Fearing 撰寫,Dian Fay 審閱。討論:https://postgr.es/m/fc92ce17-9655-8ff1-c62a-4dc4c8ccd815@postgresfriends.org https://git.postgresql.org/pg/commitdiff/0a687c8f103d217ff1ca8c34a644b380d89bb0ad
移除 contrib 類型中已棄用的包含運算子。自 PG 8.2 以來,@ 和 ~ 已被棄用,作為包含運算子 @> 和 <@ 的別名。現在似乎已經過了足夠長的時間來實際移除它們,所以就這麼做。這完成了 commit 2f70fdb06 中開始的專案。請注意,在核心類型中,與首選運算子名稱的關係與這些 contrib 模組中的關係相反。由此產生的混淆是導致棄用的主要原因。 Justin Pryzby 撰寫。討論:https://postgr.es/m/20201027032511.GF9241@telsasoft.com https://git.postgresql.org/pg/commitdiff/112d411fbeb56afd18c117e20b524a86afc9aba5
文件:移除 BRIN 策略編號表中過時的條目。參見 commit 591d282e8。 Justin Pryzby 指出。討論:https://postgr.es/m/20201027032511.GF9241@telsasoft.com https://git.postgresql.org/pg/commitdiff/0ce4cd04da558178b0186057b721c50a00b7a945
為 cube 資料類型新增二進位 I/O 功能。我們可以調整尚未發布的 cube--1.4--1.5.sql 升級,而不是建立一個全新的版本。 KaiGai Kohei 撰寫。討論:https://postgr.es/m/CAOP8fzZO4y60QPTK=RGDXeVeVHV9tLHKOsh7voUOoUouVCPV8A@mail.gmail.com https://git.postgresql.org/pg/commitdiff/1265a9c8f871cfa5aea4d607b1ab72b45b96dbb7
Michaël Paquier 推送
文件:提及信號上的 archive_command 失敗處理。該行為與 restore_command 類似,restore_command 已經在還原部分的文件中描述,但歸檔部分沒有。 作者:Benoit Lobréau 審閱人:Julien Rouhaud 討論:https://postgr.es/m/CAPE8EZ7akCzc1hWohA4AcbmKtHh9rcWAB5MStOeZD2+9jC+hLQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/8c1b6a186d420de863d1334c8917dcd047a7845a
文件:改進資料校驗和的描述。這部分地還原了錯誤合併的 bcf2667,並改進了之前已有的文件的措辭。根據與 Justin Pryzby 的討論。討論:https://postgr.es/m/20210301004647.GF20769@telsasoft.com https://git.postgresql.org/pg/commitdiff/bd1b8d0ef2eb5f2a8765fbb3b74e0262c9983942
簡化 tablecmds.c 中切換 pg_class.relrowsecurity 的程式碼。相同的程式碼模式重複了兩次,以使用 ALTER TABLE 命令啟用或停用 ROW LEVEL SECURITY。這使程式碼稍微乾淨一些。作者:Justin Pryzby 審閱人:Zhihong Yu 討論:https://postgr.es/m/20210228211854.GC20769@telsasoft.com https://git.postgresql.org/pg/commitdiff/fabde52fab976ff782d77c80b8e2614f94f9dce1
修復 reindexdb 的 TAP 測試中重複的測試案例。 REINDEX (VERBOSE) 的相同測試執行了兩次,但很明顯第二個測試應該使用 --concurrently。 問題由 5dc92b8 引入,看起來像是複製貼上的錯誤。 審閱人:Mark Dilger 討論:https://postgr.es/m/A7AE97EA-F4B0-4CAB-8FFF-3FECD31F9D63@enterprisedb.com 向後移植:12 https://git.postgresql.org/pg/commitdiff/c5530d8474a482d32c0d9bb099707d9a8e117f96
為 reindexdb 新增 --tablespace 選項。此選項為 reindexdb 提供 REINDEX (TABLESPACE),將呼叫者提供的表空間值應用於產生的所有 REINDEX 查詢。 同時,此 commit 為 REINDEX TABLESPACE 新增了一些測試,包括有和沒有 CONCURRENTLY 的情況,當在 toast 索引和表上執行時。 不允許此類操作,並且 toast 關係名稱不夠穩定,無法成為主迴歸測試套件的一部分(即使使用具有 TRY/CATCH 邏輯的 PL 函數,因為無法測試 CONCURRENTLY)。 作者:Michael Paquier 審閱人:Mark Dilger, Daniel Gustafsson 討論:https://postgr.es/m/YDiaDMnzLICqeukl@paquier.xyz https://git.postgresql.org/pg/commitdiff/57e6db706e81fd2609fa385677e6ae72471822fe
在 MSVC 腳本中新增對 PROVE_TESTS 和 PROVE_FLAGS 的支援。 這些可以在 buildenv.pl 或 Windows 終端中的 "set" 命令中設定。 MSVC 腳本 vcregress.pl 解析環境中可用的值以建立產生的 prove 命令,並且 PROVE_TESTS 的解析能夠以與其他平台相同的方式處理名稱模式。 如果未指定這些環境值,vcregress.pl 將退回到先前的預設值,prove 命令沒有額外的標誌,並且所有測試都在 t/ 中執行。 作者:Michael Paquier 審閱人:Juan José Santamaría Flecha, Julien Rouhaud 討論:https://postgr.es/m/YD9GigwHoL6lFY2y@paquier.xyz https://git.postgresql.org/pg/commitdiff/5bca69a76b3046a85c60c48271c1831fd5affa51
文件:新增指向進度報告文件的反向連結。 以前,唯一提到進度報告的地方是在專用於其目錄的監控部分。 這透過從支援進度報告的命令的頁面新增到其相關目錄視圖的連結,使進度報告更容易被發現。 作者:Matthias van de Meent 審閱人:Justin Pryzby, Bharath Rupireddy, Josef Šimánek, Tomas Vondra 討論:https://postgr.es/m/CAEze2WiOcgdH4aQA8NtZq-4dgvnJzp8PohdeKchPkhMY-jWZXA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/8a8f4d8ede288c2a29105f4708e22ce7f3526149
pgbench:簡化一些 port、host、user 和 dbname 的分配。 在同時設定 PGPORT 和 PGUSER 的環境中使用 pgbench 會導致由於 412893b 中的疏忽而產生具有不正確資料庫名稱的偵錯日誌。 在沒有各自的環境變數的情況下,不使用選項開關指定使用者、port 和/或資料庫會產生一個具有空字串的日誌條目,這相當於無用。 此 commit 透過簡化抓取連線資訊的邏輯,移除一組模擬 libpq 已經執行的 getenv() 呼叫來修復這組問題。 錯誤的偵錯日誌現在直接使用來自 libpq 連線的資訊,並且它是在完成與後端的連線後產生的,而不是之前(如果發生故障,libpq 會抱怨有關連線嘗試的更多資訊,因此日誌在之前並不是真正有用)。 作者:Kota Miyake 審閱人:Fujii Masao, Michael Paquier 討論:https://postgr.es/m/026b3ae6fc339a18394d053c32a4463d@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/f1516ad7b3a9645a316846fa7b2229163bc55907
Álvaro Herrera 推送
Peter Geoghegan 推送
修正 nbtree 頁面刪除錯誤訊息。調整了一些「不該發生」的錯誤訊息,這些訊息假設頁面刪除的目標頁面必須是半毀損頁面。在內部目標頁面的情況下,這個假設是錯誤的。簡單地將這些頁面稱為目標頁面即可。內部頁面永遠不會被標記為半毀損。對於正在刪除的每個子樹,只有一個半毀損頁面。半毀損頁面也是目標子樹的葉節點層級頁面。自 commit efada2b8 以來,情況一直是如此,該 commit 完全修改了 nbtree 頁面刪除。https://git.postgresql.org/pg/commitdiff/3d8d5787a358156edaa7782f0c88e231af974a01
nbtree 頁面刪除:新增 leaftopparent 斷言。新增說明文件斷言。這使得更容易追蹤我們如何在目標子樹的半毀損/葉節點層級頁面中維護頂層父連結。https://git.postgresql.org/pg/commitdiff/5b2f2af3d9d57626b9052a05337e32ad1399093d
Peter Eisentraut 推送
對 GUC 描述進行了一些文案編輯。https://git.postgresql.org/pg/commitdiff/e527a99055154bb7fe6ed67f0417a67cf11fa056
pg_upgrade:檢查目標叢集二進位檔案的版本。這擴展了 pg_upgrade 中的二進位驗證,增加了每個二進位檔案的版本檢查,以確保目標叢集安裝僅包含來自目標版本的二進位檔案。為了減少重複,validate_exec 從 port.h 匯出,並刪除 pg_upgrade 中的本地副本。作者:Daniel Gustafsson daniel@yesql.se 討論:https://postgres.tw/message-id/flat/9328.1552952117@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/f06b1c598254f8adb2b7f51d6a7685618a7fb121
pg_upgrade:修正版本檢查中的疏忽。f06b1c598254f8adb2b7f51d6a7685618a7fb121 中的錯誤:我們應該只檢查目標安裝中二進位檔案的版本。來源安裝當然可以是不同的版本。Reviewed-by: Daniel Gustafsson daniel@yesql.se 討論:https://postgres.tw/message-id/flat/E1lHNKN-0005IC-V6%40gemulon.postgresql.org https://git.postgresql.org/pg/commitdiff/040af779382e8e4797242c49b93a5a8f9b79c370
新增 bit_xor 聚合函數。這可以用作無序集合的校驗和。bit_and 和 bit_or 已經存在。作者:Alexey Bashtanov bashtanov@imap.cc Reviewed-by: Ibrar Ahmed ibrar.ahmad@gmail.com 討論:https://postgres.tw/message-id/flat/9d4582ae-ecfc-3a13-2238-6ab5a37c1f41@imap.cc https://git.postgresql.org/pg/commitdiff/f9a0392e1cf36179c984f655a6589734b8dd7468
Heikki Linnakangas 推送
移除伺服器和 libpq 對舊版 FE/BE 協定版本 2 的支援。協定版本 3 在 PostgreSQL 7.4 中引入。應該沒有太多用戶端或伺服器沒有版本 3 的支援。但是,為了禮貌起見,我保留了足夠的舊協定支援,以便我們仍然可以用 v2 格式傳送「不支援的協定版本」錯誤,以便舊用戶端可以正確顯示訊息。同樣地,libpq 在建立連線時仍然理解 v2 ErrorResponse 訊息。現在這樣做的動力是我正在開發一個 COPY FROM 的修補程式,始終預先提取一些資料。使用舊協定無法安全地做到這一點,因為它需要一次解析一個位元組的輸入以檢測複製結束標記。Reviewed-by: Tom Lane, Alvaro Herrera, John Naylor 討論:https://postgres.tw/message-id/9ec25819-0a8a-d51a-17dc-4150bb3cca3b%40iki.fi https://git.postgresql.org/pg/commitdiff/3174d69fb96a66173224e60ec7053b988d5ed4d9
避免在 FE 協定版本 2 中收到的錯誤中出現額外的換行符。與註釋所說的相反,自伺服器版本 7.2 以來,postmaster 實際上以換行符結束其所有訊息。如果錯誤訊息已經有換行符,請保持整潔並且不要新增額外的換行符。討論:https://postgres.tw/message-id/CAFBsxsEdgMXc%2BtGfEy9Y41i%3D5pMMjKeH8t8vSAypR3ZnAoQnHg%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/85d94c575302644e7ddb4392c3bda572f981ec34
Fujii Masao 推送
Andrew Dunstan 推送
Magnus Hagander 推送
改進有關可更新視觀表的文檔。在深入細節之前先介紹選項,並新增一個指向 CREATE TRIGGER 文檔的連結。作者:David Johnston Reviewed-By: Anastasia Lubennikova 討論:https://postgr.es/m/CAKFQuwYLLRhheo0_Y4Jp=vJ_YDsz1KoRuTpX1A_bUxmHTmLe-A@mail.gmail.com https://git.postgresql.org/pg/commitdiff/e045565dae4b2368ba812d60ef0fb7f927fe2646
澄清 CREATEROLE 角色被視為管理員。作者:Michael Banck Reviewed-By: Robert Treat 討論:https://postgr.es/m/2160a5071a7bb5339055b04a8cad81a822be9d8d.camel@credativ.de https://git.postgresql.org/pg/commitdiff/30b26dfac7db2fc76dafaa8a6c459871bfcd100e
Pavel Stěhule 提交了 schema variables 修補程式的另一個版本。
Maxim Orlov 提交了一個修補程式,用於修正在 libpq 連接字串中 TLS 和多個主機之間的不協調。
Thomas Munro 提交了另外兩個版本的修補程式,用於為 walreceiver 狀態新增條件變數,另一個用於恢復暫停/恢復,並減少在恢復中輪詢 postmaster 的頻率。
Ajin Cherian 和 Amit Kapila 交換了修補程式,以新增一個選項,用於通過 pg_create_logical_replication_slot 啟用 two_phase commits。
Michael Banck 提交了一個修補程式,以向 pg_dump/pg_dumpall 新增一個 --create-only 選項。
Michaël Paquier 提交了修補程式的另一個版本,以澄清 archiver 中信號處理的文檔。
Etsuro Fujita 提交了修補程式的另一個版本,以在 postgres_fdw 節點上實現異步附加。
Peter Eisentraut 提交了修補程式的另一個版本,以處理構建中的 macOS SIP。
Laurenz Albe 和 Amit Langote 交換了修補程式,以允許在分割表上設定 parallel_workers。
Joel Jacobson 提交了 regexp_positions() 的三個版本修補程式,該修補程式返回每個匹配項的開始和結束位置。
Thomas Munro 提交了另外兩個版本的修補程式,以提供一個新的可選 GUC,可用於檢查用戶端連線是否在運行非常長的查詢時定期斷開。
Paul Förster 提交了修補程式的另一個版本,以在 psql --help 的輸出中提及 URI 和服務。
Peter Smith 和 Ajin Cherian 交換了修補程式,以實現兩階段事務的邏輯解碼。
Greg Nancarrow 和 Amit Kapila 交換了修補程式,以啟用 "INSERT INTO ... SELECT ..." 的平行 SELECT,新增一個新的布林值 GUC enable_parallel_dml 和一個類似的表選項 parallel_dml_enabled。
Dian M Fay 提交了兩個版本的修補程式,以在 binary OpExpr 的另一端也是文本時,抑制 postgres_fdw 中文本常量的顯式轉換。
Dilip Kumar 提交了修補程式的另外三個版本,以新增表的壓縮方法選項。
Julien Rouhaud 提交了修補程式的另一個版本,以將查詢混淆從 pg_stat_statements 移至核心,在 pg_stat_activity 和 log_line_prefix 中公開 queryid,並在 EXPLAIN ... VERBOSE 中公開查詢標識符。
Bruce Momjian 送來了一個修補程式,用來修正一些 GiST 程式碼的註解。
Vik Fearing 送來了另一個修訂版本的修補程式,用來實作 GROUP BY DISTINCT,這可以省略重複的 GROUPING SET。
Mark Dilger 送來了另一個修訂版本的修補程式,用來新增一個 contrib 擴充套件,pg_amcheck。
Pavel Borisov 送來了另一個修訂版本的修補程式,用來讓 amcheck 檢查 btree 索引的 UNIQUE 限制。
Jacob Champion 送來了另一個修訂版本的修補程式,用來新增一個 API 到 table AM,以接受欄位投影列表。
Joel Jacobson 送來了兩個修訂版本的修補程式,用來支援具有邊界資訊的空範圍。
Tomáš Vondra 送來了三個修訂版本的修補程式,用來實作 BRIN 多範圍索引。
Peter Eisentraut 送來了另一個修訂版本的修補程式,用來實作 SQL 標準的函數主體。
Thomas Munro 送來了兩個修訂版本的修補程式,用來實作平行完整雜湊聯結。
Magnus Hagander 送來了五個修訂版本的修補程式,用來新增 PROXY 協定支援。
Vigneshwaran C 送來了一個修補程式,用來修正在 crake 中的 Buildfarm 失敗,方法是將 Perl 程式碼中的宣告與賦值分離。
Michaël Paquier 送來了另一個修訂版本的修補程式,用來在檢查是否需要 SSL 之前,先啟用 libcrypto 回呼。
Daniel Gustafsson 送來了另一個修訂版本的修補程式,用來支援 NSS 作為 libpq TLS 後端。
Gilles Darold 送來了一個修補程式,用來實作 regexp_count、regexp_instr、regexp_substr 和 regexp_replace。
David Rowley 送來了另一個修訂版本的修補程式,用來減少在 Windows 上建置 contrib 模組的特殊案例數量。
Amit Langote 送來了另一個修訂版本的修補程式,用來讓 UPDATE 和 DELETE 在繼承樹上更好地擴展。
John Naylor 送來了一個修補程式,用來審查當前 popcount 實作的一些替代方案。
Mark Rofail 送來了另一個修訂版本的修補程式,用來實作外鍵陣列。
Pavel Stěhule 送來了三個修訂版本的修補程式,用來使 psql 能夠為 \watch 使用分頁器。
Tom Lane 送來了另一個修訂版本的修補程式,用來移除協定版本 2 中對 COPY FROM STDIN 的支援。
Mark Dilger 送來了兩個修訂版本的修補程式,用來新增一個 pg_amcheck contrib 應用程式。
Soumyadeep Chakraborty 和 Kyotaro HORIGUCHI 交換了修補程式,以防止檢查點寫入器寫入較舊的時間軸。
Amit Kapila 送來了另一個修訂版本的修補程式,用來追蹤用於回滾的複製來源進度。
Masahiro Ikeda 和 Fujii Masao 交換了修補程式,用來將 WAL 寫入/fsync 統計資訊新增到 pg_stat_wal。
Justin Pryzby 和 Takayuki Tsunakawa 交換了修補程式,用來加速在外來分割區表上的 COPY FROM。
Álvaro Herrera 和 Justin Pryzby 交換了修補程式,用來新增對 libpq 的批次/管道支援。
Daniel Gustafsson 送來了三個修訂版本的修補程式,用來禁止 SSL 壓縮。
Andrey V. Lepikhov 和 Tom Lane 交換了修補程式,用來移除 64K rangetable 限制。
Robins Tharakan 送來了一個修補程式,用來修復 pg_upgrade,以處理大量的大型物件。
Jacob Champion 送來了一個修補程式,用來重新設計 sslfiles Makefile 目標。
Kyotaro HORIGUCHI 送來了另一個修訂版本的修補程式,用來將回呼呼叫從 ReadPageInternal 移至 XLogReadRecord,將頁面讀取器移出 XLogReadRecord,移除全域變數 readOff、readLen 和 readSegNo,並允許 xlogreader 使用不同的 xlog 區塊大小。
Andy Fan 送來了一個修補程式,用來調整分割區修剪案例的成本模型。
Kyotaro HORIGUCHI 送來了另一個修訂版本的修補程式,用來使恢復結束錯誤不那麼可怕。
Heikki Linnakangas 送來了另一個修訂版本的修補程式,用來強制在 COPY FROM 解析中進行前瞻。
Daniel Gustafsson 送來了另一個修訂版本的修補程式,用來從 libpq 中移除已棄用的參數 authtype 和 pqtty。
Amul Sul 送來了另一個修訂版本的修補程式,用來使用全域屏障實作 wal 禁止狀態,並在 WAL 寫入的 START_CRIT_SECTION 之前觸發錯誤或斷言。
Thomas Munro 送來了一個修補程式,用來使 relfile 墓碑檔案根據 WAL 等級進行條件判斷。
Amit Langote 送來了另一個修訂版本的修補程式,用來對分割區修剪步驟產生程式碼進行一些外觀上的改進。
Thomas Munro 送來了另一個修訂版本的修補程式,用來用條件變數替換緩衝區 I/O 鎖。
Thomas Munro 送來了兩個修訂版本的修補程式,用來新增遺失的 pthread_barrier_t,重構 pgbench 中執行緒可移植性的方式,改進 pgbench 的時間測量程式碼,並同步其用戶端執行緒。
Julien Rouhaud 送來了另一個修訂版本的修補程式,用來修復各種共用記憶體估算。
Laurenz Albe 送來了兩個修訂版本的修補程式,用來改進 \e、\ef 和 \ev,如果在沒有儲存的情況下退出編輯器,則保留目前的查詢緩衝區,而不是執行先前的查詢。
Masahiko Sawada 送來了兩個修訂版本的修補程式,用來確保在 TRUNCATE 時重設 pg_stat_xxx_tables.n_mod_since_analyze。
Tomáš Vondra 送來了兩個修訂版本的修補程式,用來使收集關於表達式的擴展統計資訊成為可能。
Hayato Kuroda 送來了另一個修訂版本的修補程式,用來重構 ECPGconnect 並允許在其中進行 IPv6 連線。
Kyotaro HORIGUCHI 送來了另一個修訂版本的修補程式,用來在截斷成功後延遲檢查點完成。
Kota Miyake 送來了一個修補程式,用來從 pgbench 的 \sleep 元命令中移除一些瑕疵。
Hou Zhijie 送來了一個修補程式,用來在 INSERT FK 關係時避免 RI 觸發器中的 CCI。
Ibrar Ahmed 送來了另一個修訂版本的修補程式,用來修復被先前使 GROUP BY 更有效率工作的修補程式所破壞的測試。
Kirk Jamison 送來了另一個修訂版本的修補程式,用來在 libpq 中實作追蹤。
Kyotaro HORIGUCHI 送來了另一個修訂版本的修補程式,用來將統計資訊收集器從使用檔案作為臨時儲存變更為使用共用記憶體。
Andres Freund 送來了另一個修訂版本的修補程式,用來確保在 Windows 上,只有在 stderr 無效時,PostgreSQL 才被認為作為服務執行。
Thomas Munro 送來了另一個修訂版本的修補程式,用來注入故障時序,並修復平行雜湊聯結批次清除中的競爭情況。
Andrew Dunstan 送來了一個修補程式,用來允許從用戶端憑證比對整個 DN。
KaiGai Kohei 和 Tom Lane 交換了修補程式,用來將二進位輸入/輸出處理常式新增到 contrib/cube。
Bharath Rupireddy 送來了兩個修訂版本的修補程式,用來將重新整理實體化檢視表的程式碼重構為一組函數,並實作 EXPLAIN/EXPLAIN ANALYZE REFRESH MATERIALIZED VIEW。
Justin Pryzby 送來了一個啟動程式修補程式,該程式可以將 Typ
轉換為 List*
,並使用它來允許啟動程式中的複合類型。
Kyotaro HORIGUCHI 送來了一個修補程式,通過新增 CHECKPOINT 來修復 011_crash_recovery.pl 中的間歇性失敗。
Joel Jacobson 送來了一個修補程式,用來建立 pg_permissions 檢視表。
Joel Jacobson 送來了一個修補程式,用來建立 pg_ownerships 檢視表。
Justin Pryzby 送來了另一個修訂版本的修補程式,用來使在分割區索引上執行 CLUSTER 成為可能。
Bharath Rupireddy 提交了另一個修訂版本的補丁,以新增另一種 pg_terminate_backend 的變體,允許使用者指定等待時間和逾時時間。
Bharath Rupireddy 提交了另一個修訂版本的補丁,以改進「PID XXXX 不是 PostgreSQL 伺服器程序」的訊息,將不允許傳送訊號的情況分離出來。
Li Japin 提交了另一個修訂版本的補丁,以實作 ALTER SUBSCRIPTION ... ADD/DROP PUBLICATION 功能。
Joe Conway 提交了一個補丁,以修正 "has_column_privilege()" 中的一個錯誤,該錯誤導致 attnums 和不存在的欄位錯誤。
Justin Pryzby 提交了另一個修訂版本的補丁,以實作 ALTER TABLE SET ACCESS METHOD 功能,允許指定分割資料表的表格存取方法可以被分割區繼承,並實作 lsyscache get_rel_relam() 函數,因為表格的 AM (存取方法) 現在起作用。