E.70. 版本 8.3.1 #
发行日期
2008-03-17
本次发布包含对 8.3.0 的多方面修复。有关 8.3 大版本中新特性的信息,请参见第 E.71 节。.
E.70.1. 迁移到版本 8.3.1
对于运行 8.3.X 的用户,不需要进行转储/恢复。不过,如果你受到下述 Windows 区域设置问题的影响,可能需要在更新后对文本列上的索引执行 REINDEX。
E.70.2. 变更
修复把不同字符组合视为相等的 Windows 区域设置下的字符串比较(Tom)
此修复仅在 Windows 上且仅在使用 UTF-8 数据库编码时适用。所有其他情形的相同修复两年多前就已完成,但使用 UTF-8 的 Windows 走的是未更新的单独代码路径。如果你使用的区域设置把某些不同的字符串视为相等,可能需要
REINDEX来修复文本列上的现有索引。修复
VACUUM FULL的极端情形缺陷(Tom)8.2 中引入了不同系统目录上并发
VACUUM FULL操作之间的潜在死锁。这已被纠正。8.3 使情况更糟,因为死锁可能发生在临界代码区内,使它成为 PANIC 而不只是 ERROR。此外,在清理系统目录中途失败的
VACUUM FULL可能导致并发数据库会话中的缓存损坏。8.3 中引入的另一个
VACUUM FULL缺陷在处理不含活元组的页时可能导致崩溃或内存不足报告。修复涉及
character或bit列的外键检查的错误行为(Tom)如果引用列是不同但兼容的类型(例如
varchar),约束的强制执行就不正确。避免空操作外键检查中不必要的死锁失败(Stephan Szabo、Tom)
修复重新规划预备查询时可能的核心转储(Tom)
此缺陷只影响协议级 prepare 操作,不影响 SQL
PREPARE,因此往往只出现在大量使用预备语句的 JDBC、DBI 和其他客户端驱动上。修复重新规划调用使用 SPI 的函数的查询时可能的失败(Tom)
修复涉及不同数据类型列的按行比较失败(Tom)
修复长期存在的
LISTEN/NOTIFY竞态条件(Tom)极少数情况下,刚执行过
LISTEN的会话可能收不到通知,即使按理应当收到,因为观察到执行NOTIFY的并发事务稍后提交了。此修复的一个副作用是:执行了尚未提交的
LISTEN命令的事务如果去查看,将看不到该LISTEN在pg_listener中的行;以前能看到。这一行为从未被明确记录,但有些应用程序可能依赖旧行为。不允许在预备事务内使用
LISTEN和UNLISTEN(Tom)这以前是允许的,但尝试这样做会有各种不愉快的后果,特别是只要
UNLISTEN未提交,发起的后端就无法退出。不允许在预备事务内删除临时表(Heikki)
8.1 正确地禁止了这一点,但该检查在 8.2 和 8.3 中被无意破坏。
修复使用哈希索引的查询期间发生错误时的罕见崩溃(Heikki)
修复
tsquery值的错误比较(Teodor)修复单字节编码中
LIKE对非 ASCII 字符的错误行为(Rolf Jentsch)禁用
xmlvalidate(Tom)此函数本应在 8.3 发布前移除,但被无意留在了源代码中。它带来小的安全风险,因为非特权用户可以用它读取服务器可访问的任何文件的前几个字符。
修复返回集合函数某些用法中的内存泄漏(Neil)
让
encode(把所有高位字节值转换为bytea, 'escape')\nnn八进制转义序列(Tom)这对于在数据库编码为多字节时避免编码问题是必要的。此变更可能给期望
encode特定结果的应用程序带来兼容性问题。修复公元前年份 2 月 29 日日期时间值的输入(Tom)
以前的编码弄错了哪些年份是闰年。
修复
ALTER OWNER某些变体中的“无法识别的节点类型”错误(Tom)避免
CREATE TABLE LIKE INCLUDING INDEXES中的表空间权限错误(Tom)确保锁等待中止时清除
pg_stat_activity.waiting标志(Tom)修复 Windows Vista 上进程权限的处理(Dave、Magnus)
特别是,此修复允许以 Administrator 用户启动服务器。
更新时区数据文件到 tzdata 发行版 2008a(特别是智利最近的变更);调整时区缩写
VET(委内瑞拉)为 UTC-4:30 而不是 UTC-4:00(Tom)修复 ecpg 的数组问题(Michael)
修复 pg_ctl,使其从命令行选项正确提取 postmaster 的端口号(Itagaki Takahiro、Tom)
此前
pg_ctl start -w可能试图在错误端口上联系 postmaster,导致虚假的启动失败报告。使用
-fwrapv防御最新 gcc 版本可能的错误优化(Tom)已知用 gcc 4.3 或更高版本构建 PostgreSQL 时这是必需的。
支持用 MSVC 构建
contrib/uuid-ossp(Hiroshi Saito)