PostgreSQL 本週人物:https://postgresql.life/post/carole_arnaud/
http://archives.postgresql.org/pgsql-jobs/2020-12/
Planet PostgreSQL: http://planet.postgresql.org/
PostgreSQL 每週新聞由 David Fetter 本週為您帶來
請在太平洋標準時間/太平洋夏令時間星期日下午 3:00 前將新聞和公告提交至 david@fetter.org。
Michaël Paquier 推送
修復 pg_verifybackup 中的 fd 洩漏。 87ae969 新引入的錯誤代碼路徑忘記在驗證檔案的校驗和時關閉檔案描述符。根據 Coverity 的報告,經 Tom Lane 協助。https://git.postgresql.org/pg/commitdiff/51c388987734cb318c8fa875f382ca75a34d0010
避免使用 syscache 中的 tuple 來更新 pg_database.datfrozenxid。 pg_database.datfrozenxid 會在使用 vacuum 或 autovacuum 結束時使用就地更新來更新。 自 96cdeae 以來,由於 pg_database 具有 toast 關聯,如果存在大量 ACL,則 pg_database tuple 可能具有 toast 值。 在這種情況下,就地更新將會失敗,因為為獲取的 catcache 條目完成了 toast 值的扁平化。 此變更會變更邏輯,直接掃描 pg_database 來獲取 tuple 的副本,而不是使用 catcache 中的副本。 根據對此事的投訴不足,沒有進行回溯修補。 請注意,在 96cdeae 之前,嘗試將此 tuple 插入 pg_database 將導致「row is too big」錯誤,因此 vacuum 結束問題無法觸及。 作者:Ashwin Agrawal, Junfeng Yang 討論:https://postgr.es/m/DM5PR0501MB38800D9E4605BCA72DD35557CCE10@DM5PR0501MB3880.namprd05.prod.outlook.com https://git.postgresql.org/pg/commitdiff/947789f1f5fb61daf663f26325cbe7cad8197d58
pgcrypto:偵測 OpenSSL 中 EVP 呼叫的錯誤。 在處理摘要時,pgcrypto 中會呼叫以下例程,但沒有針對失敗進行檢查: - EVP_MD_CTX_size(自 3.0.0 起可能會以 -1 失敗) - EVP_MD_CTX_block_size(自 3.0.0 起可能會以 -1 失敗) - EVP_DigestInit_ex - EVP_DigestUpdate - EVP_DigestFinal_ex 此提交新增了一組 elog(ERROR) 以偵測此類失敗,除非 OpenSSL 內部發生處理失敗,否則永遠不應發生。 請注意,可以使用 ERR_reason_error_string() 取得有關此類錯誤的更多上下文,但這些錯誤主要參考 OpenSSL 的內部,因此不清楚這有多大用處。 為了簡單起見,已省略此操作。 根據 Coverity 的報告。 感謝 Tom Lane 的討論。 Backpatch-through: 9.5 https://git.postgresql.org/pg/commitdiff/28d1601ad988790c3c53d7ffd24ef6d2366d4457
簡化取得 unicode 代碼點規範類別的程式碼。 unicode_norm.c 的三個位置使用類似的邏輯來從代碼點取得組合類別。 Commit 2991ac5 為此目的新增了函數 get_canonical_class(),但僅由後端呼叫。 此提交重構了程式碼,以便在從給定代碼點檢索組合類別的所有位置中使用此函數。 作者:John Naylor 討論:https://postgr.es/m/CAFBsxsHUV7s7YrOm6hFz-Jq8Sc7K_yxTkfNZxsDV-DuM-k-gwg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/16c302f51235eaec05a1f85a11c1df04ef3a6785
根據新的 cryptohash 基礎架構重構 MD5 實作。 此提交大幅重組了樹中存在的 MD5 實作的各個方面。 首先,將 MD5 新增至 cryptohash.c 和 cryptohash_openssl.c 中可用的選項清單。 這表示如果使用 OpenSSL 進行建置,則 MD5 會使用 EVP,而不是 Postgres 長期使用的後備實作。 透過最近對 cryptohash 函數進行的重構工作,此變更非常簡單。 如果不使用 OpenSSL 進行建置,則會使用 src/common/ 內部的後備實作。 其次,這將樹中存在的 MD5 實作數量從兩個減少到一個,方法是將 KAME 實作從 pgcrypto 移至 src/common/,並移除 src/common/ 中存在的實作。 KAME 已經使用 pgcrypto 的 init/update/final 例程集進行結構化(請參閱原始 pgcrypto/md5.h),以與 OpenSSL 相容,因此將其移至 src/common/ 已證明是一個非常簡單的動作,不需要對每個例程的內部進行任何實際操作。 一些基準測試沒有顯示兩種實作之間有任何效能差距。 與用於 SHA2 的後備實作類似,MD5 的後備實作會移至 src/common/md5.c,並使用名為 md5_int.h 的內部標頭來進行 init、update 和 final 例程。 然後這會被 cryptohash.c 使用。 用於 MD5 雜湊密碼的原始例程會移至名為 md5_common.c 的單獨檔案中,該檔案也位於 src/common/ 中,旨在於所有 MD5 實作之間共享,作為與任何依賴它們的程式碼保持相容性的實用例程。 與 SHA2 變更類似,此提交已在 Linux 和 Windows 上,跨 HEAD 上支援的所有 OpenSSL 版本,無論有無 OpenSSL,都進行了一輪測試。 作者:Michael Paquier 審閱者:Daniel Gustafsson 討論:https://postgr.es/m/20201106073434.GA4961@paquier.xyz https://git.postgresql.org/pg/commitdiff/b67b57a966af0c4a9547ac6fff334d3c256d9c2a
修復 uuid-ossp 的編譯。 此模組依賴於 b67b57a 移除的 pgcrypto 的 md5.c。 此程式碼可以只使用新的 cryptohash 例程作為 MD5 的直接替換,而不是使用 pgcrypto 中的程式碼,因此讓我們進行此切換。 這也簡化了 uuid-ossp 的編譯。 這需要使用 --with-uuid 才能重現,我使用 e2fs 作為重現失敗並測試此提交的方法。 根據來自 buildfarm 成員 longfin、florican 和 sifaka 的報告。 討論:https://postgr.es/m/X9GToVd3QmWeNvj8@paquier.xyz https://git.postgresql.org/pg/commitdiff/525e60b7429925d09fce1b5aa0bc2f23cfe6dd18
Tom Lane 推送
pg_dump:重新組織 dumpBaseType()。 與 ed2c7f65b 和 daa9fe8a5 類似,透過僅保留一個在所有伺服器版本中都相同的查詢部分的副本來減少程式碼重複;並使條件控制盡可能少的程式碼量。 這是為了準備將另一個可傾印欄位新增至 pg_type。 https://git.postgresql.org/pg/commitdiff/04732962462ba99cf8f8bcf6ac83932867cc96a8
新增一些與陣列下標相關的回歸測試案例。 練習一些在現有回歸測試中永遠無法觸及的錯誤案例。 這部分是為了程式碼涵蓋率的原因,部分是為了在計劃進行通用下標變更之前記錄目前的行為。 此外,我注意到當我們為所有系統目錄 rowtype 新增陣列 (f7f70d5e2) 時,以及當我們在網域類型上新增陣列 (c12d570fa) 時,type_sanity 的檢查(用於驗證所有標準類型是否都具有陣列類型)從未擴充。 因此請執行此操作。 此外,由於查詢的預期輸出不為空,因此新增 ORDER BY 以確保結果保持穩定似乎是一個好主意。 https://git.postgresql.org/pg/commitdiff/0a665bbc43c5a678331fb1b1f44274500eba6563
文件:說明字串類型無法儲存 \0 (ASCII NUL)。此限制在提到字串字面值時有提及,但未明確指出這是一個普遍的限制,而不僅僅是查詢字串中的語法限制。根據未簽署的文件註解。討論:https://postgr.es/m/160720552914.710.16625261471128631268@wrigleys.postgresql.org https://git.postgresql.org/pg/commitdiff/9a2641911aeaa7f6523dc2a465088051d4c85901
文件:闡明 CREATE TABLE 會捨棄多餘的 UNIQUE 限制。SQL 標準規定不允許有多餘的 UNIQUE 限制,但我們很久以前就決定,拋出錯誤對使用者不太友善,所以我們只是捨棄多餘的。但文件對此並未非常清楚地說明,因為此行為僅針對 PRIMARY KEY 與 UNIQUE 之間的關係進行了說明,而沒有說明 UNIQUE 與 UNIQUE 之間的關係。趁此機會,我不禁對相鄰的關於 INCLUDE 選項的文字進行了一些複製編輯和標記修復。根據 Matthias vd Meent 的錯誤報告 #16767。討論:https://postgr.es/m/16767-1714a2056ca516d0@postgresql.org https://git.postgresql.org/pg/commitdiff/f2a69b352de1dffc534c4835010e736018aa94de
移除 operator_precedence_warning。這個 GUC 始終被設計為一個臨時解決方案,以協助尋找從 9.4 到 9.5 的遷移問題。既然所有早於 9.5 的分支都已不受支援,並且 9.5 也會在 v14 發布之前結束支援,那麼現在移除它似乎是可行的。這樣做可以移除 parse_expr.c 中數百行測試不佳的程式碼,這些程式碼在人們使用它時,一直是錯誤的溫床。討論:https://postgr.es/m/2234320.1607117945@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/a676386b58bf7cd2df81baa43eb1713d3a2ec055
告知 contain_leaked_vars 指派的 SubscriptingRefs 會洩漏變數。 array_get_element 和 array_get_slice 符合防洩漏標準,因為它們會針對偽造的下標靜默地傳回 NULL。但是 array_set_element 和 array_set_slice 會針對這種情況拋出錯誤,這使得它們顯然不是防洩漏的。contain_leaked_vars 顯然只考慮了前一種情況來編寫,因為它給出了指派的 SubscriptingRefs (nee ArrayRefs) 錯誤的答案。如果指派的 SubscriptingRefs 只能在 INSERT 和 UPDATE 目標清單中出現,而我們只關心 qual 運算式的防洩漏性,這將是一個實際的安全漏洞;因此錯誤的答案在實踐中不會發生。儘管如此,對於一個與安全性相關的問題來說,這仍然是一個相當不穩定的答案;也許將來有人會想詢問 tlist 的防洩漏性。因此,修復甚至反向修補這個更正似乎是明智的。(無論如何,對於即將推出的通用下標修補程式,我們都需要在此處進行一些變更,因為擴充功能可能會在是否拋出錯誤方面做出不同的權衡。Commit 558d77f20 試圖通過詢問 check_functions_in_node SubscriptingRef 是否包含洩漏的函數來為此奠定基礎;但現在 SubscriptingRef 的實現方法不是 SQL 可見的函數,無法標記為防洩漏或不防洩漏,因此這個想法失敗了。)反向修補到 9.6。雖然 9.5 存在相同的問題,但程式碼略有不同。在 9.5 剩下的短暫時間內,我們似乎不太可能引入任何實際錯誤,因此變更 9.5 的工作/風險/回報平衡並不吸引人。討論:https://postgr.es/m/3143742.1607368115@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/62ee70331336161cb44733b6c3e0811696d962aa
支援任意類型(而不僅僅是陣列)的下標。此修補程式將下標基礎結構通用化,以便任何資料類型都可以使用下標,只要它提供一個處理常式函數來定義其含義。傳統的可變長度 (varlena) 陣列都使用 array_subscript_handler()
,而現有支援下標的固定長度類型則使用 raw_array_subscript_handler()
。預計其他想要使用下標表示法的類型將定義自己的處理常式。(但此修補程式不提供任何此類新功能;它僅為它們奠定了基礎。)為此,將剖析器對下標的語義處理(包括強制轉換為所需的任何資料類型)移至處理常式提供的回呼方法中。在執行端,將 ExecEvalSubscriptingRef*
函數層替換為對回呼提供的執行常式的直接呼叫。(因此,此修補程式本質上不應導致任何新的執行階段額外負擔。實際上,有空間可以通過提供專門的執行常式來消除一些額外負擔。此修補程式在這方面做了一些工作,但可以做更多。)需要在各處進行額外的工作,以消除先前關於 SubscriptingRef 運算式節點的結果類型、排序規則等的硬連線假設;並消除關於下標值必須是整數的假設。這樣做的一個有用的副作用是,我們現在有一個不太含糊的機制來識別資料類型是否是“真正的”陣列:我們可以查看 pg_type.typsubscript 是否 == F_ARRAY_SUBSCRIPT_HANDLER
,而不是硬連線關於 typlen 的奇怪規則。為了使其完全可靠,我們必須禁止使用者定義的類型直接使用該處理常式;但似乎沒有充分的理由讓他們這樣做。此修補程式還消除了關於下標數量限制為 MAXDIM (6) 的假設,或者實際上具有任何硬連線的限制。該限制仍然適用於由 array_subscript_handler
或 raw_array_subscript_handler
處理的類型,但為了阻止對此常數的其他依賴,我已將其從 c.h 移至 utils/array.h。Dmitry Dolgov,由 Tom Lane、Arthur Zakirov、Peter Eisentraut、Pavel Stehule 多次審查 討論:https://postgr.es/m/CA+q6zcVDuGBv=M0FqBYX8DPebS3F_0KQ6OVFobGJPM507_SZ_w@mail.gmail.com 討論:https://postgr.es/m/CA+q6zcVovR+XY4mfk-7oNk-rF91gH0PebnNfuUjuuDsyHjOcVA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/c7aba7c14efdbd9fc1bb44b4cb83bedee0c6a6fc
允許 ALTER TYPE 更新現有類型的 typsubscript 值。如果我們希望允許現有的擴充功能資料類型在將來支援下標,這是必不可少的,因為對於擴充功能升級腳本來說,刪除和重新建立類型不是一件實際的事情,並且直接操作 pg_type 也不是一個好的解決方案。曾經有一些關於也允許更改 typelem 的討論,但不太清楚這是否是一個好主意,所以目前我暫時放棄了。討論:https://postgr.es/m/3724341.1607551174@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/8c15a297452e970d68529ee2ce6bd94d84598409
為“無法使用下標”錯誤訊息提供錯誤指標。Commit c7aba7c14 沒有新增此功能,但在更多地使用該功能後,我認為這會很有用。為了使這成為可能,重構 getSubscriptingRoutines(),以便呼叫者負責拋出任何錯誤。(在 clauses.c 中,我只是選擇了做出最保守的假設,而不是拋出錯誤。我們無論如何都不期望那裡會出現故障,因此錯誤訊息的程式碼空間將是一項糟糕的投資。)https://git.postgresql.org/pg/commitdiff/653aa603f501aa6e4865105a928cd13082ee7152
允許對 hstore 值進行下標操作。這基本上是一個練習,證明擴充模組可以新增下標能力。從 hstore 進行下標提取與現有的 "hstore -> text" 運算符沒有區別。下標更新似乎比使用 hstore 串聯的傳統更新方法更容易使用,但它並不是一個根本性的新能力。然而,由於它可以展示在不需要考慮巢狀容器物件的情況下,實現下標操作的最簡方法,因此這段程式碼可能具有一定的範例價值。討論:https://postgr.es/m/3724341.1607551174@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/0ec5f7e78231a621a1d96c4bfedc4a1849a6c6cc
Heikki Linnakangas 推送
Andres Freund 推送
jit:configure:顯式引用 'native' 組件。直到最近,'native' 都通過 'orcjit' 隱式包含,但 LLVM 11(尚未發布)中的一項更改刪除了許多此類間接組件引用。報告者:Fabien COELHO coelho@cri.ensmp.fr 報告者:Andres Freund andres@anarazel.de 報告者:Thomas Munro thomas.munro@gmail.com 作者:Andres Freund andres@anarazel.de 討論:https://postgr.es/m/20201201064949.mex6kvi2kygby3ni@alap3.anarazel.de Backpatch:11-,其中添加了 jit 支援 https://git.postgresql.org/pg/commitdiff/9543f0861b1d9b566be88edae21f24fb1377f45c
jit:更正生成的表達式評估函式的參數類型。clang 僅對純量布林值使用 'i1' 類型,而不對布林值的指標使用(因為指標可能指向更大的記憶體分配)。因此,布林值的指標需要 "storage" 布林值。沒有已知的由於此錯誤導致程式碼生成錯誤的情況,但似乎很有可能導致問題(例如,參見 72559438f92)。作者:Andres Freund 討論:https://postgr.es/m/20201207212142.wz5tnbk2jsaqzogb@alap3.anarazel.de Backpatch:11-,其中添加了 jit 支援 https://git.postgresql.org/pg/commitdiff/5da871bfa1ba41768ecd7786293d9b81dcf1b667
jit:通過 llvmjit_types.c 引用函式指標類型。手動建立函式類型容易出錯(參見 5da871bfa1b)且繁瑣。新增一個可以通過 llvmjit_types.c 引用函式指標類型的輔助函式,並轉換現有的手動建立實例。作者:Andres Freund andres@anarazel.de 審閱者:Tom Lane tgl@sss.pgh.pa.us 討論:https://postgr.es/m/20201207212142.wz5tnbk2jsaqzogb@alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/df99ddc70b971a991c5111a33f2f08bd7945d5c2
Fujii Masao 推送
增加 pg_stat_wal 更改的 catversion。01469241b2 中的疏忽。報告者:Andres Freund 討論:https://postgr.es/m/20201207185614.zzf63vggm5r4sozg@alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/4e43ee88c28b725bb63e27609c1a717138fc7f39
加速自動清理中重新檢查關聯是否需要清理或分析。在自動清理收集要清理或分析的關聯後,它會重新檢查每個關聯在實際執行之前是否仍然需要清理或分析。以前,這種重新檢查可能會帶來顯著的開銷,尤其是在有大量關聯的情況下。這是因為每次重新檢查都會強制刷新統計資料,並且刷新大量關聯的統計資料可能會導致大量開銷。有報告稱,這個問題導致自動清理 workers “卡住”在 table_recheck_autovac() 的緊密循環中,該循環會重新檢查關聯是否需要清理或分析。此提交通過使自動清理 worker 盡可能地重用先前讀取的統計資料進行重新檢查來加速重新檢查。然後,如果該“過時”的統計資料顯示關聯仍然需要清理或分析,則自動清理會刷新統計資料並再次執行重新檢查。基準測試表明,存在的關聯越多並且自動清理 workers 同時運行,此更改減少自動清理執行時間越多。例如,當有 20,000 個表並且 10 個自動清理 workers 正在運行時,基準測試表明該更改將自動清理的效能提高了三倍以上。另一方面,即使只有 1000 個表並且只有一個自動清理 worker 正在運行,基準測試也沒有顯示該更改導致任何大的效能衰退。最初的 POC 補丁由 Jim Nasby 提出。經過討論,我們使用了 Tatsuhito Kasahara 版本的補丁,該補丁使用了 Tom Lane 提出的方法。報告者:Jim Nasby 作者:Tatsuhito Kasahara 審閱者:Masahiko Sawada, Fujii Masao 討論:https://postgr.es/m/3FC6C2F2-8A47-44C0-B997-28830B5716D0@amazon.com https://git.postgresql.org/pg/commitdiff/e2ac3fed3b1c3281281eb530c220634030cd8084
Dean Rasheed 推送
改進使用多個擴展統計資料的 OR 子句的估算。在使用多個擴展統計物件估算 OR 子句時,將每個統計物件的每組子句的估算值視為彼此獨立。為每個統計物件產生的重疊估算不適用於其他統計物件涵蓋的子句。Dean Rasheed,由 Tomas Vondra 審閱。討論:https://postgr.es/m/CAEZATCW=J65GUFm50RcPv-iASnS2mTXQbr=CfBvWRVhFLJ_fWA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/88b0898fe35a5a0325fca21bd4f3ed6dffb364c1
改進使用擴展統計資料的 OR 下的 AND 的估算。以前,擴展統計資料僅處理 RestrictInfos 子句。但是,restrictinfo 機制不會為 OR 子句下的 AND 子句建立子 AND RestrictInfos。因此,教導擴展統計資料處理裸 AND 子句,尋找它們下面的相容 RestrictInfo 子句。Dean Rasheed,由 Tomas Vondra 審閱。討論:https://postgr.es/m/CAEZATCW=J65GUFm50RcPv-iASnS2mTXQbr=CfBvWRVhFLJ_fWA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/4f5760d4afa9423fe4d38e4cbec48bf5e793e7e5
Peter Eisentraut 推送
變更 get_constraint_index() 以使用 pg_constraint.conindid。它之前仍然使用掃描 pg_depend 的方式,而不是使用自新增以來的 conindid 欄位。由於現在它只是一個目錄查找包裝函式,且與 pg_depend 無關,因此將其從 pg_depend.c 移至 lsyscache.c。審閱人:Matthias van de Meent boekewurm+postgres@gmail.com 審閱人:Tom Lane tgl@sss.pgh.pa.us 審閱人:Michael Paquier michael@paquier.xyz 討論:https://postgres.tw/message-id/flat/4688d55c-9a2e-9a5a-d166-5f24fe0bf8db%40enterprisedb.com https://git.postgresql.org/pg/commitdiff/8b069ef5dca97cd737a5fd64c420df3cd61ec1c9
pg_dump:不要使用枚舉 (enum) 來定義位元遮罩值。這種用法意味著枚舉型別的值可能不是枚舉值之一。請像其他地方一樣使用巨集 (macros) 取代。討論:https://postgres.tw/message-id/14dde730-1d34-260e-fa9d-7664df2d6313@enterprisedb.com https://git.postgresql.org/pg/commitdiff/d2a2808eb444986d2fe716a48e21993329142f3d
Bruce Momjian 推送了 (pushed)
initdb:正確地按照字母順序排列 C 字串中的 getopt_long 選項。回溯修補 (Backpatch-through):9.5 https://git.postgresql.org/pg/commitdiff/39f3a9d2ffcaafeb8ff25e0dbe9f28a657efb48e
initdb:完成 getopt_long 字母排序。回溯修補 (Backpatch-through):9.5 https://git.postgresql.org/pg/commitdiff/d6abfdf84ef7c01d98d04f486fb467a4aec83804
Noah Misch 推送了 (pushed)
更正註解中的行為描述,並更正測試名稱。 https://git.postgresql.org/pg/commitdiff/73aae4522b35125c4f9a506842a69336ec5d0f1b
使用 HASH_BLOBS 於 xidhash。這在建置農場成員 sungazer 上導致了 BufFile 錯誤,並且可能發生 SIGSEGV。在大端 (big-endian) 系統上,達到這些症狀的條件更為頻繁。討論:https://postgr.es/m/20201129214441.GA691200@rfd.leadboat.com https://git.postgresql.org/pg/commitdiff/a1b8aa1e4eec520ed8f11c3d134a7a866358d39a
Bharath Rupireddy 發送了一個修補程式,允許在 REFRESH MATERIALIZED VIEW 規劃中使用平行模式。
James Coleman 發送了一個修補程式,允許平行 LATERAL 子查詢使用 LIMIT/OFFSET。
Peter Eisentraut 發送了一個 WIP 修補程式,以修正臨時安裝測試以適用於 macOS SIP。
Pavel Stěhule 發送了另一個修訂版本的修補程式,用於新增 unistr 函數,該函數評估各種形式的 Unicode 逸出字元。
Bruce Momjian 發送了另外兩個修訂版本的修補程式,以實作 PostgreSQL 的金鑰管理。
Justin Pryzby 發送了另外兩個修訂版本的 pg_dump 修補程式,該修補程式使其輸出 ALTER TABLE..ATTACH PARTITION 的個別「物件」。
Peter Eisentraut 發送了一個修補程式,將 elog(LOG) 呼叫轉換為適當的 ereport()。
David Zhang 發送了另外兩個修訂版本的修補程式,以新增資料表存取方法作為 pgbench 的選項。
Ajin Cherian 和 Peter Smith 交換了修補程式,以將雙階段交易新增到邏輯解碼。
Amit Langote、Kyotaro HORIGUCHI 和 Keisuke Kuroda 交換了修補程式,以修正一個錯誤,該錯誤表現為具有外部索引鍵的分割資料表上的大量記憶體消耗。
Dean Rasheed 發送了另外兩個修訂版本的修補程式,以使 OR 子句使用擴充統計資料。
Peter Eisentraut 發送了兩個修訂版本的修補程式,以移除已棄用的 SELECT INTO 的不必要使用,並闡明參考頁面上 SELECT INTO 的狀態。
Takayuki Tsunakawa 發送了兩個修訂版本的修補程式,以修正一個錯誤,該錯誤表現為在分割資料表上執行 ALTER TABLE SET LOGGED/UNLOGGED 時無聲無息地無效。
Takamichi Osumi 發送了另一個修訂版本的修補程式,以新增一個選項來停用 WAL 記錄以加速資料載入。
Julien Rouhaud 發送了一個修補程式,以新增一個新的 COLLATION 選項到 REINDEX,可用於過濾要重建的索引清單。這在系統定序 (collation) 獲得更新時非常有用。
Daniel Gustafsson 發送了另一個修訂版本的修補程式,以支援在正在執行的叢集中啟用/停用頁面總和檢查碼 (checksum)。
Peter Eisentraut 發送了一個修補程式,以移除不必要的語法符號。
Thomas Munro 發送了一個 WIP 修補程式,以使用 Github Actions 進行 CI。
Bharath Rupireddy 發送了另外三個修訂版本的修補程式,以新增兩個新函數:pg_terminate_backend(pid, wait, timeout),它終止並等待或超時給定的後端,以及 pg_wait_backend(pid, timeout),它檢查具有給定 PID 的後端是否存在並等待或超時直到它消失。
Pavel Borisov 發送了另外兩個修訂版本的修補程式,以實作覆蓋 SPGiST 索引。
Jeff Davis 發送了一個修補程式,以確保格式與 walsender 中的類型一起發送。
Craig Ringer 發送了另一個修訂版本的修補程式,以使用新的 GUC debug_clobber_cache_depth 取代 CLOBBER_CACHE_ALWAYS。
Amit Kapila 和 Peter Smith 交換了修補程式,以加速邏輯複製的資料表同步中的吞吐量 (throughput)。
Kirk Jamison 發送了另外兩個修訂版本的修補程式,以防止在復原期間使 smgrextend() 中的區塊失效、在 smgrnblocks() 中新增一個布林參數用於快取區塊,以確保我們從 smgrnblocks 傳回可靠的值、透過避免在關聯性 (relation) 夠小,或是要失效的區塊總數低於完整掃描的閾值時掃描整個緩衝池,使復原期間的 DropRelFileNodeBuffers() 更有效率,並透過在關聯性夠小,或是要失效的區塊數量低於完整掃描閾值時,跳過復原期間耗時的整個緩衝池掃描,使 DropRelFileNodesAllBuffers() 在復原中更有效率。
Tomáš Vondra 發送了另外兩個修訂版本的修補程式,以使在表達式上使用擴充統計資料成為可能。
Nathan Bossart 和 Michaël Paquier 交換了修補程式,以將檢查點 (checkpoint)/重新啟動點 (restartpoint) 狀態新增到 ps 顯示。
Laurenz Albe 發送了另外兩個修訂版本的修補程式,以將會話統計資料新增到 pg_stat_database。
Julien Rouhaud 發送了兩個修訂版本的修補程式,以將布林 toplevel 欄位新增到 pg_stat_statements。
Tom Lane 發送了一個修補程式,以移除 operator_precedence_warning。
Antonin Houska 發送了另一個修訂版本的修補程式,以使用還原日誌 (undo logs) 清理孤立檔案。
Joel Jacobson 發送了三個修訂版本的修補程式,以新增對 leading/trailing bytea trim()ing 的支援。
David Rowley 發送了另外兩個修訂版本的修補程式,以允許 estimate_num_groups() 回傳關於估計的更多詳細資訊、允許 simplehash.h 的使用者執行直接刪除、新增 Result Cache 執行器節點、移除 nodeResultCache.c 中的一些程式碼重複,並使用 Result Cache 節點來快取子計畫的結果。
Greg Nancarrow 發送了另外兩個修訂版本的修補程式,以新增新的組態參數 "disable_event_triggers",並新增新的 "client_connection" 事件,支援 "logon trigger"。
Bharath Rupireddy 發送了另一個修訂版本的修補程式,以新增 postgres_fdw 函數來捨棄快取的連線、新增 keep_connections GUC 到 postgres_fdw 以避免快取連線,並新增一個 postgres_fdw 伺服器級別選項 keep_connection 以不快取連線。
Peter Eisentraut 送出一個 patch,將 bitmap flag 的定義變更為位元平移 (bit-shifting) 風格。
Nathan Bossart 送出 checkpoint 加上 SPREAD 選項的 patch 的另外三個修訂版本。
Justin Pryzby 送出一個 patch,修改 pg_upgrade/test.sh,使其能夠測試從 v11 升級,並新增一個 pg_upgrade 測試來驗證二進位相容性。
Amit Langote 送出 ForeignScanState.resultRelInfo 延遲設定的 patch 的另一個修訂版本、在所有 result relation 中設定 ResultRelInfo.ri_PartitionRoot,而不僅僅是 tuple routing 的目標,並延遲初始化 result relation 資訊。
Vigneshwaran C 送出一個 patch,將一些與 copy 相關的資料結構新增到 typedefs.list,這些結構是在將 copy 分割成較小的檔案時新增的。
Peter Eisentraut 送出一個 patch 的另一個修訂版本,將 primary key 和 unique constraint 新增到系統目錄。
Vigneshwaran C 送出一個 patch 的另一個修訂版本,使其能夠使用多個 worker 執行 COPY FROM。
Andrey Borodin 送出兩個 patch 的修訂版本,將函數新增到 'pageinspect' 以檢查 GiST 索引。
Bharath Rupireddy 送出三個 patch 的修訂版本,使其能夠在 CTAS 中使用平行插入,並對此情況下的 tuple 成本進行一些調整。
Stephen Frost 送出兩個 patch 的修訂版本,將預設的 checkpoint_completion_target 變更為 0.9。
Greg Nancarrow 送出三個 patch 的修訂版本,使其能夠平行化 INSERT ... SELECT 的部分。
Rémi Lapeyre 送出一個 patch 的另一個修訂版本,將 header 支援新增到 "COPY" 文字格式。
Alexander Korotkov 送出一個 patch 的另一個修訂版本,以支援 multirange。
Takamichi Osumi 送出一個 patch 的另一個修訂版本,以實作更強大的 archive recovery 保護措施,以確保它不會遺漏資料。
Vigneshwaran C 送出一個 patch 的另一個修訂版本,以列印屬於當前 instance 的 postgres 程序的 backtrace。
Gilles Darold 送出一個 patch,在 XactCommand 層級新增三個 hook:start_xact_command_hook,在 start_xact_command() 結束時呼叫;finish_xact_command,在 CommitTransactionCommand() 之前在 finish_xact_command() 中呼叫;以及 abort_current_transaction_hook,在 AbortCurrentTransaction() 結束時遇到錯誤後呼叫。
Masahiro Ikeda 送出兩個 patch 的修訂版本,將 WAL write/fsync 統計資料新增到 pg_stat_wal 檢視表中。
Denis Smirnov 送出一個 PoC patch,用於重構 AM analyse API。
Bharath Rupireddy 送出一個 patch,新增 Multi 和 Single Inserts 的表格存取方法 (Access Methods)。
Andrey Borodin 和 Gilles Darold 交換 patch,以便在 GetMultiXactIdMembers 中使用 shared lock 而不是 exclusive lock 用於 offsets 和 members,使 MultiXact 本地快取大小可配置,新增一個 condition variable 以在角落情況下等待下一個 MultXact offset,並新增 GUC 以調整 MultiXact SLRUs。
Hou Zhijie 送出一個 patch 以修復關於 generate_gather_paths 的拼字錯誤。
Shinya Kato 送出一個 patch 以改進 psql 對於 CLOSE、FETCH 和 MOVE 的 tab completion。
Michaël Paquier 送出一個 patch,旨在修復一個 bug,該 bug 表現為 check-world -jnn 中偶爾出現的 tablespace.sql 失敗,方法是安排 pg_regress 清理測試 tablespace 目錄,或者在所有平台上創建它(如果不存在)。
Kyotaro HORIGUCHI 送出一個 patch 以新增一個新的測試來檢測複製錯誤,並確保 WalSndSegmentOpen 在發送歷史時間軸執行物理複製時追蹤時間軸切換。
Andrey Borodin 送出一個 patch 的另一個修訂版本,使其能夠禁止取消同步提交 (syncronous commit)。
Zeng Wenjing 送出一個 patch 的另一個修訂版本,以實作全域暫存表。
Dilip Kumar 送出一個 patch 的另一個修訂版本,以實作表格的自訂壓縮方法,包括在執行時變更它們的方法。
Fujii Masao 送出一個 patch 的另一個修訂版本,將 stats_reset time 新增到 pg_stat_statements。
Justin Pryzby 送出一個 patch 的另一個修訂版本,讓 make pg_ls_*()
顯示目錄和共享檔案集。
Justin Pryzby 送出一個 patch,將 INCLUDING ACCESS METHOD 選項新增到 CREATE TABLE LIKE。
Chen Hujaun 送出一個 patch 的另一個修訂版本,使其能夠壓縮 OLTP 的頁面。
Andrey Borodin 送出一個 patch 的另一個修訂版本,透過將一些 macro-functions 轉換為常規函數並使用更緊湊的 hash table 以及其他一些最佳化,來加速 pglz 壓縮程式碼。
Atsushi Torikoshi 送出一個 patch 的另一個修訂版本,以實作 pg_get_target_backend_memory_contexts(),它可以收集任意後端程序的記憶體上下文。
Peter Geoghegan 送出一個 patch 的另一個修訂版本,以傳遞 "logically unchanged index" 提示,並使用相同的方法來新增由下而上的索引刪除。
Dilip Kumar 送出一個 patch 的另一個修訂版本,以確保 pg_is_wal_replay_paused 等待 recovery 暫停。
Daniel Gustafsson 送出一個 patch,將 TLS 協商中的資訊回呼提前以捕獲連接。用於在連接設定期間檢索狀態變更資訊的回呼僅在連接幾乎設定完成時才安裝,因此沒有提供太多資訊。這也擴展了回呼,並列印有關狀態變更的詳細資訊。
Peter Eisentraut 送出一個 patch,允許在正常的 GRANT 和 REVOKE 語句中使用 GRANTED BY 子句,依照 SQL 標準。
Stephen Frost 送出一個 patch,旨在修復一個 bug,該 bug 表現為 autovacuum worker 在 postmaster 死亡時不會立即退出,方法是用 WaitLatch 替換一些系統呼叫。
Bharath Rupireddy 送出一個 patch,如果在 CTAS/CMV 中關係已存在,則快速失敗。
Lukas Meisegeier 送出一個 patch,為基於 SNI 的負載平衡新增 ssltermination 參數。
Amit Kapila 送出一個 patch,透過對每個 chunk 使用 popcount64 並避免對 pg_popcount32/64() 的呼叫使用函數指標反參考,來加速對 tsvectors 的兩個 gist index 簽名的 xor。
Kyotaro HORIGUCHI 送出一個 patch 的另一個修訂版本,以重新設計統計資料收集器,以使用共享記憶體而不是檔案作為臨時儲存。
Kyotaro HORIGUCHI 送出一個 patch 以修復 pg_shmem_allocations 的文件,提到它對於匿名分配為 NULL。
Peter Eisentraut 送出一個 patch 以清理一個古老的測試風格。測試的編寫方式類似於 SELECT '' AS two, i.* FROM INT2_TBL
,其中第一列指示預期的結果列數。為了清理此問題,刪除所有這些額外欄位。
Tom Lane 送出兩個 patch 的修訂版本,以重新設計 PL/pgsql 的賦值實作,以使用核心中的更多內容。
Peter Eisentraut 和 Justin Pryzby 交換 patch,允許 CLUSTER、VACUUM FULL 和 REINDEX 在執行時變更 tablespace。