PostgreSQL 17

PostgreSQL 17 是最新的 PostgreSQL 主版本,于 2024 年 9 月发布。

次要版本发布

功能

源代码和构建更改

配置

  • 配置选项 --disable-thread-safety 已移除(提交 68a4b58e

源代码

  • 与自动生成的等待事件相关的代码和文档(提交 fa889284

平台支持

  • AIX 支持已移除(提交 0b16bb87

后端更改

常规

  • 启动数据包中的数据库和用户名不再被截断(提交 562bee0f兼容性更改
  • 添加了 WAL 汇总进程(提交 174c4805
  • 添加了用于存储大量 TID 的内部 TIDStore 功能(初始提交 30e14428

后台工作进程

  • bgw_library_name 的长度从 96 字节增加到 1024 字节(提交 95784578)]

字符集和排序规则

  • 添加了排序规则提供程序 "builtin"(提交 2d819a08

事件触发器

优化器

  • 现在可以移除冗余的自连接(提交 d3d55ce5 已回退(提交 d3d55ce5

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

  • 添加了对解析大于 10MB 的 XML 文档的支持(2197d062 已回退(提交 f2743a7d

SQL 更改

  • 添加了对命名 NOT NULL 约束的支持(提交 b0e96f31
  • 添加了对时间 PRIMARY KEYUNIQUE 约束的支持(提交 46a0cd4c 已回退(提交 8aee330a
  • 添加了对时间 FOREIGN KEY 约束的支持(提交 34768ee3 已回退(提交 8aee330a

修改

  • ALTER OPERATOR
    • 现在可以设置 COMMUTATORNEGATORMERGESHASHES 属性(提交 2b5154be
  • ALTER STATISTICS
    • 添加了 ALTER STATISTICS ... SET STATISTICS DEFAULT 语法(提交 4f622503
  • ALTER SUBSCRIPTION
    • 添加了参数 failover(提交 776621a5
  • ALTER SYSTEM
    • 现在可以设置无法识别的自定义 GUC(提交 2d870b4a
  • 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
    • 添加了 FORCE_NULL *FORCE_NOT_NULL * 选项用于 COPY FROM(提交 f6d4c9cf
    • 添加了 ON_ERROR 选项用于 COPY FROM(初始提交 9e2d8701,在 b725b7ee 中从 SAVE_ERROR_TO 重命名)
    • 添加了 LOG_VERBOSITY 选项(提交 f5a22789
  • CREATE SUBSCRIPTION
    • 添加了参数 failover(提交 776621a5
  • CREATE TABLE
    • CONSTRAINT ... NOT NULL ... 语法已添加(提交 b0e96f31
    • UNIQUE ... WITHOUT OVERLAPSPRIMARY KEY ... WITHOUT OVERLAPS 语法已添加(提交 46a0cd4c 已回退(提交 8aee330a
    • 分区表 使用 CREATE TABLE ... USING 指定访问方法成为可能(提交 374c7a22
  • EXPLAIN
    • MEMORY 选项已添加(提交 5de890e3
    • 添加了SERIALIZE选项(提交 06286709
  • GRANT
    • 添加了MAINTAIN权限(提交 ecb0fd33
  • MERGE
    • 目标关系可以是可更新的视图(提交 5f2e179b
    • 添加了MERGE ... RETURNING ...支持(提交 c649fa24
    • 添加了MERGE ... WHEN NOT MATCHED BY SOURCE支持(提交 0294df2f

分区更改

  • 分区上允许某些类型的排他约束(提交 8c852ba9
  • 添加了对分区表上标识列的支持(提交 69958631
  • 可以为分区表定义访问方法(提交 374c7a22

索引更改

BRIN

GiST

  • 添加了对增量排序的支持(提交 625d5b3c

SP-GiST

  • 添加了对增量排序的支持(提交 625d5b3c

系统目录更改

修改

视图

添加了

修改

系统函数更改

添加了

修改

配置更改

添加了

修改

已移除

用户/角色

身份验证更改

  • 删除了对 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

复制更改

复制协议

  • 添加了命令 ALTER_REPLICATION_SLOT(提交 73292404
  • 在命令 CREATE_REPLICATION_SLOT 中添加了选项 FAILOVER(提交 73292404

逻辑复制

  • 二进制升级现在可以保留订阅的完整状态(提交 9a17be1e

核心实用程序

添加了

修改

  • clusterdb
    • 选项 -a/--all 可以与选项 -t/--table 结合使用(提交 1b49d56d
  • createdb
    • 选项 --locale-provider 接受附加值 builtin(提交 2d819a08
  • pg_amcheck
    • 添加了选项 --checkunique(提交 5ae20872
  • pg_archivecleanup
    • 以下选项扩展了长格式(提交 dd7c60f1
      • -d/--debug
      • -n/--dry-run
      • -x/--strip-extension
    • 添加了选项 --clean-backup-history(提交 3f8c98d0
  • pg_basebackup
    • 添加了选项 --sync-method(提交 8c16ad3b
    • 在提供的 conninfo 字符串中允许使用 dbname(提交 cca97ce6
    • 添加了选项 -i/--incremental(提交 dc212340
    • dbname 现在可以通过选项 -R/--write-recovery-confconninfo 字符串中写入(提交 a145f424
  • pgbench
    • 所有客户端数据生成都使用 COPY(提交 e35cc3b3
    • 添加了选项 --exit-on-abort(提交 3c662643
    • 添加了元命令 \syncpipeline(提交 94edfe25
    • 选项 -d 作为 --debug 的简写已被 -d/--database 选项替换(提交 3ff01b2b
  • pg_dump
    • 添加了选项 --sync-method(提交 8c16ad3b
    • 添加了选项 --filter(提交 a5cf808b
    • 添加了选项 --exclude-extension(提交 522ed12f
  • pg_dumpall
    • 添加了选项 --filter(提交 a5cf808b
  • pg_receivewal
  • pg_restore
    • 并行恢复和多个表时的性能得到提升(提交 9bfd44bb
    • 添加了选项 --filter(提交 a5cf808b
    • 添加了选项 --transaction-size(提交 959b38d7
  • reindexdb
    • 选项 --all 可以与 --table--schema--index--system 结合使用(提交 24c928ad
    • 选项 --system 可以与 --table--schema--index 结合使用(提交 24c928ad
    • 选项 --jobs 可以与 --index 结合使用(提交 47f99a40
  • vacuumdb
    • 选项 -a/--all 现在可以与 --table--schema--exclude-schema 结合使用(提交 648928c7

服务器实用程序

psql 更改

  • 添加了 \drg 命令(提交 d65ddaca
  • \watch 命令中添加了参数 min_rows(提交 f347ec76
  • 改进了默认和空权限的显示(提交 d1379ebf
  • 数据库重新连接现在可以通过 SIGINT 取消(提交 cafe1056

Contrib 模块

修改

  • amcheck
    • 添加了检查唯一约束违规的支持(提交 5ae20872
  • dblink
    • 远程查询现在可以中断(提交 d3c5f37d
  • ltree
    • 添加了哈希支持(提交 485f0aa8
  • pg_buffercache
    • 添加了函数 pg_buffercache_evict()(提交 13453eed
  • pgrowlocks
    • 标签 ShareKey Share 已更改为 For ShareFor Key Share(提交 15d5d740
  • pg_stat_statements
    • 保存点名称现在显示为常量(提交 31de7e60
    • 两阶段提交命令的 GID 现在显示为常量(提交 638d42a3
    • DEALLOCATE 语句的名称显示为常量 bb45156f
    • 在视图 pg_stat_statements 中添加了列 jit_deform_countjit_deform_time(提交 5a3423ad
    • CALL 参数现在显示为常量(提交 11c34b34
    • 在视图 pg_stat_statements 中添加了列 local_blk_read_timelocal_blk_write_time(提交 5147ab1d
    • 在视图 pg_stat_statements 中添加了列 stats_sinceminmax_stats_since(提交 dc9f8a79
  • pg_prewarm
    • 修改为使用流式 I/O(提交 3a352df0
  • postgres_fdw
    • 添加了半连接的反向解析支持(提交 824dbea3
    • 事件 WAIT_EVENT_EXTENSION 已被自定义等待事件替换(提交 d61f2538
    • DEFAULT_FDW_TUPLE_COST0.01 更改为 0.2(提交 cac169d6
    • 添加了半连接的反向解析支持(提交 824dbea3
  • test_decoding
  • unaccent
    • 添加了对带引号的翻译字符的支持(59f47fb9

已移除

 

测试

  • 添加了对后端注入点的支持(初始提交 d86d20f0

pg_regress

  • 环境变量 PG_TEST_INITDB_EXTRA_OPTS 中设置的选项传递给 initdb(提交 995d400c

TAP 测试

  • 环境变量 PG_TEST_INITDB_EXTRA_OPTS 中设置的选项传递给 initdb(提交 995d400c

测试模块

修改

已移除

其他

  • \v 现在在各种解析器中被视为空格字符(提交 ae6d06f0

发布计划和预发布测试版本

PostgreSQL 17 开发的初始提交标记是 5bcc7e6d(2023-06-29)。

CommitFests

 

  •