E.126. 版本 9.0.5

E.126.1. 迁移到版本 9.0.5
E.126.2. 修改列表

发布日期:. 2011-09-26

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

E.126.1. 迁移到版本 9.0.5

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

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

E.126.2. 修改列表

  • 修复系统目录上VACUUM FULLCLUSTER之后目录缓存失效 (Tom Lane)

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

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

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

  • 修复索引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)

  • 修复BEFOREAFTER触发器都存在时的触发器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的), 并且一个比预期较少随机的种子看起来在任何情况下潜在的安全风险都很小。

  • 避免LIMITOFFSET值的和超过2^63时的整数溢出 (Heikki Linnakangas)

  • 添加溢出检查到generate_series()int4int8版本 (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)

  • 使ecpglibdouble值带有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。