E.337. 版本 6.1

E.337.1. 迁移到版本 6.1
E.337.2. 修改列表

发布日期:. 1997-06-08

回归测试已经适应并且为 PostgreSQL 版本 6.1 做了大量的修改。

增加了三种新的 PostgreSQL 内部数据类型(datetime, timespan, 和circle)。统一了 Points,boxes, paths,和 polygons 的输出格式。 在 misc.out 中的 polygon (多边形)的输出只是相对原先的回归测试输出进行了抽样检查。

PostgreSQL 6.1 提供了一个可选的使用基因算法的优化器。 这些算法在对包含多个限定或多个表(优化器需要对评估的排序选择时) 的查询输出进行排序时表现得更为随机。有好几个回归测试项目显式地修改了结果的排序, 这样就对优化器选择不敏感了。有几个对数据类型的回归测试本来就是乱序的(如点和时间间隔), 包含这些类型的测试明显和 set geqo to 'off'reset geqo 相等。

对数组说明符(包围在原子值周围的花括号)的解释看起来在回归测试产生之后的某个时候被改变了。 现在的 ./expected/*.out 文件反映了这个新的解释,但却有可能是错误的!

float8 的回归测试至少在某些平台上会失败。这是因为对 pow()exp() 的不同的实现方法以及用于溢出和下溢(underflow)条件的信号机制的不同造成的。

在随机测试中的随机结果回导致随机测试失败, 因为回归测试是简单的用 diff 进行比较的。不过,随机在我的机器上 (Linux/gcc/i686)看起来好象并没有产生随机结果。

E.337.1. 迁移到版本 6.1

迁移需要对数据库进行完整的6.0版本的转储和6.1版本的恢复。

对于早于1.*的版本:首先要升级到1.09版本,因为在1.02版本中已经改善了 COPY 的输出格式。

E.337.2. 修改列表

Bug 修复
---------
在库程序中检查包的长度
锁管理的优先级修补
检查 float8 的上/下溢 (Bruce)
多个表连接的修复 (Vadim)
SIGPIPE 崩溃修复 (Darren)
大对象修复 (Sven)
允许 btree 索引处理 NULL (Vadim)
时区修复 (D'Arcy)
select SUM(x) 可以在没有行时返回 NULL (Thomas)
内部优化,执行 bug 修复 (Vadim) 
修复 < 或 <= 中的内循环没有行的问题 (Vadim)
阻止重新连接索引子句 (Vadim)
修复多个表的连接子句 (Vadim)
修复哈希,为数组 hashjoin (Vadim)
为 abstime 类型修复 btree (Vadim)
大对象修复 (Raymond)
修复哈希索引中的缓存泄露 (Vadim)
修复用于内部扫描的 rtree (Vadim)
修复用于内部扫描的 gist,清理 (Vadim, Andrea)
避免不必要的本地缓冲区分配 (Vadim, Massimo) 
修复事务退出时本地缓冲区泄露 (Vadim)
修复文件管理内存泄露,清理 (Vadim, Massimo)
修复存储管理内存泄露 (Vadim)
修复 btree 重复处理 (Vadim)
修复由于 vacuum 导致已删除的行重现 (Vadim)
修复 SELECT varchar()/char() INTO TABLE  制造零长度的字段 (Bruce)
使用 Purify 修复许多 psql, pg_dump, 和 libpq 内存泄露 (Igor) 

增强
------------
属性最优化统计 (Bruce)
更快的新 btree 批量加载代码 (Paul)
BTREE UNIQUE 添加到批量加载代码 (Vadim)
新增锁调试代码 (Massimo)
libpg++ 有大量的改变 (Leo)
新增 GEQO 优化器加速表多个表优化 (Martin)
新增 WARN 消息,为非唯一的数据插入到唯一键中 (Marc)
update x=-3,没有空格,现在有效了 (Bruce)
删除大小写敏感的标识符的处理 (Bruce,Thomas,Dan)
调试后端现在以树的形式打印 (Darren) 
新增 Oracle 字符函数 (Edmund)
新增明文口令函数 (Dan)
no such class 或 insufficient privilege 更改为不同的消息 (Dan)
新增 ANSI 时间戳函数 (Dan)
新增 ANSI 时间和日期类型 (Thomas)
移动后端中的大的数据块 (Martin)
多字段 btree 索引 (Vadim)
新增 SET var TO value 命令 (Martin)
在需要时更新事务状态 (Dan)
为字符类型新增本地设置 (Oleg) 
新增 SEQUENCE 序列号生成器 (Vadim)
GROUP BY 函数现在是可能的 (Vadim)
重组回归测试 (Thomas,Marc)
新增优化器操作加权 (Vadim)
新增 psql \z grant/permit 选项 (Marc)
新增 MONEY 数据类型 (D'Arcy,Thomas)
tcp 套接字通信速度提升 (Vadim)
为属性状态和特定字段新增 VACUUM 选项 (Vadim)  
改善了许多几何类型 (Thomas,Keith)
附加了回归测试 (Thomas)
新增 datestyle 变量 (Thomas,Vadim,Martin)
为排序类型添加了更多比较操作符 (Thomas)
新增转换函数 (Thomas)
新增更多简洁的 btree 格式 (Vadim)
允许 pg_dumpall 保存数据库所有权 (Bruce)
新增 SET GEQO=# 和 R_PLANS 变量 (Vadim)
旧的 (!GEQO) 优化器可以使用右侧规划 (Vadim)
改善了 SQL 分析器中的类型检查 (Bruce)
新增 SET, SHOW, RESET 命令 (Thomas,Vadim)
新增 \connect database USER 选项
新增 destroydb -i 选项 (Igor)
新增 \dt 和 \di psql 命令 (Darren)
SELECT "\n" 现在转义新行 (A. Duursma)
新增老的格式的几何转换函数 (Thomas) 

源代码树的改变
-------------------
新增配置脚本 (Marc)
添加了 readline  配置选项 (Marc)
删除了 OS 特定的配置选项 (Marc)
新增 OS 特定的模板文件 (Marc)
不再需要编辑 Makefile.global (Marc)
重新安排包含文件 (Marc)
nextstep 补丁 (Gregor Hoffleit)
删除了 Windows 特定的代码 (Bruce)
删除了 postmaster -e 选项,现在只有 postgres -e 选项 (Bruce)
合并 front/backends 中重复的库代码 (Martin) 
现在使用 eBones, international Kerberos(Jun)
支持更多的共享库
清理 c++ 包含文件 (Bruce)
警告 buggy flex (Bruce)
DG/UX, Ultrix, IRIX, AIX 可移植性修复