pg_dbms_job
1.1.0,一個用於建立、管理和使用 Oracle 風格 DBMS_JOB 排程任務的擴充套件,已發布。
dbForge Data Compare for PostgreSQL v3.4 已發布
pgmoneta 0.5.0,一個用於 PostgreSQL 的備份和還原系統,已發布
pgspider_ext
,一個基於 PostgreSQL 外部資料包裝器建立分散式資料叢集引擎的擴充套件,已發布。
psycopg2 3.0.0 beta 1,一個用於 PostgreSQL 的 Python 連接器,已發布。
postgresql-wheel,一個 Python 套件,包含一個完整的已編譯 PostgreSQL 伺服器在一個單一的 pip 可安裝檔案中,已發布
https://archives.postgresql.org/pgsql-jobs/2021-09/
Planet PostgreSQL:https://planet.postgresql.org/
PostgreSQL 每週新聞由 David Fetter 本週為您帶來
請在太平洋標準時間下午 3:00 前(週日)提交新聞和公告至 david@fetter.org。
Michaël Paquier 推送
在 psql 中為 ALTER TABLE ADD 新增更多 tab 鍵完成支援。 這包括偵測各種約束類型的新模式,並為主要索引鍵和唯一約束表的唯一索引新增 USING INDEX。 作者:Dagfinn Ilmari Mannsåker 討論:https://postgr.es/m/87bl6ehhpl.fsf@wibble.ilmari.org https://git.postgresql.org/pg/commitdiff/d3fa87657860a50643118c682cdbf53f508a3fab
重構 pg_basebackup 的 WAL 串流程式碼中 IDENTIFY_SYSTEM 的一種用法。 0c013e0 已經做了一個大型重構,以統一所有使用複寫命令的程式碼路徑,但忘記了一個程式碼路徑,該路徑執行 WAL 串流,檢查連接到的叢集的有效性,使用 IDENTIFY_SYSTEM。 有一個通用的例程能夠處理它,所以在這個程式碼路徑中使用它。 這會影響 pg_receivewal 和 pg_basebackup。 作者:Bharath Rupireddy 討論:https://postgr.es/m/CALj2ACVKKYUMC8GE72Y7BP9g1batrrq3sEwUh+1_i2krWZC_2Q@mail.gmail.com https://git.postgresql.org/pg/commitdiff/99709c9b908eba99ecd787c4dc757f71edd98d87
在 psql 中為 ALTER TABLE ADD [COLUMN] 之後的資料類型新增 tab 鍵完成功能。 這允許尋找可用於建立新欄位的資料類型,完成 d3fa876。 作者:Dagfinn Ilmari Mannsåker 討論:https://postgr.es/m/87h7f7uk6s.fsf@wibble.ilmari.org https://git.postgresql.org/pg/commitdiff/f2bbadce6b5052337a11a33ea6bd8d8aebe2610a
新增 PostgresNode::command_fails_like()。 這可用於測試命令失敗,以及與節點相關聯的一些預設連線參數,並結合檢查預期的錯誤模式。 這個例程將由即將到來的未來修補程式使用,但也可以插入到一些現有的測試中。 從同一作者的較大修補程式中提取。 作者:Ronan Dunklau 討論:https://postgr.es/m/5742739.ga3mSNWIix@aivenronan https://git.postgresql.org/pg/commitdiff/de1d4fef71cb00370aa5f794fe05355c1d063aea
重構 elog.c 中 SQLSTATE 到字串的一個轉換。 d46bc44 中引入了 unpack_sql_state(),用於重構 SQLSTATE 解包為字串,但它忘記了一個程式碼路徑,當向客戶端傳送錯誤報告時,可以使用它。 這會更改程式碼以也使用 unpack_sql_state(),從而簡化程式碼。 作者:Peter Smith 討論:https://postgr.es/m/CAHut+PuYituuD1-VVZUNcmCQuc3ZzZMPoO57POgm8tnXOkwJAA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/c4f7a6b87ff350200f4b3afb9fe05e2899161070
文件:在 parallel.sgml 中將某些 "which" 用法替換為 "that"。 這使得文檔在語法上更準確。 作者:Elena Indrupskaya 討論:https://postgr.es/m/1c994b3d-951e-59bb-1ac2-7b9221c0e4cf@postgrespro.ru 反向移植:9.6 https://git.postgresql.org/pg/commitdiff/163074ea84efec6ffa4813db43cc956ac5d12565
Amit Kapila 推送
重構 sharedfileset.c 以分離 fileset 實作。 將 fileset 相關的實作從 sharedfileset.c 中移出,以允許後端使用它,後端不希望在不同的進程之間共享 fileset。 在此分割之後,fileset 基礎架構由 sharedfileset.c 和 worker.c 用於在事務中倖存下來的具名臨時檔案。 作者:Dilip Kumar,基於 Andres Freund 的建議 審閱人:Hou Zhijie、Masahiko Sawada、Amit Kapila 討論:https://postgr.es/m/E1mCC6U-0004Ik-Fs@gemulon.postgresql.org https://git.postgresql.org/pg/commitdiff/dcac5e7ac157964f71f15d81c7429130c69c3f9b
修正 StartupReplicationOrigin() 中的錯誤代碼不正確。 ERRCODE_CONFIGURATION_LIMIT_EXCEEDED 用於校驗和失敗,請改用 ERRCODE_DATA_CORRUPTED。 報告人:Tatsuhito Kasahara 作者:Tatsuhito Kasahara 反向移植:9.6,在此版本中引入 討論:https://postgr.es/m/CAP0=ZVLHtYffs8SOWcFJWrBGoRzT9QQbk+_aP+E5AHLNXiOorA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/bad6cef32ca2dd60c8be18f95a7157ced189ec99
修正 001_rep_changes 中的隨機測試失敗。 測試訂閱工作者是否在訂閱變更後重新啟動的檢查失敗。 原因在於,測試假設 walsender 在達到「串流」狀態之前啟動,並且 walsender 在此之前因錯誤而退出。 現在,walsender 在達到「串流」狀態之前發生錯誤,因為它嘗試在先前的 walsender 退出之前取得槽。 順便說一句,改進 die 訊息,以便將來更容易調查故障(如果有的話)。 報告人:Michael Paquier,根據 buildfarm 作者:Ajin Cherian 審閱人:Masahiko Sawada、Amit Kapila 反向移植:10,在此版本中引入了此測試 討論:https://postgr.es/m/YRnhFxa9bo73wfpV@paquier.xyz https://git.postgresql.org/pg/commitdiff/8d0138ef51b51ba3e419cf49069eb72a15f74706
最佳化 apply 工作者中的 fileset 使用。 對於整個工作者生命週期,使用一個 fileset,而不是為每個串流事務使用單獨的 fileset。 現在,每個串流事務的變更/子事務檔案將在同一個 fileset 下建立,並且檔案將在事務完成後刪除。 此修補程式擴充了 BufFileOpenFileSet 和 BufFileDeleteFileSet API,以允許使用者指定是否在遺失的檔案上產生錯誤。 作者:Dilip Kumar,基於 Thomas Munro 的建議 審閱人:Hou Zhijie、Masahiko Sawada、Amit Kapila 討論:https://postgr.es/m/E1mCC6U-0004Ik-Fs@gemulon.postgresql.org https://git.postgresql.org/pg/commitdiff/31c389d8de915b705ee06c7a6e9246e20f36b9dc
Fujii Masao 推送
pgbench:避免不必要的連線延遲測量。 Commit 547f04e734 變更了 pgbench,使其僅在指定 -C/--connect 選項時,才在其基準測試報告中使用連線延遲的測量結果。但先前即使未指定該選項,也會不必要地測量這些延遲,這浪費了週期。此 commit 改善了 pgbench,使其避免此類不必要的測量。回溯修補至首次出現 commit 547f04e734 的 v14 版本。作者:Yugo Nagata 審閱者:Fabien COELHO、Asif Rehman、Fujii Masao 討論:https://postgr.es/m/20210614151155.a393bc7d8fed183e38c9f52a@sraoss.co.jp https://git.postgresql.org/pg/commitdiff/bfd4567b88496bf9669658e5ab381b296dd9ffe1
pgbench:修正了中斷連線延遲的測量錯誤。當指定 -C/--connect 選項時,pgbench 會為每個交易建立和關閉連線。在這種情況下,pgbench 需要測量所有這些連線和中斷連線所花費的時間,以便將平均連線時間包含在基準測試結果中。但先前 pgbench 無法測量這些中斷連線延遲。為了修正這個錯誤,如果指定了 -C/--connect 選項,此 commit 會讓 pgbench 在每次交易結束時關閉連線時測量中斷連線延遲。回溯修補至 v14。經過討論,我們決定不回溯修補至 v13 或更早的版本,因為在穩定分支中更改此行為會讓使用者感到驚訝,而不是提供好處。作者:Yugo Nagata 審閱者:Fabien COELHO、Tatsuo Ishii、Asif Rehman、Fujii Masao 討論:https://postgr.es/m/20210614151155.a393bc7d8fed183e38c9f52a@sraoss.co.jp https://git.postgresql.org/pg/commitdiff/4dc528bfa7dacee1cfbe2ec59b25039616268b69
改善 CREATE PUBLICATION 的 Tab 鍵自動完成功能。作者:Peter Smith 審閱者:Vignesh C 討論:https://postgr.es/m/CAHut+Ps-vkmnWAShWSRVCB3gx8aM=bFoDqWgBNTzofK0q1LpwA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/b0c066297bdac901a13a5a900a197697a026b357
增強 pg_stat_reset_single_table_counters 函數。此 commit 允許 pg_stat_reset_single_table_counters() 將叢集中所有資料庫共用的單一關係的統計資料重設為零。提升目錄版本。作者:B Sadhu Prasad Patro 審閱者:Mahendra Singh Thalor、Himanshu Upadhyaya、Dilip Kumar、Fujii Masao 討論:https://postgr.es/m/CAFF0-CGy7EHeF=AqqkGMF85cySPQBgDcvNk73G2O0vL94O5U5A@mail.gmail.com https://git.postgresql.org/pg/commitdiff/e04267844a9bbf97c2e85c919b84dfe498ab0302
Álvaro Herrera 推送
psql:修正擴展統計資訊上的名稱引用。根據我們的訊息樣式指南,為了方便人類閱讀,我們會將限定名稱作為一個整體引用,而不是將每個部分分開引用;但 commit bc085205c8a4 為擴展統計資訊引入了一個偏差,而 a4d75c86bf15 複製了它。我不同意此策略應用於 psql 顯示的名稱,但這是一個很差的理由,僅僅在兩個不明顯的角落裡偏離這種做法,因此讓這些角落使用與其他地方相同的樣式。回溯修補至 14。第一個問題比較舊,但我不確定我們是否想為這樣一個小問題破壞舊版分支的 psql 輸出。討論:https://postgr.es/m/20210828181618.GS26465@telsasoft.com https://git.postgresql.org/pg/commitdiff/a397109114c8569e21ed3c858a16143de28a1897
在資料損毀錯誤訊息中報告 Tuple 位址。大多數資料損毀報告都提到了問題的位置,但此處未提及。新增它。一路回溯修補。在 12 及更早版本中,也分配 ERRCODE_DATA_CORRUPTED 錯誤代碼,如 commit fd6ec93bf890 對於 13 及更高版本所做的那樣。討論:https://postgr.es/m/202108191637.oqyzrdtnheir@alvherre.pgsql https://git.postgresql.org/pg/commitdiff/961dd7565726a507d4551f7ea54ad888fc6ee93a
還原「避免過早建立封存狀態 ".ready" 檔案」。這會還原 commit 515e3d84a0b5 以及回溯分支中的等效 commit。這個問題的解決方案存在許多問題,因此我們將嘗試使用不同的方法。根據 Andres Freund 的說明 討論:https://postgr.es/m/20210831042949.52eqp5xwbxgrfank@alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/96b665083eb72570e226cf2d25c960b3acc62040
Daniel Gustafsson 推送
禁止在 void 環境中使用 map 和 grep。map 和 grep 不應被用作 mutators,具有副作用的迭代應該使用 for 或 foreach 迴圈完成。這修正了該模式的一次出現,並將 perlcritic 策略的嚴重性提高到 5,適用於 map 和 grep 策略。作者:Dagfinn Ilmari Mannsåker ilmari@ilmari.org 審閱者:Michael Paquier michael@paquier.xyz 審閱者:Andrew Dunstan andrew@dunslane.net 審閱者:Julien Rouhaud rjuju123@gmail.com 討論:https://postgr.es/m/87fsvzhhc4.fsf@wibble.ilmari.org https://git.postgresql.org/pg/commitdiff/bb466c6b0992a1a21c03239a7b0a87ebadd3bee1
移除多餘的變數賦值。Commit a4205fa00 將 conn 設定為 NULL 的動作直接移至 PQfinish 呼叫之後,但原始的 conn = NULL; 仍然在幾行之下。透過移除多餘的賦值來修正。作者:Bharath Rupireddy bharath.rupireddyforpostgres@gmail.com 討論:https://postgr.es/m/CALj2ACVRiNvMDHYQGiRrGs2Z9dOydfLh2MymEk9i8CSn23UtCg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/ba1b763102b89bca2711e921cf3083d8487b8c96
Tom Lane 推送
修正內聯新式 SQL 函數時遺漏的鎖定取得。當開始使用從目錄載入的查詢剖析樹時,我們必須首先應用 AcquireRewriteLocks(),以取得與剖析器在以互動方式輸入查詢時將取得的相同的關係鎖定,並執行一些其他清除工作,例如處理稍後刪除的欄位。新式 SQL 函數與其他儲存的剖析樹一樣受此規則約束;但是,在處理這些函數的地方中,只有 init_sql_fcache 記住了這一點。特別是,如果我們成功內聯了包含任何關係引用的新式集合傳回 SQL 函數,我們會得到一個斷言失敗,或者嘗試在沒有鎖定的情況下使用這些關係。我也將 AcquireRewriteLocks 呼叫新增到 fmgr_sql_validator 和 print_function_sqlbody。隨意的實驗並未顯示任何失敗,但我懷疑我只是不夠努力。當然,我們不希望附近的程式碼路徑在沒有鎖定的情況下運行。根據其邏輯,它應該具有與舊程式碼相同的效果,也在 fmgr_sql_validator 中呼叫 pg_rewrite_query()。有可能兩個程式碼路徑都不需要費心重寫,但執行分析以證明這一點超出了我今天的目標。根據 Alexander Lakhin 提供的錯誤 #17161。討論:https://postgr.es/m/17161-048a1cdff8422800@postgresql.org https://git.postgresql.org/pg/commitdiff/589be6f6c732a20e2bcaa02560de464ebbd48af2
在 pg_dump 中快取 format_type() 查詢的結果。長期以來,pg_dump 的 getFormattedTypeName 函數上一直有一個 "TODO: 快取結果可能有一些價值" 的註解;但我們一直沒有去檢查重複查詢類型名稱會花費我們多少成本。結果發現,在傾印當前的迴歸測試資料庫時,發出的總查詢次數中約有 10% 是重複的 format_type() 查詢。然而,Hubert Depesz Lubaczewski 回報了一個不常見的案例,其中這些查詢佔 pg_dump 發出的查詢次數的一半以上。單獨來看,這些查詢並不昂貴,但當網路延遲是一個因素時,它們會累積成一個問題。我們可以非常容易地添加一些快取到 getFormattedTypeName 來解決這個問題。由於這是一個如此簡單的修復,並且可以帶來明顯的性能提升,因此回溯修補到所有支援的分支。 討論:https://postgr.es/m/20210826084430.GA26282@depesz.com https://git.postgresql.org/pg/commitdiff/6c450a861f1a928f44c9ae80814ed9a91927c25a
在 pg_dump 中,避免對每個表進行 RLS 策略的查詢。getPolicies() 沒有特別好的理由,為每個表單獨查詢 pg_policy。我們可以改為在單個查詢中收集所有策略,並使用 findTableByOid() 查找將它們附加到正確的 TableInfo 物件。在迴歸測試資料庫上,這大大減少了查詢的數量,即使在本地伺服器上運行也能提供明顯的節省。根據 Hubert Depesz Lubaczewski 的抱怨。由於這是一個如此簡單的修復,並且可以帶來明顯的性能提升,因此回溯修補到所有支援的分支。 討論:https://postgr.es/m/20210826084430.GA26282@depesz.com https://git.postgresql.org/pg/commitdiff/bd3611db5a6f3726094872f59feab426374d2c46
重構 postgresImportForeignSchema 以避免程式碼重複。 避免重複我們正在構建的查詢片段,與 pg_dump 中最近的清理工作類似。我對此感到惱火,因為 aa769f80e 破壞了我正在申請的補丁,該補丁用於更改 postgres_fdw 的排序規則處理,因為我們每個人都不完全地完成了相同的重構。讓我們完成這項工作,以期擁有一個更穩定的基礎。 https://git.postgresql.org/pg/commitdiff/2dc53fe2a77d8d5f22c656fdf6590198e358a996
文件:闡明觸發器如何與交易相關。 Laurenz Albe,根據 Nathan Long 的抱怨。 討論:https://postgr.es/m/161953360822.695.15805897835151971142@wrigleys.postgresql.org https://git.postgresql.org/pg/commitdiff/469150a240dd79acbe7d86cb5df869d95f4d6d2d
修復 float4/float8 雜湊函數以產生 NaN 的一致結果。 IEEE 754 標準允許 NaN 的多種位元模式,其中至少兩種("NaN" 和 "-NaN")很容易從大多數機器上的 SQL 產生。這是有問題的,因為我們的 btree 比較函數認為所有 NaN 都相等,但我們的 float 雜湊函數對 NaN 一無所知,並且會很樂意為它們產生不同的雜湊碼。這會導致查詢包含不同 NaN 值的欄位時產生意外的結果。當在浮點欄位上使用雜湊索引時,也可能產生意外的查找失敗,即 "WHERE x = 'NaN'" 將不會找到它應該找到的所有列。為了修復,在浮點雜湊函數中特殊處理 NaN,與現有的特殊情況(強制零和負零雜湊相同)沒有太大的不同。我安排了最普通的 NaN 類型(來自 C99 NAN 常數)仍然具有與以前相同的雜湊碼,以減少對現有雜湊索引的風險。我猶豫是否要將此修補程式回溯修補到穩定分支,但最終決定這樣做。對於內部進行雜湊的查詢來說,這是一個明顯的改進。如果有人在雜湊索引中使用 -NaN,他們最好在應用此修補程式後重新索引 ... 但是如果他們不這樣做,其錯誤行為不會比他們之前遇到的錯誤行為更糟。根據 Ma Liangzhu 提出的錯誤 #17172。 討論:https://postgr.es/m/17172-7505bea9e04e230f@postgresql.org https://git.postgresql.org/pg/commitdiff/ce773f230d9b5bb2e0dd23fec4e5462fd99487fe
在 count_usable_fds() 中,複製 stderr 而不是 stdin。我們收到一個投訴,如果調用程式關閉 stdin,則 postmaster 無法啟動。發生這種情況是因為 count_usable_fds 期望能夠 dup(0),如果它不能,我們得出結論沒有可用的 FD,並且會崩潰。就我所知,伺服器中沒有其他地方會觸摸 stdin,並且期望守護進程不使用該文件是合理的。作為一個簡單的改進,讓我們改為 dup FD 2 (stderr)。與 stdin 不同,期望我們打開 stderr 是*
合理的*
;即使我們配置為不觸摸它,常見的庫(例如 libc)也可能會嘗試在那裡寫入錯誤訊息。根據 Mario Emmenlauer 的抱怨。 考慮到之前沒有投訴,我對將此推送到穩定分支感到不興奮,但似乎可以將其塞進 v14。 討論:https://postgr.es/m/48bafc63-c30f-3962-2ded-f2e985d93e86@emmenlauer.de https://git.postgresql.org/pg/commitdiff/c95ede41b8d47b21d58702fbc519e720f41fdaf1
修復來自提交 ce773f230 的測試中的可移植性問題。 現代 POSIX 似乎要求 strtod() 接受 "-NaN",但在 SUSv2 中沒有關於 NaN 的任何內容,並且我們的一些最舊的構建農場成員不喜歡它。 讓我們嘗試將其寫為 -'NaN' 代替; 至少在 Intel 硬體上,這似乎產生了相同的結果。 每個構建農場。 https://git.postgresql.org/pg/commitdiff/fd549145d5d9fba3367cbf7e3d4fc7cb3562feb0
如果資料庫編碼不支援,則不允許建立 ICU 排序規則。 以前這是允許的,但是由於 lookup_collation() 的工作方式,排序規則實際上消失在乙太中:您無法使用排序規則,甚至無法刪除它。 似乎最好先給出一個錯誤,而不是讓使用者想知道為什麼它不起作用。 (由於此測試在 DefineCollation 而不是 CreateCollation 中,因此無論最初選擇的編碼如何,它都不會阻止 pg_import_system_collations 建立 ICU 排序規則。) 根據 Andrew Bille 提出的錯誤 #17170。 回溯修補到新增 ICU 支援的 v10。 討論:https://postgr.es/m/17170-95845cf3f0a9c36d@postgresql.org https://git.postgresql.org/pg/commitdiff/db2760a84191c329c0cdfaa1dae048c32b0c1752
刪除 pg_ctl 中命令長度的任意 MAXPGPATH 限制。 將固定長度的命令緩衝區替換為 psprintf() 調用。 編寫此程式碼時,我們沒有像 psprintf() 這樣方便的東西,但是現在我們有了,沒有理由讓這個限制存在。 刪除它可以消除一些邊緣情況,例如,啟動帶有很多選項的 postmaster 會失敗。 pg_ctl 處理的大多數個別檔案名稱仍然限制為 MAXPGPATH,但是只要它僅應用於一個檔案名,我們就很少收到關於該限制的投訴。 回溯修補到所有支援的分支。 Phil Krylov 討論:https://postgr.es/m/567e199c6b97ee19deee600311515b86@krylov.eu https://git.postgresql.org/pg/commitdiff/87ad491472d6f8620d83ec9db4f515ce303052ac
psql 幫助輸出的次要改進。 修復 "\?" 輸出的字母順序,並改進一個描述。 在需要時更新 PageOutput 計數,修復先前修補程式的損壞。 Haiying Tang (PageOutput 修復由我完成) 討論:https://postgr.es/m/OS0PR01MB61136018064660F095CB57A8FB129@OS0PR01MB6113.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/ac5ea660996ecbbfbe78b881a581132a95d93d26
針對 float4/float8 雜湊函數進行進一步的可移植性調整。為了使 hashfloat4() 看起來盡可能像 hashfloat8(),我原本以為可以在擴展到 float8 之前,先用 get_float4_nan() 替換 NaN 值。然而,來自 protosciurus 和 topminnow 的結果顯示,在某些平台上,這樣做會產生與 get_float8_nan() 不同的位元模式,從而破壞了 ce773f230 的意圖。重新安排程式碼,以便我們在所有 NaN 情況下都使用 get_float8_nan() 的結果。和之前一樣,進行回溯修補。https://git.postgresql.org/pg/commitdiff/b30cc0fd6d5d96c63037824c286cec561e092b6f
Tomáš Vondra 推送了
修正擴展統計資訊所有權檢查中的查詢錯誤。當擴展統計物件的所有權檢查失敗時,程式碼呼叫了 aclcheck_error_type 來報告失敗,這顯然是錯誤的,導致快取查詢錯誤。透過呼叫 aclcheck_error 來修正。此問題自引入擴展統計資訊以來就存在,因此回溯修補到 PostgreSQL 10。這個問題沒有被注意到,因為沒有觸發錯誤的測試,所以新增了一個測試。報告人:Mark Dilger 回溯修補:從 10 開始,那裡引入了擴展統計資訊 討論:https://postgr.es/m/1F238937-7CC2-4703-A1B1-6DC225B8978A%40enterprisedb.com https://git.postgresql.org/pg/commitdiff/5be8ce82e84f8f3604916c06668990c524f3856d
將 stats_ext 中的角色重新命名為帶有 regress_ 前綴。 Commit 5be8ce82e8 向 stats_ext 迴歸測試套件新增了一個新角色,但角色名稱沒有以 regress_ 開頭,導致在使用 ENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS 執行時失敗。透過將角色重新命名為以預期的 regress_ 前綴開頭來修正。回溯修補:與新迴歸測試相同,從 10 開始 討論:https://postgr.es/m/1F238937-7CC2-4703-A1B1-6DC225B8978A%40enterprisedb.com https://git.postgresql.org/pg/commitdiff/628bc9d13be8c55492aef122c25dbba3b036366d
不要在擴展統計資訊中列印表達式周圍的多餘括號。用於列印擴展統計資訊表達式的程式碼重複了括號,產生像 ((a+1)) 這樣的結果,這是沒有必要的,並且與我們在其他地方列印表達式的方式不一致。透過調整程式碼以僅產生單個括號集來修正。報告人:Mark Dilger,由我修正。回溯修補到 14,那裡新增了對表達式的擴展統計資訊的支援。報告人:Mark Dilger 討論:https://postgr.es/m/20210122040101.GF27167%40telsasoft.com https://git.postgresql.org/pg/commitdiff/13380e1476490932c7b15530ead1f649a16e1125
識別擴展統計資訊中的簡單資料行引用。到目前為止,在定義擴展統計資訊時,除了純資料行引用之外的所有內容都被視為複雜表達式。因此,例如 "a" 是一個資料行引用,但 "(a)" 將是一個表達式。在大多數情況下,這並不太重要,但有一些奇怪的後果。例如,CREATE STATISTICS s ON a FROM t; 將會失敗,因為擴展統計資訊至少需要兩欄。但是 CREATE STATISTICS s ON (a) FROM t; 將會成功,因為該要求不適用於表達式。此外,該統計物件是無用的 - 優化器將始終使用為屬性 "a" 收集的常規統計資訊。因此,請多做一些工作來識別那些引用單個資料行的表達式,並將它們轉換為簡單的資料行引用。回溯修補到 14,那裡引入了對表達式的擴展統計資訊的支援。報告人:Justin Pryzby 回溯修補:從 14 開始 討論:https://postgr.es/m/20210816013255.GS10479%40telsasoft.com https://git.postgresql.org/pg/commitdiff/537ca68dbb2463f7b1c44e9466b8fbdd7505b2e1
John Naylor 推送了
將 date_bin() 的 timestamptz 變體標記為 stable。以前,由於缺乏標記,它是 immutable 的。這是錯誤的,因為時區可能會更改。增加 catversion 討論:https://postgres.tw/message-id/CAFBsxsG2UHk8mOWL0tca%3D_cg%2B_oA5mVRNLhDF0TBw980iOg5NQ%40mail.gmail.com 回溯修補到 v14,這個函數就是在那時出現的 https://git.postgresql.org/pg/commitdiff/543f36b43d835c819c24b2952ac4ecabbdf2b944
將 date_bin() 的 timestamptz 版本的 volatility 設定回 immutable。 543f36b43d 認為 date_bin() 的 volatility 必須與 date_trunc() 匹配,這太倉促了,因為只有後者引用了 session_timezone。增加 catversion 根據 Aleksander Alekseev 的回饋 回溯修補到 v14,因為之前的 commit 是 https://git.postgresql.org/pg/commitdiff/0c6a6a0ab7675e151a6e46d3ec0846bfce9e030a
Peter Geoghegan 推送了
將歷史 commit 新增到 git-blame-ignore-revs 檔案。新增一個歷史 pgindent commit,該 commit 在 commit 8e638845 中完成的初始工作中遺漏了。 https://git.postgresql.org/pg/commitdiff/aec5cc9efda00f7f418c9a068c92cab119602084
移除不需要的 old_rel_pages VACUUM 狀態欄位。自 commit 3d351d91 以來,該欄位就沒有被使用過,該 commit 將 pg_class.reltuples 重新定義為在第一次 VACUUM 或 ANALYZE 之前為 -1。同時重新命名具有相同名稱的本地變數(「old_rel_pages」)。這由關聯截斷使用,以表示正在進行的 VACUUM 操作開始時的原始關聯大小。將其重新命名為 orig_rel_pages,因為這樣更清楚。(這個名稱與附近類似的程式碼匹配。) https://git.postgresql.org/pg/commitdiff/47029f775adf83796fecb5871ce52488996a7969
vacuumlazy.c:更正 prune 狀態註解。 Commit 7ab96cf6b3 中的疏忽。 https://git.postgresql.org/pg/commitdiff/6320806ac3792a297f1c4eb149c3ddeda25d3930
移除過時的 nbtree 關聯擴展註解。 Commit 0d1fe9f7 改善了 vacuumlazy.c 在遇到空堆積頁面時採取的策略。它現在獲得關聯擴展鎖。 https://git.postgresql.org/pg/commitdiff/0f6aa893cb58c2a5a92016914c94865635345a22
VACUUM VERBOSE:不要報告「pages removed」。報告此資訊沒有任何意義,因為 VACUUM VERBOSE 直接報告堆積關聯截斷。這是 commit 7ab96cf6 中的疏忽,該 commit 使 VACUUM VERBOSE 輸出與附近特定於 autovacuum 的日誌輸出更加一致。調整描述這應該如何工作的註解。同時使與截斷相關的 VACUUM VERBOSE 輸出與 commit f4f4a649 為 VACUUM VERBOSE 輸出建立的慣例一致。作者:Peter Geoghegan pg@bowt.ie 回溯修補:14-,VACUUM VERBOSE 的輸出在那裡發生了變化。 https://git.postgresql.org/pg/commitdiff/b175b9cde720a81852b70c0c7fbc18c72ff1acc6
Peter Eisentraut 推送了
修正不正確的格式佔位符。 https://git.postgresql.org/pg/commitdiff/590ecd982304dec8599d6ca339903982d39a9a1a
修正靜態連結的 pkg-config 檔案。自 ea53100d5 (PostgreSQL 12) 以來,提供的 pkg-config 檔案對於靜態連結 libpq 已經損壞,因為缺少 libpgcommon 和 libpgport。此修補程式新增了這兩個缺少的私有依賴項(以非硬編碼的方式)。報告人:Filip Gospodinov f@gospodinov.ch 討論:https://postgres.tw/message-id/flat/c7108bde-e051-11d5-a234-99beec01ce2a@gospodinov.ch https://git.postgresql.org/pg/commitdiff/4c2eab3a0dec2eae40892fb525830a5947a398c7
使 pkg-config 檔案更易於交叉編譯。目前,pc 檔案針對 "includedir" 和 "libdir" 使用了硬編碼的路徑。 範例: Cflags: -I/usr/include Libs: -L/usr/lib -lpq 當在建置環境 (buildroot) 內進行交叉編譯時,這不是很理想,因為 include 檔和 lib 檔位於暫存目錄中,這會將主機路徑引入到建置過程中: checking for pkg-config... /builder/shared-workdir/build/sdk/staging_dir/host/bin/pkg-config checking for PostgreSQL libraries via pkg_config... -L/usr/lib <---- 此 commit 通過執行以下兩件事來解決這個問題: 1. 不再在 "Cflags" 和 "Libs" 中硬編碼路徑,而是使用 "${includedir}" 和 "${libdir}"。注意:這些變數可以在 pkg-config 命令列上覆寫 ("--define-variable=libdir=/some/path")。 2. 新增變數 "prefix" 和 "exec_prefix"。 如果 "includedir" 和/或 "libdir" 正在使用這些變數,則相應地建構它們。 這樣做是因為建置環境 (例如 OpenWrt) 傾向於重新命名真實的 pkg-config,並從一個設置 "prefix"、"exec_prefix" 和 "bindir" 的腳本中間接呼叫它,如下所示: pkg-config.real --define-variable=prefix=${STAGING_PREFIX} \ --define-variable=exec_prefix=${STAGING_PREFIX} \ --define-variable=bindir=${STAGING_PREFIX}/bin $@ 範例 #1:使用者使用 "--libdir=/some/lib" 和 "--includedir=/some/include" 呼叫 ./configure: prefix=/usr/local/pgsql exec_prefix=${prefix} libdir=/some/lib includedir=/some/include Name: libpq Description: PostgreSQL libpq library Url: https://postgres.tw/ Version: 12.1 Requires: Requires.private: Cflags: -I${includedir} Libs: -L${libdir} -lpq Libs.private: -lcrypt -lm 範例 #2:使用者不帶任何參數呼叫 ./configure: prefix=/usr/local/pgsql exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include Name: libpq Description: PostgreSQL libpq library Url: https://postgres.tw/ Version: 12.1 Requires: Requires.private: Cflags: -I${includedir} Libs: -L${libdir} -lpq Libs.private: -lcrypt -lm 像這樣,當使用建置環境設定時,路徑可以被強制進入暫存目錄: checking for pkg-config... /home/sk/tmp/openwrt/staging_dir/host/bin/pkg-config checking for PostgreSQL libraries via pkg_config... -L/home/sk/tmp/openwrt/staging_dir/target-mips_24kc_musl/usr/lib 作者:Sebastian Kemper sebastian_ml@gmx.net 共同作者:Peter Eisentraut peter.eisentraut@enterprisedb.com 討論: https://postgres.tw/message-id/flat/20200305213827.GA25135%40darth.lan https://git.postgresql.org/pg/commitdiff/6588d8416e4ef84fd99fb271b63116f207c6c479
Tatsuo Ishii 推送了