PostgreSQL 是一個開源,強大,可靠,穩定,企業就緒且免費的對象關係數據庫系統,採用MariaDB,MySQL或SQLite項目的風格。它是符合ACID(原子性,一致性,隔離性,耐久性)的數據庫服務器/引擎,可以高度定制並包含許多有吸引力的功能,是上述數據庫引擎的絕佳替代品。
功能一目了然
主要功能包括支持外鍵,視圖,連接,觸發器和存儲過程,支持多種語言,支持各種SQL數據類型,包括BOOLEAN,CHAR,INTEGER,NUMERIC,VARCHAR,INTERVAL,TIMESTAMP和DATE。
此外,該軟件還支持存儲二進制大型對象,包括各種多媒體文件(視頻,音頻和照片),並為開發人員提供C,C ++,Python,Perl,Ruby的本機編程接口, Java,.Net,Tcl和ODBC編程語言。
在其他有趣的功能中,我們可以提到MVCC(多版本並發控制),表空間,多字節字符編碼,時間點恢復,成熟的查詢優化器和規劃器,異步複製,在線備份,嵌套事務(通常稱為保存點),熱備份,預先記錄容錯,支持國際字符集以及Unicode支持。
PostgreSQL的數字
目前,PostgreSQL數據庫服務器支持無限大小的數據庫,32 TB應該是表的最大大小,每行1.6 TB,每個字段1 GB,每個表無限行,每個表支持250到1600列,取決於列類型,並支持每個表的無限索引。
支持的操作系統
PostgreSQL已在所有主流操作系統上成功測試,包括GNU / Linux,BSD,Solaris,HP-UX,AIX,SGI IRIX,Solaris,Tru64,Mac OS X和Microsoft Windows。 PostgreSQL可作為通用源存檔下載,也可用於許多Linux發行版的預編譯二進制包,支持32位和64位架構。
什麼是新的
在此版本中:
- 此版本修復了兩個安全問題。此版本還修復了VACUUM,GIN和哈希索引,並行查詢,邏輯複製以及過去三個月內報告的其他錯誤所發現的問題。使用受影響的PostgreSQL版本的所有用戶都應盡快更新。
版本10.4 / 11 Beta 1中的新功能:
- 此版本修復了兩個安全問題。此版本還修復了VACUUM,GIN和哈希索引,並行查詢,邏輯複製以及過去三個月內報告的其他錯誤所發現的問題。使用受影響的PostgreSQL版本的所有用戶都應盡快更新。
版本中的新功能:
- 進一步限制pg_user_mappings.umoptions的可見性,以保護存儲為用戶映射選項的密碼(Noah Misch)
- CVE-2017-7486的修復程序不正確:它允許用戶在自己的用戶映射中查看選項,即使她沒有在關聯的外部服務器上擁有USAGE權限。這些選項可能包括服務器所有者而不是用戶自己提供的密碼。由於在這種情況下information_schema.user_mapping_options不顯示選項,因此pg_user_mappings也不應該。 (CVE-2017-7547)
- 此修補程序本身僅修復新initdb'd數據庫中的行為。如果要在現有數據庫中應用此更改,則需要執行以下操作:
- 在postgresql.conf中添加allow_system_table_mods = true後重新啟動postmaster。 (在支持ALTER SYSTEM的版本中,您可以使用它來進行配置更改,但您仍需要重新啟動。)
- 在群集的每個數據庫中,以超級用戶身份運行以下命令:
- SET search_path = pg_catalog;
- 創建或替換視圖pg_user_mappings AS
- 選擇
- U.oid AS umid,
- S.oid AS srvid,
- S.srvname AS srvname,
- U.umuser AS umuser,
- 案例當U.umuser = 0那麼
- “公共”
- ELSE
- A.rolname
- END AS usename,
- CASE WHEN(U.umuser 0 AND A.rolname = current_user
- AND(pg_has_role(S.srvowner,'USAGE')
- OR has_server_privilege(S.oid,'USAGE')))
- OR(U.umuser = 0 AND pg_has_role(S.srvowner,'USAGE'))
- OR(SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
- 那麼U.umoptions
- ELSE NULL END as umoptions
- FROM pg_user_mapping U
- LEFT JOIN pg_authid A ON(A.oid = U.umuser)JOIN
- pg_foreign_server S ON(U.umserver = S.oid);
- 不要忘記包含template0和template1數據庫,否則該漏洞仍會存在於您稍後創建的數據庫中。要修復template0,您需要暫時使其接受連接。在PostgreSQL 9.5及更高版本中,您可以使用
- ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
- 然後在修復template0之後,使用 撤消它
- ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
- 在以前的版本中,改為使用
- UPDATE pg_database SET datallowconn = true WHERE datname ='template0';
- UPDATE pg_database SET datallowconn = false WHERE datname ='template0';
- 最後,刪除allow_system_table_mods配置設置,然後重新啟動postmaster。
- 在所有基於密碼的身份驗證方法中禁止使用空密碼(Heikki Linnakangas)
- libpq忽略空密碼規範,不會將它們傳輸到服務器。因此,如果用戶的密碼已設置為空字符串,則無法通過psql或其他基於libpq的客戶端使用該密碼登錄。因此,管理員可能認為將密碼設置為空等同於禁用密碼登錄。但是,使用基於修改或非基於libpq的客戶端,可以登錄,具體取決於配置的身份驗證方法。特別是最常用的方法md5,接受空密碼。在所有情況下,更改服務器以拒絕空密碼。 (CVE-2017-7546)
- 讓lo_put()檢查目標大對象的UPDATE權限(Tom Lane,Michael Paquier)
- lo_put()肯定需要與lowrite()相同的權限,但缺少檢查,允許任何用戶更改大對像中的數據。 (CVE-2017-7548)
- 使用pg_upgrade更正有關升級備用服務器的過程的文檔(Bruce Momjian)
- 之前的文檔指示用戶在運行pg_upgrade之後但在同步備用服務器之前啟動/停止主服務器。這個順序是不安全的。
- 修復元組更新鏈的並發鎖定(Alvaro Herrera)
- 如果多個會話使用舊快照同時鎖定具有非衝突鎖定模式的元組更新鏈,並且它們都成功,那麼由於某個競賽,其中一些會話可能會失敗(並且認為沒有實時元組版本)條件。這會產生一些後果,例如外鍵檢查未能看到確實存在但正在同時更新的元組。
- 在凍結一個XMAX為多重的元組並且只有一個仍然有趣的成員(Teodor Sigaev)的時候修復潛在的數據損壞
- 在內存中排序超過十億個元組時,避免整數溢出和隨後發生的崩潰(Sergey Koposov)
- 在Windows上,如果我們無法在新進程中保留共享內存的地址範圍,則重試進程創建(Tom Lane,Amit Kapila)
- 預計這可能會解決可能因防病毒產品干擾而導致的不常發生的子進程啟動故障。
- 修復Windows版本中共享謂詞鎖哈希表的低概率損壞(Thomas Munro,Tom Lane)
- 避免記錄SSL連接的干淨關閉,就好像它是連接重置(Michael Paquier) 一樣
- 阻止向客戶端發送SSL會話票證(Tom Lane)
- 此修復程序可防止使用支持票證的客戶端SSL代碼重新連接失敗。
- 修復在Solaris上設置tcp_keepalives_idle的代碼(Tom Lane)
- 修復統計信息收集器,以便在postmaster關閉並立即重啟(Tom Lane)後立即發出查詢消息
- 有效忽略了之前postmaster關閉後半秒內發出的統計數據查詢。
- 確保統計信息收集器的接收緩衝區大小至少為100KB(Tom Lane)
- 這樣可以降低在默認接收緩衝區大小小於此值的舊平台上丟棄統計數據的風險。
- 修復在處理XLOG_SWITCH WAL記錄(Andres Freund)後立即升級備用數據庫時可能創建的無效WAL段
- 修復walsender在客戶端請求關閉時立即退出(Tom Lane)
- 修復walsender流程中的SIGHUP和SIGUSR1處理(Petr Jelinek,Andres Freund)
- 在停機檢查站期間防止walsender觸發恐慌(Andres Freund,Michael Paquier)
- 修復由於postmaster(Tom Lane)中的競爭條件導致的walreceiver進程不必要的緩慢重啟
- 修復邏輯解碼過程中溢出到磁盤的小子事務洩漏(Andres Freund)
- 這導致臨時文件消耗過多的磁盤空間。
- 在創建邏輯解碼插槽期間減少構建快照所需的工作(Andres Freund,Petr Jelinek)
- 在具有大量未完成交易的服務器上,以前的算法非常昂貴。
- 修復可能無限延遲創建邏輯解碼槽的競爭條件(Andres Freund,Petr Jelinek)
- 減少處理syscache失效事件的開銷(Tom Lane)
- 這對邏輯解碼特別有用,它會觸發頻繁的緩存失效。
- 刪除在某些情況下使用的不正確的啟發式,以根據外鍵約束的存在來估計連接選擇性(David Rowley)
- 在存在多列外鍵約束但與查詢的連接結構不完全匹配的某些情況下,規劃器使用的估計啟發式算法根本不能正常工作。將此類案件恢復到9.6之前估計的方式。
- 修復INSERT或UPDATE分配給多個域類型的列的多個元素的情況(Tom Lane)
- 允許窗口函數用於聚合函數參數內的子SELECT(Tom Lane)
- 當基礎表是外表(Etsuro Fujita)時,確保正確強制執行視圖的CHECK OPTIONS子句
- 以前,更新可能會完全推送到外部服務器,但如果是這樣,則錯過了驗證視圖條件的需要。
- 在ALTER期間移動自動生成的數組類型... RENAME(Vik Fearing)
- 以前,我們會在CREATE期間重命名衝突的自動生成的數組類型;此修復程序將該行為擴展到重命名操作。
- 當對屬於該表的約束(David Rowley)發表評論時,在ALTER TABLE中修復懸空指針
- 將評論重新應用於重建的約束可能會因奇怪的錯誤消息而失敗,甚至崩潰。
- 確保ALTER USER ... SET接受ALTER ROLE ... SET所做的所有語法變體(Peter Eisentraut)
- 允許外表的CHECK約束最初為NOT VALID(Amit Langote)
- CREATE TABLE以靜默方式刪除CHECK約束的NOT VALID說明符,推斷該表必須為空,以便可以立即驗證約束。但這對於CREATE FOREIGN TABLE來說是錯誤的,因為沒有理由認為底層表是空的,即使它確定約束可以被視為有效的,也不是我們的業務。略過這個“優化”。對於外國桌子。
- 在將數據類型I / O函數的參數或返回類型從opaque更改為正確類型時正確更新依賴關係信息(Heikki Linnakangas)
- CREATE TYPE更新在這個過時的過時樣式中聲明的I / O函數,但它忘記記錄對類型的依賴,允許後續的DROP TYPE將破壞的函數定義留在後面。
- 當COPY從查詢結果中復制時,允許在查詢計劃中保持並行性(Andres Freund)
- 在ANALYZE處理tsvector列時減少內存使用量(Heikki Linnakangas)
- 在將貨幣值乘以整數或浮點數時,修復不必要的精度損失和草率舍入(Tom Lane)
- 加強對解析標識符的函數中的空格的檢查,例如regprocedurein()(Tom Lane)
- 根據流行的語言環境,這些函數可能會將多字節字符的片段誤解為空格。
- 在編譯PL / Perl時使用Perl中的相關#define符號(Ashutosh Sharma,Tom Lane)
- 這避免了可移植性問題,通常表現為“握手”問題。在使用最近的Perl版本時,庫加載期間不匹配。
- 在libpq中,在連接嘗試失敗後正確重置GSS / SASL和SSPI身份驗證狀態(Michael Paquier)
- 如果不這樣做,則意味著當從SSL退回到非SSL連接時,SSL嘗試中的GSS / SASL故障將始終導致非SSL嘗試失敗。 SSPI沒有失敗,但它洩露了記憶。
- 在psql中,當使用鍵盤EOF信號結束COPY FROM STDIN然後嘗試另一個COPY FROM STDIN時修復失敗(Thomas Munro)
- 在BSD派生的平台(包括macOS)上觀察到了這種不當行為,但在大多數其他平台上都沒有。
- 修復pg_dump和pg_restore最後發出REFRESH MATERIALIZED VIEW命令(Tom Lane)
- 當物化視圖引用其他用戶擁有的表時,這可以防止轉儲/恢復期間的錯誤。
- 改進pg_dump / pg_restore報告源於zlib的錯誤情況(Vladimir Kunschikov,Alvaro Herrera)
- 使用--clean選項修復pg_dump以按預期方式刪除事件觸發器(Tom Lane)
- 它現在也正確分配事件觸發器的所有權;之前,它們被恢復為由運行恢復腳本的超級用戶擁有。
- 使用--clean選項修復pg_dump,以便在公共架構不存在時不會失敗(Stephen Frost)
- 修復pg_dump不為空操作符類發出無效的SQL(Daniel Gustafsson)
- 將pg_dump輸出修復為Windows上的stdout(Kuntal Ghosh)
- 寫入stdout的壓縮純文本轉儲將包含由於未能將文件描述符置於二進制模式而導致的損壞數據。
- 修復pg_get_ruledef()以打印已重命名列的視圖的ON SELECT規則的正確輸出(Tom Lane)
- 在某些極端情況下,pg_dump依賴於pg_get_ruledef()來轉儲視圖,因此此錯誤可能導致轉儲/重新加載失敗。
- 使用空約束脩复外部聯接的轉儲,例如沒有公共列的自然LEFT JOIN的結果(Tom Lane)
- 修復在FROM子句中轉儲函數表達式的情況,如果表達式沒有解析為看起來像函數調用的東西(Tom Lane)
- 將pg_basebackup輸出修復到Windows上的stdout(Haribabu Kommi)
- 由於未能將文件描述符置於二進制模式,寫入stdout的備份將包含損壞的數據。
- 修復pg_rewind以正確處理超過2GB的文件(Kuntal Ghosh,Michael Paquier)
- 通常這些文件不會出現在PostgreSQL數據目錄中,但在某些情況下可能會出現這些文件。
- 修復pg_upgrade以確保結束WAL記錄沒有wal_level = minimum(Bruce Momjian)
- 此情況可能會阻止升級的備用服務器重新連接。
- 修復pg_xlogdump的WAL記錄長度計算(Andres Freund)
- 在postgres_fdw中,在ALTER SERVER或ALTER USER MAPPING命令(Kyotaro Horiguchi)之後重新建立與遠程服務器的連接
- 這可確保及時應用影響連接參數的選項更改。
- 在postgres_fdw中,允許取消遠程交易控制命令(Robert Haas,Rafia Sabih)
- 此更改使我們能夠在比以前更多的情況下快速逃避等待無響應的遠程服務器。
- 增加MAX_SYSCACHE_CALLBACKS以提供更多擴展空間(Tom Lane)
- 使用gcc構建共享庫時,始終使用-fPIC,而不是-fpic(Tom Lane)
- 這可以在平台上支持更大的擴展庫。
- 在MSVC版本中,處理openssl庫不在VC子目錄中的情況(Andrew Dunstan)
- 在MSVC版本中,為libxml2頭文件添加適當的包含路徑(Andrew Dunstan)
- 這解決了之前需要在libxml2的標準Windows安裝中移動的問題。
- 在MSVC版本中,識別名為tcl86.lib的Tcl庫(Noah Misch)
- 在MSVC版本中,尊重vcregress.pl命令行(Andrew Dunstan)上的PROVE_FLAGS設置
版本9.6.4中的新功能:
- 進一步限制pg_user_mappings.umoptions的可見性,以保護存儲為用戶映射選項的密碼(Noah Misch)
- CVE-2017-7486的修復程序不正確:它允許用戶在自己的用戶映射中查看選項,即使她沒有在關聯的外部服務器上擁有USAGE權限。這些選項可能包括服務器所有者而不是用戶自己提供的密碼。由於在這種情況下information_schema.user_mapping_options不顯示選項,因此pg_user_mappings也不應該。 (CVE-2017-7547)
- 此修補程序本身僅修復新initdb'd數據庫中的行為。如果要在現有數據庫中應用此更改,則需要執行以下操作:
- 在postgresql.conf中添加allow_system_table_mods = true後重新啟動postmaster。 (在支持ALTER SYSTEM的版本中,您可以使用它來進行配置更改,但您仍需要重新啟動。)
- 在群集的每個數據庫中,以超級用戶身份運行以下命令:
- SET search_path = pg_catalog;
- 創建或替換視圖pg_user_mappings AS
- 選擇
- U.oid AS umid,
- S.oid AS srvid,
- S.srvname AS srvname,
- U.umuser AS umuser,
- 案例當U.umuser = 0那麼
- “公共”
- ELSE
- A.rolname
- END AS usename,
- CASE WHEN(U.umuser 0 AND A.rolname = current_user
- AND(pg_has_role(S.srvowner,'USAGE')
- OR has_server_privilege(S.oid,'USAGE')))
- OR(U.umuser = 0 AND pg_has_role(S.srvowner,'USAGE'))
- OR(SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
- 那麼U.umoptions
- ELSE NULL END as umoptions
- FROM pg_user_mapping U
- LEFT JOIN pg_authid A ON(A.oid = U.umuser)JOIN
- pg_foreign_server S ON(U.umserver = S.oid);
- 不要忘記包含template0和template1數據庫,否則該漏洞仍會存在於您稍後創建的數據庫中。要修復template0,您需要暫時使其接受連接。在PostgreSQL 9.5及更高版本中,您可以使用
- ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
- 然後在修復template0之後,使用 撤消它
- ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
- 在以前的版本中,改為使用
- UPDATE pg_database SET datallowconn = true WHERE datname ='template0';
- UPDATE pg_database SET datallowconn = false WHERE datname ='template0';
- 最後,刪除allow_system_table_mods配置設置,然後重新啟動postmaster。
- 在所有基於密碼的身份驗證方法中禁止使用空密碼(Heikki Linnakangas)
- libpq忽略空密碼規範,不會將它們傳輸到服務器。因此,如果用戶的密碼已設置為空字符串,則無法通過psql或其他基於libpq的客戶端使用該密碼登錄。因此,管理員可能認為將密碼設置為空等同於禁用密碼登錄。但是,使用基於修改或非基於libpq的客戶端,可以登錄,具體取決於配置的身份驗證方法。特別是最常用的方法md5,接受空密碼。在所有情況下,更改服務器以拒絕空密碼。 (CVE-2017-7546)
- 讓lo_put()檢查目標大對象的UPDATE權限(Tom Lane,Michael Paquier)
- lo_put()肯定需要與lowrite()相同的權限,但缺少檢查,允許任何用戶更改大對像中的數據。 (CVE-2017-7548)
- 使用pg_upgrade更正有關升級備用服務器的過程的文檔(Bruce Momjian)
- 之前的文檔指示用戶在運行pg_upgrade之後但在同步備用服務器之前啟動/停止主服務器。這個順序是不安全的。
- 修復元組更新鏈的並發鎖定(Alvaro Herrera)
- 如果多個會話使用舊快照同時鎖定具有非衝突鎖定模式的元組更新鏈,並且它們都成功,那麼由於某個競賽,其中一些會話可能會失敗(並且認為沒有實時元組版本)條件。這會產生一些後果,例如外鍵檢查未能看到確實存在但正在同時更新的元組。
- 在凍結一個XMAX為多重的元組並且只有一個仍然有趣的成員(Teodor Sigaev)的時候修復潛在的數據損壞
- 在內存中排序超過十億個元組時,避免整數溢出和隨後發生的崩潰(Sergey Koposov)
- 在Windows上,如果我們無法在新進程中保留共享內存的地址範圍,則重試進程創建(Tom Lane,Amit Kapila)
- 預計這可能會解決可能因防病毒產品干擾而導致的不常發生的子進程啟動故障。
- 修復Windows版本中共享謂詞鎖哈希表的低概率損壞(Thomas Munro,Tom Lane)
- 避免記錄SSL連接的干淨關閉,就好像它是連接重置(Michael Paquier) 一樣
- 阻止向客戶端發送SSL會話票證(Tom Lane)
- 此修復程序可防止使用支持票證的客戶端SSL代碼重新連接失敗。
- 修復在Solaris上設置tcp_keepalives_idle的代碼(Tom Lane)
- 修復統計信息收集器,以便在postmaster關閉並立即重啟(Tom Lane)後立即發出查詢消息
- 有效忽略了之前postmaster關閉後半秒內發出的統計數據查詢。
- 確保統計信息收集器的接收緩衝區大小至少為100KB(Tom Lane)
- 這樣可以降低在默認接收緩衝區大小小於此值的舊平台上丟棄統計數據的風險。
- 修復在處理XLOG_SWITCH WAL記錄(Andres Freund)後立即升級備用數據庫時可能創建的無效WAL段
- 修復walsender在客戶端請求關閉時立即退出(Tom Lane)
- 修復walsender流程中的SIGHUP和SIGUSR1處理(Petr Jelinek,Andres Freund)
- 在停機檢查站期間防止walsender觸發恐慌(Andres Freund,Michael Paquier)
- 修復由於postmaster(Tom Lane)中的競爭條件導致的walreceiver進程不必要的緩慢重啟
- 修復邏輯解碼過程中溢出到磁盤的小子事務洩漏(Andres Freund)
- 這導致臨時文件消耗過多的磁盤空間。
- 在創建邏輯解碼插槽期間減少構建快照所需的工作(Andres Freund,Petr Jelinek)
- 在具有大量未完成交易的服務器上,以前的算法非常昂貴。
- 修復可能無限延遲創建邏輯解碼槽的競爭條件(Andres Freund,Petr Jelinek)
- 減少處理syscache失效事件的開銷(Tom Lane)
- 這對邏輯解碼特別有用,它會觸發頻繁的緩存失效。
- 刪除在某些情況下使用的不正確的啟發式,以根據外鍵約束的存在來估計連接選擇性(David Rowley)
- 在存在多列外鍵約束但與查詢的連接結構不完全匹配的某些情況下,規劃器使用的估計啟發式算法根本不能正常工作。將此類案件恢復到9.6之前估計的方式。
- 修復INSERT或UPDATE分配給多個域類型的列的多個元素的情況(Tom Lane)
- 允許窗口函數用於聚合函數參數內的子SELECT(Tom Lane)
- 當基礎表是外表(Etsuro Fujita)時,確保正確強制執行視圖的CHECK OPTIONS子句
- 以前,更新可能會完全推送到外部服務器,但如果是這樣,則錯過了驗證視圖條件的需要。
- 在ALTER期間移動自動生成的數組類型... RENAME(Vik Fearing)
- 以前,我們會在CREATE期間重命名衝突的自動生成的數組類型;此修復程序將該行為擴展到重命名操作。
- 當對屬於該表的約束(David Rowley)發表評論時,在ALTER TABLE中修復懸空指針
- 將評論重新應用於重建的約束可能會因奇怪的錯誤消息而失敗,甚至崩潰。
- 確保ALTER USER ... SET接受ALTER ROLE ... SET所做的所有語法變體(Peter Eisentraut)
- 允許外表的CHECK約束最初為NOT VALID(Amit Langote)
- CREATE TABLE以靜默方式刪除CHECK約束的NOT VALID說明符,推斷該表必須為空,以便可以立即驗證約束。但這對於CREATE FOREIGN TABLE來說是錯誤的,因為沒有理由認為底層表是空的,即使它確定約束可以被視為有效的,也不是我們的業務。跳過外表的“優化”。
- 在將數據類型I / O函數的參數或返回類型從opaque更改為正確類型時正確更新依賴關係信息(Heikki Linnakangas)
- CREATE TYPE更新在這個過時的過時樣式中聲明的I / O函數,但它忘記記錄對類型的依賴,允許後續的DROP TYPE將破壞的函數定義留在後面。
- 當COPY從查詢結果中復制時,允許在查詢計劃中保持並行性(Andres Freund)
- 在ANALYZE處理tsvector列時減少內存使用量(Heikki Linnakangas)
- 在將貨幣值乘以整數或浮點數時,修復不必要的精度損失和草率舍入(Tom Lane)
- 加強對解析標識符的函數中的空格的檢查,例如regprocedurein()(Tom Lane)
- 根據流行的語言環境,這些函數可能會將多字節字符的片段誤解為空格。
- 在編譯PL / Perl時使用Perl中的相關#define符號(Ashutosh Sharma,Tom Lane)
- 這可以避免可移植性問題,在使用最近的Perl版本時,通常會在庫加載期間表現為“握手”不匹配。
- 在libpq中,在連接嘗試失敗後正確重置GSS / SASL和SSPI身份驗證狀態(Michael Paquier)
- 如果不這樣做,則意味著當從SSL退回到非SSL連接時,SSL嘗試中的GSS / SASL故障將始終導致非SSL嘗試失敗。 SSPI沒有失敗,但它洩露了記憶。
- 在psql中,當使用鍵盤EOF信號結束COPY FROM STDIN然後嘗試另一個COPY FROM STDIN時修復失敗(Thomas Munro)
- 在BSD派生的平台(包括macOS)上觀察到了這種不當行為,但在大多數其他平台上都沒有。
- 修復pg_dump和pg_restore最後發出REFRESH MATERIALIZED VIEW命令(Tom Lane)
- 當物化視圖引用其他用戶擁有的表時,這可以防止轉儲/恢復期間的錯誤。
- 改進pg_dump / pg_restore報告源於zlib的錯誤情況(Vladimir Kunschikov,Alvaro Herrera)
- 使用--clean選項修復pg_dump以按預期方式刪除事件觸發器(Tom Lane)
- 它現在也正確分配事件觸發器的所有權;之前,它們被恢復為由運行恢復腳本的超級用戶擁有。
- 使用--clean選項修復pg_dump,以便在公共架構不存在時不會失敗(Stephen Frost)
- 修復pg_dump不為空操作符類發出無效的SQL(Daniel Gustafsson)
- 將pg_dump輸出修復為Windows上的stdout(Kuntal Ghosh)
- 寫入stdout的壓縮純文本轉儲將包含由於未能將文件描述符置於二進制模式而導致的損壞數據。
- 修復pg_get_ruledef()以打印已重命名列的視圖的ON SELECT規則的正確輸出(Tom Lane)
- 在某些極端情況下,pg_dump依賴於pg_get_ruledef()來轉儲視圖,因此此錯誤可能導致轉儲/重新加載失敗。
- 使用空約束脩复外部聯接的轉儲,例如沒有公共列的自然LEFT JOIN的結果(Tom Lane)
- 修復在FROM子句中轉儲函數表達式的情況,如果表達式沒有解析為看起來像函數調用的東西(Tom Lane)
- 將pg_basebackup輸出修復到Windows上的stdout(Haribabu Kommi)
- 由於未能將文件描述符置於二進制模式,寫入stdout的備份將包含損壞的數據。
- 修復pg_rewind以正確處理超過2GB的文件(Kuntal Ghosh,Michael Paquier)
- 通常這些文件不會出現在PostgreSQL數據目錄中,但在某些情況下可能會出現這些文件。
- 修復pg_upgrade以確保結束WAL記錄沒有wal_level = minimum(Bruce Momjian)
- 此情況可能會阻止升級的備用服務器重新連接。
- 修復pg_xlogdump的WAL記錄長度計算(Andres Freund)
- 在postgres_fdw中,在ALTER SERVER或ALTER USER MAPPING命令(Kyotaro Horiguchi)之後重新建立與遠程服務器的連接
- 這可確保及時應用影響連接參數的選項更改。
- 在postgres_fdw中,允許取消遠程交易控制命令(Robert Haas,Rafia Sabih)
- 此更改使我們能夠在比以前更多的情況下快速逃避等待無響應的遠程服務器。
- 增加MAX_SYSCACHE_CALLBACKS以提供更多擴展空間(Tom Lane)
- 使用gcc構建共享庫時,始終使用-fPIC,而不是-fpic(Tom Lane)
- 這可以在平台上支持更大的擴展庫。
- 在MSVC版本中,處理openssl庫不在VC子目錄中的情況(Andrew Dunstan)
- 在MSVC版本中,為libxml2頭文件添加適當的包含路徑(Andrew Dunstan)
- 這解決了之前需要在libxml2的標準Windows安裝中移動的問題。
- 在MSVC版本中,識別名為tcl86.lib的Tcl庫(Noah Misch)
- 在MSVC版本中,尊重vcregress.pl命令行(Andrew Dunstan)上的PROVE_FLAGS設置
評論沒有發現