PostgreSQL 14
- 发布说明 (源文件)
- 发布日期:2021-09-30 (公告)
- 当前次要版本:14.19 (2025-08-14)
- EOL:2026-11 (估计)
- 文档:PostgreSQL 14 (索引)
- GIT 分支:REL_14_STABLE
次要版本发布
- 14.19 (2025-08-14;发布说明;公告)
- 14.18 (2025-05-08;发布说明;公告)
- 14.17 (2025-02-20;发布说明;公告)
- 14.16 (2025-02-13;发布说明;公告)
- 14.15 (2024-11-21;发布说明;公告)
- 14.14 (2024-11-14;发布说明;公告)
- 14.13 (2024-08-08;发布说明;公告)
- 14.12 (2024-05-09;发布说明;公告)
- 14.11 (2024-02-08;发布说明;公告)
- 14.10 (2023-11-09;发布说明;公告)
- 14.9 (2023-08-10;发布说明;公告)
- 14.8 (2023-05-11;发布说明;公告)
- 14.7 (2023-02-09;发布说明,公告)
- 14.6 (2022-11-10;发布说明,公告)
- 14.5 (2022-08-11;发布说明,公告)
- 14.4 (2022-06-16;发布说明,公告)
- 14.3 (2022-05-12;发布说明,公告)
- 14.2 (2022-02-10;发布说明,公告)
- 14.1 (2021-11-11;发布说明,公告)
后端更改
- 通过改进缓冲来增强
COPY
性能 (提交 0a0727cc) - 快照可伸缩性改进,以处理更多连接 (提交 5788e258,1f51c17c,941697c3,73487a60,623a9ba7,07f32fcd,以及 dc7420c2)
- 存储过程现在支持
OUT
参数 (提交 2453ea14) - 支持抽象的 UNIX 域套接字 (提交 c9f0624b)
- 改进了客户端的立即停止情况下的错误消息 (提交 7e784d1d)
密钥管理系统 (初始提交 978f869b)已撤销 (提交 3187ef7c)- 新的 WAL 段现在使用向量 I/O 进行填充 (提交 ce6a71fa)
- 添加了 TID 范围扫描支持 (提交 bb437f99)
- 支持 协议版本 2 已移除 (提交 3174d69f)
- 可配置的 LZ4 TOAST 压缩 (提交 bbe0a81d)
- 为外部节点添加了异步执行支持 (提交 27e1f145)
- 支持 SQL 标准函数体 (提交 e717a9a1)
- 以前由 pg_stat_statements 生成的查询 ID 现在在核心中生成 (提交 5fd9dfa5)
- SSL 压缩支持已移除 (提交 f9264d15)
SPI 更改
存储参数更改
Vacuum 更改
- 执行
COPY FREEZE
后,vacuum 不再需要重写整个表 (提交 7db0cd21) - autovacuum 详细日志中显示了每个索引的统计信息 (提交 5aed6a1f)
- 元组压缩改进 (提交 19c60ad6)
- 跳过了不必要的索引 vacuum (提交 5100010e)
使用此更改被发现不安全,并已在提交 042b584c 中回滚 (PostgreSQL 14.4)CONCURRENTLY
选项执行的索引操作将被忽略 (提交 d9d07622)- 添加了环绕安全功能 (提交 1e55e7d1)
源配置
- 添加了
--with-ssl
选项 (提交 fe61df7f)
数据类型更改
通用
- 添加了对任意数据类型的下标支持 (提交 c7aba7c1)
- 添加了对
multirange
类型的支持 (提交 6df7a969)
jsonb
- 添加了下标支持 (提交 676887a3)
- 添加了
+(pg_lsn,numeric)
和-(pg_lsn,numeric)
运算符 (提交 9bae7e4c)
运算符更改
移除
索引更改
通用
- 添加了对排序版本化的支持 (初始提交 257836a7)
- 并发索引创建可以跳过等待其他并发(重新)索引进程 (提交 c98763bf)
- 并发重新索引可以跳过等待其他并发(重新)索引进程 (提交 f9900df5)
btree 索引
- btree 索引的“自底向上删除” (提交 d168b666)
BRIN 索引
GiST 索引
- 支持通过预排序数据来构建
GiST
索引 (提交 16fa9b2b)
SP-GiST 索引
- 添加了对
INCLUDE
列的支持 (提交 09c1c6ab)
分区更改
- 分区可以并发分离 (提交 71f4c8c6)
SQL 更改
已修改
ALTER AGGREGATE
- 添加了
ALTER AGGREGATE ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER COLLATION
- 添加了
ALTER COLLATION ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER CONVERSION
- 添加了
ALTER CONVERSION ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER DATABASE
- 添加了
ALTER DATABASE ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER DOMAIN
- 添加了
ALTER DOMAIN ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER EVENT TRIGGER
- 添加了
ALTER EVENT TRIGGER ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER FOREIGN DATA WRAPPER
- 添加了
ALTER FOREIGN DATA WRAPPER ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER FOREIGN TABLE
- 添加了
ALTER FOREIGN TABLE ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER FUNCTION
- 添加了
ALTER FUNCTION ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER GROUP
- 添加了
ALTER GROUP ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER INDEX
- 添加了
ALTER INDEX ... ALTERCOLLATION ...
语法 (提交 257836a7)
- 添加了
ALTER LANGUAGE
- 添加了
ALTER LANGUAGE ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER LARGE OBJECT
- 添加了
ALTER LARGE OBJECT ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER MATERIALIZED VIEW
- 添加了
ALTER MATERIALIZED VIEW ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER OPERATOR
- 添加了
ALTER OPERATOR ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER OPERATOR CLASS
- 添加了
ALTER OPERATOR CLASS ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER OPERATOR FAMILY
- 添加了
ALTER OPERATOR FAMILY ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER POLICY
- 添加了
ALTER POLICY ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER PROCEDURE
- 添加了
ALTER PROCEDURE ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER PUBLICATION
- 添加了
ALTER PUBLICATION ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER ROLE
- 添加了
ALTER ROLE ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER ROUTINE
- 添加了
ALTER ROUTINE ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER SCHEMA
- 添加了
ALTER SCHEMA ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER SEQUENCE
- 添加了
ALTER SEQUENCE ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER SERVER
- 添加了
ALTER SERVER ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER STATISTICS
- 添加了
ALTER STATISTICS ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER SUBSCRIPTION
ALTER TABLE
ALTER TABLESPACE
- 添加了
ALTER TABLESPACE ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER TEXT SEARCH DICTIONARY
- 添加了
ALTER TEXT SEARCH DICTIONARY ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER TYPE
ALTER USER
- 添加了
ALTER USER ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER USER MAPPING
- 添加了
ALTER USER MAPPING ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
ALTER VIEW
- 添加了
ALTER VIEW ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
CREATE FUNCTION
- 对 SQL 函数支持 SQL 标准函数体 (提交 e717a9a1)
CREATE LANGUAGE
- 移除了将语言名称指定为单引号字符串的过时选项 (提交 5333e014)
CREATE POLICY
- 添加了
... TO CURRENT_USER ...
语法 (提交 45b98057)
- 添加了
CREATE PROCEDURE
- 对 SQL 函数支持 SQL 标准函数体 (提交 e717a9a1)
CREATE SCHEMA
- 对
CREATE SCHEMA [...] AUTHORIZATION ...
支持CURRENT_ROLE
(提交 45b98057)
- 对
CREATE STATISTICS
- 添加了对表达式的扩展统计信息支持 (提交 a4d75c86)
CREATE SUBSCRIPTION
CREATE TABLE
- 为列定义添加了
COMPRESSION
选项 (提交 bbe0a81d)
- 为列定义添加了
CREATE TABLESPACE
- 添加了
CREATE TABLESPACE ... OWNER CURRENT_ROLE
选项 (提交 45b98057)
- 添加了
CREATE TYPE
- 添加了
SUBSCRIPT
函数处理程序选项 (提交 c7aba7c1)
- 添加了
CREATE TRIGGER
- 添加了
OR REPLACE
选项 (提交 92bf7e2d)
- 添加了
CREATE USER MAPPING
- 添加了
CREATE USER MAPPING FOR CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
DROP OWNED
- 添加了
DROP OWNED BY CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
DROP USER MAPPING
- 添加了
DROP USER MAPPING FOR CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
EXPLAIN
- 如果未禁用
compute_query_id
,EXPLAIN VERBOSE
现在将显示查询标识符 (提交 4f0b0966)
- 如果未禁用
GRANT
INSERT
REASSIGN OWNED
- 接受
CURRENT_ROLE
作为角色规范 (提交 45b98057)
- 接受
REINDEX
REVOKE
SELECT
TRUNCATE
VACUUM
系统目录更改
表
通用
- 将主键和唯一约束添加到系统目录表 (提交 dfb75e47)
已修改
pg_attribute
- 添加了
attcompression
列 (提交 bbe0a81d)
- 添加了
pg_class
reltuples
列默认设置为-1
(提交 3d351d91)
pg_inherits
- 添加了
inhdetachpending
列 (提交 71f4c8c6)
- 添加了
pg_proc
- 添加了
prosqlbody
列 (提交 e717a9a1)
- 添加了
pg_range
- 添加了
rngmultitypid
列 (提交 6df7a969)
- 添加了
pg_statistic_ext_data
- 添加了
stxdexpr
列 (提交 a4d75c86)
- 添加了
pg_subscription
pg_type
视图
已添加
pg_backend_memory_contexts
(提交 3e98c0ba)已撤销 (提交 c2dc1934)pg_stat_prefetch_recovery
(提交 1d257577)pg_stat_progress_copy
(提交 8a4f618e)pg_stat_replication_slots
(提交 98681675)pg_stat_wal
(提交 8d9a9359)pg_stats_ext_exprs
(提交 a4d75c86)
已修改
pg_locks
- 添加了
waitstart
列 (提交 46d6e5f5)
- 添加了
pg_prepared_statements
pg_replication_slots
- 添加了
two_phase
列 (提交 19890a06)
- 添加了
pg_stat_activity
pg_stats_ext
- 添加了
exprs
列 (提交 a4d75c86)
- 添加了
pg_stat_database
- 添加了以下列 (提交 960869da)
session_time
active_time
idle_in_transaction_time
sessions
sessions_abandoned
sessions_fatal
sessions_killed
- 添加了以下列 (提交 960869da)
pg_stat_ssl
- 移除了
compression
列 (提交 f9264d15)
- 移除了
系统函数更改
已添加
bit_count()
(提交 a6715af1)bit_xor()
(提交 f9a0392e)date_bin()
(提交 49ab61f0)multirange()
(提交 6df7a969)range_agg()
(提交 6df7a969)range_intersect_agg()
(提交 6df7a969)pg_column_compression()
(提交 bbe0a81d)pg_get_catalog_foreign_keys()
(提交 62f34097)pg_get_wal_replay_pause_state()
(提交 32fd2b57)pg_log_backend_memory_contexts()
(提交 43620e32)*功能已撤销*pg_relation_check_pages()
(提交 f2b88396)pg_stat_reset_replication_slot()
(提交 98681675)已撤销 (提交 5f1df62a)pg_wait_for_backend_termination()
(提交 aaf04325)pg_xact_commit_timestamp_origin()
(提交 b1e48bbe)string_to_table()
(提交 66f16306)trim_array()
(提交 0a687c8f)unistr()
(提交 f37fec83)
已修改
extract()
factorial()
- 禁止负数的阶乘 (提交 0a40563e)
inet_server_addr()
- 被标记为并行受限 (提交 5a6f9bce)
inet_server_port()
- 被标记为并行受限 (提交 5a6f9bce)
ltrim()
pg_get_keywords()
- 添加了以下输出列 (提交 06a7c315)
barelabel
baredesc
- 添加了以下输出列 (提交 06a7c315)
pg_last_committed_xact()
- 现在也返回复制 origin ID (提交 b1e48bbe)
pg_terminate_backend()
- 添加了
timeout
参数 (提交 aaf04325)
- 添加了
pg_create_logical_replication_slot()
- 添加了
two_phase
选项 (提交 19890a06)
- 添加了
pg_stat_reset_shared()
- 添加了
wal
选项 (提交 8d9a9359)
- 添加了
rtrim()
split_part()
- 添加了对负索引的支持 (提交 ec0294fb)
stddev_samp()
- 如果提供了
NaN
值,则返回NULL
(以前是NaN
) (提交 23cbeda5)
- 如果提供了
substring()
- 添加了
SUBSTRING(text SIMILAR pattern ESCAPE escape_text)
变体 (提交 78c88767)
- 添加了
to_tsquery()
- 相邻位置的单词现在与
OP_PHRASE
连接 (提交 0c4f355c)
- 相邻位置的单词现在与
var_samp()
- 如果提供了
NaN
值,则返回NULL
(以前是NaN
) (提交 23cbeda5)
- 如果提供了
websearch_to_tsquery()
移除
numeric_fac()
(提交 76f412ab)
配置更改
通用
已添加
client_connection_check_interval
(提交 c30f54ad)compute_query_id
(提交 5fd9dfa5)debug_discard_caches
(提交 4656e3d6)default_toast_compression
(提交 bbe0a81d)enable_async_append
(提交 27e1f145)enable_memoize
(初始提交 9eacee2e)huge_page_size
(提交 d2bddc25)idle_session_timeout
(提交 9877374b)in_hot_standby
(提交 bf8a662c)log_recovery_conflict_waits
(提交 0650ff23)min_dynamic_shared_memory
(提交 84b1c63a)recovery_init_sync_method
(提交 61752afb)remove_temp_files_after_crash
(提交 cd91de0d)ssl_crl_dir
(提交 f5465fad)track_wal_io_timing
(提交 ff99918c)vacuum_failsafe_age
(提交 1e55e7d1)vacuum_multixact_failsafe_age
(提交 1e55e7d1)wal_decode_buffer_size
(提交 1d257577)
已修改
checkpoint_completion_target
- 默认值更改为
0.9
(提交 bbcc4eb2)
- 默认值更改为
default_transaction_read_only
- 被标记为
GUC_REPORT
(提交 d16f8c8e)
- 被标记为
log_connections
- 认证身份详细信息也将被记录 (提交 9afffcb8)
log_line_prefix
password_encryption
restore_command
- 现在可以通过配置重载(
SIGHUP
)更改,而不是服务器重启 (提交 942305a3)
- 现在可以通过配置重载(
wal_sync_method
- 在 FreeBSD 上的默认值已更改为
fdatasync
(提交 f900a79e)
- 在 FreeBSD 上的默认值已更改为
vacuum_cost_page_miss
- 默认值从
10
更改为2
(提交 e19594c5)
- 默认值从
移除
已撤回
已撤销 (提交 26acb54a)enable_parallel_insert
(提交 c8f78b61)已撤销 (提交 c2dc1934)recovery_prefetch
(提交 1d257577)已撤销 (提交 c2dc1934)recovery_prefetch_fpw
(提交 1d257577)
用户/角色
- 添加了
pg_database_owner
默认角色 (提交 a14a0118) - 添加了
pg_read_all_data
默认角色 (提交 6c3ffd69) - 添加了
pg_write_all_data
默认角色 (提交 6c3ffd69)
认证更改
pg_hba.conf
pg_ident.conf
- 记录可以跨越多行 (提交 8f8154a5)
正则表达式更改
\w
现在映射到[[:word:]]
(以前是[[:alnum:]_]
),并且不允许在字符类的范围开始/结束中使用 (提交 2a0af7fe)\D
、\S
和\W
现在允许在括号表达式中使用 (提交 2a0af7fe)- 改进了正则表达式反向引用的处理 (提交 4aea704a)
过程语言更改
PL/pgSQL
复制更改
流复制
WAL 可以选择性地由 standby 进行预取 (提交 1d257577)已撤销 (提交 c2dc1934)- 如果 关键的 standby 配置项 的值低于 primary 的值,standby 服务器现在会暂停而不是关闭 (提交 15251c0a)
逻辑复制 (Logical replication)
- 数据可以以二进制格式传输 (提交 9de77b54)
- 添加了对进行中的事务的流式传输支持 (提交 46482432)
- 输出插件 API 现在可以解码准备好的事务 (提交 0aa8a01d)
- 允许在表同步期间进行多个事务 (提交 ce0fdbfe)
外部数据包装器 (FDW) 更改
信息模式更改
- 添加了例程使用表作为占位符 (提交 f40c6969)
libpq 更改
通用
- 现在通过
PQparameterStatus()
报告in_hot_standby
(提交 bf8a662c) - 添加了管道模式 (提交 acb7e4eb)
- 改进了
PQtrace()
的输出格式 (提交 198b3716) - SSL 连接默认设置了服务器名称指示 (SNI) (提交 5c55dc8b)
连接参数
已添加
已修改:
target_session_attrs
- 添加了
read-only
、primary
、standby
和prefer-standby
选项 (提交 ee28cacf)
- 添加了
移除
ECPG 更改
- 添加了
DECLARE STATEMENT
命令 (提交 ad8305a4)
psql 更改
- 添加了
\dX
命令以显示扩展统计信息对象 (提交 ad600bba) - 命令
\di
、\dm
和\dt
现在显示access method
名称 (提交 07f386ed) - 如果命令字符串包含多个查询,则默认显示所有查询结果 (提交 3a513067)
- 添加了
SHOW_ALL_RESULTS
变量 (提交 3a513067) - 命令
\df
和\do
现在接受参数类型说明 (提交 a3027e1e)
服务器实用程序
已添加
已撤销 (提交 3187ef7c)pg_alterckey
(初始提交 62afb42a)
已修改
initdb
pg_waldump
- 逻辑消息的内容现在也将包含在输出中 (提交 9f1cf97b)
核心实用程序
已添加
pg_amcheck
(提交 97060928)
已修改
pgbench
pg_dump
pg_dumpall
- 添加了
--no-toast-compression
选项 (提交 694da198)
- 添加了
reindexdb
- 添加了
--tablespace
选项 (提交 57e6db70)
- 添加了
vacuumdb
Contrib模块
已添加
old_snapshot
(提交 aecf5ee2)pg_surgery
(提交 34a947ca)bool_plperlu
(提交 36058a3c)
已修改
amcheck
- 现在能够检查堆页 (提交 866e24d4)
btree_gist
- 被标记为并行安全 (提交 d98c08cd)
cube
- 为
cube
添加了二进制 I/O 功能支持 (提交 1265a9c8)
- 为
earthdistance
hstore
- 添加了对
hstore
值下标的支持 (提交 0ec5f7e7)
- 添加了对
hstore_plperl
intarray
- 从
GiST
运算符类中移除了<@
运算符 (提交 20e7e1fe)
- 从
pageinspect
pg_stat_statements
- 现在跟踪
CREATE TABLE AS
、SELECT INTO
、CREATE MATERIALIZED VIEW
和FETCH
命令检索或影响的总行数 (提交 6023b7ea) - 现在跟踪
REFRESH MATERIALIZED VIEW
处理的总行数 (提交 b62e6056) - 添加了视图
pg_stat_statements_info
以显示关于 pg_stat_statements 操作的统计信息 (初始提交 9fbc3f31) - 向视图
pg_stat_statements
添加了toplevel
列,指示跟踪的语句是顶级语句还是嵌套语句 (提交 6b4d23fe)
- 现在跟踪
pgstattuple
- 函数
pgstattuple_approx()
可以报告 TOAST 表 (提交 ee0202d5)
- 函数
pg_trgm
postgres_fdw
- 支持批量插入 (提交 b663a413)
- 添加了函数
postgres_fdw_get_connections()
(提交 708d165d) - 添加了函数
postgres_fdw_disconnect()
(提交 411ae649) - 添加了函数
postgres_fdw_disconnect_all()
(提交 411ae649)t - 添加了表/服务器选项
async_capable
以启用异步执行支持 (提交 27e1f145) - 添加了服务器选项
keep_connections
(提交 b1be3074) - 现在可以导入
IMPORT FOREIGN SCHEMA ... LIMIT
子句中指定的分区 (提交 a3740c48)
- 添加了对截断远程服务器上的表的支持 (提交 8ff1c946)
tablefunc
- 函数
normal_rand()
不再接受负值 (提交 f7399926)
- 函数
test_decoding
- 添加了
stream-changes
选项 (提交 7259736a)
- 添加了
移除
pg_standby
(提交 514b411a)
测试
测试模块
已添加
发布计划和预发布测试版本
rc1
(REL_14_RC1
) - commit 8aed7f7a (2021-09-20);公告 (2021-09-23):PostgreSQL 14 RC 1 发布!beta3
(REL_14_BETA3
) - commit 26f5391d (2021-08-09);公告 (2021-08-12):PostgreSQL 13.4, 12.8, 11.13, 10.18, 9.6.23, and 14 Beta 3 发布!beta2
(REL_14_BETA2
) - commit bafad2c5 (2021-06-22);公告 (2021-06-25):PostgreSQL 14 Beta 2 发布!beta1
(REL_14_BETA1
) - commit e4f9737f (2021-05-17);公告 (2021-05-20):PostgreSQL 14 Beta 1 发布!
标志着 PostgreSQL 14
开发开始的初始 commit 是 d10b19e2 (2020-06-07)。
CommitFests
PostgreSQL 14 代码提交的 CommitFests 如下:
CommitFest 32 (2021-03-01 - 2021-04-07;已关闭)CommitFest 31 (2021-01-01 - 2021-01-31;已关闭)CommitFest 30 (2020-11-01 - 2020-11-30;已关闭)CommitFest 29 (2020-09-01 - 2020-09-30;已关闭)CommitFest 28 (2020-07-01 - 2020-07-31;已关闭)