PostgreSQL 發(fā)布版本 13

2021-09-15 17:48 更新
E.2.1. 概覽
E.2.2. 遷移到第13版
E.2.3. 變化情況
E.2.4. 致謝

發(fā)布日期: 2020-09-24

E.2.1. 概覽

PostgreSQL 13 包含許多新的功能和增強功能,包括:

  • 從B樹索引條目的去重中節(jié)省空間和提高性能

  • 提高了使用聚合表或分區(qū)表的查詢性能

  • 在使用擴展統(tǒng)計時,更好地進行查詢計劃

  • 索引的并行vacuum回收

  • 增量排序

上述項目和PostgreSQL13的其他新功能將在以下章節(jié)中詳細解釋。

E.2.2. 遷移到第13版

對于那些希望從任何以前的版本遷移數據的人來說,需要使用pg_dumpall進行轉儲/恢復,或者使用pg_upgrade或邏輯復制。 關于遷移到新的主要版本的一般信息,請參見第 18.6 節(jié)

第13版包含一些變化,可能會影響與以前版本的兼容性。 請注意以下不兼容情況:

  • 改變SIMILAR TO ... ESCAPE NULL以返回NULL。 (Tom Lane)

    這個新行為符合SQL規(guī)范。以前,一個空的ESCAPE值被認為是指使用默認的轉義字符串(一個反斜杠字符)。 這也適用于substring(text FROM pattern ESCAPE text)。 在舊的視圖中,通過保持原函數不變,保留了以前的行為。

  • json[b]_to_tsvector()完全檢查其string選項的拼寫。 (Dominik Czarnota)

  • 改變非默認的effective_io_concurrency值影響并發(fā)的方式。 (Thomas Munro)

    以前,這個值是在設置并發(fā)請求數之前調整的。該值現在被直接使用。:

    SELECT round(sum(OLDVALUE / n::float)) AS newvalue FROM generate_series(1, OLDVALUE) s(n);
    
  • 防止在pg_stat_sslpg_stat_gssapi系統(tǒng)視圖中顯示輔助進程。 (Euler Taveira)

    將這些視圖連接到pg_stat_activity并希望看到輔助進程的查詢將需要使用左鍵連接。

  • 重新命名各種wait events以提高一致性。 (Fujii Masao, Tom Lane)

  • 修復ALTER FOREIGN TABLE ... 重命名COLUMN,以返回一個更合適的命令標簽。(Fujii Masao)

    以前它返回ALTER TABLE;現在它返回ALTER FOREIGN TABLE

  • 修復ALTER MATERIALIZED VIEW ... RENAME COLUMN,以返回一個更合適的命令標簽。 (Fujii Masao)

    以前它返回ALTER TABLE;現在它返回ALTER MATERIALIZED VIEW。

  • 將配置參數wal_keep_segments更名為wal_keep_size。 (Fujii Masao)

    這決定了要為備用服務器保留多少WAL。它是以兆字節(jié)為單位的,而不是像以前的參數那樣以文件數為單位。如果你以前使用wal_keep_segments,下面的公式會給你一個近似的設置:

    wal_keep_size = wal_keep_segments * wal_segment_size (typically 16MB)
    

  • 移除對使用PostgreSQL8.0以前的語法定義operator class的支持。(Daniel Gustafsson)

  • 移除對定義foreign key constraints的支持,使用PostgreSQL 7.3以前的語法。 (Daniel Gustafsson)

  • 移除對 "不透明"偽類型的支持,這些偽類型是由PostgreSQL7.3以前的服務器使用的。 (Daniel Gustafsson)

  • 移除對升級未打包(9.1前)擴展的支持 (Tom Lane)

    CREATE EXTENSIONFROM選項已不再被支持。 任何仍然使用未打包的擴展的安裝,在更新到PostgreSQL13之前,應該將它們升級到打包的版本。

  • 移除對時區(qū)數據庫中posixrules文件的支持 (Tom Lane)

    IANA的時區(qū)組已經廢棄了這個功能,這意味著它將在未來幾年逐漸從系統(tǒng)的時區(qū)數據庫中消失。 為了避免在時區(qū)數據更新時出現意外的行為變化,我們已經從第13版開始刪除了PostgreSQL對該功能的支持。 這只影響POSIX風格的時區(qū)規(guī)范的行為,這些規(guī)范缺乏明確的夏令時過渡規(guī)則;以前,過渡規(guī)則可以通過安裝一個自定義的 posixrules文件來確定,但現在它是硬連接的。 對于任何受影響的安裝,建議的修復方法是開始使用一個地理時區(qū)名稱。

  • ltree中,當lquery模式包含相鄰的星號與大括號時,例如,*{2}.*{3},正確解釋為*{5}(Nikita Glukhov)。

  • 修正pageinspectbt_metap(),以返回更合適的數據類型,減少溢出的可能性。 (Peter Geoghegan)

E.2.3. 變化情況

下面你將看到PostgreSQL13和前一個主要版本之間的變化的詳細說明。

E.2.3.1. 服務器

E.2.3.1.1. 分區(qū)
  • 允許pruning分區(qū)在更多情況下發(fā)生。 (Yuzuko Hosoya, Amit Langote, álvaro Herrera)

  • 允許partitionwise joins在更多情況下發(fā)生。 (Ashutosh Bapat, Etsuro Fujita, Amit Langote, Tom Lane)

    例如,分區(qū)連接現在可以在分區(qū)表之間發(fā)生,即使它們的分區(qū)邊界不完全匹配。

  • 在分區(qū)表上支持行級BEFORE 觸發(fā)器。 (álvaro Herrera)

    但是,這樣的觸發(fā)器不允許改變數據寫入的目的分區(qū)。

  • 允許分區(qū)表通過publications進行邏輯復制。(Amit Langote)

    以前,分區(qū)必須被單獨復制。 現在,可以顯式地發(fā)布一個分區(qū)表,使其所有的分區(qū)都自動發(fā)布。 添加/刪除一個分區(qū)會導致它同樣被添加到或從發(fā)布中刪除。 CREATE PUBLICATION選項publish_via_partition_root控制是否對分區(qū)的修改還是作為它們父級的修改發(fā)布。

  • 允許邏輯復制到訂閱者的分區(qū)表內 (Amit Langote)

    以前,訂閱者只能接收非分區(qū)表的行。

  • 允許在分區(qū)表達式中使用整行變量(即table.*)。 (Amit Langote)

E.2.3.1.2. 索引
  • 更有效地在B樹索引中存儲重復數據。 (Anastasia Lubennikova, Peter Geoghegan)

    這允許對低基數的列進行有效的B-tree索引,只存儲一次重復的鍵。 使用 pg_upgrade 升級的用戶將需要使用REINDEX來讓已有的索引使用這個功能。

  • 允許GiSTSP-GiST索引在box列上支持ORDER BY box <-> point 查詢。 (Nikita Glukhov)

  • 允許GIN索引更有效地處理tsquery搜索中的! (NOT) 從句 (Nikita Glukhov, Alexander Korotkov, Tom Lane, Julien Rouhaud)

  • 允許索引操作者類傳參 (Nikita Glukhov)

  • 允許CREATE INDEX指定GiST簽名長度和整數范圍的最大數量。 (Nikita Glukhov)

    在四字節(jié)和八字節(jié)的integer arraytsvector、pg_trgmltreehstore列上創(chuàng)建的索引現在可以控制這些GiST索引參數,而不是使用默認值。

  • 防止使用非默認排序的索引被添加作為表的唯一或主鍵約束。 (Tom Lane)

    索引的字符集或者排序規(guī)則必須與底層列的相匹配,但是ALTER TABLE以前沒有檢查這一點。

E.2.3.1.3. 優(yōu)化器
  • 改進優(yōu)化器的選擇性對包含/匹配操作符的估計。 (Tom Lane)

  • 允許為統(tǒng)計目標設置擴展統(tǒng)計。 (Tomas Vondra)

    這可以通過新的命令選項ALTER STATISTICS ...SET STATISTICS來控制。以前,這是在更一般的統(tǒng)計目標設置的基礎上計算的。

  • 允許在一次查詢中使用多個擴展統(tǒng)計對象 (Tomas Vondra)

  • 允許對OR子句和IN/ANY常數列表使用擴展的統(tǒng)計對象 (Pierre Ducroquet, Tomas Vondra)

  • 如果FROM子句中的函數被評估為常量,則允許其被拉起(內聯)。 (Alexander Kuzmenkov, Aleksandr Parfenov)

E.2.3.1.4. 總體性能
  • 實現 增量排序 (James Coleman, Alexander Korotkov, Tomas Vondra)

    如果已知一個中間查詢結果是由一個或多個所需排序的前導鍵排序的,那么如果行被分批排序,且前導鍵相等,則可以只考慮其余的鍵進行額外的排序。

    如果需要,可以用enable_incremental_sort來控制。

  • 提高排序inet值的性能。 (Brandur Leach)

  • 允許哈希聚合對聚合大結果集使用磁盤存儲。 (Jeff Davis)

    以前,如果預計hash聚合會使用超過work_mem的內存,就會避免進行hash聚合。 現在,盡管如此,也可以選擇一個哈希聚合計劃。 如果哈希表超過work_mem幾倍hash_mem_multiplier,就會溢出到磁盤。

    這種行為通常比舊的行為要好,在舊的行為中,一旦選擇了哈希聚合,無論它有多大,哈希表都會被保存在內存中 — 如果計劃器被錯誤地估計了,它可能會非常大。 如果需要,可以通過增加hash_mem_multiplier來獲得類似的行為。

  • 允許在autovacuum中插入,而不僅僅是更新和刪除,以觸發(fā)autovacuum清理行為。 (Laurenz Albe, Darafei Praliaskouski)

    以前,僅插入數據會觸發(fā)自動分析,但不會觸發(fā)autovacuum自動清理,理由是不可能有任何被標記刪除的行需要刪除。 然而,vacuum掃描還有其他有用的副作用,比如設置頁面全部可見的位,這提高了index-only掃描的效率。 另外,允許只插入表接受周期性的vacuum掃描有助于分散freezing舊元組的工作,這樣,當整個表一下子達到反包圍閾值時,就不會突然有大量的凍結工作要做。

    如果有必要,可以用新的參數autovacuum_vacuum_insert_thresholdautovacuum_vacuum_insert_scale_factor來調整這種行為,或者用相應的表格存儲選項。

  • 增加maintenance_io_concurrency參數以控制維護操作的I/O并發(fā)性 (Thomas Munro)

  • 如果wal_levelminimal,允許在創(chuàng)建或重寫關系的事務中跳過WAL寫入。 (Kyotaro Horiguchi)

    大于wal_skip_threshold的表,其文件將被sync而不是生成WAL。 以前,這只對COPY操作進行,但該實現有一個錯誤,在崩潰恢復期間可能導致數據丟失。

  • 當許多表空間被使用時,重放DROP DATABASE命令時,改善性能。 (Fujii Masao)

  • 提高大表truncation的性能。(Kirk Jamison)

  • 改進對TOAST的前導字節(jié)的檢索。 (Binguo Bao, Andrey Borodin)

    以前,壓縮的行外TOAST值被完全fetch,即使已知只需要一些前導字節(jié)?,F在 , 僅fetch產生結果的數據就好.

  • 提高LISTEN/NOTIFY的性能。 (Martijn van Oosterhout, Tom Lane)

  • 加快整數與文本的轉換速度 (David Fetter)

  • 減少包含許多SQL語句的查詢字符串和擴展腳本的內存使用。 (Amit Langote)

E.2.3.1.5. 監(jiān)控
  • 允許EXPLAINauto_explain、autovacuumpg_stat_statements追蹤WAL使用統(tǒng)計信息 (Kirill Bychik, Julien Rouhaud)

  • 允許記錄SQL語句的樣本,而不是所有的語句 (Adrien Nayrat)

    log_statement_sample_rate這些語句中的一部分將被記錄。 那些花費超過log_min_duration_sample時間的語句將被記錄下來。

  • csvlog和可選的log_line_prefix日志輸出中添加后端類型。(Peter Eisentraut)

  • 改進對預編譯的語句參數記錄日志的控制 (Alexey Bashtanov, álvaro Herrera)

    GUC設置log_parameter_max_length控制在記錄非錯誤語句時輸出的參數值的最大長度,而log_parameter_max_length_on_error對記錄有錯誤的語句做同樣處理。 以前,預編譯的語句參數在出錯時不會被記錄。

  • 允許在出錯后記錄函數調用的回溯信息 (Peter Eisentraut, álvaro Herrera)

    新的參數backtrace_functions指定了哪些C函數應該在出錯時生成回溯記錄。

  • vacuum緩沖區(qū)計數器的寬度為64位,以避免溢出。 (álvaro Herrera)

E.2.3.1.6. 系統(tǒng)視圖
  • pg_stat_activity中添加leader_pid,以報告一個并行worker的leader進程。 (Julien Rouhaud)

  • 添加系統(tǒng)視圖 pg_stat_progress_basebackup來報告流式基礎備份的進度。(Fujii Masao)

  • 添加系統(tǒng)視圖 pg_stat_progress_analyze 來報告 ANALYZE 的進展。 (álvaro Herrera, Tatsuro Yamada, Vinayak Pokale)

  • 添加系統(tǒng)視圖 pg_shmem_allocations以顯示共享內存的使用情況 (Andres Freund, Robert Haas)

  • 添加系統(tǒng)視圖pg_stat_slru以監(jiān)控內部SLRU緩存。 (Tomas Vondra)

  • 允許track_activity_query_size設置為高達1MB。 (Vyacheslav Makarov)

    之前最大值是100kB.

E.2.3.1.7. 等待事件
  • 在用posix_fallocate()創(chuàng)建DSM段時報告一個等待事件。 (Thomas Munro)

  • 添加等待事件VacuumDelay以報告基于成本的vacuum延遲 (Justin Pryzby)

  • WAL存檔和恢復暫停添加等待事件 (Fujii Masao)

    新事件是BackupWaitWalArchive和RecoveryPause。

  • 添加等待事件RecoveryConflictSnapshot和RecoveryConflictTablespace來監(jiān)控恢復沖突 (Masahiko Sawada)

  • 提高基于BSD的系統(tǒng)上等待事件的性能 (Thomas Munro)

E.2.3.1.8. 身份認證
  • 只允許超級用戶查看ssl_passphrase_command設置。 (Insung Moon)

    作為一項安全預防措施,這一點被改變了。

  • 將服務器默認的用于加密連接的最小TLS版本從1.0改為1.2。 (Peter Eisentraut)

    這個選擇可以由ssl_min_protocol_version控制。

E.2.3.1.9. 服務器配置
  • 在只讀事務模式下,收緊關于允許哪些實用程序命令的規(guī)則 (Robert Haas)

    這一變化也增加了可以在并行查詢中運行的實用命令的數量。

  • 允許allow_system_table_mods在服務器啟動后進行更改 (Peter Eisentraut)

  • allow_system_table_mods被設置時,不允許非超級用戶修改系統(tǒng)表。(Peter Eisentraut)

    以前,如果allow_system_table_mods在服務器啟動時被設置,非超級用戶可以對系統(tǒng)表發(fā)出INSERT/UPDATE/DELETE命令。

  • 啟用對Windows上Unix-domain sockets的支持。 (Peter Eisentraut)

E.2.3.2. 流式復制和恢復

  • 允許通過重新加載來改變流式復制的配置設置 (Sergei Kornilov)

    以前,要改變primary_conninfoprimary_slot_name,需要重新啟動服務器。

  • 允許WAL接收者在未指定永久復制槽時使用臨時復制槽。 (Peter Eisentraut, Sergei Kornilov)

    這種行為可以用wal_receiver_create_temp_slot啟用。

  • 允許復制槽的WAL存儲受到max_slot_wal_keep_size的限制。(Kyotaro Horiguchi)

    需要超過該值的復制槽被標記為無效。

  • 允許standby promotion取消任何要求的暫停。 (Fujii Masao)

    以前,當備用機處于暫停狀態(tài)時,不能進行promotion。

  • 如果恢復沒有達到指定的恢復目標,則生成一個錯誤。 (Leif Gunnar Erlandsen, Peter Eisentraut)

    以前,在達到WAL的末尾時,即使沒有達到目標,備機也會自我promote。

  • 允許控制 邏輯解碼在溢出到磁盤之前使用多少內存 (Tomas Vondra, Dilip Kumar, Amit Kapila)

    這是由 logical_decoding_work_mem 參數控制。

  • 即使無效的頁面被WAL引用,也允許繼續(xù)恢復。 (Fujii Masao)

    這是用ignore_invalid_pages啟用的。

E.2.3.3. 實用命令

  • 允許VACUUM并行地處理一個表的索引。 (Masahiko Sawada, Amit Kapila)

    新的PARALLEL選項控制了這一點。

  • 允許FETCH FIRST使用WITH TIES來返回任何與最后結果行相匹配的額外記錄。(Surafel Temesgen)

  • EXPLAINBUFFER輸出中報告規(guī)劃時間的緩沖區(qū)使用情況。 (Julien Rouhaud)

  • 使CREATE TABLE LIKECHECK約束的NO INHERIT屬性傳播到所創(chuàng)建的表。(Ildar Musin, Chris Travers)

  • 當在一個分區(qū)表上使用LOCK TABLE時,不要檢查子表的權限。 (Amit Langote)

  • 在插入身份列時允許OVERRIDING USER VALUE。 (Dean Rasheed)

  • 添加ALTER TABLE ... DROP EXPRESSION,允許從列中刪除GENERATED屬性。 (Peter Eisentraut)

  • 修復多步驟ALTER TABLE命令中的bug (Tom Lane)

    IF NOT EXISTS子句現在可以按預期運行,即如果列已經存在,派生動作(如索引創(chuàng)建)就不會執(zhí)行。 另外,在某些情況下,將相關操作合并到一個ALTER TABLE中,現在有效,而以前卻不能。

  • 增加ALTER VIEW語法來重命名視圖列 (Fujii Masao)

    重命名視圖列已經是可能的,但人們必須寫ALTER TABLE RENAME COLUMN,這是令人困惑的。

  • 增加ALTER TYPE選項,以修改一個基本類型的TOAST屬性和支持功能。 (Tomas Vondra, Tom Lane)

  • 添加CREATE DATABASE LOCALE 選項 (Peter Eisentraut)

    這將現有的選項LC_COLLATELC_CTYPE合并為一個選項。

  • 允許DROP DATABASE斷開使用目標數據庫的會話,同時允許刪除數據庫成功。(Pavel Stehule, Amit Kapila)

    這是由FORCE選項啟用的。

  • 添加結構成員tg_updatedcols以允許C語言更新觸發(fā)器知道哪一列被更新。 (Peter Eisentraut)

E.2.3.4. 數據類型

  • 增加多態(tài)數據類型,供需要兼容參數的函數使用 (Pavel Stehule)

    新的數據類型是anycompatible、anycompatiblearray、anycompatiblenonarrayanycompatiblerange。

  • 添加SQL數據類型xid8以揭示完整的事務idFullTransactionId。 (Thomas Munro)

    現有的xid數據類型只有4個字節(jié),所以它不提供事務年代。

  • 增加數據類型regcollation和相關函數,以表示校對(字符集)對象的OIDs。 (Julien Rouhaud)

  • 在某些情況下使用glibc版本作為collation版本標識。(Thomas Munro)

    如果glibc版本發(fā)生變化,將發(fā)出關于可能損壞依賴字符集的索引的警告。

  • 增加對Windows上的字符集版本的支持 (Thomas Munro)

  • 允許ROW表達式用后綴符號提取其成員 (Tom Lane)

    例如,(ROW(4, 5.0)).f1現在返回4。

E.2.3.5. Functions

  • 增加jsonb_set()的替代版本,改進了NULL的處理。 (Andrew Dunstan)

    新的函數,jsonb_set_lax(),處理一個NULL的新值,方法是將指定的鍵設置為JSON空,刪除鍵,引發(fā)異常,或者根據要求返回jsonb值,不作修改。

  • 添加jsonpath .datetime()方法。 (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov)

    這個函數允許JSON值被轉換為時間戳,然后可以在jsonpath表達式中處理。 這一變化還增加了jsonpath函數,支持時間區(qū)間的輸出。

  • 添加SQL函數NORMALIZE()來規(guī)范Unicode字符串,以及IS NORMALIZED來檢查是否規(guī)范化 (Peter Eisentraut)

  • pg_lsn添加min()max()聚合。 (Fabrízio de Royes Mello)

    這些在監(jiān)控查詢中特別有用。

  • 允許Unicode 轉義,例如,E'\unnnn 'U&'\nnnn ',以指定數據庫編碼中可用的任何字符,即使數據庫的編碼不是UTF-8 (Tom Lane)

  • 允許to_date()to_timestamp()識別非英文月/日名稱 (Juan José Santamaría Flecha, Tom Lane)

    識別的名稱與to_char()輸出的名稱相同,格式模式相同。

  • 添加日期時間格式模式FF1FF6,以指定輸入或輸出1至6位小數秒。 (Alexander Korotkov, Nikita Glukhov, Teodor Sigaev, Oleg Bartunov)

    這些模式可以被to_char()、to_timestamp()和jsonpath的.datetime()使用。

  • 添加SSSS日期格式模式作為SQL標準的SS的別名。 (Nikita Glukhov, Alexander Korotkov)

  • 添加函數gen_random_uuid()以生成第4版UUIDs (Peter Eisentraut)

    以前,UUID生成功能只在外部模塊uuid-ossppgcrypto中可用。

  • 增加最大公倍數(gcd)和最小公倍數(lcm)函數 (Vik Fearing)

  • 提高numeric類型的平方根sqrt)和自然對數(ln)函數的性能和準確性。 (Dean Rasheed)

  • 添加函數 min_scale(),該函數返回小數點右邊的數字數量,這些數字是完全精確地表示numeric值所需要的。 (Pavel Stehule)

  • 添加函數 trim_scale(),通過刪除尾部的零來減少numeric值的比例。 (Pavel Stehule)

  • 添加距離運算符的換算器。 (Nikita Glukhov)

    例如,以前只支持point <-> line,現在line <-> point也可以。

  • 創(chuàng)建所有transaction ID函數的xid8版本。 (Thomas Munro)

    舊的基于xid的函數仍然存在,以便向后兼容。

  • 允許get_bit()set_bit()設置bytea值的前256MB以外的位。 (Movead Li)

  • 允許advisory-lock函數在某些并行操作中使用 (Tom Lane)

  • 增加刪除對象對擴展的依賴的能力 (álvaro Herrera)

    該對象可以是一個函數、物化視圖、索引或觸發(fā)器。語法是ALTER ... NO DEPENDS ON。

E.2.3.6. PL/pgSQL

  • 提高簡單PL/pgSQL表達式的性能 (Tom Lane, Amit Langote)

  • 提高使用不可變表達式的PL/pgSQL函數的性能 (Konstantin Knizhnik)

E.2.3.7. 客戶端接口

  • 允許libpq客戶端要求對加密連接進行通道綁定 (Jeff Davis)

    使用libpq連接參數channel_binding迫使TLS連接的另一端證明它知道用戶的密碼。 這樣可以防止中間人攻擊。

  • 增加libpq連接參數,控制加密連接允許的最小和最大TLS版本。 (Daniel Gustafsson)

    這些設置是ssl_min_protocol_versionssl_max_protocol_version。默認情況下,最小的TLS版本是1.2(這代表了與以前版本相比的行為變化)。

  • 允許使用密碼來解鎖客戶端證書 (Craig Ringer, Andrew Dunstan)

    這是由libpq的sslpassword連接參數啟用的。

  • 允許libpq使用DER編碼的客戶證書 (Craig Ringer, Andrew Dunstan)

  • 修復ecpgEXEC SQL elif指令使其正確的運行。 (Tom Lane)

    以前,它的行為與endif后面的ifdef相同,因此,同一個if結構的前一個分支成功后,不會阻止elif分支或后續(xù)分支的擴展。

E.2.3.8. 客戶端應用

E.2.3.8.1. psql
  • psql的默認prompts中添加事務狀態(tài)(%x)。(Vik Fearing)

  • 允許次要的psql提示是空白的,但與主要提示的寬度相同。 (Thomas Munro)

    這是通過設置PROMPT2%w來實現的。

  • 允許psqlg\gx命令在該單一命令期間改變>pset輸出選項。(Tom Lane)

    這個功能允許像g(expand=on)這樣的語法,這相當于\gx。

  • 添加psql命令以顯示運算符類和運算符系列 (Sergey Cherkashin, Nikita Glukhov, Alexander Korotkov)

    新的命令是 \dAc, \dAf, \dAo, 和 \dAp.

  • psql\dt+和相關命令中顯示表的持久性。(David Fetter)

    在verbose模式下,表/索引/視圖顯示該對象是永久的、臨時的還是未記錄的。

  • 改進psqldTOAST表的輸出。 (Justin Pryzby)

  • 修復psql\e命令后的重新顯示 (Tom Lane)

    當退出編輯器時,如果查詢沒有以分號或\g結束,現在將顯示查詢緩沖區(qū)的內容。

  • psql中添加\warn命令 (David Fetter)

    這就像echo,只是文本被發(fā)送到stderr而不是stdout。

  • 在命令行--help輸出中添加PostgreSQL主頁。(Peter Eisentraut)

E.2.3.8.2. pgbench
  • 允許pgbench對其accounts表進行分區(qū) (Fabien Coelho)

    這允許對分區(qū)進行性能測試。

  • 添加pgbench命令/aset,其行為類似于/gset,但用于多個查詢。 (Fabien Coelho)

  • 允許pgbench在服務器端生成其初始數據,而不是在客戶端。 (Fabien Coelho)

  • 允許pgbench使用選項--show-script來顯示腳本內容。 (Fabien Coelho)

E.2.3.9. 服務器應用

  • 為基礎備份生成備份清單,并對其進行驗證 (Robert Haas)

    一個新的工具pg_verifybackup可以驗證備份。

  • pg_basebackup默認估計總備份大小 (Fujii Masao)

    這個計算允許pg_stat_progress_basebackup來顯示進度。 如果不需要,可以通過使用--no-estimate-size選項來禁用它。 以前,只有在使用--progress選項時才會發(fā)生這種計算。

  • pg_rewind中增加一個選項,以配置備庫。 (Paul Guo, Jimmy Yih, Ashwin Agrawal)

    這與pg_basebackup--write-recovery-conf選項相匹配。

  • 允許pg_rewind使用目標集群的 群集的restore_command來檢索需要的WAL。 (Alexey Kondratov)

    這是用-c/--restore-target-wal選項啟用的。

  • pg_rewind在rewinding前自動運行崩潰恢復。 (Paul Guo, Jimmy Yih, Ashwin Agrawal)

    這可以通過使用--no-ensure-shutdown來禁用。

  • 增加PREPARE TRANSACTION相關信息,由pg_waldump報告。 (Fujii Masao)

  • 添加pg_waldump選項--quiet以抑制非錯誤輸出。 (Andres Freund, Robert Haas)

  • 添加pg_dump選項--include-foreign-data 來轉儲外部服務器的數據。 (Luis Carril)

  • 允許由vacuumdb運行的vacuum命令以并行模式運行 (Masahiko Sawada)

    這是通過新的--parallel選項啟用的。

  • 允許reindexdb并行操作 (Julien Rouhaud)

    并行模式是通過新的--jobs選項啟用的。

  • 允許dropdb斷開使用目標數據庫的會話,同時允許刪除成功。 (Pavel Stehule)

    這是用-f選項啟用的。

  • createuser中移除--adduser--no-adduser。 (Alexander Lakhin)

    長期支持的首選選項稱為 --superuser--no-superuser.

  • 使用pg_upgrade程序的目錄作為運行pg_upgrade時的默認--new-bindir設置。 (Daniel Gustafsson)

E.2.3.10. 文檔

  • 在文檔中增加一個glossary。 (Corey Huinker, Jürgen Purtz, Roger Harkavy, álvaro Herrera)

  • 重新格式化包含函數和操作符信息的表格,使之更加清晰。(Tom Lane)

  • 升級到使用DocBook 4.5。 (Peter Eisentraut)

E.2.3.11. 源代碼

  • 增加對Visual Studio 2019上構建的支持 (Haribabu Kommi)

  • 增加對MSYS2的構建支持 (Peter Eisentraut)

  • 為Power PC編譯器增加compare_exchange和fetch_add匯編語言代碼 (Noah Misch)

  • 更新Snowball stemmer全文搜索使用的詞典 (Panagiotis Mavrogiorgos)

    這增加了希臘語的詞根,并改進了丹麥語和法語的詞根。

  • 刪除對Windows 2000的支持 (Michael Paquier)

  • 移除對非ELF BSD系統(tǒng)的支持。 (Peter Eisentraut)

  • 移除對Python 2.5.X及以前版本的支持。 (Peter Eisentraut)

  • 移除支持的OpenSSL 0.9.8和1.0.0版 (Michael Paquier)

  • 移除configure選項 --disable-float8-byval--disable-float4-byval。 (Peter Eisentraut)

    為了與一些零版本的C函數兼容,需要這些函數,但這些函數已不再被支持。

  • 將查詢字符串傳遞給計劃器Hook函數 (Pascal Legrand, Julien Rouhaud)

  • 添加TRUNCATE命令掛鉤 (Yuli Khodorkovskiy)

  • 添加TLS初始hook (Andrew Dunstan)

  • 允許在沒有預定義的Unix域套接字目錄下進行構建 (Peter Eisentraut)

  • 減少Unix平臺上SysV資源密鑰碰撞的概率 (Tom Lane)

  • 使用操作系統(tǒng)的函數,可靠地清除包含敏感信息的內存 (Peter Eisentraut)

    例如,這用于清除存儲在內存中的密碼。

  • 添加headerscheck腳本以測試C頭文件的兼容性 (Tom Lane)

  • 將內部列表實現為數組,而不是單元格的鏈。 (Tom Lane)

    這提高了訪問許多對象的查詢的性能。

  • 改變TS_execute()的API。(Tom Lane, Pavel Borisov)

    TS_execute回調現在必須提供三元(是/否/可能)邏輯。 準確計算NOT查詢現在是默認的。

E.2.3.12. 其他模塊

  • 允許extensions被指定為可信的。 (Tom Lane)

    擁有數據庫級CREATE權限的用戶可以在數據庫中安裝此類擴展,即使他們不是超級用戶。 這一變化也刪除了pg_pltemplate系統(tǒng)目錄。

  • 允許非超級用戶在不使用密碼的情況下連接到postgres_fdw外部服務器 (Craig Ringer)

    具體來說,允許超級用戶為用戶映射設置password_required為false。 仍然必須注意防止非超級用戶使用超級用戶憑證連接到外部服務器。

  • 允許postgres_fdw使用證書認證 (Craig Ringer)

    不同的用戶可以使用不同的證書。

  • 允許sepgsql控制訪問TRUNCATE命令。 (Yuli Khodorkovskiy)

  • 添加擴展bool_plperl,將SQL布爾運算轉換為/從PL/Perl布爾運算。 (Ivan Panchenko)

  • pg_stat_statementsSELECT ... FOR UPDATE命令與那些沒有FOR UPDATE的命令區(qū)別對待。 (Andrew Gierth, Vik Fearing)

  • 允許pg_stat_statements選擇性地跟蹤報表的計劃時間。 (Julien Rouhaud, Pascal Legrand, Thomas Munro, Fujii Masao)

    此前,只有執(zhí)行時間被跟蹤。

  • 徹底修改ltree的lquery語法,以便更有邏輯地處理NOT (!)。 (Filip Rembialkowski, Tom Lane, Nikita Glukhov)

    也允許非*查詢使用數字范圍({})的匹配。

  • 增加對ltree、lquery和ltxtquery類型的二進制I/O的支持 (Nino Floris)

  • dict_int增加一個選項,以忽略整數的signv。 (Jeff Janes)

  • 添加adminpack函數pg_file_sync()以允許fsync'ing一個文件 (Fujii Masao)

  • 添加pageinspect函數來輸出t_infomask/t_infomask2值為人性化可讀格式(Craig Ringer, Sawada Masahiko, Michael Paquier)

  • 在pageinspect輸出中添加B樹索引去重處理列 (Peter Geoghegan)

E.2.4. 致謝

以下人員(按字母順序排列)作為補丁作者、提交者、審核者、測試者或問題報告者對該版本做出了貢獻。

Abhijit Menon-Sen
Adam Lee
Adam Scott
Adé Heyward
Adrien Nayrat
Ahsan Hadi
Alastair McKinley
Aleksandr Parfenov
Alex Aktsipetrov
Alex Macy
Alex Shulgin
Alexander Korotkov
Alexander Kukushkin
Alexander Kuzmenkov
Alexander Lakhin
Alexey Bashtanov
Alexey Kondratov
álvaro Herrera
Amit Kapila
Amit Khandekar
Amit Langote
Amul Sul
Anastasia Lubennikova
Andreas Joseph Krogh
Andreas Karlsson
Andreas Kunert
Andreas Seltenreich
Andrei Zubkov
Andres Freund
Andrew Bille
Andrew Dunstan
Andrew Gierth
Andrey Borodin
Andrey Klychkov
Andrey Lepikhov
Anna Akenteva
Anna Endo
Anthony Nowocien
Anton Vlasov
Antonin Houska
Ants Aasma
Arne Roland
Arnold Müller
Arseny Sher
Arthur Nascimento
Arthur Zakirov
Ashutosh Bapat
Ashutosh Sharma
Ashwin Agrawal
Asif Rehman
Asim Praveen
Atsushi Torikoshi
Augustinas Jokubauskas
Austin Drenski
Basil Bourque
Beena Emerson
Ben Cornett
Benjie Gillam
Beno?t Lobréau
Bernd Helmle
Bharath Rupireddy
Bhargav Kamineni
Binguo Bao
Brad DeJong
Brandur Leach
Brent Bates
Brian Williams
Bruce Momjian
Cameron Ezell
Cary Huang
Chapman Flack
Charles Offenbacher
Chen Huajun
Chenyang Lu
Chris Bandy
Chris Travers
Christoph Berg
Christophe Courtois
Corey Huinker
Craig Ringer
Cuiping Lin
Dagfinn Ilmari Manns?ker
Daniel Fiori
Daniel Gustafsson
Daniel Vérité
Daniel Westermann
Darafei Praliaskouski
Daryl Waycott
Dave Cramer
David Christensen
David Fetter
David G. Johnston
David Gilman
David Harper
David Rowley
David Steele
David Zhang
Davinder Singh
Dean Rasheed
Denis Stuchalin
Dent John
Didier Gautheron
Dilip Kumar
Dmitry Belyavsky
Dmitry Dolgov
Dmitry Ivanov
Dmitry Telpt
Dmitry Uspenskiy
Dominik Czarnota
Dongming Liu
Ed Morley
Edmund Horner
Emre Hasegeli
Eric Gillum
Erik Rijkers
Erwin Brandstetter
Ethan Waldo
Etsuro Fujita
Eugen Konkov
Euler Taveira
Fabien Coelho
Fabrízio de Royes Mello
Felix Lechner
Filip Janus
Filip Rembialkowski
Frank Gagnepain
Georgios Kokolatos
Gilles Darold
Greg Nancarrow
Grigory Smolkin
Guancheng Luo
Guillaume Lelarge
Hadi Moshayedi
Haiying Tang
Hamid Akhtar
Hans Buschmann
Hao Wu
Haribabu Kommi
Haruka Takatsuka
Heath Lord
Heikki Linnakangas
Himanshu Upadhyaya
Hironobu Suzuki
Hugh McMaster
Hugh Ranalli
Hugh Wang
Ian Barwick
Ibrar Ahmed
Ildar Musin
Insung Moon
Ireneusz Pluta
Isaac Morland
Ivan Kartyshov
Ivan Panchenko
Ivan Sergio Borgonovo
Jaime Casanova
James Coleman
James Gray
James Hunter
James Inform
James Lucas
Jan Mussler
Jaroslav Sivy
Jeevan Chalke
Jeevan Ladhe
Jeff Davis
Jeff Janes
Jehan-Guillaume de Rorthais
Jeremy Evans
Jeremy Schneider
Jeremy Smith
Jerry Sievers
Jesper Pedersen
Jesse Kinkead
Jesse Zhang
Jian Zhang
Jie Zhang
Jim Nasby
Jimmy Yih
Jobin Augustine
Joe Conway
John Hsu
John Naylor
Jon Jensen
Jonathan Katz
Jorge Gustavo Rocha
Josef ?imánek
Joseph Nahmias
Juan José Santamaría Flecha
Julian Backes
Julien Rouhaud
Jürgen Purtz
Justin King
Justin Pryzby
Karl O. Pinc
Keisuke Kuroda
Keith Fiske
Kelly Min
Ken Tanzer
Kirill Bychik
Kirk Jamison
Konstantin Knizhnik
Kuntal Ghosh
Kyle Kingsbury
Kyotaro Horiguchi
Lars Kanis
Laurenz Albe
Leif Gunnar Erlandsen
Li Japin
Liudmila Mantrova
Lucas Viecelli
Luis M. Carril
Luká? Sobotka
Maciek Sakrejda
Magnus Hagander
Mahadevan Ramachandran
Mahendra Singh Thalor
Manuel Rigger
Marc Munro
Marcos David
Marina Polyakova
Mark Dilger
Mark Wong
Marko Tiikkaja
Markus Winand
Marti Raudsepp
Martijn van Oosterhout
Masahiko Sawada
Masahiro Ikeda
Masao Fujii
Mateusz Guzik
Matt Jibson
Matteo Beccati
Maxence Ahlouche
Melanie Plageman
Michael Banck
Michael Luo
Michael Meskes
Michael Paquier
Michail Nikolaev
Mike Palmiotto
Mithun Cy
Movead Li
Nathan Bossart
Nazli Ugur Koyluoglu
Neha Sharma
Nicola Contu
Nicolás Alvarez
Nikhil Sontakke
Nikita Glukhov
Nikolay Shaplov
Nino Floris
Noah Misch
Noriyoshi Shinoda
Oleg Bartunov
Oleg Samoilov
Oleksii Kliukin
Ondrej Jirman
Panagiotis Mavrogiorgos
Pascal Legrand
Patrick McHardy
Paul Guo
Paul Jungwirth
Paul Ramsey
Paul Sivash
Paul Spencer
Pavan Deolasee
Pavel Borisov
Pavel Luzanov
Pavel Stehule
Pavel Suderevsky
Peifeng Qiu
Pengzhou Tang
Peter Billen
Peter Eisentraut
Peter Geoghegan
Peter Smith
Petr Fedorov
Petr Jelínek
Phil Bayer
Philip Semanchuk
Philippe Beaudoin
Pierre Ducroquet
Pierre Giraud
Piotr Gabriel Kosinski
Piotr Wlodarczyk
Prabhat Sahu
Quan Zongliang
Quentin Rameau
Rafael Castro
Rafia Sabih
Raj Mohite
Rajkumar Raghuwanshi
Ramanarayana M
Ranier Vilela
Rares Salcudean
Raúl Marín Rodríguez
Raymond Martin
Reijo Suhonen
Richard Guo
Robert Ford
Robert Haas
Robert Kahlert
Robert Treat
Robin Abbi
Robins Tharakan
Roger Harkavy
Roman Peshkurov
Rui DeSousa
Rui Hai Jiang
Rushabh Lathia
Ryan Lambert
Ryohei Takahashi
Scott Ribe
Sean Farrell
Sehrope Sarkuni
Sergei Agalakov
Sergei Kornilov
Sergey Cherkashin
Shawn Debnath
Shawn Wang
Shay Rojansky
Shenhao Wang
Simon Riggs
Slawomir Chodnicki
Soumyadeep Chakraborty
Stéphane Lorek
Stephen Frost
Steve Rogerson
Steven Winfield
Surafel Temesgen
Suraj Kharage
Takanori Asaba
Takao Fujii
Takayuki Tsunakawa
Takuma Hoshiai
Tatsuhito Kasahara
Tatsuo Ishii
Tatsuro Yamada
Taylor Vesely
Teodor Sigaev
Tham Nguyen
Thibaut Madelaine
Thom Brown
Thomas Kellerer
Thomas Munro
Tiago Anastacio
Tim Clarke
Tim M?hlmann
Tom Ellis
Tom Gottfried
Tom Lane
Tomas Vondra
Tuomas Leikola
Tushar Ahuja
Victor Wagner
Victor Yegorov
Vignesh C
Vik Fearing
Vinay Banakar
Vladimir Leskov
Vladimir Sitnikov
Vyacheslav Makarov
Vyacheslav Shablistyy
Will Leinweber
William Crowell
Wyatt Alt
Yang Xiao
Yaroslav Schekin
Yi Huang
Yigong Hu
Yoann La Cancellera
Yoshikazu Imai
Yu Kimura
Yugo Nagata
Yuli Khodorkovskiy
Yusuke Egashira
Yuya Watari
Yuzuko Hosoya
ZhenHua Cai


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號