本週人物:https://postgresql.life/post/pavlo_golub/
JDBC 42.2.20 已發布 https://jdbc.postgresql.org/documentation/changelog.html#version_42.2.20
kubgres 1.1 已發布。kubgres 是一個 Kubernetes operator,可以部署配置了複製和故障轉移的 PostgreSQL pod 集群。 https://github.com/reactive-tech/kubegres/releases/tag/v1.1
pspg 4.6.1 已發布。pspg 是一個專為 PostgreSQL 設計的分頁器。 https://github.com/okbob/pspg/releases/tag/4.6.1
pgAdmin4 5.2 已發布。pgAdmin4 是一個用於 PostgreSQL 的基於 Web 和原生 GUI 的控制中心。 https://www.pgadmin.org/docs/pgadmin4/5.2/release_notes_5_2.html
pg_log_statements 0.2 已發布。pg_log_statements 是一個擴展,可以記錄特定伺服器進程的語句。 https://github.com/pierreforstmann/pg_log_statements/releases
https://archives.postgresql.org/pgsql-jobs/2021-04/
Planet PostgreSQL: https://planet.postgresql.org/
本週的 PostgreSQL 每週新聞由 David Fetter 帶給您
請在太平洋標準時間/太平洋夏令時間 (PST8PDT) 週日下午 3:00 前將新聞和公告提交至 david@fetter.org。
Thomas Munro 推送了
Michaël Paquier 推送了
替換 perl 腳本中 seek() 呼叫的魔術常數。 一些測試使用 0 作為魔術常數,而可以使用 SEEK_SET 代替。 這使得程式碼更容易理解,並且與 3c5b068 中所做的更改更加一致。 根據與 Andrew Dunstan 的討論。討論:https://postgr.es/m/YHrc24AgJQ6tQ1q0@paquier.xyz https://git.postgresql.org/pg/commitdiff/c731f9187b5fd7038b04ba60703d3cace1806366
修復註釋和文件中的錯字和語法。 作者:Justin Pryzby 討論:https://postgr.es/m/20210416070310.GG3315@telsasoft.com https://git.postgresql.org/pg/commitdiff/7ef8b52cf079ef3ace4575f7b97c2d6f80463b4f
將 CURRENT_ROLE 添加到 psql 中 GRANT 的 Tab 鍵自動完成角色清單中。 此相容性已在 45b9805 中添加,但 psql 忘記了呼叫。 作者:Wei Wang 審閱人:Aleksander Alekseev 討論:https://postgr.es/m/OS3PR01MB6275935F62E161BCD393D6559E489@OS3PR01MB6275.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/22b2dec31b2ef4dfee299290b16375e9fa6e6932
doc:在 pg_stat_statements 的所需配置中列出 compute_query_id。 即使模組已在 shared_preload_libraries 中列出,不啟用 compute_query_id 也會停用 pg_stat_statements,因此請將其添加到文件中列出的最小配置集中。 作者:Greg Nancarrow 審閱人:Julien Rouhaud、Bharath Rupireddy 討論:https://postgr.es/m/CAJcOf-fXyb2QiDbwftD813UF70w-+BsK-03bFp1GrijXU9GQYQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/64087eb5def7786bd49e60eb5d984ec6e4a872a9
doc:將 parallel_leader_participation 移至其正確的類別。 parallel_leader_participation 在 e5253fd 中引入,它在 guc.c 中被列在 RESOURCES_ASYNCHRONOUS 下,但文件沒有反映這一點,而是將其與其他規劃器相關選項一起列出。 此提交修復了這種不一致,因為該參數旨在作為異步參數。 同時,稍微重新組織了專用於異步參數的部分,將 backend_flush_after 移到最前面,以便更好地按字母順序排列列出的選項。 報告人:Yanliang Lei 作者:Bharath Rupireddy 討論:https://postgr.es/m/16972-42d4b0c15aa1d5f5@postgresql.org https://git.postgresql.org/pg/commitdiff/1599e7b375127cac81b539d2c69d3faf7598509b
修復邏輯複製中訂閱者觸發觸發器的關係洩漏問題。 在觸發應用操作的關係上建立觸發器會在變更提交後導致關係洩漏,因為執行器會遺漏需要事先關閉關係。 此問題是在 1375422c 中完成的重構中引入的,現在需要在 es_opened_result_relations 中追蹤關係,以確保它們已關閉。 我們已經討論過使用 ExecInitResultRelation() 結合 ExecCloseResultRelations() 來追蹤訂閱者中應用操作需要的關係,這將大大簡化索引的開啟和關閉,但這需要對工作程式碼進行更大的重構和重新組織,特別是對於元組路由部分。 這在功能凍結後並不受歡迎。 因此,現在,採用與 TRUNCATE 相同的解決方案,即使用開啟的關係填充 es_opened_result_relations,以確保 ExecGetTriggerResultRel() 找到它們並關閉它們。 對程式碼進行了輕微的重構,因此每個 DML 程式碼路徑不會為關係註冊三次,使整個過程更容易理解。 報告人:Tang Haiying, Shi Yu, Hou Zhijie 作者:Amit Langote, Masahiko Sawada, Hou Zhijie 審閱人:Amit Kapila, Michael Paquier 討論:https://postgr.es/m/OS0PR01MB611383FA0FE92EB9DE21946AFB769@OS0PR01MB6113.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/f3b141c482552a57866c72919007d6481cd59ee3
在一些可翻譯的字串中刪除 [U]INT64_FORMAT 的使用。 %lld 與 (long long) 或 %llu 與 (unsigned long long) 更適合。 這類似於
作者:Kyotaro Horiguchi 討論:https://postgr.es/m/20210421.200000.1462448394029407895.horikyota.ntt@gmail.com https://git.postgresql.org/pg/commitdiff/62aa2bb293148c13851484e63db4835e3c53147f
修復 fmgr.c 中的一些註釋。 2a0faed 中的疏忽。 作者:Hou Zhijie 討論:https://postgr.es/m/OS0PR01MB5716405E2464D85E6DB6DC0794469@OS0PR01MB5716.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/45c0c5f70eb5e22d31be8bb9a8b4d9c66a3e9b37
在 xlogreader.c 中添加一些被遺忘的 LSN_FORMAT_ARGS()。 6f6f284 引入了一個特定的巨集,使 LSN 的 printf() 更容易。 這處理了看起來像沒有獲得呼叫的剩餘程式碼路徑。 作者:Michael Paquier 審閱人:Kyotaro Horiguchi, Tom Lane 討論:https://postgr.es/m/YIJS9x6K8ruizN7j@paquier.xyz https://git.postgresql.org/pg/commitdiff/4aba61b87026b43fb37fc8e9ec5d9ae208e07b6b
文件:移除某些標籤中多餘的空白字元。作者:Justin Pryzby 討論:https://postgr.es/m/20210423184338.GL7256@telsasoft.com https://git.postgresql.org/pg/commitdiff/0d0049c58b4970183a102fc1f7dc1e9bef2a7149
修正 execMain.c 中的一些註解。1375422 已經重構了執行器程式碼的這部分,並且一些註解已過時。作者:Yukun Wang 審閱人:Amul Sul 討論:https://postgr.es/m/OS0PR01MB60033394FCAEF79B98F078F5B4459@OS0PR01MB6003.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/9b5558e7ad4706bbd53947e5b4d7c06e150390a5
Amit Kapila 推送
Peter Eisentraut 推送
使用正確的格式佔位符表示 pids。應該是有符號的,而不是無符號的。https://git.postgresql.org/pg/commitdiff/640b91c3ed24002b34c7226fb51ef9176fb72713
不要在訊息字串中使用 INT64_FORMAT。改為使用 %lld 並轉換為 long long int。https://git.postgresql.org/pg/commitdiff/3286065651477c2060910dfb42b3cedbd79a7980
修正錯字。https://git.postgresql.org/pg/commitdiff/f0ec598b4323d8b29df5c67f2cd0000547a507ed
文件:改善連字的一致性。https://git.postgresql.org/pg/commitdiff/544b28088f9d41750ccf193812da62bdfe4bd98a
使用正確的格式佔位符表示時間線 ID。應該是 %u 而不是 %d。https://git.postgresql.org/pg/commitdiff/39d0928a0e88426ee64189898565c40d4af9ad96
在 information schema 使用檢視中新增 DISTINCT。由於 pg_depend 可能包含重複的條目,因此我們需要在 information schema 檢視中使用 DISTINCT 來消除那些建立在 pg_depend 上的條目。 一些較舊的檢視已經正確地執行了該操作,但是一些較新的檢視沒有。(在這些檢視中的某些檢視中,由於實作方式在記錄時會對相依性進行去重,因此可能無法重現此問題,但是在所有情況下都保持一致似乎更好。)https://git.postgresql.org/pg/commitdiff/d84ffffe582b8e036a14c6bc2378df29167f3a00
更新 config.guess 和 config.sub。https://git.postgresql.org/pg/commitdiff/26ac261ee4033710cad44f7924d53753129b60c7
修正文件檔案中的一些尾隨空白字元。https://git.postgresql.org/pg/commitdiff/197d33ccbe888fc84ae4e49bb241e88ea3c81f15
修正不正確的格式佔位符。https://git.postgresql.org/pg/commitdiff/7776a23a4bdeb7215e4f8ddea5989cb143becc12
文件:修正錯字。作者:Justin Pryzby pryzby@telsasoft.com https://git.postgresql.org/pg/commitdiff/9bd563aa9f0694994a6640946a7ee3dc0431d507
pg_amcheck:使用日誌記錄函數。這已經基本完成,但是一些錯誤訊息是以冗長的方式列印的。https://git.postgresql.org/pg/commitdiff/add5fad78aac8da96aeeb730155d35b16ff9b55a
使用正確的格式佔位符表示 WSAGetLastError()。一些程式碼認為這是無符號的,但是它是有符號的 int。https://git.postgresql.org/pg/commitdiff/9486844f301e265a3ad11b612decaba2462c3c15
從錯誤訊息中提取系統調用名稱。改為透過格式佔位符放入它們。這減少了不同可翻譯訊息的數量,並且也減少了翻譯期間出現錯字的機會。我們已經在許多情況下針對系統調用參數執行了此操作,因此這只是將同一件事更進一步。https://postgres.tw/message-id/flat/92d6f545-5102-65d8-3c87-489f71ea0a37%40enterprisedb.com https://git.postgresql.org/pg/commitdiff/82c3cd974131d7fa1cfcd07cebfb04fffe26ee35
Peter Geoghegan 推送
在 VACUUM 中記錄 LP_DEAD 會計問題。記錄 VACUUM 的軟假設,即在剪除期間遇到的任何 LP_DEAD 項目將在 VACUUM 完成之前變成 LP_UNUSED 項目。這對於 VACUUM 用於產生其關於該表給統計資訊收集器的最終報告的會計至關重要。它也影響 VACUUM 如何確定哪些堆積頁面是可截斷的。在這兩種情況下,VACUUM 都關心該頁面在不久的將來可能包含的內容,而不是該頁面當前包含的內容。這種情況造成了一種錯誤的印象,即 VACUUM 的死元組會計與 ANALYZE 期間使用的類似會計存在顯著差異。至少在軟假設完全奏效的情況下,不存在實質性差異。現在這要清晰得多。還記錄了 VACUUM 的死元組會計無法完全奏效的情況。 VACUUM 可能會留下大量的 LP_DEAD 項目,並且不會在 VACUUM 的統計資訊收集器報告中記錄為剩餘的死元組。這種行為可以追溯到 commit a96c41fe,該 commit 教導 VACUUM 在用戶請求時無需執行索引和堆積清理。 commit 1e55e7d1 最近新增到 VACUUM 的故障保護機制採用了相同的死元組會計方法。報告人:Masahiko Sawada sawada.mshk@gmail.com 討論:https://postgr.es/m/CAH2-Wz=Jmtu18PrsYq3EvvZJGOmZqSO2u3bvKpx9xJa5uhNp=Q@mail.gmail.com https://git.postgresql.org/pg/commitdiff/7136bf34f28892362144ae2e350714836a5c0c0c
amcheck:MAXALIGN() nbtree 特殊區域偏移量。這不是絕對必要的,但從理論上講,如果將來 nbtree 特殊區域的寬度發生變化,這可能會很重要——即使進行了填充,其總大小也可能不是 MAXALIGN() 量子的偶數倍。 PageInit() MAXALIGN() 所有特殊區域偏移量,但是 amcheck 使用該偏移量對行指針執行初始基本驗證,因此我們不依賴於頁面標頭中的偏移量。 這樣做的真正原因是為新增其他索引 AM 的 amcheck 覆蓋率的新程式碼樹立一個好榜樣。報告人:Bharath Rupireddy bharath.rupireddyforpostgres@gmail.com 討論:https://postgr.es/m/CALj2ACUMqTR9nErh99FbOBmzCXE9=gXNqhBiwYOhejJJS1LXqQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/bb3ecc8c961896ecb2ad3d5ba705c2877b933945
Magnus Hagander 推送
修正註解中的錯字。作者:Julien Rouhaud。回溯移植:11。討論:https://postgr.es/m/20210420121659.odjueyd4rpilorn5@nol https://git.postgresql.org/pg/commitdiff/8b4b5669cde2b17bd6b5d68f584d97078f3296ac
提及 toplevel 是 pg_stat_statements 金鑰的一部分。同時,也記錄當 pg_stat_statements.track 設定為 top 時,toplevel 總是 true。作者:Julien Rouhaud。回報者:Fujii Masao。討論:https://postgr.es/m/a878d5ea-64a7-485e-5d2f-177618ebc52d@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/7531fcb1fcf5b3ea2f49959a3f095c083e3fc4c4
Andrew Dunstan 推送了
避免 PostgresNode 中不幸的 IPC::Run 路徑快取。Commit b34ca595ab 針對安裝感知的 PostgresNode 實例提供了。然而,事實證明 IPC::Run 會透過快取二進位檔的路徑來對抗這一點,即使路徑已變更,也不會再次查詢該路徑。如果存在已安裝的路徑,我們透過使用已安裝的路徑呼叫 Postgres 二進位檔,而不是僅僅使用在環境路徑中尋找的裸名稱來解決這個問題。對於沒有安裝路徑的常見情況,我們繼續使用裸命令名稱。診斷和解決方案來自 Mark Dilger。討論:https://postgr.es/m/E8F512F8-B4D6-4514-BA8D-2E671439DA92@enterprisedb.com https://git.postgresql.org/pg/commitdiff/95c3a1956ec9eac686c1b69b033dd79211b72343
在 Windows 上的 PostgresNode 中,僅測試非 127.0.0.1 位址。已發現這會在強制使用 tcp 時導致掛起。Alexey Kodratov。討論:https://postgr.es/m/82e271a9a11928337fcb5b5e57b423c0@postgrespro.ru 回溯移植到所有活動分支 https://git.postgresql.org/pg/commitdiff/d064afc7204b52cb78a83fea0e686693ce5ba00c
修復 commit d064afc720 中的愚蠢 perl 錯誤。https://git.postgresql.org/pg/commitdiff/e014d25deade08df082d2b37de45adb0c984f563
使 PostgresNode 具有版本感知能力。建立了一個新的 PostgresVersion 物件類型,並在 PostgresNode 中使用 `pg_config --version` 的輸出,並將結果儲存在 PostgresNode 物件中。此物件可以與其他 PostgresVersion 物件或數字或字串進行比較。目前認為 PostgresNode 與低至版本 12 的版本相容,因此如果將 PostgresNode 與較早版本一起使用,它將發出警告。尚未嘗試處理舊版本中的不相容問題 - 這仍有待在後續的開發週期中進行。基於 Mark Dilger 和 Jehan-Guillaume de Rorthais 的程式碼。討論:https://postgr.es/m/a80421c0-3d7e-def1-bcfe-24777f15e344@dunslane.net https://git.postgresql.org/pg/commitdiff/4c4eaf3d19201c5e2d9efebc590903dfaba0d3e5
使 PostgresVersion 程式碼更加強健和簡單。根據 Alvaro Herrera 的抱怨。https://git.postgresql.org/pg/commitdiff/502dc6df8f6eeba06812ce09488efc7e684f5ec9
教導 PostgresVersion 所有標記非發佈程式碼的方法。除了 'devel' version_stamp.pl 提供 'alphaN' 'betaN' 和 'rcN' 之外,還教導 PostgresVersion 關於這些。另外,儲存版本字串,而不是在字串化期間嘗試重新建構它。討論:https://postgr.es/m/YIHlw5nSgAHs4dK1@paquier.xyz https://git.postgresql.org/pg/commitdiff/aa271209f6d995488fc5cba9731415f974823990
為 pg_amcheck 提供 --install-missing 選項。如果資料庫中不存在 amcheck,這將會安裝它。擴充功能的預設 schema 是 pg_catalog,但可以透過為該選項提供值來覆蓋。Mark Dilger,經過我稍微的編輯。(相當不同)討論:https://postgr.es/m/bdc0f7c2-09e3-ee57-8471-569dfb509234@dunslane.net https://git.postgresql.org/pg/commitdiff/b859d94c638968ccbb517ac7e151bdd94ed7c16a
Tom Lane 推送了
修正在某些情況下依聚合排序時的規劃器故障。增量排序 patch 引入的一個疏忽導致在排序鍵涉及聚合或視窗函數的某些情況下出現「could not find pathkey item to sort」錯誤。這裡的基本問題是 find_em_expr_usable_for_sorting_rel 沒有正確地模擬 prepare_sort_from_pathkeys 後續將會做什麼。與其希望我們可以保持這些函數同步,不如重構它們,以便它們實際共享用於識別合適排序表達式的程式碼。透過這種重構,tlist.c 的 tlist_member_ignore_relabel 未使用。我已在 HEAD 中將其刪除,但在 v13 中保留了它,以防任何擴充功能正在使用它。根據 Luc Vlaming 的報告。回溯移植到出現問題的 v13。James Coleman 和 Tom Lane。討論:https://postgr.es/m/91f3ec99-85a4-fa55-ea74-33f85a5c651f@swarm64.com https://git.postgresql.org/pg/commitdiff/375398244168add84a884347625d14581a421e71
重新命名 find_em_expr_usable_for_sorting_rel。我不太喜歡這個函數名稱,因為它未能表達正在發生的事情。此外,單獨傳回排序表達式並沒有太大的幫助 --- 通常,呼叫者還需要 EquivalenceMember 的其他一些欄位。但唯一的呼叫者實際上只需要一個布林值結果,所以讓我們將其設為「bool relation_can_be_sorted_early()」。討論:https://postgr.es/m/91f3ec99-85a4-fa55-ea74-33f85a5c651f@swarm64.com https://git.postgresql.org/pg/commitdiff/7645376774c8532159f5f0f905e5e734d4ccbb18
修復括號不足的 XLogRecHasBlockRef() 巨集。Commit f003d9f87 使此巨集具有不充分的(或者,可以說,過多的)括號。這對諸如「if (!XLogRecHasBlockRef(record, 1)) ...」之類的呼叫的正確性是災難性的。只有少數幾個,這或許可以解釋為什麼我們沒有立即注意到(我們 WAL 重播測試的普遍弱點是另一個因素)。我透過除錯間歇性的重播失敗發現了它,例如 2021-04-08 14:33:30.191 EDT [29463] PANIC: failed to locate backup block with ID 1 2021-04-08 14:33:30.191 EDT [29463] CONTEXT: WAL redo at 0/95D3438 for SPGist/ADD_NODE: off 1; blkref #0: rel 1663/16384/25998, blk 1 https://git.postgresql.org/pg/commitdiff/9e41148229192dccc4bcc40f53af588b73d8ffea
改進 SP-GiST 記錄的 WAL 記錄描述。在追蹤前一個 commit 中修復的錯誤時,我對 spg_desc 輸出的低品質感到非常惱火。新增遺失的欄位,嘗試使格式保持一致。https://git.postgresql.org/pg/commitdiff/783be78ca91166ac7f80c953f2bbc5af1f61c6cd
文件:記錄 round() 函數的平手決斷行為。回溯移植到 v13;舊分支中的表格佈局不適合新增此類詳細資訊。Laurenz Albe。討論:https://postgr.es/m/161881920775.685.12293798764864559341@wrigleys.postgresql.org https://git.postgresql.org/pg/commitdiff/82b13dbc4d4b46f71ca95ce1cc15c425deff5957
不要因為參考到不可用的系統欄位而崩潰。對於當系統屬性不可用時,slot-type-specific 的 getsysattr 函式應該如何運作,採取更一致的策略。也就是說,它們都應該拋出相同的、針對使用者的錯誤訊息,而不是各自崩潰或發出針對開發者的訊息。這解決了 commit a71cfc56b 和 3fb93103a (在 v13 和 v12 中) 中一個可識別的問題,因此向後移植到這些分支,並包含一個測試案例,以嘗試確保我們不會再次破壞它。目前尚不清楚 HEAD 中是否能達到任何先前的崩潰情況,但在任何情況下,這似乎都是一個良好的安全改進。討論:https://postgr.es/m/141051591267657@mail.yandex.ru https://git.postgresql.org/pg/commitdiff/d479d00285255d422a2b38f1cfaa35808968a08c
Bruce Momjian 推送
調整查詢 ID 功能以使用 pg_stat_activity.query_id。之前,它是 pg_stat_activity.queryid,以匹配 pg_stat_statements 的 queryid 欄位。這是對 patch 4f0b0966c8 的調整。這也調整了一些內部函式呼叫以匹配。Catversion 已提升。回報者:Álvaro Herrera, Julien Rouhaud 討論:https://postgr.es/m/20210408032704.GA7498@alvherre.pgsql https://git.postgresql.org/pg/commitdiff/9660834dd8bf5b093f7b49eef846666201d45a35
修復 log_line_prefix 的 query_id 和 log_statement 的互動。 log_statement 在 query_id 計算之前發出,因此正確清除該值,並記錄互動。回報者:Fujii Masao, Michael Paquier 討論:https://postgr.es/m/YHPkU8hFi4no4NSw@paquier.xyz 作者:Julien Rouhaud https://git.postgresql.org/pg/commitdiff/db01f797dd48f826c62e1b8eea70f11fe7ff3efc
doc: 提及 <link> 可以在 <command> 內部,但不能在 <xref> 內部。這在 commit 9081bddbd 中討論過。回報者:Peter Eisentraut 討論:https://postgr.es/m/flat/87o8pco34z.fsf@wibble.ilmari.org https://git.postgresql.org/pg/commitdiff/84f15ccd4c25c4ffc4de6ed82f7658a3a199a1d7
Álvaro Herrera 推送
在分離分割區時,不要新增冗餘約束。在 ALTER TABLE .. DETACH CONCURRENTLY 上,我們新增一個新的表約束,該約束複製了分割區約束。但是,如果分割區已經有另一個隱含該約束的約束,則這是沒有必要的。如果存在完全「相等」的匹配,我們已經避免添加重複的約束 - 這只是提高了檢查的品質。作者:Justin Pryzby pryzby@telsasoft.com 審閱者:Álvaro Herrera alvherre@alvh.no-ip.org 討論:https://postgr.es/m/20210410184226.GY6592@telsasoft.com https://git.postgresql.org/pg/commitdiff/7b357cc6ae553c0ecacdc11b2e5278b7bf477dba
新增關於 extract_autovac_opts 不持有鎖定的註解。根據 Tom Lane 的觀察。討論:https://postgr.es/m/1901125.1617904665@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/7c298c6573a0f181963ddcb40c850fa9c7da0ada
修復分割區分離中的 relcache 不一致風險。在來自 ri_triggers.c 的查詢期間,我們需要省略標記為 pending detach 的分割區 - 否則,RI 查詢會被欺騙,允許將一行插入到引用表中,而該行對應的行位於分離的分割區中。這是錯誤的:一旦分離操作完成,該行將成為孤立行。但是,該程式碼在 repeatable-read 交易中沒有這樣做,因為 relcache 保留了分割區描述符的副本,其中包括分割區,並在 RI 查詢中使用它。此 commit 變更了 partdesc 快取程式碼,使其僅保留不依賴於快照的描述符 (即:不存在已分離分割區的描述符,以及包含已分離分割區的描述符)。當請求沒有已分離分割區的 partdesc 時,我們會每次都重新建立一個;此外,這些 partdesc 儲存在 PortalContext 中,而不是 CacheMemoryContext 中。find_inheritance_children 獲得一個新的輸出*detached_exist
布林值,表示是否找到任何標記為 pending-detach 的分割區。它的 "include_detached" 輸入旗標已變更為 "omit_detached",因為該名稱更自然地捕捉了所需的語意。CreatePartitionDirectory() 和 RelationGetPartitionDesc() 的引數已進行相同的重新命名。這是因為一個使用 relcache clobbering 運行的建置伺服器成員 (它不會保留不正確快取的 partdesc) 破壞了一個測試,這使我們意識到該測試的預期輸出是錯誤的。此 commit 也更正了該預期輸出。作者:Amit Langote amitlangote09@gmail.com 作者:Álvaro Herrera alvherre@alvh.no-ip.org 討論:https://postgr.es/m/3269784.1617215412@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/8aba9322511f718f12b618470d8c07f0ee5f0700
修復未初始化記憶體錯誤。讓感興趣的 find_inheritance_children 呼叫者在呼叫它之前將 detached_exist 值設定為 false,以便該常式僅在必要時(很少發生)才必須將其設定為 true。否則不要觸碰它。根據建置伺服器成員 thorntail(它在此處報告了 UBSan 失敗)。 https://git.postgresql.org/pg/commitdiff/43b55ec4bc3bc06596d966391f16defe016310ec
Etsuro Fujita 推送
Fujii Masao 推送
doc: 修復關於 pg_basebackup 的過時描述。先前的文件記載,如果使用 "-X none" 選項,則無法保證在從備份伺服器進行備份時,pg_basebackup 結束時所有需要的 WAL 檔案都已封存。但是此限制已由 commit 52f8a59dd9 移除。現在,即使從備份伺服器進行備份,pg_basebackup 也可以等待所有需要的 WAL 檔案都已封存。因此,此 commit 從文件中刪除了此類過時的描述。此外,此 commit 還新增了關於從備份伺服器進行備份時的限制的新描述到文件中。限制是 pg_basebackup 無法強制備份伺服器在備份結束時切換到新的 WAL 檔案,這可能導致 pg_basebackup 等待很長時間才能切換和封存最後需要的 WAL 檔案,尤其是在主伺服器上的寫入活動較低時。向後移植到引入問題的 v10。回報者:Kyotaro Horiguchi 作者:Kyotaro Horiguchi, Fujii Masao 審閱者:Kyotaro Horiguchi, Fujii Masao 討論:https://postgr.es/m/20210420.133235.1342729068750553399.horikyota.ntt@gmail.com https://git.postgresql.org/pg/commitdiff/eaec48b3c54eec222d64468b57af80ee4ddf76a9
將 gram.y 和 parsenodes.h 中的 COMPRESSION 選項重新排序為字母順序。Commit bbe0a81db6 在 CREATE TABLE 命令中引入了 "INCLUDING COMPRESSION" 選項,但之前 gram.y 和 parsenodes.h 中的 TableLikeOption 並未按照字母順序對這個新選項進行分類。作者:Fujii Masao 審閱者:Michael Paquier 討論:https://postgr.es/m/YHerAixOhfR1ryXa@paquier.xyz https://git.postgresql.org/pg/commitdiff/3f20d5f37086e548c32ddb9d6ae09c2e1ce300ce
Alexander Korotkov 推送了
Noah Misch 推送了
Peter Smith 發送了一個 patch 以重新排列 CREATE SUBSCRIPTION 的選項列表。
Bharath Rupireddy 發送了另一個版本的 patch,以新增用於多重和單一插入的新資料表 AM,並將其用於 CTAS、REFRESH MATERIALIZED VIEW 和 COPY。
Amul Sul 發送了另外兩個版本的 patch,以從 transformCreateStmt 中移除多餘的變數。
Pavel Stěhule 發送了另一個版本的 patch,使其可以在 auto_explain 中記錄 seqscans。
David Rowley 發送了另一個版本的 patch,以減少 Windows 上 contrib 建置的特殊情況數量。
Amul Sul 發送了另外兩個版本的 patch,以新增 RelationGetSmgr 內聯函數。
Masahiko Sawada 發送了另外兩個版本的 patch,以跳過凍結元組插入的 vmbuffer。
Dagfinn Ilmari Mannsåker 發送了一個 patch,用於建立一個函數,以從表達式中剝離 RelabelType 節點,將許多相同的模式合併為一個。
Masahiko Sawada 和 Amit Kapila 交換了 patch,以將 HTAB 用於複製槽統計資訊。
Vigneshwaran C 和 Amit Kapila 交換了 patch,以在複製槽釋放期間更新解碼統計資訊。
Bharath Rupireddy 發送了一個 patch,以在 lazy_truncate_heap 中的鎖定等待使用 WaitLatches,在 do_pg_stop_backup 中使用 WaitLatches 而不是 pg_usleep(),以及用於身份驗證前和身份驗證後延遲。
Bharath Rupireddy 發送了一個 patch,以將 parallel_leader_participation GUC 移至資源消耗類別。
Peter Smith 發送了另外兩個版本的 patch,以將對預備交易的支持新增到內建邏輯複製,並新增對串流交易的 prepare API 支持。
Dan Carter 發送了一個 patch,以將 GSSAPI ccache_name 選項新增到 libpq。
Takamichi Osumi 和 Amit Kapila 交換了 patch,以修復 TRUNCATE 和同步邏輯複製之間的不協調。
Amit Langote 發送了一個 patch,以修復 pgoutput 外掛程式中的 tupdesc 洩漏。
Bharath Rupireddy 發送了一個 patch,以跳過重複關係的 VACUUM/ANALYZE。
Pavel Stěhule 發送了另一個版本的 patch,以將 PSQL_WATCH_PAGER 設定新增到 psql。
Masahiro Ikeda 發送了另一個版本的 patch,以在不引入新變數的情況下,在報告 WAL 統計資訊方面做出一些效能改進。
Fujii Masao 發送了另外四個版本的 patch,以記錄 TRUNCATE 在外部資料表上的工作方式,並確保原始查詢中的任何 ONLY 子句都不會傳遞到相同資料表。
Hou Zhijie 發送了一個 patch,以修復具有錯誤並行安全標誌的測試案例。
Zeng Wenjing 發送了另一個版本的 patch,以實作全域暫存資料表。
Simon Riggs 發送了一個 patch,以記錄將約束變更為 VALIDATE 它需要 SHARE UPDATE EXCLUSIVE 鎖定的事實。
Simon Riggs 發送了一個 patch,以在允許 CHECK 約束為 NOT VALID 時降低鎖定層級。
Daniil Zakhlystov 發送了另一個版本的 patch,以新增 zlib 和 zstd 串流壓縮,並實作 libpq 壓縮。
Tom Lane 發送了一個 patch,以更好地記錄 Julian 日期。
Álvaro Herrera 發送了一個 patch,以將 ALTER TABLE .. DETACH PARTITION CONCURRENTLY 的 Tab 補全新增到 psql。
Tom Stellard 發送了一個 patch,讓 jit 能夠處理 s390x 上潛在的資料佈局不匹配。
Justin Pryzby 發送了一個 patch,以在執行 CREATE TABLE ... LIKE 時新增 COMPRESSION 作為一種可能性。
Kyotaro HORIGUCHI 發送了一個 patch,以修復一些可疑的訊息。
Tang 發送了一個 patch,以在使用 psql 比較 "pg_" 時使用 pg_strncasecmp 來替換 strncmp。
Tang 發送了另一個版本的 patch,以支持 psql 中大寫字元輸入的 Tab 補全。
Hou Zhijie 發送了另一個版本的 patch,使其可以並行執行 INSERT SELECT。
Mark Dilger 和 Robert Haas 交換了 patch,以將 toast 指標損壞檢查新增到 pg_amcheck。
Bharath Rupireddy 發送了一個 patch,以 MAXALIGN sizeof(BTPageOpaqueData) 在 PageGetItemIdCareful 中。
Ajin Cherian 發送了另一個版本的 patch,以跳過邏輯複製的空交易。
Alexander Pyhalov 發送了另一個版本的 patch,以將 restrictinfo 推送到 CTE,並嘗試在此過程中修剪分割區。
Thomas Munro 發送了一個 patch,以在 src/test/recovery 下新增一個新的 TAP 測試,該測試使用 wal_consistency_checking=all 執行迴歸測試。
Joel Jacobson 發送了一個 patch,以修復事件觸發器的 pg_identify_object_as_address。
Takamichi Osumi 發送了一個 patch,以將 ReorderBufferProcessTXN 中 RelationIsLogicallyLogged 的檢查替換為具有相同效果的 Assert。
David Rowley 發送了另一個版本的 patch,透過允許使用雜湊表來加速具有一組 Consts 的 NOT IN()。
David Rowley 和 Yura Sokolov 交換了 patch,以在 SMgr 中使用 simplehash.h 而不是 dynahash。
Julien Rouhaud 發送了一個 patch,以修復 query_id 計算中的一些疏忽。
Tom Lane 發送了一個 patch,要求 pq_getmessage 的呼叫者提供長度上限,並在伺服器中安裝與 libpq 具有的相同的短訊息與長訊息的啟發式方法。