PostgreSQL 11

次要版本发布

主要功能

  • 分区功能改进
  • 并行性改进
  • 支持嵌入式事务的 SQL 存储过程 (初始提交 e4128ee7)
  • 某些 SQL 代码的可选即时 (JIT) 编译
  • 扩展了对窗口函数的支持
  • 现在可以创建覆盖索引 (提交 8224de4f)
  • ALTER TABLE ... ADD COLUMN 具有非空常量默认值不再需要表重写 (初始提交 16828d5c)

SQL 更改

一般

  • 为窗口框架子句添加了对所有 SQL:2011 选项的支持 (提交 0a459cec)

已添加:

已修改

后端更改

一般

  • 现在可以将数据目录设为组可读(提交 c37b3d08)。
  • WAL 段大小现在可以在运行 initdb 时配置(提交 fc49e24f)。
  • 通过 vacuum 和 analyze 操作对 pg_class.reltuples 的估计值进行一致化(提交 7c91a036)。

源代码配置

  • 添加了选项 --with-llvm(提交 5b2526c8)。

引导

  • 将目录数据格式转换为使用 Perl 数据结构(初始提交 372728b0)。

后台工作进程

  • 添加了 bgw_type 字段;此处设置的值将在 pg_stat_activitybackend_type 列中显示,而不是通用的值 "background worker",也会显示为 ps 进程显示标签(提交 5373bc2a)。
  • 后台工作者可以连接到通常不允许连接的数据库(提交 eed1ce72)。

执行器

  • 添加了并行感知哈希连接(提交 18042840)。
  • LIMIT 可以传递给并行工作者(提交 3452dc52)。
  • 支持并行追加计划节点(提交 ab727167)。
  • UNION [ALL] 能够并行运行每个 SELECT,如果单个 SELECT 不能并行化(提交 88ba0ae2)。

优化器

  • 改进了对统计数据中最常见值 (MCV) 的选择(提交 b5db1d93)。

存储参数

添加了

  • toast_tuple_target(提交 c2513365)。

Vacuum

  • 更积极地删除了孤立的临时表(提交 943576bd)。

WAL

  • 删除了二级检查点,这意味着 WAL 不会保留在最近的检查点之外(提交 4b0d28de)。

系统目录更改

已修改

视图

已修改

系统函数更改

添加了

已修改

  • to_char()
    • 添加了 TZHTZM 格式模式,用于指定时区相对于 UTC 的偏移量(以小时和分钟为单位)(提交 11b623dd)。
  • to_timestamp()
    • 添加了 TZHTZM 格式模式,用于指定时区相对于 UTC 的偏移量(以小时和分钟为单位)(提交 11b623dd)。

索引更改

btree

  • 添加了对并行索引构建的支持(提交 9da0cc35)。

GIN

  • 添加了谓词锁定(提交 43d1ed60)。

GiST

  • 添加了谓词锁定(提交 3ad55863)。

hash

  • 添加了谓词锁定(提交 b508a56f)。

SP-GiST

  • ^@ 运算符(“以…开头”)添加(提交 710d90da)。
  • 添加了对索引多边形的支持(提交 ff963b39)。
  • 添加了对叶子键的有损表示的支持(提交 854823fa)。

分区更改

  • 添加了对默认分区的支持(提交 6f6b99d1)。
  • 分区修剪能够处理任何稳定的表达式(提交 73b7f48f)。
  • 添加了对执行时分区修剪的支持(提交 499be013)。
  • 添加了哈希分区支持(提交 1aba8e65)。
  • UPDATE 现在可以将元组从一个分区移动到另一个分区(初始提交 2f178441)。
  • 允许在分区表上使用唯一索引(提交 eb7ed3f3)。
  • 允许在分区表上使用 INSERT ... ON CONFLICT ...(提交 555ee77a)。
  • 允许在分区表上使用外键(提交 3de241db)。
  • 允许在分区表上使用 FOR EACH ROW 触发器(提交 86f57594)。
  • 启用了分区级联接(提交 f49842d1)。
  • 启用了分区级分组/聚合(提交 e2f1eb0e)。

配置更改

添加了

已修改

已移除

  • replacement_sort_tuples (提交 8b304b8b)

用户/角色

  • 以下 预定义角色 已添加(提交 0fdc8495)
    • pg_read_server_files
    • pg_write_server_files
    • pg_execute_server_program

复制更改

逻辑复制

外部数据包装器更改

  • INSERTUPDATECOPY分区表 上可以将行路由到外部分区(提交 3d956d95)

服务器实用程序

添加了

已修改

核心实用程序

已修改

  • pg_basebackup
    • 添加了选项 --create-slot,用于使用 --slot 选项自动创建指定的复制槽(提交 3709ca1c)
  • pgbench
    • 主要脚本语言改进(提交 bc7fa0c1)
    • pow() / power() 函数已添加(提交 7a727c18)
    • \if 支持已添加(提交 f67b113a)
    • 变量名中允许使用非 ASCII 字符(提交 9d36a386)
    • 添加了散列函数 hash()hash_murmur2()hash_fnv1a()(提交 e51a0484)
    • random_zipfian() 函数已添加(提交 1fcd0ade)
    • 添加了选项 --init-steps(提交 591c504f)
    • 添加了选项 --random-seed(提交 64f85894)
    • 使用 --latency-limit--rate 生成的统计信息的准确性得到改进(提交 c23bb6ba16827d44)
  • pg_dump
    • 添加了选项 --load-via-partition-root(提交 23d7680d)
    • 添加了选项 --no-comments(提交 1368e92e)
    • 现在转储数据库级属性(提交 b3f84012)
  • pg_dumpall
    • 添加了选项 -E/--encoding(提交 84be6718)
    • 添加了选项 --no-comments(提交 1368e92e)
    • 添加了选项 --no-role-passwords(提交 9a83d56b)
    • 选项 -g/--globals-only 现在只发出与角色和表空间相关的输出(提交 b3f84012)
  • pg_receivewal
    • 添加了选项 -E/--endpos(提交 6d9fa526)
    • 添加了选项 --no-sync(提交 5f397129)
  • pg_restore
    • 添加了选项 --no-comments(提交 1368e92e)

psql 更改

  • \gdesc 命令已添加(提交 49ca462e)
  • 添加了显示 SQL 查询成功/失败的变量(提交 69835bc8)
  • 添加了测试变量是否存在的功能(提交 d57c7a7c)
  • 添加了环境变量 PSQL_PAGER,用于控制 psql 的分页器(提交 5e8304fd)
  • 使 tab 补全功能独立于服务器(提交 722408bc)
  • 添加了 quitexit 命令,类似于 MySQL 的命令行客户端(提交 df9f599b)

Contrib 模块

添加了

已修改

已移除

文档

测试

测试模块

添加了

预发布测试版本

标记 PostgreSQL 11 开发开始的初始提交是 9f14dc39(2017-08-14)。