本週人物:https://postgresql.life/post/devrim_gunduz/
pgmetrics 1.11,PostgreSQL 指標的命令行工具,已發布。https://pgmetrics.io/
hypopg 1.2.0,一個實現假設索引的擴展,已發布。https://github.com/HypoPG/hypopg/releases
https://archives.postgresql.org/pgsql-jobs/2021-04/
Planet PostgreSQL:https://planet.postgresql.org/
本週 PostgreSQL 每週新聞由 David Fetter 為您帶來
請在太平洋標準時間下午 3:00 前(PST8PDT)將新聞和公告提交至 david@fetter.org。
Tom Lane 推送了
消除一些 Coverity 警告並改善程式碼一致性。 Coverity 抱怨說,在類似於 intresult = tm->tm_sec * 1000000 + fsec
的表達式中可能發生溢位;理由是在擴展到 int64 結果之前,乘法運算將以 32 位元算術進行。 我認為這些都是誤報,因為 tm_sec 的可能範圍有限; 但儘管如此,當附近的行以 64 位元常數寫入相同的計算時,這樣拼寫似乎很愚蠢。 ...或者更準確地說,使用 LL 常數,這不是專案風格。 像我們在其他地方所做的那樣,讓所有這些都使用 INT64CONST()。 這都是來自 a2da77cdb 的新程式碼,因此無需進行後續修補。https://git.postgresql.org/pg/commitdiff/6277435a8a89c59f716c111200c072d1454b8ff2
修正強制轉換 COLLATE 表達式結果的舊錯誤。 parse_coerce.c 中有一些技巧可以將請求的強制轉換下推到可能出現的任何 CollateExpr 之下。 但是,即使請求的資料類型不可排序,我們也會這樣做,從而導致無效的表達式樹,其中 CollateExpr 應用於不可排序的類型。 此修復程式只是完全刪除 CollateExpr,理由是它沒有用。 這個錯誤已經十年了,可以追溯到最初新增 COLLATE 支援的時候。 缺少現場投訴表明沒有太多使用者可見的後果。 我們注意到這個問題是因為如果無效的結構作為視圖的輸出列出現,它會觸發 DefineVirtualRelation 中的斷言; 但是,在非斷言版本中,您不會看到崩潰,只會看到關於將排序規則應用於不可排序類型的(稍微不正確的)投訴。 我發現透過將不正確的結構進一步放置在視圖中,我可以建立一個視圖定義,該定義將會導致 dump/reload 失敗,如新增的回歸測試案例所示。 但是 CollateExpr 在執行時不會執行任何操作,因此這可能不會導致任何真正令人興奮的後果。 根據 Yulin Pei 的報告。 後續修補到所有支援的分支。 討論:https://postgr.es/m/HK0PR01MB22744393C474D503E16C8509F4709@HK0PR01MB2274.apcprd01.prod.exchangelabs.com https://git.postgresql.org/pg/commitdiff/c402b02b9fb53aee2a26876de90a8f95f9a9be92
刪除不再相關的測試案例。 collate.icu.utf8.sql 正在測試列舉比較表達式的排序規則相依性的記錄,但是這樣的表達式從一開始就不應該具有任何排序規則相依性。 在我於提交 c402b02b9 中修復該問題後,測試開始失敗。 我們不再需要測試該情境,因此只需刪除現在無用的測試步驟即可。 (此測試案例是 HEAD 中的新增內容,因此無需進行後續修補。) 討論:https://postgr.es/m/3044030.1618261159@sss.pgh.pa.us 討論:https://postgr.es/m/HK0PR01MB22744393C474D503E16C8509F4709@HK0PR01MB2274.apcprd01.prod.exchangelabs.com https://git.postgresql.org/pg/commitdiff/cf0020080a3de20287217621da57bfd840e9a693
避免 heap_update 期間不太可能發生的 PANIC。 heap_update 需要清除舊元組頁面(以及新頁面,如果不同)上的任何現有「全部可見」標誌。 根據編碼規則,為此,它必須在不持有獨佔緩衝區鎖定的情況下,在適當的可見性對應頁面上取得釘選; 這會產生競爭條件,因為當我們沒有持有緩衝區鎖定的情況下,其他人可以隨時設定該標誌。 該程式碼應該透過在取得緩衝區鎖定後重新檢查該標誌並在設定該標誌時重試來處理該問題。 但是,heap_update 本身的一條程式碼路徑,以及其子常式 RelationGetBufferForTuple 中的一條程式碼路徑,未能執行此操作。 最終結果是,在並行 VACUUM 在我們暫時未持有鎖定的情況下設定了該標誌的罕見情況下,會發生非重複發生的「PANIC:傳遞給 visibilitymap_clear 的緩衝區錯誤」錯誤。 自最近的 VACUUM 變更新增了可以在僅持有獨佔緩衝區鎖定的情況下設定全部可見標誌的程式碼路徑以來,在 buildfarm 中已經多次看到這種情況。 以前,該標誌(通常?)僅在執行 LockBufferForCleanup 後才設定,這將堅持緩衝區釘選計數為零,從而防止在 heap_update 中途設定該標誌。 但是,很明顯是 heap_update 而不是 VACUUM 在這裡存在錯誤。 不太清楚的是,這些錯誤在已發布的分支中是否存在任何風險。 heap_update 肯定違反了 API 預期,但是如果沒有程式碼路徑可以在沒有清理鎖定的情況下設定全部可見標誌,那麼這只是一個潛在的錯誤。 但這並非 100% 確定,除此之外,我們還應該擔心可能引入此類程式碼路徑的擴展或未來的後續修補程式。 我選擇後續修補到 v12。 在此之前修復 RelationGetBufferForTuple 還需要後續修補舊修復程式的部分內容(尤其是 0d1fe9f74),與修復假設問題相比,這會產生更多的程式碼變動。 討論:https://postgr.es/m/2247102.1618008027@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/34f581c39e97e2ea237255cf75cccebccc02d477
重新設計 get_cached_rowtype() 完成的快取。 以前,get_cached_rowtype() 快取了來自 typcache 的參考計數元組描述符的指標,依靠 ExprContextCallback 機制在銷毀使用 tupdesc 的表達式樹時釋放 tupdesc refcount。 這在設計時工作正常,但是 DO 區塊內的 COMMIT 的引入打破了它。 refcount 記錄在交易生命週期資源所有者中,但是 plpgsql 不會銷毀在 DO 區塊內(在其第一次提交之前)建立的簡單表達式,直到退出 DO 區塊。 這會在 COMMIT 銷毀原始資源所有者時導致關於洩漏的 tupdesc refcount 的警告,然後在銷毀表達式時導致關於活動資源所有者未持有相符 refcount 的錯誤。 為了修復,透過快取相關 typcache 條目的指標,完全擺脫了對關閉回呼的需求。 這些條目在後端生命週期內存在,因此我們不必擔心指標變得過時。 (對於已註冊的 RECORD 類型,我們仍然可以快取 tupdesc 的指標,因為我們知道它在後端生命週期內不會變更。) 自提交 4b93f5799 以來,此機制已在 plpgsql 和 expandedrecord.c 中使用,並且似乎工作良好。 此變更需要修改相關表達式步驟類型使用的 ExprEvalStep 結構,這對於後續修補來說有點令人擔憂。 但是,似乎沒有充分的理由讓擴展熟悉這些特定子結構的細節。 根據 Rohit Bhogate 的報告。 後續修補到 v11,其中 DO 區塊內的 COMMIT 成為現實。 討論:https://postgr.es/m/CAAV6ZkQRCVBh8qAY+SZiHnz+U+FqAGBBDaDTjF2yiKa2nJSLKg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/c2db458c1036efae503ce5e451f8369e64c99541
修正了部分不適當禁止的 ALTER ROLE/DATABASE SET 用法。大多數檢查資料庫狀態的 GUC 檢查鉤子,針對源頭 (source) == PGC_S_TEST 時,會加入特殊檢查以避免因狀態相關問題而拋出嚴重錯誤。例如,允許在尚未建立 "foo" 配置時執行 "ALTER DATABASE d SET default_text_search_config = foo"。若沒有這個機制,在 dump/reload 或 pg_upgrade 期間會發生問題,因為 pg_dump 無法得知 GUC 值的可能依賴性,也無法確保安全的還原順序。然而,check_role() 和 check_session_authorization() 並未注意到這一點,仍然會拋出嚴重錯誤。雖然 "ALTER ROLE x SET role = y" 的使用案例並不完全清楚,但我們已經收到兩起關於它妨礙升級的獨立投訴,顯然有些人正在使用它。因此,修正這兩個函式,使其行為更像其他具有類似需求的檢查鉤子。(但我沒有改變它們堅持必須在交易中執行的要求,因為從配置檔案設定這兩個 GUC 仍然不見得是明智之舉。)同時也修正了 check_temp_buffers,它也存在類似的問題,即在沒有 PGC_S_TEST 例外的情況下進行狀態相關的檢查。對其他 GUC 檢查鉤子的粗略調查並未發現更多類似問題。(PGC_POSTMASTER 和 PGC_SIGHUP GUC 之間存在許多相互依賴性,這可能不是一個好主意,但它們與目前的關注點無關,因為它們無法透過 ALTER ROLE/DATABASE 設定。)根據 Charlie Hornsby 和 Nathan Bossart 的報告。回溯修補到所有支援的分支。討論:https://postgr.es/m/HE1P189MB0523B31598B0C772C908088DB7709@HE1P189MB0523.EURP189.PROD.OUTLOOK.COM 討論:https://postgr.es/m/20160711223641.1426.86096@wrigleys.postgresql.org https://git.postgresql.org/pg/commitdiff/69d5ca484b69771073380e234e5377b6d6a5ebaf
允許在 ON CONFLICT ... WHERE 子句中使用表限定的變數名稱。先前,您只能在這裡使用非限定的變數名稱。雖然這不是功能上的缺陷,因為只能引用目標表,但這與部分索引謂詞的規則存在令人驚訝的不一致,而此語法理應以此為模型。解決此問題並不困難,只需將 addToRelNameSpace = true 傳遞給 addNSItemToQuery。然而,transformOnConflictArbiter 和 transformOnConflictClause 完全不應該干涉目標表的命名空間項目。這並非它們的職責,導致命名空間項目重複建立,而且 transformOnConflictClause 甚至沒有正確地執行(該編碼導致目標表出現兩個 nsitem,因為它沒有清除現有的那個)。因此,讓 transformInsertStmt 負責為這些子句和 RETURNING 設定目標 nsitem 一次。此外,安排在執行 transformOnConflictArbiter 之前,將 ON CONFLICT ... UPDATE 的 "excluded" 偽關係新增到 rangetable。如果有人在 arbiter 運算式中撰寫 "excluded.col",這將產生更有幫助的 HINT。根據 Lukas Eder 提出的錯誤 #16958。雖然我同意這是一個錯誤,但後果並不嚴重,因此不進行回溯修補。討論:https://postgr.es/m/16958-963f638020de271c@postgresql.org https://git.postgresql.org/pg/commitdiff/6c0373ab77359c94b279c4e67c91aa623841af65
修正引用已過時的 JoinPathExtraData.extra_lateral_rels 的註解。該欄位已在提交 edca44b15 中移除,但提交 45be99f8c 似乎重新引入了一些提及它的註解。由 James Coleman 指出,雖然這不完全是他提議的新措辭。也感謝 Justin Pryzby 的軟體考古學。討論:https://postgr.es/m/CAAaqYe8fxZjq3na+XkNx4C78gDqykH-7dbnzygm9Qa9nuDTePg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/e1623b7d86812ee6ab98a42f38b43a192c149988
穩定最近新增的 information_schema 測試查詢。如果核心系統或並行執行的測試腳本建立任何會出現在 information_schema 檢視中的函式,這些查詢可能會顯示意外的條目。將它們限制為僅顯示屬於此測試的 schema 的函式,就像更早期的附近測試案例一樣。根據將一些內建函式轉換為 SQL 函式主體樣式的實驗。 https://git.postgresql.org/pg/commitdiff/3157cbe974846729d49a1ee081944eee1839bdd8
撤銷允許 pg_proc.prosrc 為 NULL 的決定。提交 e717a9a18 變更了長期以來的規則,即 prosrc 不得為 NULL,因為當 SQL 語言函式以 SQL 標準樣式撰寫時,我們目前沒有任何有用的內容可以放入其中。但這似乎是一個糟糕的決定,因為它很容易對外部 PL 產生負面影響(例如,使它們容易發生過去不會發生的崩潰)。SQL 函式相關的程式碼可以像測試 "is prosqlbody not null" 一樣輕鬆地測試 "is prosrc null",因此也沒有真正的優勢。因此,恢復移除 NOT NULL 標記並調整相關邏輯。目前,我們只是將一個空字串放入 SQL 標準函式的 prosrc 中。也許我們稍後會有更好的主意,儘管像 pg_attrdef.adsrc 之類的歷史表明,維護節點樹的字串等價物並不容易。這也增加了對 standard_ExecutorStart 的斷言 queryDesc->sourceText != NULL。我們已經默默地依賴它一段時間了,所以讓我們讓它不那麼沉默。同時也修正了一些被忽略的文件和測試案例。討論:https://postgr.es/m/2197698.1617984583@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/1111b2668d89bfcb6f502789158b1233ab4217a6
還原 "Cope with NULL query string in ExecInitParallelPlan()."。這會還原提交 b3ee4c503872f3d0a5d6a7cbde48815f555af15b。在前面提交之後,我們不需要它了,該提交增加了一個上游檢查,以確保 querystring 不為 null。討論:https://postgr.es/m/2197698.1617984583@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/83efce7a1ebc5bae79617ddba12a64790141725c
在解析 SQL 標準函式主體時提供查詢來源文字。如果沒有這個,我們將會遺失錯誤游標位置,如修改後的迴歸測試結果所示。討論:https://postgr.es/m/2197698.1617984583@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/409723365b2708acd3bdf2e830257504bdefac4b
修正兩個 ExplainPropertyFloat 呼叫中的錯誤單位。這只是一個潛在的錯誤,因為這些呼叫僅適用於非文字輸出格式,而且目前沒有任何格式會列印單位。儘管如此,我們應該在這種情況發生變化時修正它。Justin Pryzby 討論:https://postgr.es/m/20210415163846.GA3315@telsasoft.com https://git.postgresql.org/pg/commitdiff/f90c708a048667befbf6bbe5f48ae9695cb89de4
修正了錯誤的定序版本記錄邏輯。`recordMultipleDependencies` 函數中 "version" 變數的作用域不正確,導致版本標籤從其所屬的定序條目洩漏到後續的非定序條目。這相對難以觸發,因為輸入通常會以 OID 降序排列:後續的非定序項目通常會被釘選(pinned)。但是,使用自訂定序可以很容易地展示這個問題。此外,不要特殊處理預設定序,而是在找到定序的版本後忽略其釘選狀態。這樣可以避免創建無用的 pg_depend 條目,並消除一個不太具有前瞻性的假設,即 C、POSIX 和 DEFAULT 是唯一被釘選的定序。一個小問題是,由於預設定序可能具有也可能沒有版本,因此迴歸測試無法對是否會為其創建依賴項條目做出任何假設。不過,這似乎沒有問題,因為現在它與其他定序的處理方式相同,而且我們有版本化和未版本化定序的測試案例。修正了 commit 257836a75 中的疏忽。感謝 Julien Rouhaud 的審閱。討論:https://postgr.es/m/3564817.1618420687@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/ef387bed87f2787b1012e68e9a33607a1074c123
將函數定義從 system_views.sql 分割到一個新檔案中。創建新的 system_functions.sql 來存放之前位於 system_views.sql 中的函數定義。函數定義已經佔了檔案的四分之一,而且即將變得更多,因此將它們放在自己的檔案中似乎更合適。順便一提,修正了 dfb75e478 中的一個疏忽:它忽略了對 system_constraints.sql 調用 check_input()。討論:https://postgr.es/m/3956760.1618529139@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/e80949372564c126c92aa7d64de483e04c0ef95e
將內建的 SQL 語言函數轉換為 SQL 標準主體(SQL-standard-body)風格。對於所有內建的 SQL 語言函數和 information_schema 函數,採用新的預解析表示形式,除了少數因具有多型參數而目前無法轉換的函數。這消除了這些函數在搜尋路徑安全性方面的殘餘風險,並且可能通過降低解析成本帶來一些小的效能優勢。為 SQL 標準主體功能提供更多的測試覆蓋範圍也似乎很有用。討論:https://postgr.es/m/3956760.1618529139@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/767982e36298be4da44a063e36261e9cfdc0bf49
更新虛擬的 prosrc 值。糟糕,在 767982e36 的這部分忘記執行 s/system_views.sql/system_functions.sql/g 了。我認為不需要額外的 catversion 變更,因為這些字串在 initdb 完成時就不存在了。討論:https://postgr.es/m/3956760.1618529139@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/8a2df442b652f83b1c189822737091b90f343965
重新思考定序依賴性的提取。就目前而言,find_expr_references_walker() 關注葉節點定序欄位,而忽略實際函數和運算符節點的輸入定序。從語義角度來看,這似乎完全相反,並且導致報告的依賴關係實際上與表達式的行為無關。因此,重寫為查看函數輸入定序。這也不是完全完美的;它無法解釋 record_eq 及其同類項的行為。(先前的程式碼至少給出了一個近似值,但我認為它可以很容易地被欺騙,從而考慮不相關的複合類型列。)我們可能稍後可以對此進行改進,但目前這應該可以滿足不喜歡 ef387bed8 的建置農場成員。順便一提,修正 GetTypeCollations() 中的一些疏忽,並擺脫其重複的去重複。 (我擔心它仍然可能是 O(N^2) 或更糟,但這使其更好一些。)討論:https://postgr.es/m/3564817.1618420687@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/f24b156997059c257c697b825f022d115825091d
Michaël Paquier 推送了
修正間隔(interval)-> char 轉換的越界記憶體訪問。使用羅馬數字(通過 "RM" 或 "rm")進行轉換以計算月數時,從未考慮負數的情況,在這種情況下,轉換很容易導致越界記憶體訪問。轉換本身也不是完全一致的,因為指定 12 將導致 NULL,但它應該表示 XII。此提交重新設計了轉換計算,使其具有更一致的行為: - 如果月數和年數為 0,則傳回 NULL。 - 如果月數為正數,則傳回確切的月數。 - 如果月數為負數,則進行反向計算,其中 -1 表示十二月,-2 表示十一月,依此類推。報告人:Theodor Arsenij Larionov-Trichkin 作者:Julien Rouhaud 討論:https://postgr.es/m/16953-f255a18f8c51f1d5@postgresql.org 反向修補到:9.6 https://git.postgresql.org/pg/commitdiff/7a3972597f6ed7a6976d81abb66c38a7a1c29058
將 log_autovacuum_min_duration 移至其正確的部分。此 GUC 已被分類為 LOGGING_WHAT,但它在 postgresql.conf.sample 和文件中的位置沒有反映這一點,因此修正這些不一致之處。作者:Justin Pryzby 討論:https://postgr.es/m/20210404012546.GK6592@telsasoft.com https://git.postgresql.org/pg/commitdiff/b094063cd16d22b2f065a432580bb3568b2d8a77
移除 test_pg_dump 新測試中重複的 --no-sync 開關。這些是在 6568cef 中引入的。報告人:Noah Misch 討論:https://postgr.es/m/20210404220802.GA728316@rfd.leadboat.com https://git.postgresql.org/pg/commitdiff/885a87641930778d9580fdf0656af24e3f52d276
簡化 postgres_fdw 終止連線的測試。在 32a9c0b 中引入的,用於測試中斷並重新建立的連線,依賴於 pg_terminate_backend() 的邏輯。當引入這些測試時,此函數只是向後端發送信號,而不等待操作完成,並且測試重複查看 pg_stat_activity 以檢查操作是否已完成。自 aaf0432 以來,可以定義一個逾時來讓 pg_terminate_backend() 等待一段時間,因此利用它,設定一個足夠大的逾時(3 分鐘),以便為測試通過提供足夠的空間,即使在慢速機器上也是如此。一些測量表明,通過此變更,postgres_fdw 的測試速度更快。例如,在我的筆記本電腦上,它們現在需要 4 秒而不是 6 秒。作者:Bharath Rupireddy 討論:https://postgr.es/m/CALj2ACXGY_EfGrMTjKjHy2zi-u1u9rdeioU_fro0T6Jo8t56KQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/93f41461449f917da20af4fa2973f8afe8e6ea6e
doc: 將 force_parallel_mode 移至開發者選項區塊。這個 GUC 自從在 7c944bd 引入以來,一直被歸類為規劃器選項,並且列在 postgresql.conf.sample 中。由於這個參數的存在是為了測試目的,因此將其移動到專門用於開發者參數的區塊,並從 postgresql.conf.sample 中移除。這樣可以避免用戶在生產伺服器上試用它,因為這些用戶不應該接觸這個參數。依照 Tom Lane 的建議,開發者選項的一般描述被稍微修改了一下,以考量包含 force_parallel_mode。根據 Tom Lane、Bruce Momjian、Justin Pryzby、Bharath Rupireddy 和我之間的討論。作者:Justin Pryzby, Tom Lane。討論: https://postgr.es/m/20210403152402.GA8049@momjian.us https://git.postgresql.org/pg/commitdiff/ac725ee0f98c3fec703ffd9b070da629608e9a1e
調整 pg_dump --extension 在處理組態表格時的行為。引入此選項的 6568cef 在處理 pg_extension_config_dump 設定的組態表格時,存在不一致的行為,因為即使未透過 --extension 參數列出的擴充套件,所有組態表格的資料也會包含在 dump 中。當未列出擴充套件時,dump 的內容會根據擴充套件安裝的 schema 而改變。例如,安裝在 public schema 下的擴充套件,即使沒有使用 --extension 列出,其組態資料也不會被 dump,這與安裝在非 public schema 上的擴充套件的情況不一致,後者其組態資料會被 dump。經過與 Noah 的討論,我們決定採用一個簡單的規則:如果擴充套件在 --extension 中列出,則 dump 該擴充套件的組態資料 (預設行為不變,與先前版本相容,如果沒有直接列出任何擴充套件,則 dump 所有內容)。這避免了一些奇怪的情況,在這些情況下,dump 依賴於某個 --schema。新增了更多測試來涵蓋這個缺口,我們根據 --schema 交叉檢查更多行為,當擴充套件未被列出時。回報者:Noah Misch。審閱者:Noah Misch。討論: https://postgr.es/m/20210404220802.GA728316@rfd.leadboat.com https://git.postgresql.org/pg/commitdiff/344487e2db03f3cec13685a839dbc8a0e2a36750
doc: 簡化 psql 的 HISTFILE 範例。e4c7619 在 psql 文件中的 HISTFILE 範例中,於變數 DBNAME 之前添加了一個空格,作為一個 workaround,因為當時變數的解析方式不同。這種行為在 9.2 中發生了變化,導致 psql 文件中的範例,無論是否在 DBNAME 變數之前添加空格,都會創建相同的歷史記錄檔。讓我們移除範例中的這個空格,以減少任何混淆,因為它的目的是證明設置每個資料庫的歷史記錄檔很容易,並且這樣更容易閱讀。根據與 Tom Lane 的討論。回報者:Ludovic Kuty。討論: https://postgr.es/m/161830067409.691.16198363670687811485@wrigleys.postgresql.org https://git.postgresql.org/pg/commitdiff/1840d9f4c89998872a3b46473f8e9e5b6ff3c144
doc: 修正 SQL/JSON 範例查詢中的錯字。作者:Erik Rijkers。討論: https://postgr.es/m/1219476687.20432.1617452918468@webmailclassic.xs4all.nl Backpatch-through: 12 https://git.postgresql.org/pg/commitdiff/254a2164e5b216ecf98882f8bcb9e239ab2d432d
Amit Kapila pushed
doc: 更新邏輯複製的新訊息資訊。更新了用於串流處理中的事務以及對現有訊息所做變更的新增訊息的文件。它還更新了邏輯複製支援的協議版本資訊。作者:Ajin Cherian。審閱者:Amit Kapila, Peter Smith, Euler Taveira。討論: https://postgr.es/m/CAFPTHDYHN9m=MZZct-B=BYg_TETvv+kXvL9RD2DpaBS5pGxGYg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/15c1a9d9cb7604472d4823f48b64cdc02c441194
在 stats 中使用 NameData 資料類型作為 slotname。這將使其與程式碼中 slotname 的其他用法一致。順便一提,更改 pgstat_report_replslot 簽名以使用結構,而不是多個參數。回報者:Andres Freund。作者:Vignesh C。審閱者:Sawada Masahiko, Amit Kapila。討論: https://postgr.es/m/20210319185247.ldebgpdaxsowiflw@alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/cca57c1d9bf7eeba5b81115e0b82651cf3d8e4ea
將處理的總資料的資訊添加到複製槽統計資訊中。這添加了關於總事務計數和從 ReorderBuffer 邏輯上傳送到解碼輸出插件的總事務資料的統計資訊。使用者可以查詢 pg_stat_replication_slots 檢視來檢查這些統計資訊。建議者:Andres Freund。作者:Vignesh C and Amit Kapila。審閱者:Sawada Masahiko, Amit Kapila。討論: https://postgr.es/m/20210319185247.ldebgpdaxsowiflw@alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/f5fc2f5b23d1b1dff60f8ca5dc211161df47eda4
Fujii Masao pushed
支援在外來資料表上使用 TRUNCATE 的 Tab 鍵自動完成功能。Commit 8ff1c94649 擴展了 TRUNCATE 命令,使其也可以截斷外來資料表。但它忘記了支援在外來資料表上使用 TRUNCATE 的 Tab 鍵自動完成功能。也就是說,先前 TRUNCATE 的 Tab 鍵自動完成功能僅顯示常規資料表的名稱。此 commit 改善了 TRUNCATE 的 Tab 鍵自動完成功能,使其也顯示外來資料表的名稱。作者:Fujii Masao。審閱者:Bharath Rupireddy。討論: https://postgr.es/m/551ed8c1-f531-818b-664a-2cecdab99cd8@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/81e094bdfdd6cf6568cba2b25eea9876daceaacb
doc: 修正 logicaldecoding.sgml 中的錯字。在 commit 0aa8a01d04 中引入。作者:Peter Smith。討論: https://postgr.es/m/CAHut+Ps8rkVHKWyjg09Fb1PaVG5-EhoFTFJ9OZMF4HPzDSXfew@mail.gmail.com https://git.postgresql.org/pg/commitdiff/5fe83adad9efd5e3929f0465b44e786dc23c7b55
doc: 將遺漏的 COMPRESSION 添加到 CREATE TABLE 概要中。Commit bbe0a81db6 在 CREATE TABLE 命令中引入了 "INCLUDING COMPRESSION" 選項,但忘記在 CREATE TABLE 語法概要中提及它。作者:Fujii Masao。審閱者:Michael Paquier。討論: https://postgr.es/m/54d30e66-dbd6-5485-aaf6-a291ed55919d@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/e2e2efca85b4857361780ed0c736c2a44edb458a
Peter Eisentraut pushed
修正 nls.mk 中檔案參考的問題。由 37d2ff38031262a1778bc76a9c55fff7afbcf275 造成的問題。 https://git.postgresql.org/pg/commitdiff/44c8a3d75997b08fa7645dac7ee5c7a918a235c7
pg_amcheck: 添加基本的 NLS 支援。 https://git.postgresql.org/pg/commitdiff/fc0fefbfe0d7e805f6a3a4aaaad7127090fcca51
pg_upgrade: 使用 %u 而非 %d 列印 OID。如果資料庫 OID 超過有符號的 32 位元範圍,這可能會將錯誤的輸出寫入叢集刪除腳本中。 https://git.postgresql.org/pg/commitdiff/6787e53fe59eed19095c771a8d3323fb59420733
改善一些錯誤訊息中的引號使用。 https://git.postgresql.org/pg/commitdiff/07e5e66742333ab100a557e6e3f710e92fa1fd92
amcheck: 使用正確的格式佔位符來表示 TOAST chunk 編號。其中幾個已經在 9acaf1a62197205b06a85afbfcaa7ffaac939ef3 中順便修復,但還剩下一個不一致。 https://git.postgresql.org/pg/commitdiff/59da8d9eb7255c3cb1c9f3b79d76b18b6a1c7da2
pg_upgrade: 小修復,以改善幫助輸出的可翻譯性。 https://git.postgresql.org/pg/commitdiff/cbae8774eb5c2f5552323ee18ca5286f9c8e5d06
Revert "psql: 預設顯示所有查詢結果"。這還原了 commit 3a5130672296ed4e682403a77a9a3ad3d21cef75。根據討論,此修補程式有太多的問題需要在開發週期的這個階段解決。我們將在未來再次嘗試。討論: https://postgres.tw/message-id/flat/alpine.DEB.2.21.1904132231510.8961@lancre https://git.postgresql.org/pg/commitdiff/fae65629cec824738ee11bf60f757239906d64fa
psql: 小型修正,以改善翻譯性。https://git.postgresql.org/pg/commitdiff/25593d7d338232fb855ba563b325237de8f14091
psql: 精簡 CREATE FUNCTION 語句中 BEGIN...END 區塊的詞法分析。僅追蹤 CREATE [OR REPLACE] {FUNCTION|PROCEDURE} 語句中的 BEGIN...END 區塊。忽略括號內的區塊。Reviewed-by: Laurenz Albe laurenz.albe@cybertec.at Discussion: https://postgres.tw/message-id/cee01d26fe55bc086b3bcf10bfe4e8d450e2f608.camel@cybertec.at https://git.postgresql.org/pg/commitdiff/029c5ac03db72f1898ee17e417650a2e0764b239
使用正確的格式佔位符來表示區塊編號。應該是 %u 而不是 %d。https://git.postgresql.org/pg/commitdiff/f59b58e2a1b7e4a48dee36cc61966759da0faedd
doc: 修正 verbatim DocBook 元素周圍的間距。https://git.postgresql.org/pg/commitdiff/f7c09706c14d0858d5a186f3cc769471cba41578
將遺漏的原始碼檔案加入 nls.mk。https://git.postgresql.org/pg/commitdiff/4ed7f0599a8984d9ed967780a157d9b23d03fbb5
Thomas Munro 推送
修復 heap_update() 中潛在的 SSI 風險。Commit 6f38d4dac38 未能留意關於 "otid" 指向的值的穩定性的警告。允許呼叫者傳遞指向 newtup->t_self 的指標,該指標將在函數執行期間更新。相反,SSI 檢查應該使用我們複製到函數頂端附近 oldtup.t_self 中的值。這不是一個實際錯誤,因為 newtup->t_self 並不會真正更新直到稍晚,但這讓人困惑並打破了註解建立的規則。反向移植到 13。Reported-by: Tom Lane tgl@sss.pgh.pa.us Discussion: https://postgr.es/m/2689164.1618160085%40sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/b1df6b696b759f00ebbf02e6de64e259d4be5785
Doc: 記錄 Windows 定序版本已知的問題。警告使用者,具有傳統 Windows NLS 名稱(如 "English_United States.1252")的地區設定不會提供版本資訊,並且需要類似 initdb --lc-collate=en-US 的操作才能修復初始範本資料庫的問題。Discussion: https://postgr.es/m/CA%2BhUKGJ_hk3rU%3D%3Dg2FpAMChb_4i%2BTJacpjjqFsinY-tRM3FBmA%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/1bf946bd43e545b86e567588b791311fe4e36a8c
Noah Misch 推送
將 regress-python3-mangle.mk 移植到 Solaris "sed"。它不支援 "\(foo\)*"
,就像 POSIX "sed" 實作一樣;請參閱 Autoconf 手冊。反向移植到 9.6(所有支援的版本)。https://git.postgresql.org/pg/commitdiff/c3556f6fac349b31da2fd00107469ce36fb37536
對於 Oracle 編譯器,在包含 Bison 剖析器的目錄中使用 "-I."。使用 Oracle Developer Studio 12.6 編譯器,#line 指令會變更 #include "..." 指令的目前原始碼檔案位置。因此,VPATH 建置失敗,並出現 'cannot find include file: "specscanner.c"' 錯誤。除了兩個例外,包含剖析器的目錄已經新增 "-I. -I$(srcdir)";刪除這些例外。反向移植到 9.6(所有支援的版本)。https://git.postgresql.org/pg/commitdiff/455dbc010be53ac61fcb2da83b1e565f4c263449
Robert Haas 推送
docs: 更新 TOAST 儲存體文件,以說明可配置的壓縮。提及有多種 TOAST 壓縮方法,並且使用的壓縮方法與先前儲存在該處的其他資訊一起儲存在 TOAST 指標中。新增對 default_toast_compression 文件的參考,其中列出了支援的方法,而不是在此處重複。我沒有嘗試保留聲稱 pglz "相當簡單且非常快速" 的文字。我對前者的說法沒有意見,但 LZ4 似乎更快(並且壓縮得更好),因此最好不要透過將壓縮速度作為 PGLZ 的強項來混淆視聽。我的 Patch,由 Justin Pryzby 審閱。Discussion: http://postgr.es/m/CA+Tgmoaw_YBwQhOS_hhEPPwFhfAnu+VCLs18EfGr9gQw1z4H-w@mail.gmail.com https://git.postgresql.org/pg/commitdiff/e8c435a824e123f43067ce6f69d66f14cfb8815e
amcheck: 重新措辭一些訊息並修正對齊問題。我們不需要在這些訊息中提及屬性編號,因為有一個專用的欄位,但我們應該提及 toast 值 ID,因為這對於使用者想要進行的任何後續疑難排解都非常有用。這也會重新措辭一些訊息,希望能讀起來更好一些。此外,使用 VARATT_EXTERNAL_GET_POINTER 以防我們正在存取未對齊的 TOAST 指標,這樣我們就不會在檢查使用者資料的損壞時崩潰。Mark Dilger,由我審閱。Discussion: http://postgr.es/m/7D3B9BF6-50D0-4C30-8506-1C1851C7F96F@enterprisedb.com https://git.postgresql.org/pg/commitdiff/9acaf1a62197205b06a85afbfcaa7ffaac939ef3
Peter Geoghegan 推送
Tomáš Vondra 推送
Andrew Dunstan 推送
Andy Fan 送出一個修補程式,以記錄 RelOptInfo.partexprs 和 nullable_partexprs 的增強功能,並將 gen_prune_steps_from_exprs 分成更小的區塊。
Luc Vlaming 送出另一個修訂版的修補程式,以新增明確的部分 UNION ALL 路徑並改善並行子查詢列數和成本計算。
Luc Vlaming 送出另一個修訂版的修補程式,透過不發出 LLVMPassManagerBuilderUseInlinerWithThreshold 傳遞並在第一次呼叫時延遲產生 IR 程式碼來改善 JIT 編譯效能。
Amul Sul 送出另一個修訂版的修補程式,以實作 ALTER SYSTEM ... READ {ONLY | WRITE}。
James Coleman 送出一個修補程式,以新增對 NOT IN 的 HashedScalarArrayOp 支援。
Amit Langote 送出一個修補程式,以修正 PartitionDesc includes_detached 中的一個筆誤。
Masahiko Sawada 送出一個修補程式,以修復 REFRESH MATERIALIZED VIEW 的效能退化問題。
Peter Smith 提交了另一個修補程式版本,以新增對內建邏輯複製的預備交易支援,並為串流交易新增預備 API 支援。
Vigneshwaran C 和其他人交換了修補程式,以識別 CREATE/ALTER SUBSCRIPTION 中發布者遺失的發布項目。
Vigneshwaran C 提交了一個修補程式,以修正監控統計資料文件中的不一致之處。
Bruce Momjian 提交了兩個修補程式版本,以修正最近新增到 pg_stat_activity 的查詢 ID 中的一些命名問題。
Mark Dilger 提交了另外兩個修補程式版本,用於 pg_amcheck 應用程式,以新增 TOAST 指標損壞檢查。
Melanie Plageman 提交了一個修補程式,以新增一個系統檢視表 pg_stat_buffers_written,顧名思義,它可以執行其標籤上的功能。
Fujii Masao、Kyotaro HORIGUCHI 和 Justin Pryzby 交換了修補程式,以修正新的 TRUNCATE 在外部資料表功能中的一些不完善之處。
Justin Pryzby 提交了另外兩個修補程式版本,以改善版本 14 的文件。
Amit Langote 提交了一個修補程式,以根據需要初始化 WITH CHECK OPTIONS 和 RETURNING 表達式。
Ekaterina Sokolova 提交了另一個修補程式版本,以新增巢狀迴圈解釋的額外統計資料。
Haiying Tang 提交了另一個修補程式版本,以支援使用 psql 中大寫字元輸入的查詢結果進行 Tab 鍵自動完成。
Dave Page 提交了一個修補程式,以修正 sepgsql 中的記錄問題。
Andrei Zubkov 提交了另一個修補程式版本,以追蹤 pg_stat_statements 中的語句輸入時間戳記。
David Christensen 提交了一個修補程式,以擴展 pg_size_pretty(numeric) 知道的單位,包括高達 yottabytes 的單位。
Bharath Rupireddy 提交了另外兩個修補程式版本,以避免在 slot_store_error_callback 和 conversion_error_callback 中存取系統目錄。
Masahiko Sawada 和 Peter Geoghegan 交換了修補程式,以確保 VACUUM 會計處理的程式碼註解說明 LP_DEAD 會計處理。
Ajin Cherian 提交了另外兩個修補程式版本,以跳過邏輯複製的空交易。
Julien Rouhaud 提交了一個修補程式,以處理一些關於使用查詢 ID 記錄的特殊情況。這裡的問題是,一些查詢在語法上有效時可以被記錄,但缺少對目錄中它們引用的物件是否存在的檢查。該修補程式新增了一個 %Q 選項到 log_line_prefix,該選項會檢查是否實際找到了物件。
Zeng Wenjing 和 Shawn Wang 交換了修補程式,以實作全域臨時表。
Tom Lane 提交了一個修補程式,以使用固定範圍檢查來替換 pg_depend PIN 項目。
Amul Sul 提交了一個修補程式,以從 transformCreateStmt 中移除一個冗餘變數。
Pavel Stěhule 提交了另外兩個修補程式版本,以實作綱要變數。
Matthias van de Meent 提交了兩個修補程式版本,以記錄預設分割區的 ATTACH PARTITION 的鎖定行為。
Matthias van de Meent 提交了一個修補程式,以實作 _bt_binsrch*
的頁面級動態字首截斷,然後使用相同的方法來實作和使用索引元組屬性迭代。
James Coleman、Tomáš Vondra 和 Tom Lane 交換了旨在修正一個錯誤的修補程式,該錯誤表現為 TPC-DS 查詢 94-96 的 "could not find pathkey item to sort"。
Masahiro Ikeda 提交了另一個修補程式版本,以提高報告 WAL 統計資料的效能。
Tomáš Vondra 提交了一個修補程式,以在 generate_orderedappend_path 中產生部分最便宜的路徑。
Takamichi Osumi 和 Li Japin 交換了修補程式,以修正 TRUNCATE 和同步邏輯複製之間的不完善之處。
Michaël Paquier 提交了另一個修補程式版本,以修正邏輯複製工作程序中的 relcache 洩漏。
Mark Dilger 提交了兩個修補程式版本,以新增一個 --install-missing 選項到 pg_amcheck。
Sven Klemm 提交了一個修補程式,以修正 pg_event_trigger_ddl_commands,在同一個交易中刪除物件的情況下,它可能會查看無效的快取。
Andy Fan 提交了一個修補程式,以確保 set_append_rel_size 考慮到初始分割區修剪。
Tom Lane 提交了一個修補程式,以節省重複子查詢拉取中的一些週期。