↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.4 的版本变更

本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。

查看该版本全部变更
查看该版本全部变更

从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。

收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。

本次发布的全部变更

9.4

2014-12-18

导出 JSON
211项变更功能、修复与改进
1次版本发布按发行版本归档
0个 CVE本版说明中提及的漏洞编号

9.4.0 历史版本维护截止 2020-02-13

PostgreSQL 9.4

升级与兼容性说明

希望从任何之前的版本迁移数据的用户,需要使用pg_dumpall进行转储/恢复,或使用pg_upgrade。

版本 9.4 包含许多可能影响与以前版本兼容性的变更。请注意以下不兼容之处:

兼容性变化收紧对多维数组输入的检查

兼容性

收紧对多维数组输入的检查(Bruce Momjian)

此前,以单元素子数组开头的输入数组字符串后面可以包含多元素子数组,例如'{{1}, {2,3}}'::int[]会被接受。

兼容性变化在将date、timestamp或timestamptz类型的值转换为JSON时,按符合 ISO 8601 的格式呈现这些值

兼容性

在将date、timestamp或timestamptz类型的值转换为JSON时,按符合 ISO 8601 的格式呈现这些值(Andrew Dunstan)

此前这些值按当前DateStyle设置呈现;但许多 JSON 处理器要求时间戳为 ISO 8601 格式。如有需要,可以在把日期时间值传给 JSON 转换函数之前显式转换为text来获得以前的行为。

兼容性变化json#>text[]路径提取操作符现在在数组为空时返回其左操作数输入而非 NULL

兼容性

json#>text[]路径提取操作符现在在数组为空时返回其左操作数输入而非 NULL(Tom Lane)

这与该操作表示对简单字段/元素提取操作符->应用零次的概念一致。类似地,带空数组的json#>>text[]只是把其左操作数输入强制转换为文本。

兼容性变化JSON字段/元素/路径提取操作符的极端情况现在返回 NULL 而不是抛出错误

兼容性

JSON字段/元素/路径提取操作符的极端情况现在返回 NULL 而不是抛出错误(Tom Lane)

例如,对 JSON 数组应用字段提取现在得到 NULL 而不是错误。这更一致(因为诸如字段不存在等可比情况此前就已返回 NULL),而且使创建使用这些操作符的表达式索引变得安全,因为它们现在不会对任何有效的 JSON 输入抛出错误。

兼容性变化使to_timestamp()和to_date()格式串中连续的空白字符消费输入串中相应数量的字符(无论是否空白),然后在非FX模式下视情况消费相邻空白

兼容性

使to_timestamp()和to_date()格式串中连续的空白字符消费输入串中相应数量的字符(无论是否空白),然后在非FX模式下视情况消费相邻空白(Jeevan Chalke)

此前,非FX格式串中的连续空白字符表现得像单个空白字符,并消费输入串中所有相邻空白。例如,此前三个空格的格式串在' 12'中只会消费第一个空格,但现在会消费全部三个字符。

兼容性变化修复ts_rank_cd()使其忽略已去除位置信息的词位

兼容性

修复ts_rank_cd()使其忽略已去除位置信息的词位(Alex Hill)

此前,已去除位置信息的词位被当作具有默认位置处理,产生用处可疑的排名。

兼容性变化对于声明为接受VARIADIC "any"的函数,标记为VARIADIC的实际参数必须是可确定数组类型

兼容性

对于声明为接受VARIADIC "any"的函数,标记为VARIADIC的实际参数必须是可确定数组类型(Pavel Stehule)

此类参数不能再写成不带修饰的字符串字面量或NULL;现在需要转换为适当的数组数据类型。注意这不影响未标记VARIADIC的参数。

兼容性变化确保整行变量向关注组合参数内列名的函数暴露预期的列名

兼容性

确保整行变量向关注组合参数内列名的函数暴露预期的列名(Tom Lane)

现在,像row_to_json(tab.*)这样的结构总是输出与调用处表tab可见的列别名匹配的列名。在以前的发行版中,输出的列名有时是表的实际列名,而不管查询中指派了什么别名。

兼容性变化DISCARD现在还会丢弃与序列相关的状态

兼容性

DISCARD现在还会丢弃与序列相关的状态(Fabrízio de Royes Mello、Robert Haas)

兼容性变化将EXPLAIN ANALYZE输出中的“total runtime”更名为“execution time”

兼容性

将EXPLAIN ANALYZE输出中的“total runtime”更名为“execution time”(Tom Lane)

既然规划时间也一并报告,以前的名称容易引起混淆。

兼容性变化SHOW TIME ZONE现在以POSIX时区格式输出简单的数字 UTC 偏移

兼容性

SHOW TIME ZONE现在以POSIX时区格式输出简单的数字 UTC 偏移(Tom Lane)

此前,此类时区设置显示为interval值。作为简单字符串传递时,新的输出能被SET TIME ZONE正确解释,而旧输出需要特殊处理才能被正确重新解析。

兼容性变化支持更新外部表的外部数据包装器必须考虑可能存在的AFTER ROW触发器

兼容性

支持更新外部表的外部数据包装器必须考虑可能存在的AFTER ROW触发器(Noah Misch)

当存在AFTER ROW触发器时,更新操作必须返回表的所有列,因为触发器可能检查其中任意或全部列。此前外部表从不带触发器,因此 FDW 可能优化掉对RETURNING子句(若有)中未提及列的获取。

兼容性变化阻止CHECK约束引用系统列,tableoid除外

兼容性

阻止CHECK约束引用系统列,tableoid除外(Amit Kapila)

此前此类检查约束是被允许的,但它们常常在还原期间导致错误。

兼容性变化在指定了多个目标参数时,使用最后指定的恢复目标参数

兼容性

在指定了多个目标参数时,使用最后指定的恢复目标参数(Heikki Linnakangas)

此前,recovery_target_xxx参数之间存在未写入文档的优先顺序。

兼容性变化在 Windows 上自动保留用户提供的命令串中的引号

兼容性

在 Windows 上自动保留用户提供的命令串中的引号(Heikki Linnakangas)

自行处理引号保留的用户命令可能需要调整。archive_command、restore_command以及COPY TO/FROM PROGRAM中使用的命令很可能受此影响。

兼容性变化移除目录列pg_class.reltoastidxid

兼容性

移除目录列pg_class.reltoastidxid(Michael Paquier)

兼容性变化移除目录列pg_rewrite.ev_attr

兼容性

移除目录列pg_rewrite.ev_attr(Kevin Grittner)

逐列规则自PostgreSQL 7.3 起就不再支持。

兼容性变化移除对Kerberos认证的原生支持(--with-krb5等)

兼容性

移除对Kerberos认证的原生支持(--with-krb5等)(Magnus Hagander)

使用Kerberos认证的受支持方式是通过GSSAPI。原生代码自PostgreSQL 8.3 起已被弃用。

兼容性变化在PL/Python中,像处理底层数组类型一样处理域于数组的类型

兼容性

在PL/Python中,像处理底层数组类型一样处理域于数组的类型(Rodolfo Campero)

此前此类值被当作字符串处理。

兼容性变化使 libpq 的PQconnectdbParams()和PQpingParams()函数把零长度字符串按默认值处理

兼容性

使 libpq 的PQconnectdbParams()和PQpingParams()函数把零长度字符串按默认值处理(Adrian Vondendriesch)

此前,这些函数只在某些情况下把零长度字符串值视为选择默认值。

兼容性变化将intarray模块返回的空数组改为零维数组

兼容性

将intarray模块返回的空数组改为零维数组(Bruce Momjian)

此前,空数组作为零长度一维数组返回,其文本表示与零维数组({})看起来相同,但在数组操作中的行为不同。intarray在此领域的行为现在与内置数组操作符一致。

兼容性变化pg_upgrade现在使用-U或--username指定用户名

兼容性

pg_upgrade现在使用-U或--username指定用户名(Bruce Momjian)

此前该选项拼作-u或--user,但这与其他工具不一致。

新功能允许动态注册、启动和终止后台工作进程

服务器

允许动态注册、启动和终止后台工作进程(Robert Haas)

新的worker_spi模块展示了此功能的使用示例。

新功能允许动态分配共享内存段

服务器

允许动态分配共享内存段(Robert Haas、Amit Kapila)

此功能在test_shm_mq模块中有演示。

新功能在崩溃恢复或立即关闭期间,向未及时关闭的子进程发送不可捕获的终止信号(SIGKILL)

服务器

在崩溃恢复或立即关闭期间,向未及时关闭的子进程发送不可捕获的终止信号(SIGKILL)(MauMau, Álvaro Herrera)

这减少了postmaster关闭后遗留孤儿子进程的可能性,同时确保在某些子进程已经“卡住”时崩溃恢复仍能继续。

新功能改进数据库系统标识符的随机性

服务器

改进数据库系统标识符的随机性(Tom Lane)

新功能使VACUUM向统计信息收集器正确报告已死但尚不能移除的行

服务器

使VACUUM向统计信息收集器正确报告已死但尚不能移除的行(Hari Babu)

此前这些行被报告为活行。

新功能减小GIN索引的大小

服务器 / 索引

减小GIN索引的大小(Alexander Korotkov、Heikki Linnakangas)

通过pg_upgrade升级的索引仍能正常工作,但仍是旧的、较大的GIN格式。使用REINDEX可以按新格式重建旧的 GIN 索引。

新功能提高多键 GIN 查找的速度

服务器 / 索引

提高多键 GIN 查找的速度(Alexander Korotkov、Heikki Linnakangas)

新功能为inet和cidr数据类型新增GiST索引支持

服务器 / 索引

为inet和cidr数据类型新增GiST索引支持(Emre Hasegeli)

此类索引可改进子网和超网查找以及排序比较。

BUG 修复修复 B-tree 页删除中罕见的竞态条件

服务器 / 索引

修复 B-tree 页删除中罕见的竞态条件(Heikki Linnakangas)

新功能使被中断的 B-tree 页分裂的处理更加健壮

服务器 / 索引

使被中断的 B-tree 页分裂的处理更加健壮(Heikki Linnakangas)

性能改进允许多个后端并发插入WAL缓冲区

服务器 / 总体性能

允许多个后端并发插入WAL缓冲区(Heikki Linnakangas)

这改进了并行写入性能。

性能改进有条件地只把已更新行的修改部分写入 WAL

服务器 / 总体性能

有条件地只把已更新行的修改部分写入 WAL(Amit Kapila)

性能改进改进用作窗口函数的聚集函数的性能

服务器 / 总体性能

改进用作窗口函数的聚集函数的性能(David Rowley、Florian Pflug、Tom Lane)

性能改进提高使用 numeric 状态值的聚集的速度

服务器 / 总体性能

提高使用 numeric 状态值的聚集的速度(Hadi Moshayedi)

性能改进当表被CLUSTER或 VACUUM FULL 重写时,尝试冻结元组

服务器 / 总体性能

当表被CLUSTER或 VACUUM FULL 重写时,尝试冻结元组(Robert Haas、Andres Freund)

这可以避免将来再冻结这些元组的需要。

性能改进提高COPY在带有默认 nextval() 列时的速度

服务器 / 总体性能

提高COPY在带有默认 nextval() 列时的速度(Simon Riggs)

性能改进提高在同一会话中访问许多不同序列的速度

服务器 / 总体性能

提高在同一会话中访问许多不同序列的速度(David Rowley)

性能改进提高排序和 B-tree 索引构建期间内存中持有元组数量的硬限制

服务器 / 总体性能

提高排序和 B-tree 索引构建期间内存中持有元组数量的硬限制(Noah Misch)

性能改进减少 PL/pgSQL DO块分配的内存

服务器 / 总体性能

减少 PL/pgSQL DO块分配的内存(Tom Lane)

性能改进使规划器更激进地从混合的 AND/OR 子句中提取限制子句

服务器 / 总体性能

使规划器更激进地从混合的 AND/OR 子句中提取限制子句(Tom Lane)

性能改进禁止把易变 WHERE 子句下推到 DISTINCT 子查询中

服务器 / 总体性能

禁止把易变 WHERE 子句下推到 DISTINCT 子查询中(Tom Lane)

下推 WHERE 子句整体上可能产生更高效的计划,但代价是该子句的求值次数会多于查询文本所暗示的次数;因此若子句包含任何易变函数则不这样做。

性能改进自动调整系统目录缓存的大小

服务器 / 总体性能

自动调整系统目录缓存的大小(Heikki Linnakangas)

这减少了只访问少量表的会话的内存消耗,并改进了访问大量表的会话的性能。

新功能新增pg_stat_archiver系统视图以报告 WAL 归档器的活动

服务器 / 监控

新增pg_stat_archiver系统视图以报告 WAL 归档器的活动(Gabriele Bartolini)

新功能为pg_stat_all_tables及相关系统视图新增 n_mod_since_analyze 列

服务器 / 监控

为pg_stat_all_tables及相关系统视图新增 n_mod_since_analyze 列(Mark Kirkwood)

这些列显示了系统对表上次ANALYZE以来已更改元组数量的估计。该估计驱动何时自动分析的决策。

新功能为系统视图pg_stat_activity新增 backend_xid 和 backend_xmin 列,并为pg_stat_replication新增 backend_xmin 列

服务器 / 监控

为系统视图pg_stat_activity新增 backend_xid 和 backend_xmin 列,并为pg_stat_replication新增 backend_xmin 列(Christian Kruse)

新功能新增对 SSL ECDH 密钥交换的支持

服务器 / SSL

新增对 SSL ECDH 密钥交换的支持(Marko Kreen)

这允许使用椭圆曲线密钥进行服务器认证。此类密钥比 RSA 密钥更快且安全性更好。新增配置参数ssl_ecdh_curve控制用于 ECDH 的曲线。

新功能改进ssl_ciphers的默认设置

服务器 / SSL

改进ssl_ciphers的默认设置(Marko Kreen)

新功能默认情况下,现在由服务器而非客户端控制 SSL 密码的偏好顺序

服务器 / SSL

默认情况下,现在由服务器而非客户端控制 SSL 密码的偏好顺序(Marko Kreen)

此前,ssl_ciphers指定的顺序通常被忽略,转而采用客户端默认值,而大多数 PostgreSQL 客户端的默认值不可配置。如有需要,可以通过新的配置参数ssl_prefer_server_ciphers恢复以前的行为。

新功能使log_connections显示 SSL 加密信息

服务器 / SSL

使log_connections显示 SSL 加密信息(Andreas Kunert)

新功能改进 SSL 重新协商的处理

服务器 / SSL

改进 SSL 重新协商的处理(Álvaro Herrera)

新功能新增 SQL 命令ALTER SYSTEM,用于更改 postgresql.conf 配置文件条目

服务器 / 服务器设置

新增 SQL 命令ALTER SYSTEM,用于更改 postgresql.conf 配置文件条目(Amit Kapila)

此前此类设置只能通过手工编辑 postgresql.conf 来更改。

新功能新增autovacuum_work_mem配置参数,以控制自动清理工作进程使用的内存量

服务器 / 服务器设置

新增autovacuum_work_mem配置参数,以控制自动清理工作进程使用的内存量(Peter Geoghegan)

新功能新增huge_pages参数,允许在 Linux 上使用大内存页

服务器 / 服务器设置

新增huge_pages参数,允许在 Linux 上使用大内存页(Christian Kruse、Richard Poole、Abhijit Menon-Sen)

这可以改进大内存系统上的性能。

新功能新增max_worker_processes参数,以限制后台工作进程的数量

服务器 / 服务器设置

新增max_worker_processes参数,以限制后台工作进程的数量(Robert Haas)

这有助于把备库服务器配置为拥有所需数量的工作进程(与主库相同)。

新功能新增仅限超级用户的session_preload_libraries参数,用于在会话启动时加载库

服务器 / 服务器设置

新增仅限超级用户的session_preload_libraries参数,用于在会话启动时加载库(Peter Eisentraut)

与local_preload_libraries不同,此参数可以加载任何共享库,而不仅仅是 $libdir/plugins 目录中的库。

新功能新增wal_log_hints参数,用于启用提示位(hint-bit)变更的 WAL 日志

服务器 / 服务器设置

新增wal_log_hints参数,用于启用提示位(hint-bit)变更的 WAL 日志(Sawada Masahiko)

提示位变更通常不记录日志,启用了校验和时除外。这对 pg_rewind 等外部工具很有用。

新功能将work_mem和maintenance_work_mem的默认设置提高到原来的四倍

服务器 / 服务器设置

将work_mem和maintenance_work_mem的默认设置提高到原来的四倍(Bruce Momjian)

新的默认值分别为 4MB 和 64MB。

新功能将effective_cache_size的默认设置提高到 4GB

服务器 / 服务器设置

将effective_cache_size的默认设置提高到 4GB(Bruce Momjian、Tom Lane)

新功能允许在log_line_prefix中指定 printf 风格的空格填充

服务器 / 服务器设置

允许在log_line_prefix中指定 printf 风格的空格填充(David Rowley)

新功能允许在指定配置变量值时使用太字节单位(TB)

服务器 / 服务器设置

允许在指定配置变量值时使用太字节单位(TB)(Simon Riggs)

新功能在log_lock_waits日志消息中显示锁持有者和等待者的 PID,并改进关系相关信息

服务器 / 服务器设置

在log_lock_waits日志消息中显示锁持有者和等待者的 PID,并改进关系相关信息(Christian Kruse)

新功能降低加载共享库时的服务器日志级别

服务器 / 服务器设置

降低加载共享库时的服务器日志级别(Peter Geoghegan)

以前的级别是 LOG,对于按会话加载的库来说过于冗长。

新功能在 Windows 上,使 SQL_ASCII 编码的数据库和服务器进程(例如postmaster)以服务器 Windows 用户区域设置的字符编码发出消息

服务器 / 服务器设置

在 Windows 上,使 SQL_ASCII 编码的数据库和服务器进程(例如postmaster)以服务器 Windows 用户区域设置的字符编码发出消息(Alexander Law、Noah Misch)

此前这些消息以 Windows ANSI 代码页输出。

新功能新增复制槽,以协调流复制备库与其流来源节点的活动

复制与恢复

新增复制槽,以协调流复制备库与其流来源节点的活动(Andres Freund、Robert Haas)

复制槽允许在主库上保留 WAL 文件等资源,直到备库服务器不再需要它们。

新功能新增恢复参数recovery_min_apply_delay以延迟复制

复制与恢复

新增恢复参数recovery_min_apply_delay以延迟复制(Robert Haas, Fabrízio de Royes Mello、Simon Riggs)

延迟备库服务器上的重放对于从用户错误中恢复可能很有用。

新功能新增recovery_target选项 immediate,在达到一致状态后立即停止 WAL 恢复

复制与恢复

新增recovery_target选项 immediate,在达到一致状态后立即停止 WAL 恢复(MauMau、Heikki Linnakangas)

新功能改进恢复目标的处理

复制与恢复

改进恢复目标的处理(Heikki Linnakangas)

pg_last_xact_replay_timestamp() 报告的时间戳现在反映已提交的记录,而不是将要提交的事务。恢复到还原点现在会重放到还原点本身,而不是在还原点之前停止。

新功能pg_switch_xlog() 现在会清除旧 WAL 文件中所有未使用的尾部空间

复制与恢复

pg_switch_xlog() 现在会清除旧 WAL 文件中所有未使用的尾部空间(Heikki Linnakangas)

这提高了 WAL 文件的压缩率。

新功能报告外部恢复命令的失败返回码

复制与恢复

报告外部恢复命令的失败返回码(Peter Eisentraut)

新功能减少 WAL 重放期间的自旋锁争用

复制与恢复

减少 WAL 重放期间的自旋锁争用(Heikki Linnakangas)

新功能更频繁地写入运行中事务的 WAL 记录

复制与恢复

更频繁地写入运行中事务的 WAL 记录(Andres Freund)

这使备库服务器能够更快启动并更积极地清理资源。

新功能新增对 WAL 数据逻辑解码的支持,允许以可自定义的格式流出数据库变更

复制与恢复 / 逻辑解码

新增对 WAL 数据逻辑解码的支持,允许以可自定义的格式流出数据库变更(Andres Freund)

新功能新增wal_level设置 logical,用于在 WAL 中启用逻辑变更集编码

复制与恢复 / 逻辑解码

新增wal_level设置 logical,用于在 WAL 中启用逻辑变更集编码(Andres Freund)

新功能新增表级参数REPLICA IDENTITY,用于控制逻辑复制

复制与恢复 / 逻辑解码

新增表级参数REPLICA IDENTITY,用于控制逻辑复制(Andres Freund)

新功能新增关系选项user_catalog_table,用于标识参与逻辑变更集编码的用户创建表

复制与恢复 / 逻辑解码

新增关系选项user_catalog_table,用于标识参与逻辑变更集编码的用户创建表(Andres Freund)

新功能新增pg_recvlogical应用程序,用于接收逻辑解码数据

复制与恢复 / 逻辑解码

新增pg_recvlogical应用程序,用于接收逻辑解码数据(Andres Freund)

新功能新增test_decoding模块,用于在 SQL 层面演示逻辑解码

复制与恢复 / 逻辑解码

新增test_decoding模块,用于在 SQL 层面演示逻辑解码(Andres Freund)

新功能新增 WITH ORDINALITY 语法,为 FROM 子句中集合返回函数返回的行编号

查询

新增 WITH ORDINALITY 语法,为 FROM 子句中集合返回函数返回的行编号(Andrew Gierth、David Fetter)

这对 unnest() 之类的函数特别有用。

新功能新增 ROWS FROM() 语法,允许在 FROM 子句中对集合返回函数进行水平串联

查询

新增 ROWS FROM() 语法,允许在 FROM 子句中对集合返回函数进行水平串联(Andrew Gierth)

新功能允许SELECT拥有空目标列表

查询

允许SELECT拥有空目标列表(Tom Lane)

增加此功能是为了使从零列表中选择的视图能够被正确转储和还原。

新功能确保 SELECT ... FOR UPDATE NOWAIT 在涉及已被并发更新元组的极端情况下不会等待

查询

确保 SELECT ... FOR UPDATE NOWAIT 在涉及已被并发更新元组的极端情况下不会等待(Craig Ringer and Thomas Munro)

新功能新增 DISCARD SEQUENCES 命令,用于丢弃缓存的序列相关状态

工具命令

新增 DISCARD SEQUENCES 命令,用于丢弃缓存的序列相关状态(Fabrízio de Royes Mello、Robert Haas)

DISCARD ALL 现在也会丢弃此类信息。

新功能为 COPY FROM 新增 FORCE NULL 选项,在 CSV 模式下使与指定空串匹配的带引号字符串转换为 NULL

工具命令

为 COPY FROM 新增 FORCE NULL 选项,在 CSV 模式下使与指定空串匹配的带引号字符串转换为 NULL(Ian Barwick、Michael Paquier)

若不使用此选项,则只有不带引号的匹配字符串才会被导入为空值。

新功能对在事务块之外使用且不可能生效的命令发出警告

工具命令

对在事务块之外使用且不可能生效的命令发出警告(Bruce Momjian)

当 SET LOCAL、SET CONSTRAINTS、SET TRANSACTION 和 ABORT 在事务块之外使用时会发出新的警告。

新功能使 EXPLAIN ANALYZE 显示规划时间

工具命令 / EXPLAIN

使 EXPLAIN ANALYZE 显示规划时间(Andreas Karlsson)

新功能使 EXPLAIN 显示 Agg 和 Group 节点中的分组列

工具命令 / EXPLAIN

使 EXPLAIN 显示 Agg 和 Group 节点中的分组列(Tom Lane)

新功能使 EXPLAIN ANALYZE 显示位图堆扫描中的精确和有损块计数

工具命令 / EXPLAIN

使 EXPLAIN ANALYZE 显示位图堆扫描中的精确和有损块计数(Etsuro Fujita)

新功能允许刷新物化视图而不阻塞其他会话在此期间读取该视图

工具命令 / 视图

允许刷新物化视图而不阻塞其他会话在此期间读取该视图(Kevin Grittner)

这通过 REFRESH MATERIALIZED VIEW CONCURRENTLY 完成。

新功能允许视图被自动更新,即使它们包含一些不可更新的列

工具命令 / 视图

允许视图被自动更新,即使它们包含一些不可更新的列(Dean Rasheed)

此前,存在表达式、字面量和函数调用等不可更新输出列会阻止自动更新。现在支持 INSERT、UPDATE 和 DELETE,只要它们不试图为任何不可更新列赋新值。

新功能允许控制 INSERT 和 UPDATE 能否向自动可更新视图中添加不会出现在该视图中的行

工具命令 / 视图

允许控制 INSERT 和 UPDATE 能否向自动可更新视图中添加不会出现在该视图中的行(Dean Rasheed)

这通过新的CREATE VIEW子句 WITH CHECK OPTION 控制。

新功能允许安全屏障视图被自动更新

工具命令 / 视图

允许安全屏障视图被自动更新(Dean Rasheed)

新功能支持在外部表上使用触发器

对象操作

支持在外部表上使用触发器(Ronan Dunklau)

新功能允许使用ALTER TABLE、ALTER INDEX或ALTER MATERIALIZED VIEW的 ALL IN TABLESPACE ... SET TABLESPACE 形式把成组对象从一个表空间移动到另一个表空间

对象操作

允许使用ALTER TABLE、ALTER INDEX或ALTER MATERIALIZED VIEW的 ALL IN TABLESPACE ... SET TABLESPACE 形式把成组对象从一个表空间移动到另一个表空间(Stephen Frost)

新功能允许通过ALTER TABLE ... ALTER CONSTRAINT 更改外键约束的可延迟性

对象操作

允许通过ALTER TABLE ... ALTER CONSTRAINT 更改外键约束的可延迟性(Simon Riggs)

新功能降低某些ALTER TABLE命令的锁强度

对象操作

降低某些ALTER TABLE命令的锁强度(Simon Riggs、Noah Misch、Robert Haas)

具体而言,VALIDATE CONSTRAINT、CLUSTER ON、SET WITHOUT CLUSTER、ALTER COLUMN SET STATISTICS、ALTER COLUMN SET (attribute_option)、ALTER COLUMN RESET (attribute_option) 不再需要 ACCESS EXCLUSIVE 锁。

新功能允许在CREATE TABLESPACE中设置表空间选项

对象操作

允许在CREATE TABLESPACE中设置表空间选项(Vik Fearing)

以前这些选项只能通过ALTER TABLESPACE设置。

新功能允许CREATE AGGREGATE定义聚集转换状态数据的估计大小

对象操作

允许CREATE AGGREGATE定义聚集转换状态数据的估计大小(Hadi Moshayedi)

恰当使用此功能可使规划器更好地估计聚集将使用多少内存。

BUG 修复修复 DROP IF EXISTS,使其在更多情况下避免对不存在对象报错

对象操作

修复 DROP IF EXISTS,使其在更多情况下避免对不存在对象报错(Pavel Stehule、Dean Rasheed)

新功能改进系统关系的标识方式

对象操作

改进系统关系的标识方式(Andres Freund、Robert Haas)

此前,一旦关系被移入 pg_catalog 模式,就不能再修改或删除。

新功能完整实现 line 数据类型

数据类型

完整实现 line 数据类型(Peter Eisentraut)

线段数据类型(lseg)一直得到完整支持。以前的 line 数据类型(只能通过编译时选项启用)与新实现在二进制和转储格式上不兼容。

新功能新增 pg_lsn 数据类型,用于表示 WAL 日志序列号(LSN)

数据类型

新增 pg_lsn 数据类型,用于表示 WAL 日志序列号(LSN)(Robert Haas、Michael Paquier)

新功能允许把单点polygon转换为circle

数据类型

允许把单点polygon转换为circle(Bruce Momjian)

新功能支持随时间改变 UTC 偏移的时区缩写

数据类型

支持随时间改变 UTC 偏移的时区缩写(Tom Lane)

此前,PostgreSQL 假定时区缩写(如 EST)关联的 UTC 偏移在任何特定区域设置的用法中永不改变。然而这一假设在现实世界中并不成立,因此引入了让区域缩写表示有时会变化的 UTC 偏移的能力。更新了时区缩写定义文件,在自 1970 年以来缩写的 UTC 偏移发生过变化的时区区域设置中使用此功能(依据 IANA 时区数据库)。在此类时区中,PostgreSQL 现在会根据给定日期为缩写关联正确的 UTC 偏移。

新功能在适当情况下,允许非 ISO 的 timestamp 和 date 字符串使用五位及以上年份

数据类型

在适当情况下,允许非 ISO 的 timestamp 和 date 字符串使用五位及以上年份(Bruce Momjian)

新功能新增对 interval 值上溢/下溢的检查

数据类型

新增对 interval 值上溢/下溢的检查(Bruce Momjian)

新功能新增 jsonb,一种存储 JSON 数据的功能更强、效率更高的数据类型

数据类型 / JSON

新增 jsonb,一种存储 JSON 数据的功能更强、效率更高的数据类型(Oleg Bartunov、Teodor Sigaev、Alexander Korotkov、Peter Geoghegan、Andrew Dunstan)

这种新类型允许更快地访问 JSON 文档中的值,以及对 JSON 列更快、更有用的索引。jsonb 文档中的标量值以适当的标量 SQL 类型存储,JSON 文档结构经过预解析,而不是像原来的 json 数据类型那样以文本形式存储。

新功能新增 JSON 函数以允许构造任意复杂的 JSON 树

数据类型 / JSON

新增 JSON 函数以允许构造任意复杂的 JSON 树(Andrew Dunstan、Laurence Rowe)

新函数包括 json_array_elements_text()、json_build_array()、json_object()、json_object_agg()、json_to_record() 和 json_to_recordset()。

新功能新增 json_typeof(),返回 json 值的数据类型

数据类型 / JSON

新增 json_typeof(),返回 json 值的数据类型(Andrew Tipton)

新功能新增 pg_sleep_for(interval) 和 pg_sleep_until(timestamp),以更灵活地指定延迟

函数

新增 pg_sleep_for(interval) 和 pg_sleep_until(timestamp),以更灵活地指定延迟(Vik Fearing、Julien Rouhaud)

现有的 pg_sleep() 函数只支持以秒为单位指定延迟。

新功能新增面向数组的 cardinality() 函数

函数

新增面向数组的 cardinality() 函数(Marko Tiikkaja)

它返回数组中元素的总数,对于没有元素的数组则返回零。

新功能新增 SQL 函数,允许在任意偏移处进行大对象读写

函数

新增 SQL 函数,允许在任意偏移处进行大对象读写(Pavel Stehule)

新功能允许 unnest() 接受多个参数,各参数分别展开后再水平串联

函数

允许 unnest() 接受多个参数,各参数分别展开后再水平串联(Andrew Gierth)

新功能新增从各个单独的值(而非字符串)构造 time、date、timestamp、timestamptz 和 interval 的函数

函数

新增从各个单独的值(而非字符串)构造 time、date、timestamp、timestamptz 和 interval 的函数(Pavel Stehule)

这些函数的名称以 make_ 为前缀,例如 make_date()。

新功能使 to_char() 的 TZ 格式说明符对简单的数字时区偏移返回有用的值

函数

使 to_char() 的 TZ 格式说明符对简单的数字时区偏移返回有用的值(Tom Lane)

此前,如果 timezone 被设置为类似 -4 的常量,to_char(CURRENT_TIMESTAMP, 'TZ') 会返回空字符串。

新功能为 to_char() 新增时区偏移格式说明符 OF

函数

为 to_char() 新增时区偏移格式说明符 OF(Bruce Momjian)

新功能改进 random() 所用的随机种子

函数

改进 random() 所用的随机种子(Honza Horak)

新功能收紧 chr(int) 中对 Unicode 码点的有效性检查

函数

收紧 chr(int) 中对 Unicode 码点的有效性检查(Tom Lane)

此函数现在只接受按照 RFC 3629 是有效 UTF8 字符的值。

新功能新增在 pg_class、pg_proc、pg_type 和 pg_operator 中查找对象的函数,它们不会对不存在的对象产生错误

函数 / 系统信息函数

新增在 pg_class、pg_proc、pg_type 和 pg_operator 中查找对象的函数,它们不会对不存在的对象产生错误(Yugo Nagata、Nozomi Anzai、Robert Haas)

例如,to_regclass() 类似于 regclass 输入函数在 pg_class 中进行查找,但对不存在的对象返回 NULL 而不是失败。

新功能新增函数 pg_filenode_relation(),允许更高效地从文件节点查找关系名

函数 / 系统信息函数

新增函数 pg_filenode_relation(),允许更高效地从文件节点查找关系名(Andres Freund)

新功能为 information_schema.parameters 视图新增 parameter_default 列

函数 / 系统信息函数

为 information_schema.parameters 视图新增 parameter_default 列(Peter Eisentraut)

新功能使 information_schema.schemata 显示所有可访问的模式

函数 / 系统信息函数

使 information_schema.schemata 显示所有可访问的模式(Peter Eisentraut)

此前它只显示当前用户拥有的模式。

新功能通过 FILTER 子句控制哪些行被传递给聚集函数

函数 / 聚合

通过 FILTER 子句控制哪些行被传递给聚集函数(David Fetter)

新功能支持有序集(WITHIN GROUP)聚集

函数 / 聚合

支持有序集(WITHIN GROUP)聚集(Atri Sharma、Andrew Gierth、Tom Lane)

新功能新增标准有序集聚集 percentile_cont()、percentile_disc()、mode()、rank()、dense_rank()、percent_rank() 和 cume_dist()

函数 / 聚合

新增标准有序集聚集 percentile_cont()、percentile_disc()、mode()、rank()、dense_rank()、percent_rank() 和 cume_dist()(Atri Sharma、Andrew Gierth)

新功能支持 VARIADIC 聚集函数

函数 / 聚合

支持 VARIADIC 聚集函数(Tom Lane)

新功能允许多态聚集具有非多态的状态数据类型

函数 / 聚合

允许多态聚集具有非多态的状态数据类型(Tom Lane)

这使得可以在 SQL 中正确声明诸如内置聚集 array_agg() 之类的聚集。

新功能为 PL/Perl 和 PL/Tcl 新增事件触发器支持

服务器端语言

为 PL/Perl 和 PL/Tcl 新增事件触发器支持(Dimitri Fontaine)

新功能在 PL/Python 中把 numeric 值转换为 decimal

服务器端语言

在 PL/Python 中把 numeric 值转换为 decimal(Szymon Guz、Ronan Dunklau)

此前此类值被转换为 Python 的 float 值,有损失精度的风险。

新功能新增使用 GET DIAGNOSTICS 获取当前 PL/pgSQL 调用栈的能力

服务器端语言 / PL/pgSQL Server-Side Language

新增使用 GET DIAGNOSTICS 获取当前 PL/pgSQL 调用栈的能力(Pavel Stehule、Stephen Frost)

新功能新增选项 print_strict_params,用于显示传递给违反 STRICT 约束的查询的参数

服务器端语言 / PL/pgSQL Server-Side Language

新增选项 print_strict_params,用于显示传递给违反 STRICT 约束的查询的参数(Marko Tiikkaja)

新功能新增变量 plpgsql.extra_warnings 和 plpgsql.extra_errors,用于启用额外的 PL/pgSQL 警告和错误

服务器端语言 / PL/pgSQL Server-Side Language

新增变量 plpgsql.extra_warnings 和 plpgsql.extra_errors,用于启用额外的 PL/pgSQL 警告和错误(Marko Tiikkaja、Petr Jelinek)

目前只有关于被遮蔽变量的警告/错误可用。

新功能使 libpq 的 PQconndefaults() 函数忽略无效的服务文件

libpq

使 libpq 的 PQconndefaults() 函数忽略无效的服务文件(Steve Singer、Bruce Momjian)

此前它遇到不正确的服务文件时会返回 NULL。

新功能libpq 接受 TLSv1 之外的 TLS 协议版本

libpq

libpq 接受 TLSv1 之外的 TLS 协议版本(Marko Kreen)

新功能为createuser新增选项 -g,用于指定角色成员关系

客户端应用程序

为createuser新增选项 -g,用于指定角色成员关系(Christopher Browne)

新功能为vacuumdb新增选项 --analyze-in-stages,按粒度递增的分阶段方式进行分析

客户端应用程序

为vacuumdb新增选项 --analyze-in-stages,按粒度递增的分阶段方式进行分析(Peter Eisentraut)

这允许快速创建最基本的统计信息。

新功能使带选项 -n 的pg_resetxlog输出当前值和可能被更改的值

客户端应用程序

使带选项 -n 的pg_resetxlog输出当前值和可能被更改的值(Rajeev Rastogi)

新功能使initdb对不正确的区域设置抛出错误,而不是静默回退到默认选择

客户端应用程序

使initdb对不正确的区域设置抛出错误,而不是静默回退到默认选择(Tom Lane)

新功能使pg_ctl在数据目录不可访问时返回退出码 4

客户端应用程序

使pg_ctl在数据目录不可访问时返回退出码 4(Amit Kapila、Bruce Momjian)

这一行为更符合 Linux 标准库(LSB)核心规范。

新功能在 Windows 上,确保非绝对路径的 -D 规范相对于pg_ctl的当前目录解释

客户端应用程序

在 Windows 上,确保非绝对路径的 -D 规范相对于pg_ctl的当前目录解释(Kumar Rajeev Rastogi)

此前它会相对于底层 Windows 服务启动时所在的目录解释。

新功能允许在 ECPG 的 C 数组定义中使用 sizeof()

客户端应用程序

允许在 ECPG 的 C 数组定义中使用 sizeof()(Michael Meskes)

新功能使 ECPG 正确处理 C 文本和 SQL 文本中 C 风格注释的嵌套

客户端应用程序

使 ECPG 正确处理 C 文本和 SQL 文本中 C 风格注释的嵌套(Michael Meskes)

新功能在禁用页脚时,抑制 psql expanded 模式下的 “No rows” 输出

客户端应用程序 / psql

在禁用页脚时,抑制 psql expanded 模式下的 “No rows” 输出(Bruce Momjian)

新功能允许用 Control-C 中止在连接启动时挂起的 psql

客户端应用程序 / psql

允许用 Control-C 中止在连接启动时挂起的 psql(Peter Eisentraut)

新功能使 psql 的 \db+ 显示表空间选项

客户端应用程序 / psql / 反斜线命令

使 psql 的 \db+ 显示表空间选项(Magnus Hagander)

新功能使 \do+ 显示实现操作符的函数

客户端应用程序 / psql / 反斜线命令

使 \do+ 显示实现操作符的函数(Marko Tiikkaja)

新功能使 \d+ 只在表中存在 oid 列时才输出 OID 行

客户端应用程序 / psql / 反斜线命令

使 \d+ 只在表中存在 oid 列时才输出 OID 行(Bruce Momjian)

此前,oid 列的存在与否总是会被报告。

新功能使 \d 显示被禁用的系统触发器

客户端应用程序 / psql / 反斜线命令

使 \d 显示被禁用的系统触发器(Bruce Momjian)

此前,如果禁用所有触发器,只有用户触发器会显示为已禁用。

BUG 修复修复 \copy,不再要求 stdin 与分号之间有空格

客户端应用程序 / psql / 反斜线命令

修复 \copy,不再要求 stdin 与分号之间有空格(Etsuro Fujita)

新功能在 \copy 结束时输出行数,就像 COPY 已经做的那样

客户端应用程序 / psql / 反斜线命令

在 \copy 结束时输出行数,就像 COPY 已经做的那样(Kumar Rajeev Rastogi)

BUG 修复修复 \conninfo,使其对使用 hostaddr 的连接显示服务器的 IP 地址

客户端应用程序 / psql / 反斜线命令

修复 \conninfo,使其对使用 hostaddr 的连接显示服务器的 IP 地址(Fujii Masao)

此前在这些情况下 \conninfo 无法显示服务器的 IP 地址。

新功能在 \conninfo 中显示 SSL 协议版本

客户端应用程序 / psql / 反斜线命令

在 \conninfo 中显示 SSL 协议版本(Marko Kreen)

新功能为 \pset 新增 Tab 补全

客户端应用程序 / psql / 反斜线命令

为 \pset 新增 Tab 补全(Pavel Stehule)

新功能允许不带参数的 \pset 显示所有设置

客户端应用程序 / psql / 反斜线命令

允许不带参数的 \pset 显示所有设置(Gilles Darold)

新功能使 \s 显示其写入的历史文件名时不转换为绝对路径

客户端应用程序 / psql / 反斜线命令

使 \s 显示其写入的历史文件名时不转换为绝对路径(Tom Lane)

以前的代码试图把相对文件名转换为绝对路径用于显示,但经常出错。

新功能允许pg_restore的选项 -I、-P、-T 和 -n 被多次指定

客户端应用程序 / pg_dump

允许pg_restore的选项 -I、-P、-T 和 -n 被多次指定(Heikki Linnakangas)

这允许在一次操作中还原多个对象。

新功能可选地为还原期间删除旧对象时发出的 DROP 命令添加 IF EXISTS 子句

客户端应用程序 / pg_dump

可选地为还原期间删除旧对象时发出的 DROP 命令添加 IF EXISTS 子句(Pavel Stehule)

此变更避免在删除旧对象时出现不必要的错误。pg_dump、pg_dumpall和pg_restore的新选项 --if-exists 只有在同时指定了 --clean 时才可用。

新功能新增 pg_basebackup 选项 --xlogdir,用于指定 pg_xlog 目录的位置

客户端应用程序 / pg_basebackup

新增 pg_basebackup 选项 --xlogdir,用于指定 pg_xlog 目录的位置(Haribabu Kommi)

新功能允许 pg_basebackup 在备份副本中重定位表空间

客户端应用程序 / pg_basebackup

允许 pg_basebackup 在备份副本中重定位表空间(Steeve Lennmark)

这对于在与主库相同的机器上使用 pg_basebackup 特别有用。

新功能允许对网络流基础备份进行限速

客户端应用程序 / pg_basebackup

允许对网络流基础备份进行限速(Antonin Houska)

这可以通过 pg_basebackup 的 --max-rate 参数控制。

新功能改进元组冻结方式以保留取证信息

源代码

改进元组冻结方式以保留取证信息(Robert Haas、Andres Freund)

此变更消除了尽快冻结元组的主要障碍。检查元组标志位的代码将需要修改。

新功能不再要求为标记有 PG_FUNCTION_INFO_V1 宏的函数编写函数原型

源代码

不再要求为标记有 PG_FUNCTION_INFO_V1 宏的函数编写函数原型(Peter Eisentraut)

此变更消除了编写样板原型的需要。注意,PG_FUNCTION_INFO_V1 宏必须出现在相应函数定义之前,以避免编译器警告。

新功能移除 SnapshotNow 和 HeapTupleSatisfiesNow()

源代码

移除 SnapshotNow 和 HeapTupleSatisfiesNow()(Robert Haas)

所有现有用法都已切换到更合适的快照类型。目录扫描现在使用 MVCC 快照。

新功能新增允许超过 1GB 内存分配的 API

源代码

新增允许超过 1GB 内存分配的 API(Noah Misch)

新功能新增 psprintf() 以简化字符串组合期间的内存分配

源代码

新增 psprintf() 以简化字符串组合期间的内存分配(Peter Eisentraut、Tom Lane)

新功能支持 printf() 尺寸修饰符 z 以打印 size_t 值

源代码

支持 printf() 尺寸修饰符 z 以打印 size_t 值(Andres Freund)

新功能更改 appendStringInfoVA() 的 API 以更好地使用 vsnprintf()

源代码

更改 appendStringInfoVA() 的 API 以更好地使用 vsnprintf()(David Rowley、Tom Lane)

新功能允许创建新类型的外部 TOAST 数据

源代码

允许创建新类型的外部 TOAST 数据(Andres Freund)

新功能新增单读者、单写者的轻量级共享消息队列

源代码

新增单读者、单写者的轻量级共享消息队列(Robert Haas)

新功能提高 x86_64 CPU 上的自旋锁速度

源代码

提高 x86_64 CPU 上的自旋锁速度(Heikki Linnakangas)

新功能移除对不再支持的平台 SINIX、Sun3 和 NS32K 的自旋锁支持

源代码

移除对不再支持的平台 SINIX、Sun3 和 NS32K 的自旋锁支持(Robert Haas)

新功能移除 IRIX 移植

源代码

移除 IRIX 移植(Robert Haas)

新功能减少 --disable-spinlocks 构建所需的信号量数量

源代码

减少 --disable-spinlocks 构建所需的信号量数量(Robert Haas)

新功能用 Perl 重写 duplicate_oids Unix shell 脚本

源代码

用 Perl 重写 duplicate_oids Unix shell 脚本(Andrew Dunstan)

新功能为客户端程序新增测试任何协议(TAP)测试

源代码

为客户端程序新增测试任何协议(TAP)测试(Peter Eisentraut)

目前,只有当向 configure 给定了 --enable-tap-tests 选项时,make check-world 才会运行这些测试。在未来的某个发行版中,这可能会成为默认行为。

新功能新增 make 目标 check-tests 和 installcheck-tests,允许选择要运行的个别测试

源代码

新增 make 目标 check-tests 和 installcheck-tests,允许选择要运行的个别测试(Andrew Dunstan)

新功能移除 maintainer-check makefile 规则

源代码

移除 maintainer-check makefile 规则(Peter Eisentraut)

默认构建规则现在包含所有以前可选的测试。

新功能改进 PGXS 模块的 VPATH 构建支持

源代码

改进 PGXS 模块的 VPATH 构建支持(Cédric Villemain、Andrew Dunstan、Peter Eisentraut)

新功能升级到 Autoconf 2.69

源代码

升级到 Autoconf 2.69(Peter Eisentraut)

新功能新增一个 configure 标志,用于向 PG_VERSION 字符串追加自定义文本

源代码

新增一个 configure 标志,用于向 PG_VERSION 字符串追加自定义文本(Oskari Saarenmaa)

这对于构建自定义二进制文件的打包者很有用。

新功能改进 DocBook XML 有效性

源代码

改进 DocBook XML 有效性(Peter Eisentraut)

BUG 修复修复 Coverity 扫描器报告的各种轻微安全和健全性问题

源代码

修复 Coverity 扫描器报告的各种轻微安全和健全性问题(Stephen Frost)

新功能改进用 Valgrind 测试 PostgreSQL 时对无效内存使用的检测

源代码

改进用 Valgrind 测试 PostgreSQL 时对无效内存使用的检测(Noah Misch)

新功能改进 Emacs 示例配置文件 emacs.samples

源代码

改进 Emacs 示例配置文件 emacs.samples(Peter Eisentraut)

还向源代码树顶层添加了 .dir-locals.el。

新功能允许 pgindent 接受命令行形式的 typedef 列表

源代码

允许 pgindent 接受命令行形式的 typedef 列表(Bruce Momjian)

新功能使 pgindent 更智能地处理预处理器条件语句周围的空行

源代码

使 pgindent 更智能地处理预处理器条件语句周围的空行(Bruce Momjian)

新功能避免在 Cygwin 和 Mingw 构建中大多数对 dlltool 的使用

源代码

避免在 Cygwin 和 Mingw 构建中大多数对 dlltool 的使用(Marco Atzeri、Hiroshi Inoue)

新功能支持在 MSVC(Windows)构建中进行仅客户端安装

源代码

支持在 MSVC(Windows)构建中进行仅客户端安装(MauMau)

新功能新增pg_prewarm扩展,用于在服务器启动时把关系数据预加载到共享缓冲区缓存中

附加模块

新增pg_prewarm扩展,用于在服务器启动时把关系数据预加载到共享缓冲区缓存中(Robert Haas)

这使系统能更快达到完全运行性能。

新功能为pgcrypto新增 UUID 随机数生成器 gen_random_uuid()

附加模块

为pgcrypto新增 UUID 随机数生成器 gen_random_uuid()(Oskari Saarenmaa)

这允许创建版本 4 的 UUID,而无需安装uuid-ossp。

新功能允许uuid-ossp使用 BSD 或 e2fsprogs UUID 库工作,而不仅仅是 OSSP UUID 库

附加模块

允许uuid-ossp使用 BSD 或 e2fsprogs UUID 库工作,而不仅仅是 OSSP UUID 库(Matteo Beccati)

这改进了 uuid-ossp 模块的可移植性,因为它不再必须依赖日益过时的 OSSP 库。该模块的名称现在已名不副实,但我们不会更改它。

新功能为auto_explain新增包含触发器执行时间的选项

附加模块

为auto_explain新增包含触发器执行时间的选项(Horiguchi Kyotaro)

BUG 修复修复pgstattuple,使其不把来自未提交事务的行报告为死行

附加模块

修复pgstattuple,使其不把来自未提交事务的行报告为死行(Robert Haas)

新功能使pgstattuple函数使用 regclass 类型的参数

附加模块

使pgstattuple函数使用 regclass 类型的参数(Satoshi Nagayasu)

虽然 text 类型的参数仍受支持,但它们可能在未来某个主版本中被移除。

新功能改进pgrowlocks输出的一致性,使其更一致地遵循快照规则

附加模块

改进pgrowlocks输出的一致性,使其更一致地遵循快照规则(Robert Haas)

新功能改进pg_trgm在索引正则表达式搜索中对三元组的选取

附加模块

改进pg_trgm在索引正则表达式搜索中对三元组的选取(Alexander Korotkov)

此变更不鼓励使用包含空白的三元组,它们通常选择性较低。

新功能允许pg_xlogdump使用 --follow 报告实时日志流

附加模块

允许pg_xlogdump使用 --follow 报告实时日志流(Heikki Linnakangas)

新功能更紧凑地存储cube数据

附加模块

更紧凑地存储cube数据(Stas Kelvich)

现有数据必须经过转储/还原才能使用新格式。旧格式仍可读取。

新功能通过使用游标减少vacuumlo的客户端内存用量

附加模块

通过使用游标减少vacuumlo的客户端内存用量(Andrew Dunstan)

新功能大幅减少pg_upgrade的内存消耗

附加模块

大幅减少pg_upgrade的内存消耗(Bruce Momjian)

新功能把pg_upgrade的用户名(-U)选项传递给生成的分析脚本

附加模块

把pg_upgrade的用户名(-U)选项传递给生成的分析脚本(Bruce Momjian)

新功能移除 pgbench 脚本的行长限制

附加模块 / pgbench

移除 pgbench 脚本的行长限制(Sawada Masahiko)

以前的行限制为 BUFSIZ。

新功能为 pgbench 新增长选项名

附加模块 / pgbench

为 pgbench 新增长选项名(Fabien Coelho)

新功能新增 pgbench 选项 --rate,用于控制事务速率

附加模块 / pgbench

新增 pgbench 选项 --rate,用于控制事务速率(Fabien Coelho)

新功能新增 pgbench 选项 --progress,用于打印周期性进度报告

附加模块 / pgbench

新增 pgbench 选项 --progress,用于打印周期性进度报告(Fabien Coelho)

新功能使 pg_stat_statements 使用文件而非共享内存来存储查询文本

附加模块 / pg_stat_statements

使 pg_stat_statements 使用文件而非共享内存来存储查询文本(Peter Geoghegan)

这消除了以前对查询文本长度的限制,并允许默认跟踪更多数量的唯一语句。

新功能允许报告 pg_stat_statements 的内部查询哈希标识符

附加模块 / pg_stat_statements

允许报告 pg_stat_statements 的内部查询哈希标识符(Daniel Farina、Sameer Thakur、Peter Geoghegan)

新功能新增获取除查询文本之外的所有 pg_stat_statements 信息的能力

附加模块 / pg_stat_statements

新增获取除查询文本之外的所有 pg_stat_statements 信息的能力(Peter Geoghegan)

这使监控工具可以只为刚创建的条目获取查询文本,从而改进重复查询统计信息时的性能。

新功能使 pg_stat_statements 忽略 DEALLOCATE 命令

附加模块 / pg_stat_statements

使 pg_stat_statements 忽略 DEALLOCATE 命令(Fabien Coelho)

它已经忽略 PREPARE 以及一般的规划时间,因此这样更一致。

新功能服务器关闭时把统计信息文件保存到 $PGDATA/pg_stat 而不是 $PGDATA/global

附加模块 / pg_stat_statements

服务器关闭时把统计信息文件保存到 $PGDATA/pg_stat 而不是 $PGDATA/global(Fujii Masao)

这份对比如何生成?

对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。

条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。

同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。

CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。

交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。