PostgreSQL 版本 13.1

2021-09-09 17:53 更新
E.1.1. 遷移到13.1版
E.1.2. 更改

發(fā)行日期: 2020-11-12

這個(gè)版本包含了13.0的各種修復(fù)。 有關(guān)第13版的新功能的信息, 詳見(jiàn) 第 E.2 節(jié).

E.1.1. 遷移到13.1版

運(yùn)行13.X版本的用戶(hù)不需要轉(zhuǎn)儲(chǔ)/恢復(fù)。

E.1.2. 更改

  • DECLARE CURSOR ... WITH HOLD以及在索引表達(dá)式和物化視圖查詢(xún)中觸發(fā)延遲觸發(fā)器(Noah Misch)。

    這實(shí)質(zhì)上是安全限制操作沙箱機(jī)制的一個(gè)漏洞。 擁有創(chuàng)建非臨時(shí)SQL對(duì)象權(quán)限的攻擊者可以利用這一漏洞,以超級(jí)用戶(hù)身份執(zhí)行任意SQL代碼。

    PostgreSQL項(xiàng)目感謝Etienne Stalmans報(bào)告這個(gè)問(wèn)題。 (CVE-2020-25695)

  • 修正在 pg_dump, pg_restore, clusterdb, reindexdb, 和 vacuumdb 中復(fù)雜連接字符串參數(shù)的使用。(Tom Lane)

    pg_dumppg_restore-d參數(shù), 或者提到的其他程序的--maintenance-db參數(shù),可以是一個(gè)連接字符串,包含多個(gè)連接參數(shù)而不僅僅是一個(gè)數(shù)據(jù)庫(kù)名稱(chēng)。 在這些程序需要啟動(dòng)額外連接的情況下,例如并行處理或處理多個(gè)數(shù)據(jù)庫(kù),連接字符串被遺忘了,只有基本的連接參數(shù)(數(shù)據(jù)庫(kù)名稱(chēng)、主機(jī)、端口和用戶(hù)名)被用于額外連接。 如果連接字符串包括任何其他重要信息,如非默認(rèn)的SSL或GSS參數(shù),這可能導(dǎo)致連接失敗。更糟糕的是,連接可能會(huì)成功,但沒(méi)有按照預(yù)期進(jìn)行加密 ,或者容易受到中間人攻擊,而預(yù)期的連接參數(shù)本可以防止這種攻擊。 (CVE-2020-25694)

  • 當(dāng)psqlconnect命令重新使用連接參數(shù)時(shí),確保以前的連接字符串中所有未被覆蓋的參數(shù)被重新使用。(Tom Lane)

    這就避免了由于遺漏相關(guān)參數(shù)(如非默認(rèn)的SSL或GSS選項(xiàng))而導(dǎo)致重新連接失敗的情況。 更糟糕的是,重新連接可能會(huì)成功,但沒(méi)有按照預(yù)期進(jìn)行加密,或者容易受到中間人攻擊,而預(yù)期的連接參數(shù)本可以防止這種攻擊。 這與剛才提到的pg_dump等的問(wèn)題基本相同,盡管psql的行為更加復(fù)雜, 因?yàn)橛脩?hù)可能有意覆蓋一些連接參數(shù)。 (CVE-2020-25694)

  • 修復(fù)復(fù)制協(xié)議的意外中斷 (álvaro Herrera)

    一個(gè)wal發(fā)送者報(bào)告了START_REPLICATION的兩個(gè)命令完成事件。 這是沒(méi)有記錄的,而且顯然是無(wú)意的;所以我們沒(méi)有注意到,13.0后的一個(gè)變化刪除了重復(fù)的事件。 然而事實(shí)證明,wal接收者在一些代碼路徑中需要額外的事件。最實(shí)用的修復(fù)方法是宣布額外的事件是協(xié)議的一部分并恢復(fù)生成它。

  • 確保SLRU目錄在檢查點(diǎn)期間被正確地同步。 (Thomas Munro)

    這可以防止在隨后的操作系統(tǒng)崩潰中可能出現(xiàn)的數(shù)據(jù)丟失。

  • 為具有BYPASSRLS屬性的用戶(hù)修復(fù)ALTER ROLE。(Tom Lane, Stephen Frost)

    BYPASSRLS屬性只允許由超級(jí)用戶(hù)更改,但其他ALTER ROLE操作, 如密碼更改,應(yīng)該只允許普通的權(quán)限檢查。 以前的編碼錯(cuò)誤地將這種角色的所有更改都限制在超級(jí)用戶(hù)身上。

  • 當(dāng)有子表時(shí),禁用ALTER TABLE ONLY ... DROP EXPRESSION (Peter Eisentraut)

    目前的實(shí)現(xiàn)無(wú)法正確處理這種情況,所以暫時(shí)禁止它。

  • 確保ALTER TABLE ONLY ... ENABLE/DISABLE TRIGGER不會(huì)遞歸到子表。 (álvaro Herrera)

    以前,ONLY標(biāo)志被忽略。

  • 允許LOCK TABLE在一個(gè)自引用的視圖上成功。(Tom Lane)

    它之前拋出了一個(gè)無(wú)限遞歸錯(cuò)誤,但似乎沒(méi)有必要禁止這種情況。

  • 在整個(gè)REINDEX CONCURRENTLY中保留關(guān)于一個(gè)索引的統(tǒng)計(jì)數(shù)據(jù)。(Michael Paquier, Fabrízio de Royes Mello)

    非并發(fā)重建索引一直保留著這樣的統(tǒng)計(jì)數(shù)據(jù)。

  • 修正REINDEX CONCURRENTLY 的不正確進(jìn)度報(bào)告 (Matthias van de Meent, Michael Paquier)

  • 確保GENERATED列在它們所依賴(lài)的列通過(guò)規(guī)則或可更新的視圖被更新時(shí)被更新。(Tom Lane)

    這個(gè)修正也解決了在這種情況下可能無(wú)法觸發(fā)特定列的觸發(fā)器的問(wèn)題。

  • 修復(fù)依賴(lài)排序的分區(qū)綁定表達(dá)的故障 (Tom Lane)

  • 支持text數(shù)組的散列 (Peter Eisentraut)

    如果數(shù)組元素類(lèi)型是可整理的,數(shù)組散列就會(huì)失敗。值得注意的是,這妨礙了使用以文本數(shù)組列作為分區(qū)鍵的哈希分區(qū)。

  • 防止跨類(lèi)型日期時(shí)間比較中的內(nèi)部溢出 (Nikita Glukhov, Alexander Korotkov, Tom Lane)

    以前,如果日期超過(guò)了時(shí)間戳的有效范圍,比較日期和時(shí)間戳?xí)?。在時(shí)區(qū)旋轉(zhuǎn)過(guò)程中,也有涉及接近極限的時(shí)間戳值溢出的邊界情況。

  • 在函數(shù) to_date()to_timestamp() 中修正負(fù)數(shù)年份向公元前的日期逐一轉(zhuǎn)換的問(wèn)題(Dar Alathar-Yemen, Tom Lane)

    另外,分配負(fù)數(shù)年和明確的BC標(biāo)記的組合來(lái)抵消并產(chǎn)生AD。

  • 允許jsonpath .datetime()方法接受ISO 8601格式的時(shí)間戳。(Nikita Glukhov)

    這不是SQL所要求的,但它似乎是合適的,因?yàn)槲覀兊?code class="function">to_json()函數(shù)為Javascript的兼容性生成了該時(shí)間戳格式。

  • 確保當(dāng)archive_mode被設(shè)置為always時(shí),備用服務(wù)器將歸檔WAL時(shí)間線歷史文件。(Grigory Smolkin, Fujii Masao)

    這種疏忽可能會(huì)導(dǎo)致隨后的PITR恢復(fù)嘗試失敗。

  • 修復(fù)在使用kqueue()的平臺(tái)上檢測(cè)postmaster過(guò)早死亡的邊緣情況。 (Thomas Munro)

  • 避免在排序鍵為volatile表達(dá)式時(shí)產(chǎn)生不正確的增量排序計(jì)劃 (James Coleman)

  • 修正在GEQO規(guī)劃過(guò)程中考慮分區(qū)連接時(shí)可能出現(xiàn)的崩潰。(Tom Lane)

  • 修復(fù)TOAST解壓中可能出現(xiàn)的無(wú)限循環(huán)或損壞的輸出數(shù)據(jù) (Tom Lane)

  • 在只清理VACUUMs時(shí),修正對(duì)B樹(shù)索引中條目數(shù)量的計(jì)數(shù)。 (Peter Geoghegan)

  • 確保在將數(shù)據(jù)插入BRIN索引之前,對(duì)其進(jìn)行清空處理。 (Tomas Vondra)

    索引條目不應(yīng)該包含行外的TOAST指針,但BRIN沒(méi)有收到這個(gè)備忘錄。 這可能會(huì)導(dǎo)致諸如missing chunk number 0 for toast value NNN的錯(cuò)誤。(如果你在現(xiàn)有的索引中遇到這樣的錯(cuò)誤,REINDEX應(yīng)該足以解決它)。

  • 修正緩沖的GiST索引構(gòu)建,以便在索引包含列的情況下工作 (Pavel Borisov)

  • 修正在pg_hba_file_rules視圖中使用getnameinfo()的不方便性。 (Tom Lane)

    在FreeBSD 11上,可能還有其他平臺(tái),視圖的addressnetmask列由于這個(gè)錯(cuò)誤而總是為空。

  • 避免debug_query_string為NULL,啟動(dòng)一個(gè)并行worker時(shí)崩潰。 (Noah Misch)

  • 避免在BEFORE ROW UPDATE觸發(fā)器返回已刪除或缺失列的表的行時(shí)出現(xiàn)失敗。 (Amit Langote, Tom Lane)

    這種抑制更新的方法可能導(dǎo)致崩潰。 意外的CHECK約束失敗,或者不正確的RETURNING輸出,因?yàn)?span id="uhnbpsn" class="quote">“missing”列在這些方面會(huì)被讀作NULL。 (如果一個(gè)列是由ALTER TABLE ADD COLUMN添加的,而且有一個(gè)非NULL,帶有常量的默認(rèn)值,那么這個(gè)列就是 missing)。 被刪除的列也會(huì)造成麻煩。

  • 修正EXPLAIN對(duì)增量排序計(jì)劃的輸出,以便在XML輸出模式下有正確的標(biāo)簽嵌套。(Daniel Gustafsson)

  • 在通過(guò)共享內(nèi)存隊(duì)列傳輸非常大的有效載荷時(shí),避免不必要的失敗 (Markus Wanner)

  • 修正在SQL語(yǔ)言函數(shù)中某些情況下遺漏結(jié)果數(shù)據(jù)類(lèi)型的強(qiáng)制性問(wèn)題 (Tom Lane)

    這可能導(dǎo)致錯(cuò)誤的結(jié)果或崩潰,這取決于所涉及的數(shù)據(jù)類(lèi)型。

  • 修正JIT代碼生成中對(duì)模板函數(shù)屬性的不正確處理 (Andres Freund)

    這已被證明在s390x上導(dǎo)致崩潰,而且很可能在其他平臺(tái)上也有其他情況。

  • 改進(jìn)為PPC上的compare_exchange和fetch_add操作生成的代碼 (Noah Misch)

  • 修復(fù)RLS策略下的relation緩存內(nèi)存泄漏問(wèn)題 (Tom Lane)

  • 修復(fù)函數(shù)index_get_partition()中的邊緣案例內(nèi)存泄露。 (Justin Pryzby)

  • 當(dāng)SIGHUP處理決定不重啟就不能應(yīng)用新的GUC變量值時(shí),修復(fù)小的內(nèi)存泄漏。 (Tom Lane)

  • 修復(fù)PL/pgsqlCALL處理中的內(nèi)存泄漏。(Pavel Stehule, Tom Lane)

  • 在Windows的libpq中,每個(gè)進(jìn)程調(diào)用WSAStartup()一次,WSACleanup()完全不調(diào)用。 (Tom Lane, Alexander Lakhin)

    以前,libpq在連接開(kāi)始時(shí)調(diào)用WSAStartup(),在連接清理時(shí)調(diào)用WSACleanup()。然而,調(diào)用WSACleanup()似乎會(huì)干擾其他的程序操作;特別是,我們觀察到很少的失敗,無(wú)法向stdout發(fā)出預(yù)期的輸出。 省略這個(gè)調(diào)用似乎沒(méi)有什么不好的影響,所以就這么做吧。這也消除了程序執(zhí)行一系列數(shù)據(jù)庫(kù)連接時(shí)重復(fù)加載和卸載DLL的性能問(wèn)題)。

  • 修復(fù)ecpg庫(kù)在Windows下的per-thread初始化邏輯 (Tom Lane, Alexander Lakhin)

    多線程ecpg應(yīng)用程序可能由于不正確的鎖定而出現(xiàn)罕見(jiàn)的錯(cuò)誤行為。

  • 修正ecpg對(duì)B'...'X'...'字樣的錯(cuò)誤處理。 (Shenhao Wang)

  • 在Windows上,使psql以文本模式而不是二進(jìn)制模式讀取回車(chē)鍵命令的輸出。 (Tom Lane)

    這確保了對(duì)換行的正確處理。

  • 確保pg_dump收集擴(kuò)展配置表的每列信息 (Fabrízio de Royes Mello, Tom Lane)

    如果不這樣做,在指定--inserts時(shí),會(huì)導(dǎo)致崩潰,或者在使用COPY重新加載表的數(shù)據(jù)時(shí),未指定的(盡管通常是正確的)COPY命令。

  • 使pg_upgrade檢查目標(biāo)集群中的表空間目錄是否預(yù)先存在 (Bruce Momjian)

  • 修復(fù)contrib/pgcrypto中潛在的內(nèi)存泄漏。 (Michael Paquier)

  • contrib/pgcrypto中增加對(duì)一種不太可能的失敗情況的檢查。 (Daniel Gustafsson)

  • 修正最近添加的timetz測(cè)試案例,使其在美國(guó)不遵守夏令時(shí)的情況下發(fā)揮作用。 (Tom Lane)

  • 根據(jù)斐濟(jì)、摩洛哥、巴勒斯坦、加拿大育空地區(qū)、麥夸里島和凱西站(南極洲)的夏令時(shí)法律變化,更新時(shí)區(qū)數(shù)據(jù)文件至tzdata2020d版本;以及法國(guó)、匈牙利、摩納哥和巴勒斯坦的歷史修正。

  • 將我們的時(shí)區(qū)庫(kù)副本與IANA的tzcode版本2020d同步。 (Tom Lane)

    這吸收了上游對(duì)zic的默認(rèn)輸出選項(xiàng)從fatslim的改變。 這對(duì)我們來(lái)說(shuō)只是表面現(xiàn)象,因?yàn)槲覀冊(cè)趘13之前的分支中繼續(xù)選擇fat模式。 這一改變也確保了strftime()不會(huì)改變errno,除非它失敗。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)