PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 附录 E. 版本说明 | 下一页

# E.185. 版本 8.0.3

> 发布日期: 2005-05-09

这个版本包含各种自8.0.2以来的修复，包括几个安全相关的问题。 关于8.0主版本的新特性信息，请参阅第 E.188 节。

## E.185.1. 迁移到版本 8.0.3

运行8.0.X的用户不需要转储/恢复。不过， 它是一个处理在8.0.X系统目录的初始内容中找到的两个重要安全问题的可能的方式。 使用8.0.3的initdb的dump/initdb/reload序列将自动纠正这些问题。

较大的安全问题是内建字符设置编码转换函数可以通过未授权的用户从SQL命令中调用， 但是该函数不是设计来这样使用的，并且恶意选择参数时时不安全的。 该修复包括修改这些函数声明的参数列表，这样他们可以不再从SQL命令中调用。 （这不影响他们通过编码转换机制的正常使用。）

较小的问题是`contrib/tsearch2`模块创建了几个错误的声明为返回 `internal`的函数，而他们并不接受`internal`参数。 这破坏了所有使用`internal`参数的函数的类型安全。

强烈建议所有安装修复这些错误，通过initdb或通过遵循下面给出的手动修复程序。 该错误至少允许未授权的数据库用户崩溃他们的服务器进程， 并且可能允许未授权的用户获得数据库超级用户的权限。

如果你不希望initdb，执行7.4.8版本声明 中相同的手动修复程序。

## E.185.2. 修改列表

- 修改编码函数签名以阻止误用

- 修改`contrib/tsearch2`，以避免不安全的使用`INTERNAL`函数结果

- 防止`record_out`不正确的第二个参数

- 修复古老的竞态条件：允许一个事务因为某些目的（如SELECT FOR UPDATE） 被看做比其他目的提交的稍早些

  这是一个极其严重的错误，因为它会导致明显的数据不一致短暂的被应用可见。

- 修复关系扩展和VACUUM之间的竞态条件

  这理论上会导致丢失一页最近插入的数据，尽管这种情况看起来有非常小的可能性。 没有已知的情况导致超过一个断言的失败。

- 修复`TIME WITH TIME ZONE`值的比较

  在使用了`--enable-integer-datetimes`配置开关的地方， 该比较代码是错误的。注意：如果你在`TIME WITH TIME ZONE` 字段上有一个索引，它将需要在安装这个更新之后`REINDEX`， 因为该修复纠正了字段值的排序顺序。

- 为`TIME WITH TIME ZONE`值修复`EXTRACT(EPOCH)`

- 修复`INTERVAL`值中负的分数秒的错误显示

  这个错误只在使用了`--enable-integer-datetimes` 配置开关时发生。

- 修复pg_dump以正确的转储包含`%`的触发器名字

- 更多`contrib/intagg`的64位修复

- 阻止返回`RECORD`的函数的不正确的优化

- 阻止在`COALESCE(NULL,NULL)`上的崩溃

- 为libpq修复Borland makefile

- 为`timetz`类型修复`contrib/btree_gist` (Teodor)

- 让`pg_ctl`检查在`postmaster.pid` 发现的PID，看看它是否仍然是一个活动的进程

- 修复由转储时间戳的添加引起的`pg_dump`/`pg_restore`问题

- 修复具体可持有游标和事务提交期间触发延迟的处罚器之间的相互作用

- 修复返回通过引用传递数据类型的SQL函数中的内存泄露

上一页 | 起始页 | 下一页
版本 8.0.4 | 上一级 | 版本 8.0.2