支援的版本:目前 (17)

E.3. 版本 17 #

發布日期: 2024-09-26

E.3.1. 概觀 #

PostgreSQL 17 包含許多新功能和增強功能,包括

  • 用於 VACUUM 的新記憶體管理系統,可減少記憶體消耗並提高整體清理效能。

  • 新的SQL/JSON功能,包含建構子、識別函數,以及 JSON_TABLE() 函數,該函數可將 JSON 資料轉換為表格表示。

  • 各種查詢效能改進,包含使用串流 I/O 的循序讀取、高並發下的寫入吞吐量,以及在 btree 索引中搜尋多個值。

  • 邏輯複製增強功能,包括

    • 故障轉移控制

    • pg_createsubscriber,一個從實體備份建立邏輯副本的工具

    • pg_upgrade 現在會保留發布者的邏輯複製槽和訂閱者的完整訂閱狀態。這將允許升級到未來的重大版本,以繼續邏輯複製,而無需複製來重新同步。

  • 新的客戶端連線選項,sslnegotiation=direct,執行直接 TLS 握手以避免往返協商。

  • pg_basebackup 現在支援增量備份。

  • COPY 新增了一個選項 ON_ERROR ignore,允許複製操作在發生錯誤時繼續。

以上項目和 PostgreSQL 17 的其他新功能將在以下各節中詳細說明。

E.3.2. 遷移到版本 17 #

對於希望從任何先前版本遷移資料的使用者,需要使用 pg_dumpall 進行傾印/還原,或使用 pg_upgrade 或邏輯複製。 有關遷移到新的主要版本的常規資訊,請參閱第 18.6 節

版本 17 包含許多可能會影響與先前版本相容性的變更。 請注意以下不相容性

  • 變更函數以在維護操作期間使用安全的 search_path (Jeff Davis) § §

    這可以防止維護操作(ANALYZECLUSTERCREATE INDEXCREATE MATERIALIZED VIEWREFRESH MATERIALIZED VIEWREINDEXVACUUM)執行不安全的存取。 運算式索引和物化視圖使用的需要參考非預設模式的函數,必須在函數建立期間指定搜尋路徑。

  • 限制 ago 只能出現在 interval 值的結尾 (Joseph Koshakow) § §

    此外,防止空的間隔單位多次出現。

  • 移除伺服器變數 old_snapshot_threshold (Thomas Munro) §

    此變數允許清理移除可能仍然對執行中的交易可見的列,如果在之後存取,會導致「快照過舊」錯誤。 如果找到改進的實作方式,此功能可能會在之後重新新增到 PostgreSQL

  • 變更 SET SESSION AUTHORIZATION 對初始工作階段使用者的超級使用者狀態的處理方式 (Joseph Koshakow) §

    新的行為基於發出 SET SESSION AUTHORIZATION 命令時,工作階段使用者的超級使用者狀態,而不是連線時的超級使用者狀態。

  • 移除模擬每個資料庫使用者的功能 (Nathan Bossart) §

    很少使用此功能 db_user_namespace

  • 移除 adminpack contrib 擴充功能 (Daniel Gustafsson) §

    這曾經被現在已終止支援的 pgAdmin III 使用。

  • Windows 上移除 wal_sync_methodfsync_writethrough (Thomas Munro) §

    Windows 上,此值與 fsync 相同。

  • 變更兩個檔案邊界處理WAL檔案名稱函數 (Kyotaro Horiguchi, Andres Freund, Bruce Momjian) §

    LSN在檔案區段邊界上時,pg_walfile_name()pg_walfile_name_offset() 函數過去會報告先前的區段號碼;現在它會傳回目前的LSN區段。LSN區段。

  • 移除伺服器變數 trace_recovery_messages,因為不再需要 (Bharath Rupireddy) §

  • 移除 資訊綱要 欄位 element_types.domain_default (Peter Eisentraut) §

  • 變更 pgrowlocks 鎖定模式輸出標籤 (Bruce Momjian) §

  • pg_stat_bgwriter 移除 buffers_backendbuffers_backend_fsync (Bharath Rupireddy) §

    這些欄位被認為與 pg_stat_io 中相似的欄位重複。

  • 重新命名 pg_stat_statements 的 I/O 區塊讀取/寫入計時統計欄位 (Nazir Bilal Yavuz) §

    這會將 blk_read_time 重新命名為 shared_blk_read_time,並將 blk_write_time 重新命名為 shared_blk_write_time

  • 變更 pg_attribute.attstattargetpg_statistic_ext.stxstattarget,將預設統計目標表示為 NULL (Peter Eisentraut) § §

  • pg_collation.colliculocale 重新命名為 colllocale,並將 pg_database.daticulocale 重新命名為 datlocale (Jeff Davis) §

  • pg_stat_progress_vacuum 欄位 max_dead_tuples 重新命名為 max_dead_tuple_bytes,將 num_dead_tuples 重新命名為 num_dead_item_ids,並新增 dead_tuple_bytes (Masahiko Sawada) § §

  • 重新命名SLRU系統檢視表 pg_stat_slru 中的欄位 (Alvaro Herrera) §

    pg_stat_reset_slru() 接受的欄位名稱也已變更。

E.3.3. 變更 #

您將在下面找到 PostgreSQL 17 和前一個主要版本之間的變更的詳細說明。

E.3.3.1. 伺服器 #

E.3.3.1.1. 最佳化工具 #
  • 允許最佳化工具透過考慮先前列輸出子句中引用的欄位的統計資訊和排序順序來改善CTE計畫 (Jian Guo, Richard Guo, Tom Lane) § §

  • 改善 IS NOT NULLIS NULL 查詢限制的最佳化 (David Rowley, Richard Guo, Andy Fan) § §

    NOT NULL 欄位的查詢中移除 IS NOT NULL 限制,如果指定了 IS NULL,則消除對 NOT NULL 欄位的掃描。

  • 允許對 IS [NOT] UNKNOWN 條件式的布林欄位進行分割區修剪 (David Rowley) §

  • 改善使用包含運算子 <@ 和 @> 時的範圍值最佳化 (Kim Johan Andersson, Jian He) §

  • 允許將相關的 IN 子查詢轉換為聯結 (Andy Fan, Tom Lane) §

  • 改善分割區表、繼承父系和 UNION ALL 查詢上 LIMIT 子句的最佳化 (Andy Fan, David Rowley) §

  • 允許在更多情況下以平行方式執行查詢節點 (Tom Lane) §

  • 允許內部排序 GROUP BY 欄位以符合 ORDER BY (Andrei Lepikhov, Teodor Sigaev) §

    可以使用伺服器變數 enable_group_by_reordering 停用此功能。

  • 允許 UNION (不含 ALL) 使用 MergeAppend (David Rowley) §

  • 修正 MergeAppend 計畫以更準確地計算需要排序的列數 (Alexander Kuzmenkov) §

  • 允許 GiSTSP-GiST 索引成為增量排序的一部分 (Miroslav Bendik) §

    這對於 ORDER BY 子句特別有用,其中第一個欄位具有 GiST 和 SP-GiST 索引,而其他欄位則沒有。

  • 將欄位新增至 pg_stats 以報告範圍類型直方圖資訊 (Egor Rogov, Soumyadeep Chakraborty) §

E.3.3.1.2. 索引 #
  • 允許 btree 索引更有效率地尋找一組值,例如由使用常數的 IN 子句提供的值 (Peter Geoghegan, Matthias van de Meent) §

  • 允許使用平行工作人員建立 BRIN 索引 (Tomas Vondra, Matthias van de Meent) §

E.3.3.1.3. 一般效能 #
  • 允許 vacuum 更有效率地移除和凍結 tuple (Melanie Plageman, Heikki Linnakangas) §

    WAL由 vacuum 引起的流量也更緊湊。

  • 允許 vacuum 更有效率地儲存 tuple 參考 (Masahiko Sawada, John Naylor) § § § §

    此外,當 maintenance_work_memautovacuum_work_mem 較高時,vacuum 不再靜默地限制為 1 GB 記憶體。

  • 最佳化沒有索引的關係的 vacuum (Melanie Plageman) §

  • 將預設 vacuum_buffer_usage_limit 增加到 2MB (Thomas Munro) §

  • 改善檢查具有許多成員的角色時的效能 (Nathan Bossart) §

  • 改善競爭激烈的WAL寫入的效能 (Bharath Rupireddy) §

  • 改善將大型資料區塊傳輸到用戶端時的效能 (Melih Mutlu) §

  • 允許使用新的系統變數 io_combine_limit 對檔案系統讀取進行分組 (Thomas Munro, Andres Freund, Melanie Plageman, Nazir Bilal Yavuz) § § §

E.3.3.1.4. 監控 #
  • 建立系統檢視 pg_stat_checkpointer (Bharath Rupireddy, Anton A. Melnikov, Alexander Korotkov) § § §

    相關欄位已從 pg_stat_bgwriter 移除,並新增至此新的系統檢視。

  • 改善重設統計資訊的控制 (Atsushi Torikoshi, Bharath Rupireddy) § § §

    允許 pg_stat_reset_shared() (不含引數) 和 pg_stat_reset_shared(NULL) 重設所有共用統計資訊。允許 pg_stat_reset_shared('slru') 和 pg_stat_reset_slru() (不含引數) 重設SLRU統計資訊,這已可透過 pg_stat_reset_slru(NULL) 達成。

  • 新增與以下項目相關的日誌訊息WAL從備份復原 (Andres Freund) §

  • 新增 log_connections 日誌行,用於 trust 連線 (Jacob Champion) §

  • 新增日誌訊息,以報告 walsender 取得和釋放複製槽 (Bharath Rupireddy) §

    這由伺服器變數 log_replication_commands 啟用。

  • 新增系統檢視 pg_wait_events,報告等待事件類型 (Bertrand Drouvot) §

    這有助於將說明新增至 pg_stat_activity 中報告的等待事件。

  • 為檢查點延遲新增 等待事件 (Thomas Munro) §

  • 允許 vacuum 報告索引處理的進度 (Sami Imseih) §

    這會顯示在系統檢視 pg_stat_progress_vacuum 欄位 indexes_totalindexes_processed 中。

E.3.3.1.5. 權限 #
  • 允許授與執行維護作業的權利 (Nathan Bossart) §

    此權限可以使用 MAINTAIN 權限在每個資料表上授與,也可以透過 pg_maintain 預先定義的角色在每個角色上授與。允許的操作為 VACUUMANALYZEREINDEXREFRESH MATERIALIZED VIEWCLUSTERLOCK TABLE

  • 允許具有 pg_monitor 成員資格的角色執行 pg_current_logfile() (Pavlo Golub, Nathan Bossart) §

E.3.3.1.6. 伺服器設定 #
E.3.3.1.7. 串流複寫和復原 #
  • 新增對增量檔案系統備份的支援 (Robert Haas, Jakub Wartak, Tomas Vondra) § §

    可以使用 pg_basebackup 的新增選項 --incremental 建立增量備份。新增的應用程式 pg_combinebackup 允許操作基礎和增量檔案系統備份。

  • 允許建立WAL摘要檔案 (Robert Haas, Nathan Bossart, Hubert Depesz Lubaczewski) § § § §

    這些檔案記錄了在 LSN 範圍內已變更的區塊編號,並且對於增量檔案系統備份很有用。這由伺服器變數 summarize_walwal_summary_keep_time 控制,並透過 pg_available_wal_summaries()pg_wal_summary_contents()pg_get_wal_summarizer_state() 進行檢視。

  • 將系統識別碼新增到檔案系統備份清單檔案 (Amul Sul) §

    這有助於偵測無效的WAL用法。

  • 允許在 pg_basebackup 將連線資訊寫入 postgresql.auto.conf 時,寫入連線字串值 dbname (Vignesh C, Hayato Kuroda) §

  • 新增欄位 pg_replication_slots.invalidation_reason,以報告無效插槽的原因 (Shveta Malik, Bharath Rupireddy) § §

  • 新增欄位 pg_replication_slots.inactive_since,以報告插槽的非活動持續時間 (Bharath Rupireddy) § § §

  • 新增函式 pg_sync_replication_slots() 以同步邏輯複寫插槽 (Hou Zhijie, Shveta Malik, Ajin Cherian, Peter Eisentraut) § §

  • failover 屬性新增到 複寫協定 (Hou Zhijie, Shveta Malik) §

E.3.3.1.8. 邏輯複寫 #
  • 新增應用程式 pg_createsubscriber,以從實體待命伺服器建立邏輯複本 (Euler Taveira) §

  • pg_upgrade 遷移有效的邏輯插槽和訂閱 (Hayato Kuroda, Hou Zhijie, Vignesh C, Julien Rouhaud, Shlok Kyal) § §

    這允許邏輯複寫在升級後快速繼續。這僅適用於版本 17 或更高版本的舊 PostgreSQL 叢集。

  • 啟用 邏輯插槽的容錯移轉 (Hou Zhijie, Shveta Malik, Ajin Cherian) §

    這由 pg_create_logical_replication_slot() 的可選第五個參數控制。

  • 新增伺服器變數 sync_replication_slots 以啟用容錯移轉邏輯插槽同步 (Shveta Malik, Hou Zhijie, Peter Smith) § §

  • 將邏輯複寫容錯移轉控制新增到 CREATE/ALTER SUBSCRIPTION (Shveta Malik, Hou Zhijie, Ajin Cherian) § §

  • 允許邏輯複寫變更的應用程式在訂閱者上使用 雜湊索引 (Hayato Kuroda) §

    先前只能將 btree 索引用於此目的。

  • 在有許多子交易的情況下,改善 邏輯解碼效能 (Masahiko Sawada) §

  • 如果訂閱擁有者的超級使用者權限被撤銷,則重新啟動套用工作者 (Vignesh C) §

    這會強制重新驗證。

  • flush 選項新增到 pg_logical_emit_message() (Michael Paquier) §

    這使訊息具有持久性。

  • 允許指定必須先同步才能對訂閱者可見的實體待命伺服器 (Hou Zhijie, Shveta Malik) § §

    新的伺服器變數是 synchronized_standby_slots

  • 將工作者類型欄位新增到 pg_stat_subscription (Peter Smith) §

E.3.3.2. 公用程式命令 #

  • 新增 COPY 選項 ON_ERROR ignore 以捨棄錯誤列 (Damir Belyalov, Atsushi Torikoshi, Alex Shulgin, Jian He, Yugo Nagata) § § § §

    預設行為是 ON_ERROR stop

  • 新增 COPY 選項 LOG_VERBOSITY,它會報告 COPY FROM 忽略的錯誤列 (Bharath Rupireddy) §

  • 允許 COPY FROM 報告處理期間跳過的列數 (Atsushi Torikoshi) §

    這會出現在系統檢視欄位 pg_stat_progress_copy.tuples_skipped 中。

  • COPY FROM 中,允許輕鬆指定所有欄位都應強制為 null 或 not null (Zhang Mingli) §

  • 允許分割資料表具有識別欄位 (Ashutosh Bapat) §

  • 允許在分割資料表上使用 排除限制 (Paul A. Jungwirth) §

    只要排除限制比較分割區索引鍵欄位的相等性,其他欄位就可以使用排除限制專用的比較。

  • 新增更清楚的 ALTER TABLE 方法,以將欄位設定為預設統計目標 (Peter Eisentraut) §

    新的語法是 ALTER TABLE ... SET STATISTICS DEFAULT;仍然支援使用 SET STATISTICS -1

  • 允許 ALTER TABLE 變更欄位的產生式表示式 (Amul Sul) §

    語法是 ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION

  • 允許在分割資料表上指定資料表存取方法 (Justin Pryzby, Soumyadeep Chakraborty, Michael Paquier) § §

  • ALTER TABLE .. SET ACCESS METHOD 增加 DEFAULT 設定 (Michael Paquier) §

  • 新增對在連線時觸發的事件觸發器的支援 (Konstantin Knizhnik, Mikhail Gribkov) §

  • REINDEX 增加事件觸發器支援 (Garrett Thornburg, Jian He) §

  • 如果沒有指定資料表名稱,允許 CLUSTER 選項使用帶括號的語法 (Nathan Bossart) §

E.3.3.2.1. EXPLAIN #
  • 允許 EXPLAIN 報告最佳化器的記憶體使用情況 (Ashutosh Bapat) §

    該選項名為 MEMORY

  • 新增 EXPLAIN 選項 SERIALIZE,以報告轉換資料以進行網路傳輸的成本 (Stepan Rutz, Matthias van de Meent) §

  • 將本地 I/O 區塊讀/寫時序統計資訊新增到 EXPLAINBUFFERS 輸出中 (Nazir Bilal Yavuz) §

  • 改進 EXPLAIN 對 SubPlan 節點和輸出參數的顯示 (Tom Lane, Dean Rasheed) §

  • 新增JIT deform_counter 詳細資訊到 EXPLAIN (Dmitry Dolgov) §

E.3.3.3. 資料類型 #

  • 允許 interval 資料類型支援 +/-infinity 值 (Joseph Koshakow, Jian He, Ashutosh Bapat) §

  • 允許使用透過 ALTER TYPE 新增的 ENUM,如果該類型是在同一交易中建立的 (Tom Lane) §

    先前不允許這樣做。

E.3.3.4. MERGE #

  • 允許 MERGE 修改可更新的檢視表 (Dean Rasheed) §

  • 新增 WHEN NOT MATCHED BY SOURCEMERGE (Dean Rasheed) §

    已經支援對目標列使用 WHEN NOT MATCHED

  • 允許 MERGE 使用 RETURNING 子句 (Dean Rasheed) §

    新的 RETURNING 函式 merge_action() 報告DML產生該列的操作。

E.3.3.5. 函式 #

  • 新增函式 JSON_TABLE(),將 JSON 資料轉換為表格表示法 (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Jian He) § §

    此函式可以在 SELECT 查詢的 FROM 子句中用作元組來源。

  • 新增SQL/JSON建構函式 JSON()JSON_SCALAR()JSON_SERIALIZE() (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote) §

  • 新增SQL/JSON查詢函式 JSON_EXISTS()JSON_QUERY()JSON_VALUE() (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Peter Eisentraut, Jian He) § § § § §

  • 新增 jsonpath 方法,將 JSON 值轉換為其他 JSON 資料類型 (Jeevan Chalke) §

    jsonpath 方法為 .bigint().boolean().date().decimal([precision [, scale]]).integer().number().string().time().time_tz().timestamp().timestamp_tz()

  • 新增 to_timestamp() 時區格式說明符 (Tom Lane) §

    TZ 接受時區縮寫或數值偏移量,而 OF 僅接受數值偏移量。

  • 允許使用 AT LOCAL 指定工作階段時區 (Vik Fearing) §

    當從時間戳記值新增和移除時區時,這很有用,而不是指定文字工作階段時區。

  • 新增函式 uuid_extract_timestamp()uuid_extract_version() 以傳回UUID資訊 (Andrey Borodin) §

  • 新增函式以產生指定範圍內的隨機數 (Dean Rasheed) §

    這些函式是 random(min, max),它們採用 integerbigintnumeric 類型的值。

  • 新增將整數轉換為二進位和八進位字串的函式 (Eric Radman, Nathan Bossart) §

    這些函式為 to_bin()to_oct()

  • 新增 Unicode 資訊函式 (Jeff Davis) §

    函式 unicode_version() 傳回 Unicode 版本,icu_unicode_version() 傳回ICU版本,而 unicode_assigned() 傳回字元是否已指派 Unicode 代碼點。

  • 新增函式 xmltext() 以將文字轉換為單一 XML 文字節點 (Jim Jones) §

  • 新增函式 to_regtypemod() 以傳回類型規格的類型修飾符 (David Wheeler, Erik Wienhold) §

  • 新增 pg_basetype() 函式以傳回網域的基底類型 (Steve Chavez) §

  • 新增函式 pg_column_toast_chunk_id() 以傳回值的 TOAST 識別碼 (Yugo Nagata) §

    如果該值未儲存在TOAST.

中,則傳回 NULL

  • E.3.3.6. PL/pgSQL #

  • 允許 plpgsql %TYPE%ROWTYPE 規格表示非陣列類型的陣列 (Quan Zongliang, Pavel Stehule) §

允許 plpgsql %TYPE 規格參照複合欄位 (Tom Lane) §

  • E.3.3.7. libpq #

    新增 libpq 函式以變更角色密碼 (Joe Conway) §

  • 新的函式 PQchangePassword() 會在將新密碼傳送到伺服器之前進行雜湊。

    新增 libpq 函式以關閉入口網站和預先準備的陳述式 (Jelte Fennema-Nio) §

  • 這些函式為 PQclosePrepared()PQclosePortal()PQsendClosePrepared()PQsendClosePortal()新增 libpqAPI

    ,其允許封鎖和非封鎖的 取消請求,如果已在使用中,則進行加密 (Jelte Fennema-Nio) §

  • 先前僅支援封鎖、未加密的取消請求。

  • 新增 libpq 函式 PQsocketPoll() 以允許輪詢網路通訊端 (Tristan Partin, Tom Lane) § §

    新增 libpq 函式 PQsendPipelineSync() 以傳送管線同步點 (Anton Kirilov) §

  • 這與 PQpipelineSync() 相似,但除非達到輸出緩衝區的大小閾值,否則它不會刷新到伺服器。

  • 新增 libpq 函式 PQsetChunkedRowsMode() 以允許以區塊形式檢索結果 (Daniel Vérité) §允許TLS

    連線,而無需網路往返協商 (Greg Stark, Heikki Linnakangas, Peter Eisentraut, Michael Paquier, Daniel Gustafsson) § § § § § § § §這透過用戶端選項 sslnegotiation=direct 啟用,需要ALPN

,並且僅適用於 PostgreSQL 17 及更高版本的伺服器。

  • E.3.3.8. psql #

    改善 psql 預設和空權限的顯示方式 (Erik Wienhold, Laurenz Albe) §

  • 指令 \dp 現在為空權限顯示 (none);預設仍然顯示為空。

    讓反斜線指令遵守 \pset null (Erik Wienhold, Laurenz Albe) §

  • 先前 \pset null 被忽略。

    允許 psql\watch 在傳回最少列數後停止 (Greg Sabino Mullane) §

  • 參數為 min_rows

  • 允許使用 control-C 取消 psql 連線嘗試 (Tristan Partin) §

  • 允許 psql 針對非 SELECT 查詢遵守 FETCH_COUNT (Daniel Vérité) §

改善 psql 標籤完成功能 (Dagfinn Ilmari Mannsåker, Gilles Darold, Christoph Heiss, Steve Chavez, Vignesh C, Pavel Borisov, Jian He) § § § § § § § §

  • E.3.3.9. 伺服器應用程式 #WAL摘要檔案 (Robert Haas) §

  • 允許 pg_dump 的大型物件以批次方式還原 (Tom Lane) §

    這允許還原許多大型物件,以避免交易限制並可以平行還原。

  • 新增 pg_dump 選項 --exclude-extension (Ayush Vatsa) §

  • 允許 pg_dumppg_dumpallpg_restore 在檔案中指定包含/排除的物件 (Pavel Stehule, Daniel Gustafsson) §

    該選項稱為 --filter

  • --sync-method 參數新增到多個客戶端應用程式 (Justin Pryzby, Nathan Bossart) §

    這些應用程式包括 initdbpg_basebackuppg_checksumspg_dumppg_rewindpg_upgrade

  • 新增 pg_restore 選項 --transaction-size,以允許在交易批次中還原物件 (Tom Lane) §

    這允許交易批次的效能優勢,而不會產生過大的交易區塊的問題。

  • pgbench 的除錯模式選項從 -d 變更為 --debug (Greg Sabino Mullane) §

    選項 -d 現在用於資料庫名稱,並且也可以使用新的 --dbname 選項。

  • 新增 pgbench 選項 --exit-on-abort,以便在任何客戶端中止後退出 (Yugo Nagata) §

  • 新增 pgbench 命令 \syncpipeline 以允許發送同步訊息 (Anthonin Bonnefoy) §

  • 允許 pg_archivecleanup 移除備份歷史檔案 (Atsushi Torikoshi) §

    該選項為 --clean-backup-history

  • 將一些長選項新增到 pg_archivecleanup (Atsushi Torikoshi) §

    長選項包括 --debug--dry-run--strip-extension

  • 允許 pg_basebackuppg_receivewal 在其連線規格中使用 dbname (Jelte Fennema-Nio) §

    這對於對資料庫名稱敏感的連線池非常有用。

  • 新增 pg_upgrade 選項 --copy-file-range (Thomas Munro) §

    這在 LinuxFreeBSD 上受到支援。

  • 允許 reindexdb --index 以平行處理來自不同表格的索引 (Maxim Orlov, Svetlana Derevyanko, Alexander Korotkov) §

  • 允許 reindexdbvacuumdbclusterdb 處理符合模式的所有資料庫中的物件 (Nathan Bossart) § § §

    新的選項 --all 控制此行為。

E.3.3.10. 原始碼 #

  • 移除對 OpenSSL 1.0.1 的支援 (Michael Paquier) §

  • 允許測試在 OpenSSL 中通過FIPS模式 (Peter Eisentraut) § §

  • 使用CPU AVX-512 指令進行位元計數 (Paul Amonson, Nathan Bossart, Ants Aasma) § §

  • 需要 LLVM 10 或更高版本 (Thomas Munro) §

  • 使用原生CRC64 位元 LoongArch CPU 上的指令 (Xudong Yang) §

  • 移除 AIX 支援 (Heikki Linnakangas) §

  • 移除 Microsoft Visual Studio 專用的 PostgreSQL 建置選項 (Michael Paquier) §

    Meson 現在是 Visual Studio 建置唯一可用的方法。

  • 移除設定選項 --disable-thread-safety (Thomas Munro, Heikki Linnakangas) § §

    我們現在假設所有支援的平台都有足夠的執行緒支援。

  • 移除 configure 選項 --with-CC (Heikki Linnakangas) §

    設定 CC 環境變數現在是指定編譯器的唯一支援方法。

  • 使用者定義的資料類型接收函數將不再收到以 null 結尾的資料 (David Rowley) §

  • 新增增量 JSON 剖析器,用於處理巨型 JSON 文件 (Andrew Dunstan) §

  • 將最上層的 README 檔案轉換為 Markdown (Nathan Bossart) §

  • 移除不再需要的最上層 INSTALL 檔案 (Tom Lane) §

  • 移除 makedistprep 選項 (Peter Eisentraut) §

  • 新增 makeAndroid 共享函式庫的支援 (Peter Eisentraut) §

  • 新增後端對注入點的支援 (Michael Paquier) § § § §

    這用於伺服器偵錯,並且必須在伺服器編譯時啟用。

  • 新增動態共享記憶體註冊表 (Nathan Bossart) §

    這允許未在啟動時初始化的共享函式庫協調動態共享記憶體存取。

  • 修正 emit_log_hook 以便為同一查詢使用與其他日誌記錄相同的時間值 (Kambam Vinay, Michael Paquier) §

  • 改善使用 jsonpath 進行謂詞檢查的文件 (David Wheeler) §

E.3.3.11. 其他模組 #

  • 允許將帶有非連接條件的連接下推到外部伺服器和自定義掃描 (Richard Guo, Etsuro Fujita) §

    需要修改外部資料包裝器和自定義掃描以處理這些情況。

  • 允許將 EXISTSIN 子查詢下推到 postgres_fdw 外部伺服器 (Alexander Pyhalov) §

  • 增加預設的外部資料包裝器元組成本 (David Rowley, Umair Shahid) § §

    最佳化器使用此值。

  • 允許中斷 dblink 資料庫操作 (Noah Misch) §

  • 允許在 ltree 欄位上建立雜湊索引 (Tommy Pavlicek) §

    這也啟用了 ltree 欄位上的雜湊連接和雜湊聚合。

  • 允許 unaccent 字元轉換規則包含空格和引號 (Michael Paquier) §

    unaccent.rules 檔案的語法已更改。

  • 允許 amcheck 使用新選項 --checkunique 檢查唯一約束違規 (Anastasia Lubennikova, Pavel Borisov, Maxim Orlov) §

  • 允許 citext 測試在 OpenSSL 中通過FIPS模式 (Peter Eisentraut) §

  • 允許 pgcrypto 測試在 OpenSSL 中通過FIPS模式 (Peter Eisentraut) §

  • 移除一些未使用的 SPI 巨集 (Bharath Rupireddy) §

  • 允許 ALTER OPERATOR 設置更多最佳化屬性 (Tommy Pavlicek) §

    這對於擴充套件很有用。

  • 允許擴充套件定義自定義等待事件 (Masahiro Ikeda) § § § §

    自定義等待事件已新增到 postgres_fdwdblink

  • 新增 pg_buffercache 函數 pg_buffercache_evict() 以允許共享緩衝區逐出 (Palak Chaturvedi, Thomas Munro) §

    這對於測試很有用。

E.3.3.11.1. pg_stat_statements #
  • pg_stat_statements 中以佔位符取代 CALL 參數 (Sami Imseih) §

  • 以佔位符取代儲存在 pg_stat_statements 中的儲存點名稱 (Greg Sabino Mullane) §

    這大大減少了記錄 SAVEPOINTRELEASE SAVEPOINTROLLBACK TO SAVEPOINT 命令所需的條目數量。

  • 取代兩階段提交GID以佔位符取代儲存在 pg_stat_statements 中的資料 (Michael Paquier) §

    這大大減少了記錄 PREPARE TRANSACTIONCOMMIT PREPAREDROLLBACK PREPARED 所需的條目數量。

  • pg_stat_statements 中追蹤 DEALLOCATE (Dagfinn Ilmari Mannsåker, Michael Paquier) §

    DEALLOCATE 名稱以佔位符的形式儲存在 pg_stat_statements 中。

  • 新增 pg_stat_statements 的本機 I/O 區塊讀/寫計時統計資料欄位 (Nazir Bilal Yavuz) § §

    新的欄位是 local_blk_read_timelocal_blk_write_time

  • 新增JIT將 deform_counter 詳細資訊新增到 pg_stat_statements (Dmitry Dolgov) §

  • 新增可選的第四個引數 (minmax_only) 到 pg_stat_statements_reset(),以允許僅重置最小值/最大值統計資訊 (Andrei Zubkov) §

    此引數預設為 false

  • 新增 pg_stat_statements 欄位 stats_sinceminmax_stats_since,以追蹤條目的建立時間和上次最小值/最大值重置時間 (Andrei Zubkov) §

E.3.4. 致謝 #

以下人士(按字母順序排列)以補丁作者、提交者、審閱者、測試人員或問題回報者的身分,對此版本做出了貢獻。

Abhijit Menon-Sen
Adnan Dautovic
Aidar Imamov
Ajin Cherian
Akash Shankaran
Akshat Jaimini
Alaa Attya
Aleksander Alekseev
Aleksej Orlov
Alena Rybakina
Alex Hsieh
Alex Malek
Alex Shulgin
Alex Work
Alexander Korotkov
Alexander Kozhemyakin
Alexander Kuzmenkov
Alexander Lakhin
Alexander Pyhalov
Alexey Palazhchenko
Alfons Kemper
Álvaro Herrera
Amadeo Gallardo
Amit Kapila
Amit Langote
Amul Sul
Anastasia Lubennikova
Anatoly Zaretsky
Andreas Karlsson
Andreas Ulbrich
Andrei Lepikhov
Andrei Zubkov
Andres Freund
Andrew Alsup
Andrew Atkinson
Andrew Bille
Andrew Dunstan
Andrew Kane
Andrey Borodin
Andrey Rachitskiy
Andrey Sokolov
Andy Fan
Anthonin Bonnefoy
Anthony Hsu
Anton Kirilov
Anton Melnikov
Anton Voloshin
Antonin Houska
Ants Aasma
Antti Lampinen
Aramaki Zyake
Artem Anisimov
Artur Zakirov
Ashutosh Bapat
Ashutosh Sharma
Atsushi Torikoshi
Attila Gulyás
Ayush Tiwari
Ayush Vatsa
Bartosz Chrol
Benoît Ryder
Bernd Helmle
Bertrand Drouvot
Bharath Rupireddy
Bo Andreson
Boshomi Phenix
Bowen Shi
Boyu Yang
Bruce Momjian
Cameron Vogt
Cary Huang
Cédric Villemain
Changhong Fei
Chantal Keller
Chapman Flack
Chengxi Sun
Chris Travers
Christian Maurer
Christian Stork
Christoph Berg
Christoph Heiss
Christophe Courtois
Christopher Kline
Claudio Freire
Colin Caine
Corey Huinker
Curt Kolovson
Dag Lem
Dagfinn Ilmari Mannsåker
Damir Belyalov
Daniel Fredouille
Daniel Gustafsson
Daniel Shelepanov
Daniel Vérité
Daniel Westermann
Darren Rush
Dave Cramer
Dave Page
David Christensen
David Cook
David G. Johnston
David Geier
David Hillman
David Perez
David Rowley
David Steele
David Wheeler
David Zhang
Dean Rasheed
Denis Erokhin
Denis Laxalde
Devrim Gündüz
Dilip Kumar
Dimitrios Apostolou
Dmitry Dolgov
Dmitry Koval
Dmitry Vasiliev
Dominique Devienne
Dong Wook Lee
Donghang Lin
Dongming Liu
Drew Callahan
Drew Kimball
Dzmitry Jachnik
Egor Chindyaskin
Egor Rogov
Ekaterina Kiryanova
Elena Indrupskaya
Elizabeth Christensen
Emre Hasegeli
Eric Cyr
Eric Mutta
Eric Radman
Eric Ridge
Erik Rijkers
Erik Wienhold
Erki Eessaar
Ethan Mertz
Etsuro Fujita
Eugen Konkov
Euler Taveira
Evan Macbeth
Evgeny Morozov
Fabien Coelho
Fabrízio de Royes Mello
Farias de Oliveira
Feliphe Pozzer
Fire Emerald
Flavien Guedez
Floris Van Nee
Francesco Degrassi
Frank Streitzig
Gabriele Bartolini
Garrett Thornburg
Gavin Flower
Gavin Panella
Gilles Darold
Gilles Parc
Grant Gryczan
Greg Nancarrow
Greg Sabino Mullane
Greg Stark
Gurjeet Singh
Haiying Tang
Hajime Matsunaga
Hal Takahara
Hanefi Onaldi
Hannu Krosing
Hans Buschmann
Hao Wu
Hao Zhang
Hayato Kuroda
Heikki Linnakangas
Hemanth Sandrana
Himanshu Upadhyaya
Hironobu Suzuki
Holger Reise
Hongxu Ma
Hongyu Song
Horst Reiterer
Hubert Lubaczewski
Hywel Carver
Ian Barwick
Ian Ilyasov
Ilya Nenashev
Isaac Morland
Israel Barth Rubio
Ivan Kartyshov
Ivan Kolombet
Ivan Lazarev
Ivan Panchenko
Ivan Trofimov
Jacob Champion
Jacob Speidel
Jacques Combrink
Jaime Casanova
Jakub Wartak
James Coleman
James Pang
Jani Rahkola
Japin Li
Jeevan Chalke
Jeff Davis
Jeff Janes
Jelte Fennema-Nio
Jeremy Schneider
Jian Guo
Jian He
Jim Jones
Jim Keener
Jim Nasby
Jingtang Zhang
Jingxian Li
Jingzhou Fu
Joe Conway
Joel Jacobson
John Ekins
John Hsu
John Morris
John Naylor
John Russell
Jonathan Katz
Jordi Gutiérrez
Joseph Koshakow
Josh Kupershmidt
Joshua D. Drake
Joshua Uyehara
Jubilee Young
Julien Rouhaud
Junwang Zhao
Justin Pryzby
Kaido Vaikla
Kambam Vinay
Karen Talarico
Karina Litskevich
Karl O. Pinc
Kashif Zeeshan
Kim Johan Andersson
Kirill Reshke
Kirk Parker
Kirk Wolak
Kisoon Kwon
Koen De Groote
Kohei KaiGai
Kong Man
Konstantin Knizhnik
Kouhei Sutou
Krishnakumar R
Kuntal Ghosh
Kurt Roeckx
Kyotaro Horiguchi
Lang Liu
Lars Kanis
Laurenz Albe
Lauri Laanmets
Legs Mansion
Lukas Fittl
Magnus Hagander
Mahendrakar Srinivasarao
Maiquel Grassi
Manos Emmanouilidis
Marcel Hofstetter
Marcos Pegoraro
Marian Krucina
Marina Polyakova
Mark Dilger
Mark Guertin
Mark Sloan
Markus Winand
Marlene Reiterer
Martín Marqués
Martin Nash
Martin Schlossarek
Masahiko Sawada
Masahiro Ikeda
Masaki Kuwamura
Masao Fujii
Mason Sharp
Matheus Alcantara
Mats Kindahl
Matthias Kuhn
Matthias van de Meent
Maxim Boguk
Maxim Orlov
Maxim Yablokov
Maxime Boyer
Melanie Plageman
Melih Mutlu
Merlin Moncure
Micah Gate
Michael Banck
Michael Bondarenko
Michael Paquier
Michael Wang
Michael Zhilin
Michail Nikolaev
Michal Bartak
Michal Kleczek
Mikhail Gribkov
Mingli Zhang
Miroslav Bendik
Mitsuru Hinata
Moaaz Assali
Muralikrishna Bandaru
Nathan Bossart
Nazir Bilal Yavuz
Neil Tiffin
Ngigi Waithaka
Nikhil Benesch
Nikhil Raj
Nikita Glukhov
Nikita Kalinin
Nikita Malakhov
Nikolay Samokhvalov
Nikolay Shaplov
Nisha Moond
Nishant Sharma
Nitin Jadhav
Noah Misch
Noriyoshi Shinoda
Ole Peder Brandtzæg
Oleg Bartunov
Oleg Sibiryakov
Oleg Tselebrovskiy
Olleg Samoylov
Onder Kalaci
Ondrej Navratil
Pablo Kharo
Palak Chaturvedi
Pantelis Theodosiou
Paul Amonson
Paul Jungwirth
Pavel Borisov
Pavel Kulakov
Pavel Luzanov
Pavel Stehule
Pavlo Golub
Pedro Gallegos
Pete Storer
Peter Eisentraut
Peter Geoghegan
Peter Smith
Philip Warner
Philipp Salvisberg
Pierre Ducroquet
Pierre Fortin
Przemyslaw Sztoch
Quynh Tran
Raghuveer Devulapalli
Ranier Vilela
Reid Thompson
Rian McGuire
Richard Guo
Richard Vesely
Ridvan Korkmaz
Robert Haas
Robert Scott
Robert Treat
Roberto Mello
Robins Tharakan
Roman Lozko
Ronan Dunklau
Rui Zhao
Ryo Matsumura
Ryoga Yoshida
Sameer Kumar
Sami Imseih
Samuel Dussault
Sanjay Minni
Satoru Koizumi
Sebastian Skalacki
Sergei Glukhov
Sergei Kornilov
Sergey Prokhorenko
Sergey Sargsyan
Sergey Shinderuk
Shaozhong Shi
Shaun Thomas
Shay Rojansky
Shihao Zhong
Shinya Kato
Shlok Kyal
Shruthi Gowda
Shubham Khanna
Shulin Zhou
Shveta Malik
Simon Riggs
Soumyadeep Chakraborty
Sravan Velagandula
Stan Hu
Stepan Neretin
Stepan Rutz
Stéphane Schildknecht
Stephane Tachoires
Stephen Frost
Steve Atkins
Steve Chavez
Suraj Khamkar
Suraj Kharage
Svante Richter
Svetlana Derevyanko
Sylvain Frandaz
Takayuki Tsunakawa
Tatsuo Ishii
Tatsuro Yamada
Tender Wang
Teodor Sigaev
Thom Brown
Thomas Munro
Tim Carey-Smith
Tim Needham
Tim Palmer
Tobias Bussmann
Tom Lane
Tomas Vondra
Tommy Pavlicek
Tomonari Katsumata
Tristan Partin
Tristen Raab
Tung Nguyen
Umair Shahid
Uwe Binder
Valerie Woolard
Vallimaharajan G
Vasya Boytsov
Victor Wagner
Victor Yegorov
Victoria Shepard
Vidushi Gupta
Vignesh C
Vik Fearing
Viktor Leis
Vinayak Pokale
Vitaly Burovoy
Vojtech Benes
Wei Sun
Wei Wang
Wenjiang Zhang
Will Mortensen
Willi Mann
Wolfgang Walther
Xiang Liu
Xiaoran Wang
Xing Guo
Xudong Yang
Yahor Yuzefovich
Yajun Hu
Yaroslav Saburov
Yong Li
Yongtao Huang
Yugo Nagata
Yuhang Qiu
Yuki Seino
Yura Sokolov
Yurii Rashkovskii
Yuuki Fujii
Yuya Watari
Yves Colin
Zhihong Yu
Zhijie Hou
Zongliang Quan
Zubeyr Eryilmaz
Zuming Jiang

提交更正

如果您在文件中發現任何不正確、與您對特定功能的使用經驗不符或需要進一步澄清的地方,請使用此表格來回報文件問題。