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 SUBSCRIPTIONALTER TABLEALTER TABLESPACE- 添加了
ALTER TABLESPACE ... OWNER TO CURRENT_ROLE语法 (提交 45b98057)
- 添加了
ALTER TEXT SEARCH DICTIONARY- 添加了
ALTER TEXT SEARCH DICTIONARY ... OWNER TO CURRENT_ROLE语法 (提交 45b98057)
- 添加了
ALTER TYPEALTER 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 SUBSCRIPTIONCREATE 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)
- 如果未禁用
GRANTINSERTREASSIGN OWNED- 接受
CURRENT_ROLE作为角色规范 (提交 45b98057)
- 接受
REINDEXREVOKESELECTTRUNCATEVACUUM
系统目录更改
表
通用
- 将主键和唯一约束添加到系统目录表 (提交 dfb75e47)
已修改
pg_attribute- 添加了
attcompression列 (提交 bbe0a81d)
- 添加了
pg_classreltuples列默认设置为-1(提交 3d351d91)
pg_inherits- 添加了
inhdetachpending列 (提交 71f4c8c6)
- 添加了
pg_proc- 添加了
prosqlbody列 (提交 e717a9a1)
- 添加了
pg_range- 添加了
rngmultitypid列 (提交 6df7a969)
- 添加了
pg_statistic_ext_data- 添加了
stxdexpr列 (提交 a4d75c86)
- 添加了
pg_subscriptionpg_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_statementspg_replication_slots- 添加了
two_phase列 (提交 19890a06)
- 添加了
pg_stat_activitypg_stats_ext- 添加了
exprs列 (提交 a4d75c86)
- 添加了
pg_stat_database- 添加了以下列 (提交 960869da)
session_timeactive_timeidle_in_transaction_timesessionssessions_abandonedsessions_fatalsessions_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)
barelabelbaredesc
- 添加了以下输出列 (提交 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_prefixpassword_encryptionrestore_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)
已修改
initdbpg_waldump- 逻辑消息的内容现在也将包含在输出中 (提交 9f1cf97b)
核心实用程序
已添加
pg_amcheck(提交 97060928)
已修改
pgbenchpg_dumppg_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)
- 为
earthdistancehstore- 添加了对
hstore值下标的支持 (提交 0ec5f7e7)
- 添加了对
hstore_plperlintarray- 从
GiST运算符类中移除了<@运算符 (提交 20e7e1fe)
- 从
pageinspectpg_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_trgmpostgres_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;已关闭)
