PostgreSQL 14
- 发布说明 (源文件)
- 发布日期:2021-09-30 (公告)
- 当前次要版本:14.14 (2024-11-14)
- 生命周期结束 (EOL):2026-11 (预计)
- 文档:PostgreSQL 14 (索引)
- GIT 分支:REL_14_STABLE
次要版本发布
- 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 更改
存储参数更改
- 添加了
parallel_insert_enabled
(提交 c8f78b61)
Vacuum 更改
- 在执行
COPY FREEZE
后,Vacuum 不再需要重写整个表 (提交 7db0cd21) - 在 autovacuum 详细日志中显示每个索引的统计信息 (提交 5aed6a1f)
- 元组压缩改进 (提交 19c60ad6)
- 跳过不必要的索引真空操作 (提交 5100010e)
使用此更改被发现不安全,并通过提交 042b584c (PostgreSQL 14.4) 回滚CONCURRENTLY
选项执行的索引操作将被忽略 (提交 d9d07622)- 添加了环绕失效保护功能 (提交 1e55e7d1)
源代码配置
- 添加了选项
--with-ssl
(提交 fe61df7f)
数据类型更改
常规
jsonb
- 添加了下标支持 (提交 676887a3)
- 添加了
+(pg_lsn,numeric)
和-(pg_lsn,numeric)
运算符 (提交 9bae7e4c)
运算符更改
已移除
索引更改
常规
- 添加了对排序规则版本控制的支持 (初始提交 257836a7)
- 并发索引创建可以跳过对其他并发(重新)索引进程的等待 (提交 c98763bf)
- 并发重新索引可以跳过对其他并发(重新)索引进程的等待 (提交 f9900df5)
btree 索引
- B树索引的“自下而上删除” (提交 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 ... ALTER COLLATION ...
语法 (提交 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 ... OWNER TO CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
创建函数
- 支持使用SQL函数的SQL标准函数体 (提交 e717a9a1)
创建语言
- 删除了指定语言名称为单引号字符串的过时选项 (提交 5333e014)
创建策略
- 添加了
... TO CURRENT_USER ...
语法 (提交 45b98057)
- 添加了
创建存储过程
- 支持使用SQL函数的SQL标准函数体 (提交 e717a9a1)
创建模式
CURRENT_ROLE
可用于CREATE SCHEMA [...] AUTHORIZATION ...
(提交 45b98057)
创建统计信息
- 添加了对表达式扩展统计信息的支持 (提交 a4d75c86)
创建订阅
创建表
- 添加了列定义的
COMPRESSION
选项 (提交 bbe0a81d)
- 添加了列定义的
创建表空间
- 添加了
CREATE TABLESPACE ... OWNER CURRENT_ROLE
选项 (提交 45b98057)
- 添加了
创建类型
- 添加了
SUBSCRIPT
函数处理程序选项 (提交 c7aba7c1)
- 添加了
创建触发器
- 添加了
OR REPLACE
选项 (提交 92bf7e2d)
- 添加了
创建用户映射
- 添加了
CREATE USER MAPPING FOR CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
删除拥有
- 添加了
DROP OWNED BY CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
删除用户映射
- 添加了
DROP USER MAPPING FOR CURRENT_ROLE
语法 (提交 45b98057)
- 添加了
解释
- 如果未禁用
compute_query_id
,EXPLAIN VERBOSE
现在将显示查询标识符 (提交 4f0b0966)
- 如果未禁用
授权
插入
重新分配拥有
- 接受
CURRENT_ROLE
作为角色规范 (提交 45b98057)
- 接受
重建索引
撤销
选择
截断
真空
系统目录更改
表
常规
- 向系统目录表添加主键和唯一约束 (提交 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()
- 现在也返回复制源 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
- 身份验证选项
clientcert
不再支持选项0
、1
和no-verify
(提交 8f8154a5)
pg_ident.conf
- 记录可以跨多行(提交 8f8154a5)
正则表达式更改
\w
现在映射到[[:word:]]
(之前:[[:alnum:]_]
)并且在字符类中不允许作为范围的起始/结束(提交 2a0af7fe)\D
、\S
和\W
现在允许在方括号表达式中使用(提交 2a0af7fe)- 改进了正则表达式反向引用的处理(提交 4aea704a)
过程语言更改
PL/pgSQL
复制更改
流复制
逻辑复制
- 数据可以以二进制格式传输(提交 9de77b54)
- 增加了对正在进行的事务流的支持(提交 46482432)
- 输出插件API现在能够解码已准备好的事务(提交 0aa8a01d)
- 表同步期间允许多个事务(提交 ce0fdbfe)
外部数据包装器更改
信息模式更改
- 添加了例程使用表作为占位符(提交 f40c6969)
libpq更改
常规
in_hot_standby
现在由PQparameterStatus()
报告(提交 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)
cube
- 向
cube
添加了二进制I/O功能支持(提交 1265a9c8)
- 向
btree_gist
- 标记为并行安全(提交 d98c08cd)
hstore
- 添加了对
hstore
值下标的支持(提交 0ec5f7e7)
- 添加了对
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) - 添加了表/服务器选项
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
) - 提交 8aed7f7a (2021-09-20); 公告 (2021-09-23): PostgreSQL 14 RC 1 发布!beta3
(REL_14_BETA3
) - 提交 26f5391d (2021-08-09); 公告 (2021-08-12): PostgreSQL 13.4, 12.8, 11.13, 10.18, 9.6.23 和 14 Beta 3 发布!beta2
(REL_14_BETA2
) - 提交 bafad2c5 (2021-06-22); 公告 (2021-06-25): PostgreSQL 14 Beta 2 发布!beta1
(REL_14_BETA1
) - 提交 e4f9737f (2021-05-17); 公告 (2021-05-20): PostgreSQL 14 Beta 1 发布!
标记 PostgreSQL 14
开发开始的初始提交是 d10b19e2 (2020-06-07)。
CommitFests
以下 CommitFest 用于 PostgreSQL 14 代码提交
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; 已关闭)