E.220. 版本 8.0.2 #
发行日期:. 2005-04-07
本次发布包含对 8.0.1 的多方面修复。有关 8.0 大版本中新特性的信息,请参见第 E.222 节。.
E.220.1. 迁移到版本 8.0.2
对于运行 8.0.* 的用户,不需要进行转储/恢复。此发行版更新了 PostgreSQL 库的主版本号,因此如果某些用户应用程序找不到正确编号的共享库,可能需要重新链接它们。
E.220.2. 变更
递增所有接口库的主版本号(Bruce)
这本应在 8.0.0 中完成。需要它才能使 7.4.X 版本的 PostgreSQL 客户端应用程序(如 psql)能与 8.0.X 应用程序在同一台机器上使用。这可能需要重新链接使用这些库的用户应用程序。
新增仅 Windows 的
wal_sync_method设置fsync_writethrough(Magnus、Bruce)此设置使 PostgreSQL 在写 WAL 时穿透磁盘驱动器的任何写缓存。此行为以前称为
fsync,但因它在其他平台上的行为与fsync大不相同而被改名。在 Windows 上启用
wal_sync_method的open_datasync设置,并使其成为该平台的默认(Magnus、Bruce)由于默认不再是
fsync_writethrough,如果磁盘驱动器启用了写缓存,断电期间可能丢失数据。要在 Windows 上关闭写缓存,请在设备管理器中选择驱动器属性,然后选择策略。新缓存管理算法 2Q 取代 ARC(Tom)
这是为了避免 ARC 的一项待决美国专利。对某些负载,2Q 代码可能比 ARC 慢几个百分点。更好的缓存管理算法将出现在 8.1 中。
规划器调整以改进新建表上的行为(Tom)
允许 plpgsql 给初始为
NULL的数组的元素赋值(Tom)此前数组会保持
NULL,但现在它变成单元素数组。主 SQL 引擎在 8.0 中已改为以这种方式处理空数组值的UPDATE,但 plpgsql 中的类似情形被遗漏了。把 plpython 函数体中的
\r\n和\r转换为\n(Michael Fuhr)这防止在 Windows 或 Mac 客户端上编写 plpython 代码时出现语法错误。
允许 SPI 游标处理返回行的工具命令,如
EXPLAIN(Tom)修复
ALTER TABLE SET WITHOUT OIDS之后CLUSTER的失败(Tom)降低
ALTER TABLE ADD COLUMN的内存使用(Neil)修复
ALTER LANGUAGE RENAME(Tom)记录 pg_ctl 仅 Windows 的
register和unregister选项(Magnus)确保后端关闭期间完成的操作被统计收集器计数
这有望解决关于 pg_autovacuum 不够频繁地清理系统目录的报告——它没有被通知后端退出期间临时表删除导致的目录删除。
把 Windows 上配置参数
log_destination的默认改为eventlog(Magnus)默认情况下,在 Windows 上运行的服务器现在将把日志输出发送到 Windows 事件记录器而不是标准错误。
使 Kerberos 认证在 Windows 上工作(Magnus)
允许没有 CREATEDB 权限标志的超级用户执行
ALTER DATABASE RENAME(Tom)修改
CREATE和DROP DATABASE的 WAL 日志条目,不指定绝对路径(Tom)这允许在数据库位置可能不同的另一台机器上做时间点恢复。注意
CREATE TABLESPACE在这种情形下仍有风险。修复后端带着创建过表并对其打开游标的未决事务退出时的崩溃(Tom)
修复
array_map(),使其能调用 PL 函数(Tom)若干
contrib/tsearch2和contrib/btree_gist修复(Teodor)修复某些平台上一些
contrib/pgcrypto函数的崩溃(Marko Kreen)修复
contrib/intagg在 64 位平台上的问题(Tom)修复 ecpg 解析
CREATE语句的缺陷(Michael)绕过 powerpc 和 amd64 上的 gcc 缺陷,它导致 ecpg 中的问题(Christof Petig)
当区域设置为
C时不使用区域感知版本的upper()、lower()和initcap()(Bruce)这使这些函数能在区域设置为
C时对非 7 位数据报错的平台上工作。修复
quote_ident(),给匹配关键字的名称加引号(Tom)修复
to_date()在同时使用CC和YY字段时合理行事(Karel)防止
to_char(interval)在给定零月 interval 时失败(Tom)修复
date_trunc('week')返回错误星期的问题(Bruce)date_trunc('week')在某些年份对一月的前几天返回错误的年份。为
INET数据类型的D类地址使用正确的默认掩码长度(Tom)