文档版本比较
POSTGRESQL · VERSION COMPARE
PostgreSQL 9.3.10 发布变化
此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。
包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。
从数据库输出识别起始版本
完整发布变化
9.3.10
2015-10-08
9.3.10stable支持截止 2018-11-08
安全变化
| CVE / 问题 | 严重程度 | 修复版本 | 所选版本状态 |
|---|---|---|---|
| CVE-2015-5289 防御json解析中的栈溢出 | 9.3.10 | 已记录修复 | |
| CVE-2015-5288 修复contrib/pgcrypto以检测并报告过短的crypt()盐值 | 9.3.10 | 已记录修复 |
PostgreSQL 9.3.10
迁移与兼容性
对于运行 9.3.X 的用户,不需要进行转储/恢复。
不过,如果你是从早于 9.3.9 的版本升级,请参见第 E.17 节。
安全防御json解析中的栈溢出
变更
防御json解析中的栈溢出(Oskari Saarenmaa)
如果应用程序从任意用户输入构造 PostgreSQL json或jsonb值,应用程序的用户就能可靠地使 PostgreSQL 服务器崩溃,造成短暂的服务拒绝。(CVE-2015-5289)
关联记录 (1)
安全修复contrib/pgcrypto以检测并报告过短的crypt()盐值
变更
修复contrib/pgcrypto以检测并报告过短的crypt()盐值(Josh Kupershmidt)
某些无效的盐值参数会导致服务器崩溃或泄露少量服务器内存字节。我们尚未排除通过安排让泄露字节中出现机密信息实施攻击的可行性,但这种攻击似乎不太可能。(CVE-2015-5288)
问题修复修复属于外部子事务的门户(游标)失败后的子事务清理问题
变更
修复属于外部子事务的门户(游标)失败后的子事务清理问题(Tom Lane、Michael Paquier)
在外部子事务游标中执行的函数可能因引用在内部子事务中创建的关系而导致断言失败或崩溃。
改进确保在更新语句期间正确锁定可更新视图引用的所有关系
问题修复修复关系插入关系缓存“init 文件”的问题
变更
修复关系插入关系缓存“init 文件”的问题(Tom Lane)
最近几个小版本中一个补丁的疏忽导致pg_trigger_tgrelid_tgname_index被遗漏在 init 文件之外。后续会话检测到这一点后认定 init 文件已损坏并静默忽略它,导致会话启动时间显著退化。除修复该缺陷外,还加入了一些防护,使未来任何类似错误更明显。
改进避免向 SPI 查询结果插入大量元组时的 O(N^2) 行为
变更
避免向 SPI 查询结果插入大量元组时的 O(N^2) 行为(Neil Conway)
改进改进存在大量未读通知时LISTEN的启动时间
变更
改进存在大量未读通知时LISTEN的启动时间(Matt Newell)
问题修复修复会话更改大量外键约束时的性能问题
变更
修复会话更改大量外键约束时的性能问题(Jan Wieck、Tom Lane)
这主要在还原拥有数千张表的数据库的pg_dump输出时出现。
关联记录 (1)
改进默认禁用 SSL 重新协商
变更
默认禁用 SSL 重新协商(Michael Paquier、Andres Freund)
虽然使用 SSL 重新协商在理论上是个好主意,但实践中我们看到了太多缺陷,无论是底层 OpenSSL 库中还是我们对它的使用中。重新协商将在 9.5 及更高版本中完全移除。在较旧的分支中,只是把ssl_renegotiation_limit的默认值改为零(禁用)。
改进降低*_freeze_max_age参数的最小值
变更
降低*_freeze_max_age参数的最小值(Andres Freund)
这主要是为了使相关行为的测试不那么耗时,但对磁盘空间有限的安装也可能有价值。
问题修复将wal_buffers的最大值限制为 2GB 以避免服务器崩溃
变更
将wal_buffers的最大值限制为 2GB 以避免服务器崩溃(Josh Berkus)
问题修复当只能在服务器启动时设置的参数在postgresql.conf中多次出现时,不再记录抱怨日志;并修复include_dir指令之后行号计数错误的问题
变更
当只能在服务器启动时设置的参数在postgresql.conf中多次出现时,不再记录抱怨日志;并修复include_dir指令之后行号计数错误的问题(Tom Lane)
问题修复修复numeric值相乘时罕见的内部溢出
变更
修复numeric值相乘时罕见的内部溢出(Dean Rasheed)
改进防御涉及记录类型、范围类型、json、jsonb、tsquery、ltxtquery和query_int的难以触发的栈溢出
变更
防御涉及记录类型、范围类型、json、jsonb、tsquery、ltxtquery和query_int的难以触发的栈溢出(Noah Misch)
关联记录 (4)
- 相同变化PostgreSQL 9.4.5 · 防范涉及记录类型、范围类型、json、jsonb、tsquery、ltxtquery 和 query_int 的难以触发的栈溢出
- 相同变化PostgreSQL 9.2.14 · 防御涉及记录类型、范围类型、json、jsonb、tsquery、ltxtquery和query_int的难以触发的栈溢出
- 相同变化PostgreSQL 9.1.19 · 防御涉及记录类型、范围类型、json、jsonb、tsquery、ltxtquery和query_int的难以触发的栈溢出
- 相同变化PostgreSQL 9.0.23 · 防御涉及记录类型、范围类型、json、jsonb、tsquery、ltxtquery和query_int的难以触发的栈溢出
问题修复修复日期时间输入中DOW和DOY的处理
变更
修复日期时间输入中DOW和DOY的处理(Greg Stark)
这些记号本不应在日期时间值中使用,但过去它们导致的是难懂的内部错误消息,而不是“无效的输入语法”。
改进在正则表达式匹配中增加更多查询取消检查
变更
在正则表达式匹配中增加更多查询取消检查(Tom Lane)
改进为正则表达式、SIMILAR TO和LIKE匹配增加递归深度保护
变更
为正则表达式、SIMILAR TO和LIKE匹配增加递归深度保护(Tom Lane)
合适的搜索模式加上较低的栈深度限制可能导致栈越界崩溃。
问题修复修复正则表达式执行中潜在的无限循环
变更
修复正则表达式执行中潜在的无限循环(Tom Lane)
一个表面上能匹配零长度字符串、但实际上因反向引用而不匹配的搜索模式可能导致无限循环。
改进在正则表达式执行中,即使匹配长度为零,也正确记录量词内捕获括号的匹配数据
变更
在正则表达式执行中,即使匹配长度为零,也正确记录量词内捕获括号的匹配数据(Tom Lane)
问题修复修复正则表达式编译中的内存不足失败
变更
修复正则表达式编译中的内存不足失败(Andreas Seltenreich)
问题修复修复正则表达式执行期间低概率的内存泄漏
变更
修复正则表达式执行期间低概率的内存泄漏(Tom Lane)
问题修复修复事务中止期间锁清理中罕见的内存不足失败
变更
修复事务中止期间锁清理中罕见的内存不足失败(Tom Lane)
问题修复修复在使用较小work_mem设置的元组存储时出现“排序期间意外的内存不足情况”错误的问题
变更
修复在使用较小work_mem设置的元组存储时出现“排序期间意外的内存不足情况”错误的问题(Tom Lane)
关联记录 (4)
- 相同变化PostgreSQL 9.4.5 · 修复使用较小 work_mem 设置的元组存储时出现的 “unexpected out-of-memory situation during sort” 错误
- 相同变化PostgreSQL 9.2.14 · 修复在使用较小work_mem设置的元组存储时出现“排序期间意外的内存不足情况”错误的问题
- 相同变化PostgreSQL 9.1.19 · 修复在使用较小work_mem设置的元组存储时出现“排序期间意外的内存不足情况”错误的问题
- 相同变化PostgreSQL 9.0.23 · 修复在使用较小work_mem设置的元组存储时出现“排序期间意外的内存不足情况”错误的问题
问题修复修复qsort中极低概率的栈越界
变更
修复qsort中极低概率的栈越界(Tom Lane)
问题修复修复在使用较大work_mem设置的哈希连接中出现“无效的内存分配请求大小”失败的问题
变更
修复在使用较大work_mem设置的哈希连接中出现“无效的内存分配请求大小”失败的问题(Tomas Vondra, Tom Lane)
问题修复修复若干规划器缺陷
变更
修复若干规划器缺陷(Tom Lane)
这些错误可能导致给出错误结果的错误查询计划、启用断言的构建中的断言失败,或奇怪的规划器错误,例如“could not devise a query plan for the given query”、“could not find pathkey item to sort”、“plan should not reference subplan's variable”或“failed to assign all NestLoopParams to plan nodes”。感谢 Andreas Seltenreich 和 Piotr Stefaniak 通过模糊测试暴露了这些问题。
性能改进规划器在大型继承集合上执行UPDATE/DELETE的性能
变更
改进规划器在大型继承集合上执行UPDATE/DELETE的性能(Tom Lane, Dean Rasheed)
改进确保在 postmaster 启动时移除备库提升触发文件
变更
确保在 postmaster 启动时移除备库提升触发文件(Michael Paquier、Fujii Masao)
这可以防止这些文件出现在用于初始化新备库服务器的数据库备份中时发生不需要的提升。
改进在 postmaster 关闭期间,确保在移除postmaster.pid文件之前移除各套接字的锁文件并关闭监听套接字
变更
在 postmaster 关闭期间,确保在移除postmaster.pid文件之前移除各套接字的锁文件并关闭监听套接字(Tom Lane)
这可以避免外部脚本在pg_ctl stop一返回就尝试启动新 postmaster 时出现竞争条件失败。
关联记录 (4)
- 相同变化PostgreSQL 9.4.5 · 在 postmaster 关闭期间,确保在移除postmaster.pid文件之前移除各套接字的锁文件并关闭监听套接字
- 相同变化PostgreSQL 9.2.14 · 在 postmaster 关闭期间,确保在移除postmaster.pid文件之前移除各套接字的锁文件并关闭监听套接字
- 相同变化PostgreSQL 9.1.19 · 在 postmaster 关闭期间,确保在移除postmaster.pid文件之前移除各套接字的锁文件并关闭监听套接字
- 相同变化PostgreSQL 9.0.23 · 在 postmaster 关闭期间,确保在移除postmaster.pid文件之前移除各套接字的锁文件并关闭监听套接字
问题修复修复 postmaster 对崩溃恢复期间启动进程崩溃的处理
变更
修复 postmaster 对崩溃恢复期间启动进程崩溃的处理(Tom Lane)
如果在崩溃恢复周期中,启动进程在尚未恢复数据库一致性时崩溃,我们会尝试启动一个新的启动进程,而这通常只会再次崩溃,导致无限循环。
改进使针对多事务 ID 回卷的紧急自动清理更加健壮
改进当我们尝试向某个自动清理工作进程发送信号而它已经消失时,不再打印WARNING,并降低此类信号的日志详细程度
变更
当我们尝试向某个自动清理工作进程发送信号而它已经消失时,不再打印WARNING,并降低此类信号的日志详细程度(Tom Lane)
关联记录 (4)
- 相同变化PostgreSQL 9.4.5 · 当我们试图向某个自动清理工作进程发送信号而它已经不在时,不再打印 WARNING,并降低此类信号的日志详细程度
- 相同变化PostgreSQL 9.2.14 · 当我们尝试向某个自动清理工作进程发送信号而它已经消失时,不再打印WARNING,并降低此类信号的日志详细程度
- 相同变化PostgreSQL 9.1.19 · 当我们尝试向某个自动清理工作进程发送信号而它已经消失时,不再打印WARNING,并降低此类信号的日志详细程度
- 相同变化PostgreSQL 9.0.23 · 当我们尝试向某个自动清理工作进程发送信号而它已经消失时,不再打印WARNING,并降低此类信号的日志详细程度
改进防止服务器时钟被大幅回拨时自动清理启动器睡眠时间过长
变更
防止服务器时钟被大幅回拨时自动清理启动器睡眠时间过长(Álvaro Herrera)
改进确保 GIN 索引待插入列表的清理可被取消请求中断
变更
确保 GIN 索引待插入列表的清理可被取消请求中断(Jeff Janes)
改进允许重用 GIN 索引中的全零页
变更
允许重用 GIN 索引中的全零页(Heikki Linnakangas)
崩溃之后可能遗留这样的页。
问题修复修复 SP-GiST 索引中对全零页的处理
变更
修复 SP-GiST 索引中对全零页的处理(Heikki Linnakangas)
VACUUM 曾试图回收此类页,但方式并非崩溃安全。
问题修复修复一个差一错误,该错误会导致 subtrans/multixact 截断中出现本可避免的“表面回卷”警告
变更
修复一个差一错误,该错误会导致 subtrans/multixact 截断中出现本可避免的“表面回卷”警告(Thomas Munro)
关联记录 (4)
- 相同变化PostgreSQL 9.4.5 · 修复一个差一错误,该错误导致子事务/多事务截断中出现关于 “apparent wraparound” 的原本无害的警告
- 相同变化PostgreSQL 9.2.14 · 修复一个差一错误,该错误会导致 subtrans/multixact 截断中出现本可避免的“表面回卷”警告
- 相同变化PostgreSQL 9.1.19 · 修复一个差一错误,该错误会导致 subtrans/multixact 截断中出现本可避免的“表面回卷”警告
- 相同变化PostgreSQL 9.0.23 · 修复一个差一错误,该错误会导致 subtrans/multixact 截断中出现本可避免的“表面回卷”警告
问题修复修复PL/pgSQL错误上下文消息中CONTINUE和MOVE语句类型误报的问题
变更
修复PL/pgSQL错误上下文消息中CONTINUE和MOVE语句类型误报的问题(Pavel Stehule, Tom Lane)
问题修复修复PL/Perl以正确处理非ASCII错误消息文本
变更
修复PL/Perl以正确处理非ASCII错误消息文本(Alex Hunsaker)
问题修复修复PL/Python在返回record结果的字符串表示时崩溃的问题
变更
修复PL/Python在返回record结果的字符串表示时崩溃的问题(Tom Lane)
问题修复修复PL/Tcl中一些未检查malloc()调用失败的位置
变更
修复PL/Tcl中一些未检查malloc()调用失败的位置(Michael Paquier, Álvaro Herrera)
问题修复在 contrib/isn 中,修复以 979 开头的 ISBN-13 号码的输出
变更
在 contrib/isn 中,修复以 979 开头的 ISBN-13 号码的输出(Fabien Coelho)
以 979(但不以 9790)开头的 EAN 被视为 ISBN,但它们必须以新的 13 位格式而非 10 位格式打印。
改进改进 contrib/postgres_fdw 对排序规则相关决策的处理
变更
改进 contrib/postgres_fdw 对排序规则相关决策的处理(Tom Lane)
预期主要的用户可见效果是:涉及 varchar 列的比较将比以前在更多情况下被发送到远程服务器执行。
改进改进libpq对内存耗尽情况的处理
变更
改进libpq对内存耗尽情况的处理(Michael Paquier, Heikki Linnakangas)
问题修复修复ecpg中的内存泄漏和缺失的内存不足检查
变更
修复ecpg中的内存泄漏和缺失的内存不足检查(Michael Paquier)
问题修复修复 psql 中对数字输出的区域感知格式化代码
变更
修复 psql 中对数字输出的区域感知格式化代码(Tom Lane)
\pset numericlocale on 所调用的格式化代码在一些不常见的情况下会出错,例如带指数但没有小数点的数字。它还可能破坏 money 数据类型已经区域化的输出。
问题修复防止在没有当前连接时psql的\c命令崩溃
变更
防止在没有当前连接时psql的\c命令崩溃(Noah Misch)
改进使pg_dump正确处理继承的NOT VALID检查约束
变更
使pg_dump正确处理继承的NOT VALID检查约束(Tom Lane)
问题修复修复pg_dump目录输出格式中默认zlib压缩级别的选择问题
变更
修复pg_dump目录输出格式中默认zlib压缩级别的选择问题(Andrew Dunstan)
改进确保pg_dump以tar格式输出运行期间创建的临时文件不被全局可读
变更
确保pg_dump以tar格式输出运行期间创建的临时文件不被全局可读(Michael Paquier)
问题修复修复pg_dump和pg_upgrade以支持postgres或template1数据库位于非默认表空间的情况
变更
修复pg_dump和pg_upgrade以支持postgres或template1数据库位于非默认表空间的情况(Marti Raudsepp, Bruce Momjian)
关联记录 (4)
- 相同变化PostgreSQL 9.4.5 · 修复 pg_dump 和 pg_upgrade,以支持 postgres 或 template1 数据库位于非默认表空间的情况
- 相同变化PostgreSQL 9.2.14 · 修复pg_dump和pg_upgrade以支持postgres或template1数据库位于非默认表空间的情况
- 相同变化PostgreSQL 9.1.19 · 修复pg_dump和pg_upgrade以支持postgres或template1数据库位于非默认表空间的情况
- 相同变化PostgreSQL 9.0.23 · 修复pg_dump和pg_upgrade以支持postgres或template1数据库位于非默认表空间的情况
问题修复修复 pg_dump 从过于陈旧而没有特定权限类型的服务器转储时对对象权限的处理
变更
修复 pg_dump 从过于陈旧而没有特定权限类型的服务器转储时对对象权限的处理(Tom Lane)
从 9.2 之前的服务器转储数据类型,以及从 7.3 之前的服务器转储函数或过程语言时,pg_dump 会生成撤销所有者可授予权限、转而将所有权限授予 PUBLIC 的 GRANT/REVOKE 命令。由于所涉及的权限只是 USAGE 和 EXECUTE,这不构成安全问题,但这种表示与旧系统的行为明显不符。现已修复,在这些情况下保持默认权限状态不变。
问题修复修复pg_dump以转储 shell 类型
变更
修复pg_dump以转储 shell 类型(Tom Lane)
shell 类型(即尚未完全定义的类型)用处不大,但pg_dump仍应转储它们。
问题修复修复pg_dump及其他客户端程序中的若干小内存泄漏
变更
修复pg_dump及其他客户端程序中的若干小内存泄漏(Michael Paquier)
问题修复修复 PPC 硬件的自旋锁汇编代码使其与AIX本机汇编器兼容
变更
修复 PPC 硬件的自旋锁汇编代码使其与AIX本机汇编器兼容(Tom Lane)
如果gcc被配置为使用本机汇编器(这正变得越来越普遍),则用gcc构建无法工作。
改进在AIX上,测试-qlonglong编译器选项,而不是直接假定它可以安全使用
变更
在AIX上,测试-qlonglong编译器选项,而不是直接假定它可以安全使用(Noah Misch)
改进在AIX上,使用-Wl,-brtllib链接选项以允许符号在运行时解析
变更
在AIX上,使用-Wl,-brtllib链接选项以允许符号在运行时解析(Noah Misch)
Perl 5.8.0 及更高版本依赖这一能力。
改进由于编译器缺陷,在使用 32 位xlc编译时避免使用内联函数
变更
由于编译器缺陷,在使用 32 位xlc编译时避免使用内联函数(Noah Misch)
改进必要时使用librt提供sched_yield(),某些 Solaris 版本即是如此
变更
必要时使用librt提供sched_yield(),某些 Solaris 版本即是如此(Oskari Saarenmaa)
问题修复修复 Windowsinstall.bat脚本以处理包含空格的目标目录名
变更
修复 Windowsinstall.bat脚本以处理包含空格的目标目录名(Heikki Linnakangas)
改进使PostgreSQL版本号的数字形式(例如90405)以名为VERSION_NUM的变量方便地提供给扩展 Makefile 使用
变更
使PostgreSQL版本号的数字形式(例如90405)以名为VERSION_NUM的变量方便地提供给扩展 Makefile 使用(Michael Paquier)
关联记录 (4)
- 相同变化PostgreSQL 9.4.5 · 使 PostgreSQL 版本号的数字形式(例如 90405)以名为 VERSION_NUM 的变量方便地供扩展 Makefile 使用
- 相同变化PostgreSQL 9.2.14 · 使PostgreSQL版本号的数字形式(例如90405)以名为VERSION_NUM的变量方便地提供给扩展 Makefile 使用
- 相同变化PostgreSQL 9.1.19 · 使PostgreSQL版本号的数字形式(例如90405)以名为VERSION_NUM的变量方便地提供给扩展 Makefile 使用
- 相同变化PostgreSQL 9.0.23 · 使PostgreSQL版本号的数字形式(例如90405)以名为VERSION_NUM的变量方便地提供给扩展 Makefile 使用
改进将时区数据文件更新到tzdata发行版 2015g,以反映开曼群岛、斐济、摩尔多瓦、摩洛哥、诺福克岛、朝鲜、土耳其和乌拉圭的夏令时法规变更。为加拿大北落基山地区新增了时区名America/Fort_Nelson。
变更
将时区数据文件更新到tzdata发行版 2015g,以反映开曼群岛、斐济、摩尔多瓦、摩洛哥、诺福克岛、朝鲜、土耳其和乌拉圭的夏令时法规变更。为加拿大北落基山地区新增了时区名America/Fort_Nelson。
关联记录 (4)
- 相同变化PostgreSQL 9.4.5 · 将时区数据文件更新到 tzdata 发行版 2015g,涵盖开曼群岛、斐济、摩尔多瓦、摩洛哥、诺福克岛、朝鲜、土耳其和乌拉圭的夏令时法规变更。为加拿大北部落基山脉新增了时区名 America/Fort_Nelson。
- 相同变化PostgreSQL 9.2.14 · 将时区数据文件更新到tzdata发行版 2015g,以反映开曼群岛、斐济、摩尔多瓦、摩洛哥、诺福克岛、朝鲜、土耳其和乌拉圭的夏令时法规变更。为加拿大北落基山地区新增了时区名America/Fort_Nelson。
- 相同变化PostgreSQL 9.1.19 · 将时区数据文件更新到tzdata发行版 2015g,以反映开曼群岛、斐济、摩尔多瓦、摩洛哥、诺福克岛、朝鲜、土耳其和乌拉圭的夏令时法规变更。为加拿大北落基山地区新增了时区名America/Fort_Nelson。
- 相同变化PostgreSQL 9.0.23 · 将时区数据文件更新到tzdata发行版 2015g,以反映开曼群岛、斐济、摩尔多瓦、摩洛哥、诺福克岛、朝鲜、土耳其和乌拉圭的夏令时法规变更。为加拿大北落基山地区新增了时区名America/Fort_Nelson。
没有匹配的变化
尝试其他关键词,或 .
如何生成比较结果?
比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。
发布快照: 2026-09-26 · 安全快照: 2026-09-26
内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.