E.88. 版本 8.2.7 #
发行日期
2008-03-17
本次发布包含对 8.2.6 的多方面修复。有关 8.2 大版本中新特性的信息,请参见第 E.95 节。.
E.88.1. 迁移到版本 8.2.7
对于运行 8.2.X 的用户,不需要进行转储/恢复。不过,如果你受到下述 Windows 区域设置问题的影响,可能需要在更新后对文本列上的索引执行 REINDEX。
E.88.2. 变更
修复把不同字符组合视为相等的 Windows 区域设置下的字符串比较(Tom)
此修复仅在 Windows 上且仅在使用 UTF-8 数据库编码时适用。所有其他情形的相同修复两年多前就已完成,但使用 UTF-8 的 Windows 走的是未更新的单独代码路径。如果你使用的区域设置把某些不同的字符串视为相等,可能需要
REINDEX来修复文本列上的现有索引。修复不同系统目录上并发
VACUUM FULL操作之间的潜在死锁(Tom)修复长期存在的
LISTEN/NOTIFY竞态条件(Tom)极少数情况下,刚执行过
LISTEN的会话可能收不到通知,即使按理应当收到,因为观察到执行NOTIFY的并发事务稍后提交了。此修复的一个副作用是:执行了尚未提交的
LISTEN命令的事务如果去查看,将看不到该LISTEN在pg_listener中的行;以前能看到。这一行为从未被明确记录,但有些应用程序可能依赖旧行为。不允许在预备事务内使用
LISTEN和UNLISTEN(Tom)这以前是允许的,但尝试这样做会有各种不愉快的后果,特别是只要
UNLISTEN未提交,发起的后端就无法退出。不允许在预备事务内删除临时表(Heikki)
8.1 正确地禁止了这一点,但该检查在 8.2 中被无意破坏。
修复使用哈希索引的查询期间发生错误时的罕见崩溃(Heikki)
修复返回集合函数某些用法中的内存泄漏(Neil)
修复公元前年份 2 月 29 日日期时间值的输入(Tom)
以前的编码弄错了哪些年份是闰年。
修复
ALTER OWNER某些变体中的“无法识别的节点类型”错误(Tom)确保锁等待中止时清除
pg_stat_activity.waiting标志(Tom)修复 Windows Vista 上进程权限的处理(Dave、Magnus)
特别是,此修复允许以 Administrator 用户启动服务器。
更新时区数据文件到 tzdata 发行版 2008a(特别是智利最近的变更);调整时区缩写
VET(委内瑞拉)为 UTC-4:30 而不是 UTC-4:00(Tom)修复 pg_ctl,使其从命令行选项正确提取 postmaster 的端口号(Itagaki Takahiro、Tom)
此前
pg_ctl start -w可能试图在错误端口上联系 postmaster,导致虚假的启动失败报告。使用
-fwrapv防御最新 gcc 版本可能的错误优化(Tom)已知用 gcc 4.3 或更高版本构建 PostgreSQL 时这是必需的。
正确强制执行超过
INT_MAX微秒(约 35 分钟)的statement_timeout值(Tom)此缺陷只影响使用
--enable-integer-datetimes的构建。修复常量折叠简化子查询时“意外的 PARAM_SUBLINK ID”规划器错误(Tom)
修复
IS NULL和NOT表达式的约束排除处理中的逻辑错误(Tom)规划器有时会因 NULL 结果的可能性而排除本不应排除的分区。
修复“无法构建任何 N 路连接”规划器错误的另一个原因(Tom)
这可能发生在无子句连接需要在连接子句可被利用之前被强制的情形。
修复外连接规划中不正确的常量传播(Tom)
规划器有时可能错误地断定变量可被约束为等于常量,导致错误的查询结果。
修复
ORDER BY和GROUP BY中常量表达式的显示(Tom)显式转换的常量会被错误显示。这例如可能导致视图定义在转储和重载期间损坏。
修复 libpq,使其在 COPY OUT 期间正确处理 NOTICE 消息(Tom)
只观察到此失败在用户定义数据类型的输出例程发出 NOTICE 时发生,但不能保证它不会因其他原因发生。