PostgreSQL 17
PostgreSQL 17
是最新的 PostgreSQL 主版本,于 2024 年 9 月发布。
- 发布说明 (源代码)
- 发布日期:2024-09-26
- 当前次要版本:17.1 (2024-11-14)
- 结束支持日期:2029-11(估计)
- 文档:PostgreSQL 17 (索引)
- GIT 分支:REL_17_STABLE
次要版本发布
功能
源代码和构建更改
配置
- 配置选项
--disable-thread-safety
已移除(提交 68a4b58e)
源代码
- 与自动生成的等待事件相关的代码和文档(提交 fa889284)
平台支持
- AIX 支持已移除(提交 0b16bb87)
后端更改
常规
- 启动数据包中的数据库和用户名不再被截断(提交 562bee0f) 兼容性更改
- 添加了 WAL 汇总进程(提交 174c4805)
- 添加了用于存储大量
TID
的内部TIDStore
功能(初始提交 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_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)
修改
log_connections
- 显式记录没有身份验证 ID 的连接,例如
trust
(提交 e48b19c5)
- 显式记录没有身份验证 ID 的连接,例如
log_replication_commands
- 记录复制槽位的获取和释放(7c3fb505)
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 更改
- 添加了用于关闭门户和语句的函数(提交 28b57265)
- 添加了函数
PQchangePassword()
(提交 a7be2a6c) - 添加了函数
PQsendPipelineSync()
(提交 4794c2d3) - 添加了各种非阻塞查询取消函数(提交 61461a30)
- 添加了函数
PQsocketPoll()
(提交 f5e4dedf)
- 添加了函数
PQsetChunkedRowsMod()
(提交 4643a2b2)
信息模式 更改
- 从
element_types
视图中删除了列domain_default
(提交 78806a95)
复制更改
复制协议
逻辑复制
- 二进制升级现在可以保留订阅的完整状态(提交 9a17be1e)
核心实用程序
添加了
修改
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
- 保存点名称现在显示为常量(提交 31de7e60)
- 两阶段提交命令的 GID 现在显示为常量(提交 638d42a3)
DEALLOCATE
语句的名称显示为常量 bb45156f)- 在视图
pg_stat_statements
中添加了列jit_deform_count
和jit_deform_time
(提交 5a3423ad) CALL
参数现在显示为常量(提交 11c34b34)- 在视图
pg_stat_statements
中添加了列local_blk_read_time
和local_blk_write_time
(提交 5147ab1d) - 在视图
pg_stat_statements
中添加了列stats_since
和minmax_stats_since
(提交 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)
- 自定义等待事件重命名为
已移除
其他
\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;已关闭)