PostgreSQL 每週新聞 - 2021年1月24日

發布於 2021-01-25,作者:PWN
PWN

PostgreSQL 每週新聞 - 2021年1月24日

本週人物:https://postgresql.life/post/marc_linster/

PostgreSQL 產品新聞

sqlite_fdw 1.3.1 已發布。https://github.com/pgspider/sqlite_fdw

InfluxDB fdw 0.3 已發布 https://github.com/pgspider/influxdb_fdw

griddb_fdw 1.3 已發布。https://github.com/pgspider/griddb_fdw

pg_activity 2.0.0,一個類似 top 的 PostgreSQL 伺服器活動監控應用程式,已發布。https://github.com/dalibo/pg_activity/releases/tag/v2.0.0

一月份的 PostgreSQL 工作

https://archives.postgresql.org/pgsql-jobs/2021-01/

PostgreSQL 新聞

Planet PostgreSQL: https://planet.postgresql.org/

本週的 PostgreSQL 每週新聞由 David Fetter 撰寫

請在太平洋標準時間 (PST8PDT) 星期日下午 3:00 前將新聞和公告提交至 david@fetter.org。

已應用的修補程式

Tomáš Vondra 推送

Heikki Linnakangas 推送

Michaël Paquier 推送了

  • 重構 CLUSTER、REINDEX 和 VACUUM 的選項處理。此舉延續了 b5913f6 中所做的工作。這些指令的所有選項都改為使用十六進位值,而不是枚舉,以降低引入新選項時產生相容性錯誤的風險。每個選項集都移至一個新的結構中,該結構可以用更多非布林選項來擴充(VACUUM 已經是這種情況)。REINDEX 的程式碼經過重組,因此手動 REINDEX 指令會透過 utility.c 中的單一常式,就像 VACUUM 一樣,以簡化當指令需要經過多個交易時的選項參數分配處理。這可用作與這些指令相關的未來修補程式的基礎架構,包括重新索引篩選和表空間支援。根據與下面提到的人員以及 Alvaro Herrera 和 Peter Eisentraut 的討論。作者:Michael Paquier、Justin Pryzby 審閱人:Alexey Kondratov、Justin Pryzby 討論:https://postgr.es/m/X8riynBLwxAD9uKk@paquier.xyz https://git.postgresql.org/pg/commitdiff/a3dc926009be833ea505eebd77ce4b72fe708b18

  • 修正 ALTER DEFAULT PRIVILEGES 中重複物件的問題。在此指令中指定重複的物件會導致 pg_default_acl 中的唯一約束違規或「tuple already updated by self」錯誤。與 GRANT/REVOKE 類似,在每次子指令處理後遞增指令 ID,以允許此案例透明地運作。新增了一個迴歸測試,方法是調整 privileges.sql 的現有查詢之一來強調此案例。回報人:Andrus 作者:Michael Paquier 審閱人:Álvaro Herrera 討論:https://postgr.es/m/ae2a7dc1-9d71-8cba-3bb9-e4cb7eb1f44e@hot.ee 向後移植:9.5 https://git.postgresql.org/pg/commitdiff/21378e1fefedcaed3d855ae7aa772555295d05d6

  • 為 DROP OWNED BY 新增預設 ACL 的迴歸測試。DROP OWNED BY 有一個特定的程式碼路徑,用於在清理現有測試沒有涵蓋的共享依賴項時,移除儲存在 pg_default_acl 中的 ACL。在深入研究 21378e1 修復的錯誤時發現了此問題。由於 ALTER DEFAULT PRIVILEGES 會影響在預設權限可見時建立的所有物件的 ACL,因此測試使用交易回滾來隔離測試,並避免與並行執行的其他會話產生任何影響。審閱人:Álvaro Herrera 討論:https://postgr.es/m/YAbQ1OD+3ip4lRv8@paquier.xyz https://git.postgresql.org/pg/commitdiff/a36dc04d424a6bfa03ee2cf75c85a6b7f9697e70

  • 將 MSVC 腳本中的「cl /?」切換為「cl /help」以進行平台偵測。如果在真實或虛擬磁碟機上執行「cl /?」,則會產生不同的輸出(可以使用簡單的 subst 指令進行設定),如果在虛擬磁碟機上建置,則會導致 MSVC 腳本發生錯誤,因為無法偵測要使用的平台。相反地,如果在真實或虛擬磁碟機上使用「cl /help」,則會產生一致的輸出。改為使用「/help」可讓編譯在虛擬磁碟機上運作,只要程式碼儲存庫的頂部是磁碟機的一部分,而不會影響真實磁碟機上的建置。回報人:Robert Grange 作者:Juan José Santamaría Flecha 討論:https://postgr.es/m/16825-c4f104bcebc67034@postgresql.org https://git.postgresql.org/pg/commitdiff/733d670073efd2c3a9df07c225006668009ab793

  • 將 SSL 資訊回呼提前以擷取更多資訊。用於檢索連線設定期間的狀態變更資訊的回呼僅在連線幾乎設定完成時才安裝,因此沒有提供太多資訊,並且錯過了與處理 SSL 物件內的狀態變更相關的所有詳細資訊。此舉還使用 SSL_state_string_long() 擴充了回呼,以列印有關狀態變更的更多資訊。同時,修正了一些錯誤地引用 fe-secure.c 中回呼及其先前位置的註解。作者:Daniel Gustafsson 討論:https://postgr.es/m/232CF476-94E1-42F1-9408-719E2AEC5491@yesql.se https://git.postgresql.org/pg/commitdiff/af0e79c8f4f4c3c2306855045c0d02a6be6485f0

  • 在加密雜湊基礎結構中引入 SHA1 實作。透過此提交,當使用 OpenSSL 建置後端時,SHA1 會透過 OpenSSL 提供的 EVP 實作,並使用 KAME 作為備用實作,KAME 位於 pgcrypto 中,並且已經針對與一組 init、update 和 final 常式整合而進行了塑形。已重新命名結構和常式,以使事物與 MD5 和 SHA2 的備用實作保持一致。uuid-ossp 長期以來一直使用 pgcrypto 的捷徑來取得 SHA1 的副本(如果需要)。這是根據 ./configure 中的建置選項而建置的,因此這會清理一些程式碼並移除 pgcrypto 和 uuid-ossp 之間的建置依賴項。請注意,這將有助於重構 HMAC,因為 pgcrypto 提供了使用 MD5、SHA1 或 SHA2 的選項,因此僅缺少第二個選項才能使其成為可能。作者:Michael Paquier 審閱人:Heikki Linnakangas 討論:https://postgr.es/m/X9HXKTgrvJvYO7Oh@paquier.xyz https://git.postgresql.org/pg/commitdiff/a8ed6bb8f4cf259b95c1bff5da09a8f4c79dca46

Fujii Masao 推送了

Peter Eisentraut 推送了

Magnus Hagander 推送

Robert Haas 推送

Tom Lane 推送

Bruce Momjian 推送

Amit Kapila 推送

Thomas Munro 推送

待審核的補丁

Craig Ringer 發送了一個補丁,以交叉引用信號處理邏輯的註釋。

Joel Jacobson 發送了一個補丁,以實現 catalog_oidjoins.pl,它從 catalogs.sgml 中解析目錄引用。

Bertrand Drouvot 發送了另一個修訂版的補丁,以在備用伺服器上啟用最簡邏輯解碼。

Justin Pryzby 發送了另一個修訂版的補丁給 g_dump:使 CLUSTER ON 成為一個單獨的 dump 物件,因為它需要在任何子索引還原和附加之後還原。

John Naylor 發送了另一個修訂版的補丁,使其可以在更廣泛的時間間隔內截斷時間戳記。

Robert Haas 發送了一個補丁來移除 CheckpointLock。

Craig Ringer 發送了一個補丁來新增 ProcessInterrupts_hook。

Atsushi Torikoshi 發送了一個補丁,修復了一個角落案例,其中 TOAST 條件對於列大小而言是錯誤的。

Kyotaro HORIGUCHI 和 Noah Misch 交換了補丁,以測試快照是否過舊以及 wal_level=minimal,避免使用 RelationNeedsWAL 來識別關係持久性,並在跳過 WAL 時保持 page-LSN 更新。

Heikki Linnakangas 發送了另外兩個修訂版的補丁,以為了安全和清晰起見,移動了一些 ResourceOwnerEnlarge() 調用,使 resowners 更容易擴展,並使 hash_resource_elem 在有 64 位輸入的情況下更好地工作。

Michail Nikolaev 發送了一個補丁,以在備用伺服器上添加對 LP_DEAD 提示位元建立索引的完整支援。

Vigneshwaran C 發送了另一個修訂版的補丁,以新增對 PUBLICATION 的 schema 層級支援。

Masahiko Sawada 發送了另外兩個修訂版的補丁,以引入一個 IndexAM API,用於選擇索引 vacuum 策略,基於相同策略選擇索引 vacuum 策略,並且如果索引沒有增長,則跳過 B-tree bulkdelete。

Craig Ringer 發送了一個補丁,以添加更多關於在擴展程式碼中 (不) 該做什麼的文件。

Atsushi Torikoshi 發送了另外兩個修訂版的補丁,以向 pg_lock_status 視圖和支援函數新增 waitstart 欄位。

Heikki Linnakangas 和 Jürgen Purtz 交換了補丁,以在教學文件中新增一個關於架構的章節。

Justin Pryzby 和 Aleksey Kondratov 交換了補丁,使 REINDEX、CLUSTER 和 VACUUM FULL 能夠即時變更表空間。

Pavel Stěhule 發送了另外三個修訂版的補丁,以實現 schema 變數。

Peter Smith 發送了另外三個修訂版的補丁,使其可以使用多個後台工作進程進行 tablesync。

Dilip Kumar 發送了另外三個修訂版的補丁,使 pg_is_wal_replay_paused 返回恢復暫停的狀態。

Amit Langote 發送了五個修訂版的補丁,使 get_partition_for_tuple() 可在更廣泛的上下文中使用,並使用相同的方法來避免為某些參考完整性檢查使用 SPI 介面。

Takamichi Osumi 發送了另一個修訂版的補丁,以加強對歸檔恢復的保護措施。

Bruce Momjian 發送了另一個修訂版的補丁,以添加金鑰管理。

Buzhen (步真) 發送了一個補丁,將掃描有效快取的策略從 FIFO 策略更改為 LRU。

Kyotaro HORIGUCHI 發送了另一個修訂版的補丁,使其可以指定 CRL (憑證撤銷列表) 目錄,使其與 X509_STORE_load_locations 的實現保持一致。

Mark G 發送了一個補丁,使 heapam.c 中的 gaps 陣列成為靜態的。

Jie Zhang 發送了一個補丁,使 pg_dump -?/--help 的輸出更清晰易讀。

Michaël Paquier 發送了一個補丁,在 ilist.h 和 bufpage.h 的內聯函數中繪製一些 PG_USED_FOR_ASSERTS_ONLY。

David Fetter 發送了另一個修訂版的補丁,將 popcount (count_set_bits) 公開給 SQL。

Greg Sabino Mullane 發送了另一個修訂版的補丁,通過提供輸入參數類型來幫助 psql 的 \df 在可能的函數中進行選擇。

Justin Pryzby 發送了另一個修訂版的補丁,以實現 CREATE TABLE (LIKE .. INCLUDING ACCESS METHOD)。

Li Japin 發送了一個補丁,使用布林值陣列而不是字元指標來表示 SPI 中參數的 NULL 性。

Julien Rouhaud 發送了另一個修訂版的補丁,以將 queryId 新增到 pg_catalog.pg_stat_activity 視圖。

Stephen Frost 發送了另外兩個修訂版的補丁,將 checkpoint_completion_target 的預設值更改為 0.9。

Dilip Kumar 發送了另一個修訂版的補丁,以實現表的自訂壓縮方法。

Stephen Frost 和 Craig Ringer 交換了補丁,以新增一個文件部分,用於已過時和已重新命名的函數和設定。

Vigneshwaran C 發送了另一個修訂版的補丁,使其可以列印 postgres 進程的回溯,這些進程是調用 pg_print_callstack() 的實例的一部分。此功能由 GUC 保護。

Dmitry Dolgov、Pavel Stěhule 和 Dian M Fay 交換了補丁,以將通用類型下標基礎結構用於 JSONB。

Daniel Gustafsson 和 Jacob Champion 交換了補丁,以支援 NSS 作為 libpq TLS 後端。

Daniel Gustafsson 發送了另一個修訂版的補丁,以支援在執行中的叢集中啟用/停用校驗和。

Tom Lane 發送了一個補丁,以修復檢測 OSX 的 pwritev 支援。

Hou Zhijie 發送了另一個修訂版的補丁,為 eval_const_expressions 添加一個 nullif 案例。

Masahiro Ikeda 發送了一個補丁,重構了全域統計訊息的變數名稱,以清楚表明它們是訊息。

Peter Smith 發送了另一個修訂版的補丁,以實現兩階段事務的邏輯解碼。

Justin Pryzby 發送了另一個修訂版的補丁,使 INSERT SELECT 使用 BulkInsertState。

Alexander Korotkov 提交了另一個修補程式版本,以修正片語搜尋和多詞位符記之間的不順暢之處。

Alexander Korotkov 提交了一個修補程式,使 json ** 運算子之後的所有內容都使用嚴格模式,因為寬鬆模式會產生意外的結果。

Nikita Glukhov 和 Erik Rijkers 交換了修補程式,以根據標準實作 SQL/JSON 函式。

Anastasia Lubennikova 提交了另兩個修補程式版本,旨在修正一個錯誤,該錯誤表現為 pg_upgrade 在具有非標準 ACL 時失敗,方法是新增一些額外的檢查來涵蓋這種情況。

David Rowley 提交了一個修補程式,以正確計算使用 heap_setscanlimits() 反向掃描頁面。

Nikita Glukhov 提交了另一個修補程式版本,以根據標準實作 JSON_TABLE。

Kyotaro HORIGUCHI 提交了另一個修補程式版本,以重構統計資料收集器,使其使用共享記憶體而不是檔案來進行暫時儲存。

Julien Rouhaud 提交了另一個修補程式版本,以新增一個新的 COLLATION 選項到 REINDEX。

David Rowley 提交了另一個修補程式版本,使其可以掃描 TIDs 的範圍,而無需掃描整個關係,就像循序掃描一樣。

Kyotaro HORIGUCHI 提交了另一個修補程式版本,以新增一個新的 pg_waitlsn() 函式。

Daniel Gustafsson 提交了一個修補程式,以將特定於程式庫的 SSL 測試設定重構到一個獨立的模組中,以便支援 OpenSSL 以外的 TLS 實作。

Masahiko Sawada 提交了一個修補程式,在 lazy_tid_reaped() 中的 bsearch() 之前,新增了對編碼 itermpointers 的邊界檢查,並內聯了 lazy_tid_reaped()。

Pavel Stěhule 提交了三個修補程式版本,以新增一個 CALL 的計畫快取。

Amul Sul 提交了另一個修補程式版本,以實作 ALTER SYSTEM READ {ONLY,WRITE}。

Matthias van de Meent 提交了一個修補程式,以更新 postgres_fdw,使其在 IMPORT SCHEMA LIMIT TO 中命名時匯入分割區。

Vigneshwaran C 提交了一個修補程式,以在 CREATE/ALTER SUBSCRIPTION 期間識別發布者遺失的發布。

Álvaro Herrera 提交了另一個修補程式版本,以新增追蹤功能到 libpq。

Peter Eisentraut 和 Tom Lane 交換了修補程式,以新增主鍵到系統目錄。

Denis Laxalde 提交了一個修補程式,以在 pg_upgrade 中停用伺服器啟動期間的背景工作程序。

Greg Nancarrow 提交了另一個修補程式版本,使其可以並行執行 INSERT (INTO ... SELECT ...)。

Álvaro Herrera 提交了另一個修補程式版本,以新增 libpq 的批次/管線支援。

Andrey Borodin 提交了另一個修補程式版本,以重新組織 pglz 壓縮程式碼以提高效率,使其速度提高了約 1.4 倍。

Yugo Nagata 提交了另一個修補程式版本,以實作具體化檢視表的增量維護。

Tomáš Vondra 提交了另兩個修補程式版本,以實作表達式的擴展統計資訊。

Heikki Linnakangas 提交了另一個 pg_rewind 的修補程式版本,使其根據新的大小擷取小型檔案。

Tomáš Vondra 提交了另一個修補程式版本,使其可以在可用的情況下,將非揮發性記憶體用於 WAL 緩衝區。

Heikki Linnakangas 提交了另一個修補程式版本,以重構 LogicalTapeSet/LogicalTape 介面,使所有磁帶函式(例如 LogicalTapeRead 和 LogicalTapeWrite)都採用 LogicalTape 作為參數,而不是 LogicalTapeSet+磁帶編號,並將舊的多相合併演算法替換為簡單的平衡 k 路合併,並修正磁帶讀取緩衝區的大小。

Tomáš Vondra 提交了另一個修補程式版本,以實作 BRIN 多範圍索引。

Masahiro Ikeda 提交了另兩個修補程式版本,以新增欄位到 pg_stat_wal 檢視表來追蹤 WAL I/O 活動,以及一個新的 GUC,track_wal_io_timing,以啟用收集,因為開銷可能很大。

Jim Finnerty 提交了另一個修補程式版本,以準備實作 64 位元 xid,方法是新增一種方法來擁有 64 位元 GUC,使用 XID_FMT 來格式化 xid,並使用 ClogPageNumber 代替 int 以確保類型安全。

Michaël Paquier 提交了另一個修補程式版本,以將 HMAC 實作重構到 common/。

Amit Kapila 和 Bharath Rupireddy 交換了修補程式,以修正 ALTER PUBLICATION...DROP TABLE 的行為,方法是在 RelationSyncEntry 失效時初始化 pubactions。

Mark Rofail 提交了另三個修補程式版本,使其可以檢查陣列的每個元素是否符合(一般而言)不同表格中的主鍵。

Thomas Munro 提交了另一個修補程式版本,以在 pg_test_fsync 中使用 pg_pwrite()。

Tomáš Vondra 提交了一個修補程式來測試 TOAST 可見性。

Andy Fan 提交了一個修補程式來建置一些隱含的修剪 quals,以擴展計畫時間分割區修剪和初始化分割區修剪的使用案例。