PostgreSQL 17
PostgreSQL 17
是最新的 PostgreSQL 主要版本,于 2024 年 9 月发布。
- 发布说明 (源文件)
- 发布日期:2024-09-26
- 当前次要版本:17.6 (2025-08-14)
- EOL:2029-11 (预计)
- 文档:PostgreSQL 17 (索引)
- GIT 分支:REL_17_STABLE
次要版本发布
- 17.6 (2025-08-14; 发布说明;公告)
- 17.5 (2025-05-08; 发布说明;公告)
- 17.4 (2025-02-20; 发布说明;公告)
- 17.3 (2025-02-13; 发布说明;公告)
- 17.2 (2024-11-21; 发布说明;公告)
- 17.1 (2024-11-14; 发布说明;公告)
主要特性
- 支持增量备份 (初始提交 dc212340)
- 逻辑复制的故障转移控制
源代码和构建更改
配置
源代码
- 等待事件相关的代码和文档自动生成 (提交 fa889284)
平台支持
- 移除了对 AIX 的支持 (提交 0b16bb87)
后端更改
通用
- 启动数据包中的数据库和用户名不再截断 (提交 562bee0f) 兼容性更改
- 添加了 WAL 汇总进程 (提交 174c4805)
- 添加了内部
TIDStore
功能,用于存储大量的TID
(初始提交 30e14428)
后台工作进程
bgw_library_name
的长度从96
增加到1024
字节 (提交 95784578)
字符集和排序规则
- 添加了排序规则提供程序 "
builtin
" (提交 2d819a08)
事件触发器
优化器
WAL
- 优化了 WAL 插入锁的获取和释放 (提交 71e4cc6b)
数据类型更改
interval
- 添加了对
+infinity
/-infinity
的支持 (提交 519fc1bd)
JSON
- 添加了以下符合 SQL 标准的
JSON
函数 (提交 03734a7f)JSON()
JSON_SCALAR()
JSON_SERIALIZE()
- 添加了以下符合 SQL 标准的
JSON
查询函数 (提交 6185c973)JSON_EXISTS()
JSON_QUERY()
JSON_VALUE()
- 添加了
JSON_TABLE()
构造函数 (提交 de360045)
XML
SQL 更改
- 添加了对命名
NOT NULL
约束的支持 (提交 b0e96f31) - 添加了对时间
PRIMARY KEY
和UNIQUE
约束的支持 (提交 46a0cd4c) 已撤销 (提交 8aee330a) - 添加了对时间
FOREIGN KEY
约束的支持 (提交 34768ee3) 已撤销 (提交 8aee330a)
已修改
ALTER OPERATOR
- 现在可以设置
COMMUTATOR
、NEGATOR
、MERGES
和HASHES
属性 (提交 2b5154be)
- 现在可以设置
ALTER STATISTICS
- 添加了
ALTER STATISTICS ... SET STATISTICS DEFAULT
语法 (提交 4f622503)
- 添加了
ALTER SUBSCRIPTION
- 添加了参数
failover
(提交 776621a5)
- 添加了参数
ALTER SYSTEM
ALTER TABLE
- 添加了
CONSTRAINT ... NOT NULL ...
语法 (提交 b0e96f31) - 添加了
ALTER TABLE ... SET EXPRESSION AS ...
语法 (提交 5d06e99a) - 添加了
ALTER TABLE ... SET STATISTICS DEFAULT
语法 (提交 4f622503) - 添加了
ALTER TABLE ... SET ACCESS METHOD DEFAULT
语法 (提交 d61a6cad) - 添加了
ALTER TABLE ... MERGE PARTITIONS ...
语法 (提交 1adf16b8) 已撤销 (提交 3890d90c) - 添加了
ALTER TABLE ... SPLIT PARTITION ...
语法 (提交 87c21bb9) 已撤销 (提交 3890d90c)
- 添加了
COPY
CREATE SUBSCRIPTION
- 添加了参数
failover
(提交 776621a5)
- 添加了参数
CREATE TABLE
EXPLAIN
GRANT
- 添加了
MAINTAIN
权限 (提交 ecb0fd33)
- 添加了
MERGE
分区更改
索引更改
BRIN
- 现在支持并行
CREATE INDEX
(提交 b4375717)
GiST
- 添加了对增量排序的支持 (提交 625d5b3c)
SP-GiST
- 添加了对增量排序的支持 (提交 625d5b3c)
系统目录更改
表
已修改
pg_attribute
pg_collation
colliculocale
列重命名为colllocale
(提交 f696c0cd)
pg_constraint
pg_database
pg_depend]
pg_stat_bgwriter
- 移除了以下列 (提交 74604a37)
buffers_backend
buffers_backend_fsync
- 在引入
pg_stat_checkpointer
后移除了以下列 (提交 96f05261)checkpoints_timed
checkpoints_req
checkpoint_write_time
checkpoint_sync_time
buffers_checkpoint
- 移除了以下列 (提交 74604a37)
pg_statistic_ext
视图
已添加
pg_stat_checkpointer
(提交 96f05261)pg_wait_events
(提交 1e68e43d)
已修改
pg_replication_slots
pg_stat_progress_copy
- 添加了
tuples_skipped
列 (提交 72943960)
- 添加了
pg_stat_progress_vacuum
pg_stat_slru
- SLRU 缓存重命名 (提交 bcdfa5f2)
pg_stat_subscription
- 添加了
worker_type
列 (提交 13aeaf07)
- 添加了
pg_stats
- 添加了以下列 (提交 bc3c8db8)
range_length_histogram
range_empty_frac
range_bounds_histogram
- 添加了以下列 (提交 bc3c8db8)
pg_subscription
- 添加了
subfailover
列 (提交 776621a5)
- 添加了
系统函数更改
已添加
icu_unicode_version()
(提交 a02b37fc)jsonb_populate_record_valid()
(提交 1edb3b49)pg_available_wal_summaries()
(提交 174c4805)pg_basetype()
(提交 b154d8a6)pg_column_toast_chunk_id()
(提交 d1162cfd)pg_get_wal_summarizer_state()
(提交 d9ef650f)pg_sync_replication_slots()
(提交 ddd5f4f5)pg_wal_replay_wait()
(提交 06c418e1) 已撤销 (提交 772faafc)pg_wal_summary_contents()
(提交 174c4805)to_bin()
(提交 260a1f18)to_oct()
(提交 260a1f18)to_regtypemod()
(提交 1218ca99)unicode_assigned()
(提交 a02b37fc)unicode_version()
(提交 a02b37fc)uuid_extract_timestamp()
(提交 794f10f6)uuid_extract_version()
(提交 794f10f6)xmltext()
(提交 526fe0d7)
已修改
pg_create_logical_replication_slot()
- 添加了选项
failover
(提交 c393308b)
- 添加了选项
pg_current_logfile()
pg_logical_emit_message()
- 添加了参数
flush
(提交 173b56f1)
- 添加了参数
pg_promote()
- 在
kill()
或 postmaster 失败时报告失败 (提交 f593c551)
- 在
pg_stat_reset_shared()
pg_stat_reset_slru()
pg_walfile_name()
- LSN 位于段边界时,返回当前段号 (提交 344afc77)
pg_walfile_name_offset()
- LSN 位于段边界时,返回当前段号 (提交 344afc77)
random()
- 添加了
random(min, max)
变体 (提交 e6341323)
- 添加了
配置更改
已添加
allow_alter_system
(提交 d3ae2a24)backtrace_on_internal_error
(提交 a740b213) 已撤销 (提交 592a2283)enable_self_join_removal
(提交 d3d55ce5) 已撤销 (提交 d1d286d8)event_triggers
(提交 7750fefd)huge_pages_status
(提交 a14354ca)io_combine_limit
(提交 210622c6)max_notify_queue_pages
(提交 2cdf131c)or_to_any_transform_limit
(提交 72bd38cc) 已撤销 (提交 ff9f72c6)summarize_wal
(提交 174c4805)sync_replication_slots
(提交 93db6cbd)synchronized_standby_slots
(提交 bf279ddd)trace_connection_negotiation
(提交 705843d2)transaction_timeout
(提交 51efe38c)wal_summary_keep_time
(提交 174c4805)
已修改
autovacuum_work_mem
- 最小值从
1MB
降低到64kB
(提交 bbf668d6)
- 最小值从
log_connections
- 显式记录没有 auth ID 的连接,例如
trust
(提交 e48b19c5)
- 显式记录没有 auth ID 的连接,例如
log_replication_commands
- 记录复制槽的获取和释放 (7c3fb505)
maintenance_work_mem
- 最小值从
1MB
降低到64kB
(提交 bbf668d6)
- 最小值从
vacuum_buffer_usage_limit
- 默认值更改为
2MB
(提交 98f320eb)
- 默认值更改为
wal_sync_method
- 在 Windows 上移除了
fsync_writethrough
选项 (提交 8c852ba9)
- 在 Windows 上移除了
移除
db_user_namespace
(提交 884eee5b)old_snapshot_threshold
(提交 f691f5b8)trace_recovery_messages
(提交 c7a3e6b4)
用户/角色
认证更改
- 移除了对 OpenSSL 1.0.1 的支持 (提交 8e278b65)
过程语言更改
PL/pgSQL
- 现在
%TYPE
和%ROWTYPE
后面可以跟数组修饰符 (提交 5e8674dc)
libpq 更改
- 添加了用于关闭 portal 和 statement 的函数 (提交 28b57265)
- 添加了函数
PQchangePassword()
(提交 a7be2a6c) - 添加了函数
PQsendPipelineSync()
(提交 4794c2d3) - 添加了各种非阻塞查询取消函数 (提交 61461a30)
- 添加了函数
PQsocketPoll()
(提交 f5e4dedf) - 添加了函数
PQsetChunkedRowsMod()
(提交 4643a2b2) - 添加了连接参数
sslnegotiation
(提交 d39a49c1)
信息模式更改
- 从
element_types
视图中移除了domain_default
列 (提交 78806a95)
复制更改
复制协议
- 添加了命令
ALTER_REPLICATION_SLOT
(提交 73292404) - 在命令
CREATE_REPLICATION_SLOT
中添加了选项FAILOVER
(提交 73292404)
逻辑复制 (Logical replication)
- 现在二进制升级可以保留订阅的完整状态 (提交 9a17be1e)
核心实用程序
已添加
pg_combinebackup
(提交 dc212340)pg_createsubscriber
(提交 d44032d0)pg_walsummary
(提交 ee1bfd16)
已修改
clusterdb
- 选项
-a
/--all
可以与选项-t/--table
结合使用 (提交 1b49d56d)
- 选项
createdb
- 选项
--locale-provider
接受附加值builtin
(提交 2d819a08)
- 选项
pg_amcheck
- 添加了选项
--checkunique
(提交 5ae20872)
- 添加了选项
pg_archivecleanup
pg_basebackup
pgbench
pg_dump
pg_dumpall
- 添加了选项
--filter
(提交 a5cf808b)
- 添加了选项
pg_receivewal
pg_restore
reindexdb
vacuumdb
- 选项
-a
/--all
现在可与--table
、--schema
和--exclude-schema
结合使用 (提交 648928c7)
- 选项
服务器实用程序
initdb
pg_checksums
- 添加了选项
--sync-method
(提交 8c16ad3b)
- 添加了选项
pg_rewind
- 添加了选项
--sync-method
(提交 8c16ad3b)
- 添加了选项
pg_upgrade
psql 更改
- 添加了命令
\drg
(提交 d65ddaca) - 向
\watch
命令添加了参数min_rows
(提交 f347ec76) - 改进了默认和空权限的显示 (提交 d1379ebf)
- 数据库重新连接现在可以通过
SIGINT
取消 (提交 cafe1056)
Contrib模块
已修改
amcheck
- 添加了对检查唯一约束冲突的支持 (提交 5ae20872)
dblink
- 远程查询现在是可中断的 (提交 d3c5f37d)
ltree
- 添加了哈希支持 (提交 485f0aa8)
pg_buffercache
- 添加了函数
pg_buffercache_evict()
(提交 13453eed)
- 添加了函数
pgrowlocks
- 标签
Share
和Key Share
已更改为For Share
和For Key Share
(提交 15d5d740)
- 标签
pg_stat_statements
- 现在将 savepoint 名称显示为常量 (提交 31de7e60)
- 两阶段提交命令的 GID 现在显示为常量 (提交 638d42a3)
- 现在将
DEALLOCATE
语句的名称显示为常量 (提交 bb45156f) - 将列
jit_deform_count
和jit_deform_time
添加到视图pg_stat_statements
(提交 5a3423ad) - 现在将
CALL
参数显示为常量 (提交 11c34b34) - 将列
local_blk_read_time
和local_blk_write_time
添加到视图pg_stat_statements
(提交 5147ab1d) - 将列
stats_since
和minmax_stats_since
添加到视图pg_stat_statements
(提交 dc9f8a79)
pg_prewarm
- 修改为使用流式 I/O (提交 3a352df0)
postgres_fdw
test_decoding
unaccent
- 添加了对带引号的翻译字符的支持 (59f47fb9)
移除
adminpack
(提交 cc09e654)old_snapshot
(提交 f691f5b8)
测试
- 为注入点添加了后台支持 (初始提交 d86d20f0)
pg_regress
TAP 测试
测试模块
已修改
worker_spi
- 自定义等待事件重命名为
WorkerSpiMain
(提交 c8e318b1)
- 自定义等待事件重命名为
移除
snapshot_too_old
(提交 f691f5b8)
其他
\v
在各种解析器中现在被视为空白字符 (提交 ae6d06f0)
发布计划和预发布测试版本
17.0
- 提交 d7ec59a6 (2024-09-23)17rc1
(REL_17_RC1
) - 提交 94f1474e (2024-09-02); 公告 (2024-09-05): PostgreSQL 17 RC1 发布!17beta3
(REL_17_BETA3
) - 提交 b18b3a81 (2024-08-05); 公告 (2024-08-08): PostgreSQL 16.4, 15.8, 14.13, 13.16, 12.20 和 17 Beta 3 发布!17beta2
(REL_17_BETA2
) - 提交 23c5a0e7 (2024-06-24); 公告 (2024-06-27): PostgreSQL 17 Beta 2 发布!17beta1
(REL_17_BETA1
) - 提交 86a2d2a3 (2024-05-20); 公告 (2024-05-23): PostgreSQL 17 Beta 1 发布!
标志着 PostgreSQL 17 开发开始的初始提交是 5bcc7e6d (2023-06-29)。
CommitFests
- CommitFest 47 (2024-03-01 - 2024-03-31; 已关闭)
- CommitFest 46 (2024-01-01 - 2024-01-31; 已关闭)
- CommitFest 45 (2023-11-01 - 2023-11-31; 已关闭)
- CommitFest 44 (2023-09-01 - 2023-09-30; 已关闭)
- CommitFest 43 (2023-07-01 - 2023-07-31; 已关闭)