本週人物:https://postgresql.life/post/stephane_schildknecht/
check_pgactivity 2.5,用於監控 PostgreSQL 的 Nagios 遠端代理程式,已發布。 https://github.com/OPMDG/check_pgactivity/releases/latest
WAL-G 0.2.19,一個用 Go 编写的 PostgreSQL 備份管理系統,已發布。 https://github.com/wal-g/wal-g/releases
http://archives.postgresql.org/pgsql-jobs/2020-12/
Planet PostgreSQL:http://planet.postgresql.org/
PostgreSQL 每週新聞由 David Fetter 於本週為您帶來
請在太平洋標準時間/太平洋夏令時間星期日下午 3:00 前將新聞和公告提交至 david@fetter.org。
== 已應用修補程式 ==
Tom Lane 推送了
修復最近在 psql 的 \connect 命令中引入的損壞。由於我誤讀了現有程式碼的實際作用,提交 85c54287a 等打破了 psql 對於「\c connstring」在 connstring 中提供密碼的情況的行為。在這種情況下,我們應該使用該密碼,但自 85c54287a 以來,我們忽略了它(而是提示輸入密碼)。提交 94929f1cf 在 HEAD 中修復了此問題,但由於我認為它是在清理長期存在的錯誤行為,而不是我剛剛創建的錯誤,因此我沒有反向修補它。因此,反向修補 94929f1cf 中與密碼管理相關的部分。除了修復引入的錯誤之外,這意味著「\c -reuse-previous=on connstring」將允許重複使用現有連線的密碼,如果 connstring 沒有變更使用者/主機/連接埠。之前沒有發生過這種情況,但這似乎是一個錯誤修復,無論如何,我不願讓這個程式碼在各個版本之間存在顯著差異。同時也修正了關於是否覆寫 connstring 的 client_encoding 設定的相同根本原因的錯誤。從 85c54287a 開始,我們總是這樣做;恢復之前的行為,僅當 stdin/stdout 是終端機且沒有 PGCLIENTENCODING 環境設定時才覆寫。(我發現這個定義有點令人驚訝,但現在似乎不是重新審視它的時候。)每個來自 Krzysztof Gradek 的錯誤 #16746。與之前的修補程式一樣,反向修補到所有支援的分支。討論:https://postgr.es/m/16746-44b30e2edf4335d4@postgresql.org https://git.postgresql.org/pg/commitdiff/7e5e1bba034ee02245e8a3833aa1f6ea7253b584
修復聯結關係的 direct_lateral_relids 的錯誤計算。如果 PlaceHolderVar 要在聯結關係中評估,但其值僅在該處需要,而不在更高層級需要,我們忽略了更新 joinrel 的 direct_lateral_relids 以包含 PHV 的來源 rel。這會導致問題,因為 join_is_legal() 隨後將不允許將 joinrel 完全聯結到 PHV 的來源 rel,從而導致「未能建立任何 N 向聯結」的規劃器失敗。每個來自 Andreas Seltenreich 的報告。反向修補到問題最初出現的 9.5。討論:https://postgr.es/m/87blfgqa4t.fsf@aurora.ydns.eu https://git.postgresql.org/pg/commitdiff/b1738ff6ab73203cbbc02d7fb82941dbc061d301
防止在獨立後端中並行建立索引。如果沒有 postmaster,這將無法工作,並且程式碼確實得到了斷言失敗的嘗試。應該檢查 IsUnderPostmaster 來閘控並行性的使用,就像規劃器對於普通並行查詢一樣。提交 40d964ec9 做對了,所以遵循其模型,在我們檢查 max_parallel_maintenance_workers == 0 的相同位置檢查 IsUnderPostmaster。通常,實現並行實用程式操作的新程式碼應該執行相同的操作。由 Yulin Pei 報告和修補,由我進行了外觀上的調整。反向修補到此程式碼進入的 v11。討論:https://postgr.es/m/HK0PR01MB22747D839F77142D7E76A45DF4F50@HK0PR01MB2274.apcprd01.prod.exchangelabs.com https://git.postgresql.org/pg/commitdiff/275b3411d9189b3974687766db06727d64d22979
移除 configure-time 對於 DocBook DTD 的探測。當我們使用 OpenSP 文件工具鏈時,檢查是否已安裝 DocBook 是有價值的,因為很難完全安裝它。如今,只要您安裝了 xmllint 和 xsltproc,您就可以了,因為這些程式會根據需要從網路上獲取 DocBook 檔案。此外,在配置時測試這意味著無論您是否對稍後建立文件感興趣,都可能發生網路存取。這可能很慢(通常是 2 或 3 秒,但據報導有更高的延遲),並且在沒有警告的情況下進行離線機器訪問似乎不太好。因此,刪除 PGAC_CHECK_DOCBOOK 探測,並調整相關文件。沒有該巨集,config/docbook.m4 幾乎沒有剩下什麼,所以我只是刪除了它。反向修補到 v11,我們開始在 PGAC_CHECK_DOCBOOK 探測中使用 xmllint。討論:https://postgr.es/m/E2EE6B76-2D96-408A-B961-CAE47D1A86F0@yesql.se 討論:https://postgr.es/m/A55A7FC9-FA60-47FE-98B5-139CDC57CE6E@gmail.com https://git.postgresql.org/pg/commitdiff/4823c4f6ac770ebd49b63b0ce64ecfe82987af57
修復 IncrementalSortPath 缺少 outfuncs.c 支援的問題。為了除錯的目的,Path 節點應該具有 outfuncs 支援,但在原始的增量排序修補程式中忽略了這一點。同時,清理一些其他小疏忽,以及 create_incremental_sort_path() 的奇怪的回傳類型選擇。(所有現有的呼叫者都只是將其立即轉換為「Path *」,因此他們不在乎,但未來的某些呼叫者可能會在乎。) Zhijie Hou 的 outfuncs.c 修復,其餘的由我修復 討論:https://postgr.es/m/324c4d81d8134117972a5b1f6cdf9560@G08CNEXMBPEKD05.g08.fujitsu.local https://git.postgresql.org/pg/commitdiff/8286223f3d820c39f2d5f14222f7ccde53bdf502
確保 expandTableLikeClause() 重新檢查相同的資料表。如同先前的狀況,expandTableLikeClause() 重新執行了 transformTableLikeClause() 已經執行過的 relation_openrv 呼叫。然而,在某些情況下,這可能無法找到預期中的相同資料表。我們持有 LIKE 來源資料表的鎖定,因此它無法被重新命名或刪除,但另一個資料表可能會在搜尋路徑中出現在它之前。這解釋了在將資料表複製為同名的暫時資料表時,錯誤 #16758 中回報的奇怪行為。在 commit 502898192 引入需要開啟來源資料表兩次之前,這個案例如預期般運作,因此我們應該修正它。為了真正確保我們得到相同的資料表,讓我們透過 OID 而非名稱重新開啟它。這需要將 OID 欄位添加到 struct TableLikeClause 中,這從 ABI 的角度來看有點令人不安,但只要它在結尾,我認為沒有任何嚴重的風險。根據 Marc Boeren 的錯誤 #16758。與之前的 patch 一樣,回溯修補到所有支援的分支。討論:https://postgr.es/m/16758-840e84a6cfab276d@postgresql.org https://git.postgresql.org/pg/commitdiff/f7f83a55bf6051818a0e4387d718867ecfa8561b
修正 planner 中移除無用 RESULT RTEs 時遺漏的步驟。Commit 4be058fe9 忘記在我們移除無用 result RTEs 時,append_rel_list 已經被填充,並且它可能包含需要像主 parse tree 中的 PlaceHolderVars 一樣調整的項目。這可能會導致稍後在 planner 嘗試對未調整的 PHV 執行某些操作時出現「relid N 沒有關係條目」的錯誤。根據 Tom Ellis 的報告。回溯修補到引入此錯誤的 v12 版本。討論:https://postgr.es/m/20201205173056.GF30712@cloudinit-builder https://git.postgresql.org/pg/commitdiff/e98c900993e89ad9278cdfbf0ba5495381a1faac
Fujii Masao 推送
改善關於終止背景工作程序的日誌訊息。先前,使用 die() 作為 SIGTERM 訊號處理器的背景工作程序的關閉會產生日誌訊息「因管理員指令而終止連線」。此日誌訊息令人困惑,因為背景工作程序不是連線。此 commit 將該日誌訊息改善為「因管理員指令而終止背景工作程序 XXX」(XXX 替換為背景工作程序的名稱)。這與另一個背景工作程序的 SIGTERM 訊號處理器 bgworker_die() 報告的日誌訊息相同。作者:Bharath Rupireddy 審閱人:Fujii Masao 討論:https://postgr.es/m/3f292fbb-f155-9a01-7cb2-7ccc9007ab3f@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/98e2d58d66c81d9f1e49813c1acd4d7312089f4a
修正註解中的錯字。作者:Haiying Tang tanghy.fnst@cn.fujitsu.com 討論:https://postgr.es/m/48a0928ac94b497d9c40acf1de394c15@G08CNEXMBPEKD05.g08.fujitsu.local https://git.postgresql.org/pg/commitdiff/6742e14959a3033d946ab3d67f5ce4c99367d332
doc: 為進度報告視窗新增額外的索引條目。在文件中,進度報告視窗的索引條目連結到「檢視統計資料」章節,但先前它們沒有連結到每個視窗的專用章節(例如,「ANALYZE 進度報告」)。從索引中尋找描述每個視窗詳細資訊的章節時,這很不方便。此 commit 新增連結到這些專用章節的額外索引條目。作者:Fujii Masao 審閱人:Shinya Kato 討論:https://postgr.es/m/e49c2768-65d2-188a-5424-270fa29ccc84@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/0a4db67b5ed05c4013ea968930af36853f088404
允許使用 reload 變更 restore_command 參數。此 commit 將 restore_command 從 PGC_POSTMASTER 變更為 PGC_SIGHUP。作為此 commit 的副作用,可以在封存復原期間將 restore_command 重設為空。在此設定中,封存復原會嘗試僅重播 pg_wal 目錄中可用的 WAL 檔案。這與在 restore_command 中指定始終失敗的命令時的行為相同。請注意,即使在應用此 commit 之後,啟動封存復原時,仍然必須指定(非空)restore_command。這是必要的,作為防止使用者忘記指定 restore_command 並啟動封存復原的保護措施。感謝 Peter Eisentraut、Michael Paquier、Andres Freund、Robert Haas 和 Anastasia Lubennikova 參與討論。作者:Sergei Kornilov 審閱人:Kyotaro Horiguchi, Fujii Masao 討論:https://postgr.es/m/2317771549527294@sas2-985f744271ca.qloud-c.yandex.net https://git.postgresql.org/pg/commitdiff/942305a36365433eff3c1937945758f2dbf1662b
追蹤叢集中產生的 WAL 記錄、FPI 和位元組總數。Commit 6b466bf5f2 允許 pg_stat_statements 追蹤每個語句產生的 WAL 記錄、完整頁面映像和位元組數。類似地,此 commit 允許我們追蹤叢集範圍的 WAL 統計資料計數器。新的欄位 wal_records、wal_fpi 和 wal_bytes 會新增到 pg_stat_wal 視窗中,並分別報告叢集中產生的 WAL 記錄、完整頁面映像和位元組的總數。作者:Masahiro Ikeda 審閱人:Amit Kapila、Movead Li、Kyotaro Horiguchi、Fujii Masao 討論:https://postgr.es/m/35ef960128b90bfae3b3fdf60a3a860f@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/01469241b2ff6f17fc0b3f20f01559145ffab29e
Heikki Linnakangas 推送
移除 WITH OIDS 移除後留下的註解。作者:Amit Langote 討論:https://postgres.tw/message-id/CA%2BHiwqGaRoF3XrhPW-Y7P%2BG7bKo84Z_h%3DkQHvMh-80%3Dav3wmOw%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/2bc588798bdd0cdaa8f6cb6713ba8c8cc039fcb1
docs: 將所有 RFC 的引用取消連結。確保第一個提及的 RFC 連結到其 ietf.org 條目,後續的 RFC 標記為縮寫。這使得文件中對 RFC 的引用保持一致。作者:Daniel Gustafsson 討論:https://postgres.tw/message-id/2C697878-4D01-4F06-8312-2FEDE931E973%40yesql.se https://git.postgresql.org/pg/commitdiff/415dc2009683904f337a1837b6b4eb7f31c4dc55
修正在 rewinding standby server 時 pg_rewind 的錯誤。如果目標是 standby server,它的 WAL 並不是在最後一個 checkpoint 記錄結束,而是在 minRecoveryPoint 結束。我們必須掃描從最後一個 common checkpoint 到 minRecoveryPoint 的所有 WAL 以尋找被修改過的頁面,並且在判斷 server 是否需要 rewinding 時也要考慮這部份。Backpatch 到所有支援的版本。作者:Ian Barwick 和我 討論:https://postgres.tw/message-id/CABvVfJU-LDWvoz4-Yow3Ay5LZYTuPD7eSjjE4kGyNZpXC6FrVQ%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/2b4f3130382fe2f8705863e4d38589d4d69cd695
修正新加入測試中的競爭條件 (race condition)。Buildfarm 間歇性地在新測試中失敗。我能夠重現這個問題,方法是在 walreceiver 連接到主節點之前,加入一個 0-10 秒的隨機延遲。存在一個競爭條件,導致 node_3 在完全趕上 node_1 之前就被升級為主節點,從而導致時間軸 (timeline) 分歧。當 node_1 稍後重新配置為 standby,跟隨 node_3 時,它無法趕上:LOG: primary server contains no more WAL on requested timeline 1 LOG: new timeline 2 forked off current database system timeline 1 before current recovery point 0/30000A0 這就是需要使用 pg_rewind 的情況,但在這種情況下,它發生在我們僅僅設置我們想要測試的實際 pg_rewind 情景時,所以更改測試,使其等待直到 node_3 連接並完全趕上之後才升級它,以便獲得一個乾淨、受控的故障轉移。同時重寫一些註釋,以提高清晰度。現有的註釋詳細說明了測試中每個步驟的作用,但沒有很好地概述這些步驟試圖創建的情況。由於我不理解的原因,測試設置在 9.6 和 9.5 版本中必須以稍微不同的方式編寫,而不是在後來的版本中。9.5/9.6 版本需要從備份重新初始化 node 1,而在後來的版本中,它可以被關閉並重新配置為 standby。但即使 9.5 也應該支持 "clean switchover",其中 primary 確保在關閉時將待處理的 WAL 複製到 standby。弄清楚那裡發生了什麼會很好,但這與 pg_rewind 以及這個測試測試的情景無關。討論:https://postgres.tw/message-id/b0a3b95b-82d2-6089-6892-40570f8c5e60%40iki.fi https://git.postgresql.org/pg/commitdiff/36a4ac20fcf31361bd42b63b1b3390b28827a69e
Michaël Paquier 推送了
重構 EXPLAIN、VACUUM 和 ANALYZE 的選項列表的解析規則。這三個命令一直使用相同的語法規則來處理帶括號的選項列表。此舉重構了代碼,使它們使用相同的解析規則,減少了一些代碼。未來的 commit 將使用這些選項解析規則來處理更多實用程式命令,例如 REINDEX 和 CLUSTER。作者:Alexey Kondratov, Justin Pryzby 討論:https://postgr.es/m/8a8f5f73-00d3-55f8-7583-1375ca8f6a91@postgrespro.ru https://git.postgresql.org/pg/commitdiff/873ea9ee692e7829614f913685db540b17998ba6
doc: 移除更多關於與過去版本相容性的注意事項。這是 fa42c2e 中完成的工作的後續,它沒有包括先前約定的所有修復。此處刪除的內容可能會讓讀者感到困惑,因為它們指的是相當舊的伺服器版本。作者:Stephen Frost, Tom Lane, Heikki Linnakangas, Yaroslav Schekin 討論:https://postgr.es/m/CAB8KJ=jYHgnxLLZSNJz7gBTck4TxomngCmGkw3nEMSNF0yL6wA@mail.gmail.com 討論:https://postgr.es/m/1599765595731-0.post@n3.nabble.com https://git.postgresql.org/pg/commitdiff/8a17f44c1e7a9f3d2a9da97dc3eba4184a2a453c
將 SHA2 例程移至用於加密雜湊的新通用 API 層。創建了兩個新的例程來分配雜湊上下文並釋放它,因為這些對於此重構背後的目標變得必要:切換 OpenSSL 的所有加密雜湊實現以使用 EVP(為了 FIPS,也因為 upstream 不建議使用低階加密雜湊函數 20 年)。請注意,自 1.1.0 以來,OpenSSL 隱藏了加密雜湊上下文的內部結構,因此有必要將分配留給 OpenSSL 本身,這解釋了對這兩個新例程的需求。這部分將需要更多的工作來正確追蹤具有資源所有者的雜湊上下文,但此處未引入。儘管如此,此重構使移動成為可能。這通過將雜湊類型直接合併到雜湊上下文資料中,將所有 SHA2 實現的例程數量從 12 個(SHA{224,256,386,512} 及其 init、update 和 final 呼叫)減少到 5 個(create、free、init、update 和 final 呼叫)。新的加密雜湊例程被移動到一個名為 cryptohash.c 的新檔案中,用於 fallback 實現,其中 SHA2 特性成為 src/common/ 的內部部分。OpenSSL 特性是 cryptohash_openssl.c 的一部分。此基礎結構可用於更多雜湊類型,例如 MD5 或 HMAC。使用內部 SHA2 例程的任何代碼路徑都進行了調整,以正確報告錯誤,這是此 commit 的大部分更改。受影響最大的區域是 checksum manifest、libpq 和 SCRAM。請注意,e21cbb4 是第一次嘗試將 SHA2 切換到 EVP,但它缺少 libpq 所需的重構,如這裡所做的那樣。此 patch 已在 Linux 和 Windows 上使用和不使用 OpenSSL 進行測試,並降至 1.0.1,這是 HEAD 上支援的最舊版本。作者:Michael Paquier 審閱者:Daniel Gustafsson 討論:https://postgr.es/m/20200924025314.GE7405@paquier.xyz https://git.postgresql.org/pg/commitdiff/87ae9691d25379785f8c0f81b06a14818cfd8c56
修正 cryptohash_openssl.c 中的編譯警告。這些警告在使用 -O2 時出現。87ae969 中的疏忽。作者:Fujii Masao 討論:https://postgr.es/m/cee3df00-566a-400c-1252-67c3701f918a@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/91624c2ff8809145880383b0fa84be0ee98f55b5
重構 CLUSTER 和 REINDEX 語法以使用 DefElem 作為選項列表。此更改使 CLUSTER 和 REINDEX 允許使用帶括號的語法作為選項,同時將選項列表的語法解析規則與現有的規則統一起來。這是針對 VACUUM、ANALYZE 和 EXPLAIN 在 873ea9e 中完成的工作的後續。這有利於 REINDEX,可以潛在地針對排序規則敏感的索引和 TABLESPACE 進行後端過濾,而 CLUSTER 將從後者中受益。作者:Alexey Kondratov, Justin Pryzby 討論:https://postgr.es/m/8a8f5f73-00d3-55f8-7583-1375ca8f6a91@postgrespro.ru https://git.postgresql.org/pg/commitdiff/b5913f6120792465f4394b93c15c2e2ac0c08376
基於 OpenSSL 的 SHA2 實作變更為使用 EVP 摘要例程。自 2000 年以來,上游 OpenSSL 不建議使用底層雜湊例程,且 pgcrypto 已自 5ff4a67 起切換為 EVP。這利用了 87ae969 中完成的重構,該重構引入了密碼編譯雜湊的分配和釋放例程。自 1.1.0 起,OpenSSL 不再發佈 cryptohash 上下文的內容,強制所有消費者都依賴 OpenSSL 進行所有分配。因此,資源擁有者回調機制獲得了一組新的例程,用於追蹤和釋放在使用 OpenSSL 時的 cryptohash 上下文,從而防止後端出現洩漏的風險。由於 87ae969 的重構,前端不需要任何操作,並且資源擁有者的知識被隔離到 cryptohash_openssl.c 中。請注意,這也修復了在使用 OpenSSL 中的 FIPS 時 SCRAM 身份驗證失敗的問題,但由於關於此問題的投訴很少,並且這會導致 ABI 中斷,因此沒有進行向後移植。作者:Michael Paquier 審閱人:Daniel Gustafsson, Heikki Linnakangas 討論:https://postgr.es/m/20200924025314.GE7405@paquier.xyz 討論:https://postgr.es/m/20180911030250.GA27115@paquier.xyz https://git.postgresql.org/pg/commitdiff/4f48a6fbe2b28d8281dbbfa2d334fa2ed8472734
將 cryptohashes.c 重新命名為 cryptohashfuncs.c。87ae969 在 src/common/ 中創建了兩個新檔案,名為 cryptohash{_openssl}.c,其名稱與現有的後端檔案 cryptohashes.c 重疊,該檔案專用於 SHA2 和 MD5 的 SQL 封裝器。此檔案被重新命名為 cryptohashfuncs.c,以更符合周圍的環境並減少與 src/common/ 的新 cryptohash 介面的混淆。作者:Michael Paquier 審閱人:Daniel Gustafsson 討論:https://postgr.es/m/X8hHhaQgbMbW+aGU@paquier.xyz https://git.postgresql.org/pg/commitdiff/bd94a9c04e04bb3b626e88981a50fcca2bd99d60
Álvaro Herrera 推送
記錄相互等待的併發索引。由於常規的 CREATE INDEX 指令是獨立的,並且沒有邏輯資料依賴關係,因此並不明顯的是,在一個表上併發索引建立所持有的事務將會阻塞在另一個不相關的表上併發索引建立的第二階段,因此記錄此注意事項。將其全部向後移植。在主分支中,提及只有一些索引會受到影響。作者:James Coleman jtc331@gmail.com 審閱人:David Johnston david.g.johnston@gmail.com 討論:https://postgr.es/m/CAAaqYe994=PUrn8CJZ4UEo_S-FfRr_3ogERyhtdgHAb2WG_Ufg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/58ebe967f8a1e34a824d6a0a35728027272041c6
避免使用 NULL 源指標和 count == 0 來呼叫 memcpy()。當對指標呼叫 memcpy() 時,編譯器有權假設該指標不是 null,這可能會導致以潛在的、不良的方式最佳化附近的程式碼。我們仍然希望在有效的情況下進行此類最佳化(gcc 的 -fdelete-null-pointer-checks)。相關:commit 13bba02271dc。向後移植到 pg11,此特定實例出現在此處。回報人:Ranier Vilela ranier.vf@gmail.com 回報人:Zhihong Yu zyu@yugabyte.com 討論:https://postgr.es/m/CAEudQApUndmQkr5fLrCKXQ7+ib44i7S+Kk93pyVThS85PnG3bQ@mail.gmail.com 討論:https://postgr.es/m/CALNJ-vSdhwSM5f4tnNn1cdLHvXMVe_S+V3nR5GwNrmCPNB2VtQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/677f74e5bb8360122ebf2f473d7169ed65ce4dba
Thomas Munro 推送
在提交時釋放已丟棄關係的磁碟空間。當提交一個丟棄關係的事務時,我們之前只截斷第一個區段檔案來釋放磁碟空間(在下一個檢查點之前不會取消連結的檔案)。也截斷編號較高的區段,即使我們在提交時取消連結它們。這會立即釋放磁碟空間,即使其他後端具有打開的檔案描述符,並且可能需要很長時間才能處理共享無效事件並關閉它們。此外,將相同的行為擴展到恢復中的第一個區段。向後移植到所有支援的版本。錯誤:#16663 回報人:Denis Patron denis.patron@previnet.it 審閱人:Pavel Borisov pashkin.elfe@gmail.com 審閱人:Neil Chen carpenter.nail.cz@gmail.com 審閱人:David Zhang david.zhang@highgo.ca 討論:https://postgr.es/m/16663-fe97ccf9932fc800%40postgresql.org https://git.postgresql.org/pg/commitdiff/9f35f943732eaf9121a107f54ea043925e9a5d7b
在適當的情況下使用 truncate(2)。當按名稱截斷檔案時,使用 truncate(2)。Windows 沒有它,所以保留我們之前基於 ftruncate(2) 的編碼作為後備方案。討論:https://postgr.es/m/16663-fe97ccf9932fc800%40postgresql.org https://git.postgresql.org/pg/commitdiff/57faaf376e1961fa48866c6e5d6926463c6671b1
Bruce Momjian 推送
pg_checksums:data_checksum_version 是無符號的,所以使用 %u 而不是 %d。雖然先前的行為沒有產生警告,但我們不妨使用準確的 *printf 規範。向後移植:12 https://git.postgresql.org/pg/commitdiff/888671a8cda5896d36d3ec523e201ab6a11e1855
docs:在命令列摘要中首先列出單字母選項。在幾個地方,長版本選項在一些指令的命令摘要中列在單字母選項之前。這與其他指令不符,也與同一參考頁面稍後的選項順序不符。向後移植:9.5 https://git.postgresql.org/pg/commitdiff/a659e789b743f1a4b977a1ffc7402ab618a9f68c
doc:移除命令選項文字前不必要的空白。向後移植:11 https://git.postgresql.org/pg/commitdiff/3f8971d92e767acf6e3d6e27c4cab7bfd88b71f4
Stephen Frost 推送
Dean Rasheed 推送
Peter Eisentraut 推送
小型的程式碼簡化。strVal() 可以在幾個地方使用,而不是手動編寫相同的東西。https://git.postgresql.org/pg/commitdiff/6114040711affa2b0bcf47fa2791187daf8455fb
移除不必要的文法符號。我們可以改用 name_list,而不是 publication_name_list。我們在其他地方都使用 'name' 或 'name_list' 符號來指稱發佈項目,因此這只會提高一致性。審閱人:https://postgres.tw/message-id/flat/3e3ccddb-41bd-ecd8-29fe-195e34d9886f%40enterprisedb.com 討論:Tom Lane tgl@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/a6964bc1bb0793e20636ccb573cd2a5ad3ef7667
將 elog(LOG) 呼叫轉換為適當的 ereport()。使用者可見的日誌訊息應通過 ereport(),以便進行翻譯。許多剩餘的 elog(LOG) 呼叫實際上是偵錯呼叫。審閱人:Alvaro Herrera alvherre@alvh.no-ip.org 審閱人:Michael Paquier michael@paquier.xyz 審閱人:Noah Misch noah@leadboat.com 討論:https://postgres.tw/message-id/flat/92d6f545-5102-65d8-3c87-489f71ea0a37%40enterprisedb.com https://git.postgresql.org/pg/commitdiff/eb93f3a0b633ad6afb0f37391b87f460c4b0663b
Amit Kapila 推送
== 待處理的修補程式 ==
Tatsuro Yamada 提交了另一個修訂版本的修補程式,以將 \dX(擴充統計資料)新增至 psql。
Andrey V. Lepikhov 提交了另一個修訂版本的修補程式,以移除不必要的自我連接。
David G. Johnston 提交了另一個修訂版本的修補程式,以對 plpgsql 文件進行一些小清理和重述。
Seino Yuki 提交了另一個修訂版本的修補程式,以將一個新欄位 reset-time 新增到 pg_stat_statements_info
。
Justin Pryzby 提交了一個修補程式,以使 \dt+ pg_toast
.* 在 psql 中工作。
Justin Pryzby 提交了另一個修訂版本的修補程式,以使 EXPLAIN 在非文字格式中顯示 JIT 詳細資訊,即使為零也是如此。
Peter Eisentraut 提交了另一個修訂版本的修補程式,以暫停恢復,因為參數設定不足。
Michaël Paquier 提交了另一個修訂版本的修補程式,以修復一個錯誤,該錯誤表現為如果 pg_database tuple 包含 toast 屬性,則 vac_update_datfrozenxid
將引發「錯誤的 tuple 長度」。
Michaël Paquier 提交了另一個修訂版本的修補程式,以移除對長期過時行為的一些參考。
Peter Geoghegan 提交了另一個修訂版本的修補程式,以教導 heapam 支援自下而上的索引刪除,傳遞「邏輯上未更改的索引」提示,並教導 nbtree 使用自下而上的索引刪除。
Bertrand Drouvot 提交了兩個修訂版本的修補程式,以防止函數因刪除包含它們的 schema 而變成孤立的。
Andrey V. Lepikhov 提交了一個修補程式,以修復對外部連接成本的過度高估。
Konstantin Knizhnik 提交了另一個修訂版本的修補程式,以實作 libpq 的自訂壓縮。
Álvaro Herrera 提交了一個修補程式,以改進拼寫為 INDEX CONCURRENTLY 的操作。
Peter Eisentraut 提交了另一個修訂版本的修補程式,以使 pageinspect 將區塊編號參數變更為 bigint,因為這實際上符合 uint32。
Aleksey Kondratov、Michaël Paquier 和 Justin Pryzby 交易了修補程式,以允許 CLUSTER 和 VACUUM FULL 即時變更 tablespace。
Bertrand Drouvot 和 Fujii Masao 交易了修補程式,以記錄備用恢復衝突等待。
Justin Pryzby 提交了另外兩個修訂版本的修補程式,以使 INSERT SELECT 能夠使用 BulkInsertState。
Bharath Rupireddy 提交了另外兩個修訂版本的修補程式,以使 CREATE TABLE AS 能夠使用平行插入。
James Coleman 提交了另一個修訂版本的修補程式,如果 gather merge 路徑沒有充分排序,則會產生錯誤。
James Coleman 提交了另一個修訂版本的修補程式,以確保 generate_useful_gather_paths
不會跳過未排序的子路徑,在 generate_useful_gather_paths
中強制執行 pathkeys 的並行安全性,不允許在主動排序中使用 SRF,移除 volatile expr 目標搜尋,並記錄 prepare_sort_from_pathkeys
中的 find_em_expr_usable_for_sorting_rel
。
Craig Ringer 送出了一個 patch,實作了一個 TAP 測試工具模組 PG_LSN.pm
,用來測試涉及邏輯序列號碼的東西。
Greg Nancarrow 送出了另一個版本的 patch,新增一個可報告的 GUC 參數 in_hot_standby
,並使 transaction_read_only
GUC 參數可報告,同時增強了連線參數 target_session_attrs
以支援新值:read-only/primary/standby/prefer-standby。
Jürgen Purtz 送出了另一個版本的 patch,在教學文件中加入更明確的 JOIN 語法。
Zhihong Yu 送出了另一個版本的 patch,用來檢查定義索引時的 nparts 參數。
Hou Zhejie 送出了一個 patch,將 plan_union_children()
中的 lcons 和 list_delete_first
,替換為 lappend 和 list_delete_last
。
Laurenz Albe 送出了一個 patch,如果在 psql 的 \e 中退出編輯器,則丟棄查詢緩衝區。
Andres Freund 送出了一個 patch,修復了 LLVM 12 造成的 JIT 問題。
Fujii Masao 送出了另一個版本的 patch,將基本統計資訊添加到 pg_stat_wal view
中。