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

# E.61. 版本 9.0.5

> 发布日期: 2011-09-26

这个版本包含各种自9.0.4以来的修复。要想获得关于9.0主版本的新特性信息， 请参阅第 E.66 节。

## E.61.1. 迁移到版本 9.0.5

运行9.0.X的系统不需要转储/恢复。

另外，如果你是从一个早于9.0.6的版本升级而来，请参阅第 E.62 节。

## E.61.2. 修改列表

- 修复系统目录上`VACUUM FULL`或`CLUSTER`之后目录缓存失效 (Tom Lane)

  在某些情况下，重定位系统目录行到另一个位置将不会被并发服务器进程识别， 如果他们然后尝试更新那行，那么允许目录损坏的发生。最坏的情况可能是完全丢失一个表。

- 修复sinval复位处理期间不正确的操作顺序，并且保证TOAST OID保存到系统目录中 (Tom Lane)

  这些错误可能导致在一个系统目录上`VACUUM FULL` 或 `CLUSTER`之后的瞬时失效。

- 修复索引in-doubt HOT-updated元组的bug (Tom Lane)

  这些bug可能导致在对系统目录重建索引之后的索引损坏。不认为会影响用户的索引。

- 修复GiST索引页分裂进程中的多个bug (Heikki Linnakangas)

  发生的概率很低，但是可能会导致索引损坏。

- 修复`tsvector_concat()`中可能的缓冲区溢出 (Tom Lane)

  该函数可能低估了它的结果所需内存的数量，导致服务器崩溃。

- 修复处理"standalone"参数时`xml_recv`中的崩溃 (Tom Lane)

- 使`pg_options_to_table`为不带值的选项返回 NULL (Tom Lane)

  以前这样的情况会导致服务器崩溃。

- 避免在`ANALYZE`和SJIS-2004编码转换中可能的访问超出内存结尾 (Noah Misch)

  这修复了一些非常低可能性的服务器崩溃情况。

- 保护`pg_stat_reset_shared()`不输入NULL (Magnus Hagander)

- 修复子事务中检测到一个恢复冲突死锁时可能的失败 (Tom Lane)

- 避免热备期间回收btree索引页时伪造的冲突 (Noah Misch, Simon Riggs)

- 如果WAL接收器仍然运行在恢复的结尾，那么关闭它 (Heikki Linnakangas)

  postmaster以前在这种情况下会恐慌，但它实际上是一个合法的情况。

- 修复relcache初始化文件无效中的竞态条件 (Tom Lane)

  有一个窗口，一个新的后端进程可能会读取旧的初始化文件， 而忽视将要告诉它该数据是陈旧的的inval信息。结果将会是目录访问中的奇异的失败， 典型的是稍后启动时"could not read block 0 in file ..."。

- 修复在GiST索引扫描结尾的内存泄露 (Tom Lane)

  执行许多独立GiST索引扫描的命令，例如在一个早已包含许多行的表上验证一个新的基于GiST的排除约束， 可能因为这个漏洞在瞬间需要大量的内存。

- 修复在进入命令字符串和`LISTEN`是活跃的时必须做编码转换时的内存泄露 (Tom Lane)

- 修复支持可持有的游标和plpgsql的`RETURN NEXT`命令的tuplestores中的错误的内存计算 （导致可能的内存膨胀） (Tom Lane)

- 修复`BEFORE`和`AFTER`触发器都存在时的触发器`WHEN`条件 (Tom Lane)

  如果已经有一个`BEFORE ROW`触发器为同一个更新触发了，那么为 `AFTER ROW UPDATE`评估`WHEN`条件可能会崩溃。

- 修复构建一个大的、有损耗的位图时的性能问题 (Tom Lane)

- 修复为唯一字段的连接选择性估计 (Tom Lane)

  这修复了一个可能导致欠佳的估计连接结果大小的错误的启发式规划器。

- 修复只在子查询目标列表中出现的嵌套的PlaceHolderVar表达式 (Tom Lane)

  这个错误可能导致外连接的输出不正确的显示为NULL。

- 允许规划器认为空父表真的是空的 (Tom Lane)

  通常一个空表为了规划目的会假设有一个特定的最小尺寸； 但是这个启发对于通常永久为空的继承体系的父表来说看起来弊大于利。

- 允许嵌套的`EXISTS`查询适当的最优化 (Tom Lane)

- 修复array-和path-creating函数以确保填充的字节为0 (Tom Lane)

  这避免了规划器认为语义上相等的常量不等，导致欠佳的最优化的情况。

- 修复`EXPLAIN`以处理内部索引扫描辅助方案内的控制结果节点 (Tom Lane)

  这种监督通常的症状是"bogus varno"错误。

- 修复`indexedcol` `IS NULL`条件的btree预处理 (Dean Rasheed)

  如果与任意其他类型的btree可索引条件在同一个索引字段上结合，那么这样一个条件可能是不满足的。 该情况在9.0.0和之后的版本中处理的不正确，导致查询输出到本该没有的地方。

- 绕开破坏WAL重放的gcc 4.6.0 bug (Tom Lane)

  这会导致在服务器崩溃后丢失已提交的事务。

- 修复视图中的`VALUES`的转储bug (Tom Lane)

- 禁止序列上的`SELECT FOR UPDATE/SHARE` (Tom Lane)

  这个操作不会像预期的那样工作，并且会导致失败。

- 修复`VACUUM`以便它总是更新`pg_class`.`reltuples`/`relpages` (Tom Lane)

  这修复了一些自动清理可能使得越来越多的什么时候清理表的决策欠佳的情形。

- 当计算一个哈希表的大小时防止整数溢出 (Tom Lan)

- 修复`CLUSTER`试图访问早已删除的TOAST数据的情况 (Tom Lane)

- 修复初始验证事务期间过早的超时失败 (Tom Lane)

- 修复为"peer"认证使用证书控制信息中的可移植性错误 (Tom Lane)

- 修复需要多次往返时的SSPI登陆 (Ahmed Shinwari, Magnus Hagander)

  这个问题的典型症状是在SSPI登陆期间的"The function requested is not supported"错误。

- 修复添加一个新的自定义变量类的变量到`postgresql.conf`时的失败 (Tom Lane)

- 如果`pg_hba.conf`包含`hostssl`但是SSL是禁用的时，抛出一个错误 (Tom Lane)

  这被认为是更加用户友好的行为，以前这样的行都是默默地忽视。

- 修复`DROP OWNED BY`试图删除序列上的缺省权限时的失败 (Shigeru Hanada)

- 修复`pg_srand48`种子初始化中的打字错误 (Andres Freund)

  这导致未能使用所有提供的种子。这个函数没有用在大多数的平台上（只是那些没有`srandom`的）， 并且一个比预期较少随机的种子看起来在任何情况下潜在的安全风险都很小。

- 避免`LIMIT`和`OFFSET`值的和超过2^63时的整数溢出 (Heikki Linnakangas)

- 添加溢出检查到`generate_series()`的`int4`和`int8`版本 (Robert Haas)

- 修复在`to_char()`中消除尾随的零 (Marti Raudsepp)

  在`FM`格式中并且在小数点后没有数字位，小数点左边的零可能会被不正确的消除。

- 修复`pg_size_pretty()`以避免输入接近2^63而溢出 (Tom Lane)

- 减少记录值中typmod匹配的plpgsql的检查 (Tom Lane)

  一个过度的检查可能会导致丢弃应该保持的长度修饰符。

- 正确的处理initdb期间本地名中的引号 (Heikki Linnakangas)

  该情况可能出现一些Windows地区，如"People's Republic of China"。

- 在pg_upgrade中，避免转储孤立的临时表 (Bruce Momjian)

  这防止了表OID分配在旧的和新的安装中不同步的情况。

- 修复pg_upgrade以在从8.3升级而来期间保持toast表的relfrozenxids (Bruce Momjian)

  未能做到这点会导致`pg_clog`文件在升级之后很快被删掉。

- 在pg_upgrade中，修复`-l` (log)选项以在Windows上运行 (Bruce Momjian)

- 在pg_ctl中，在Windows上支持服务注册的静音模式 (MauMau)

- 修复从一个不同的文件`COPY`期间psql的脚本文件行号计数 (Tom Lane)

- 为`standard_conforming_strings`修复pg_restore 的direct-to-database模式 (Tom Lane)

  pg_restore在从一个由`standard_conforming_strings` 设置为`on`制作的归档文件中直接恢复到数据库服务器时可能会发出不正确的命令。

- 对于并行pg_restore的不支持的情况更加用户友好 (Tom Lane)

  这个改变确保了这样的情况能被检测到，并且在采取恢复动作之前被报告。

- 修复libpq的LDAP服务查找代码中的write-past-buffer-end和内存泄露 (Albe Laurenz)

- 在libpq中，避免使用无闭塞的I/O和SSL连接时的失败 (Martin Pihlak, Tom Lane)

- 改善libpq对连接启动时失败的处理 (Tom Lane)

  特别的，现在对服务器在SSL连接启动时失败的`fork()`报告的响应更加理智。

- 改善libpq对于SSL失败的错误报告 (Tom Lane)

- 修复`PQsetvalue()`以避免添加一个新的元组到一个最初从服务器查询获得的 `PGresult`时可能的崩溃 (Andrew Chernow)

- 使ecpglib写`double`值带有15位数字精度 (Akira Kurosawa)

- 在ecpglib中，确保`LC_NUMERIC`设置在错误之后恢复 (Michael Meskes)

- 为blowfish有符号字符的错误应用逆向修复 (CVE-2011-2483)

  `contrib/pg_crypto`的blowfish加密代码在char是有符号的平台（大多数是） 上可能给出错误的结果，导致加密的口令比原有的强度要弱。

- 修复`contrib/seg`中的内存泄露 (Heikki Linnakangas)

- 修复`pgstatindex()`以对于空索引给出一致的结果 (Tom Lane)

- 允许使用perl 5.14建立 (Alex Hunsaker)

- 修复建立和安装的文件路径包含空格时的各种问题 (Tom Lane)

- 更新时区数据文件到tzdata 版本 2011i，因为DST法律在以下地区发生改变： Canada, Egypt, Russia, Samoa, 和 South Sudan。

上一页 | 起始页 | 下一页
版本 9.0.6 | 上一级 | 版本 9.0.4