E.176. 版本8.3.2

E.176.1. 迁移到版本8.3.2
E.176.2. 变化

发布日期:. 从未公布

该发布中包含8.3.1中各种修复。关于8.3主要发布中新特性信息, 参阅第 E.178 节

E.176.1. 迁移到版本8.3.2

运行8.3.X不需要备份/恢复。然而,如果从8.3.1更早版本更新,参阅 8.3.1发布说明。

E.176.2. 变化

  • 当使用UTF-8数据库编码和不同客户端编码的时候,修复在Windows上发生的ERRORDATA_STACK_SIZE exceeded 崩溃(Tom)

  • restore_command参数中%r宏修复不正确 归档截断点计算(Simon)

    如果热备份脚本依赖于%r决定何时丢弃WAL分段文件, 这可能导致数据丢失。

  • 修复ALTER TABLE ADD COLUMN ... PRIMARY KEY,使得新列被正确检查以查看 它是否被初始化为所有非空(Brendan Jurd)

    之前版本忽略检查这项需求。

  • 修复REASSIGN OWNED以致于工作于程序语言(Alvaro)

  • 修复在非SELECT顶级操作查询中 SELECT FOR UPDATE/SHARE作为子查询出现的问题(Tom)

  • 当从同一个祖先中继承约束的多个父关系中继承同一约束的时候, 修复可能的CREATE TABLE错误(Tom)

  • 修复pg_get_ruledef()以显示别名, 如果存在,附加到UPDATE或者DELETE的目标表中(Tom)

  • 恢复之前8.3操作TID用在一个TidScan规划结果中静默地不匹配任何行中的范围外块号(Tom)

    8.3.0和8.3.1相反抛出一个错误。

  • 修复可能导致许多LWLocks失败的GIN错误(Teodor)

  • tsquery修复受损GiST比较函数(Teodor)

  • 修复tsvector_update_trigger()ts_stat() 用来接受超出它们期望类型域(Tom)

  • 修复故障以支持枚举数据类型作为外键(Tom)

  • 当解压损坏的数据时,避免可能崩溃(Zdenek Kotala)

  • 修复在延迟断开和DROP DATABASE之间竞态条件(Heikki)

    在最坏的情况下,这可能会导致在一个新的数据库删除新创建的表中, 获得相同OID作为最近删除的; 但当然这是非常小概率情况。

  • 修复后端的SIGTERM退出可能遗留在共享内存中损坏状态中的两个地方(Tom)

    两种情况都不是很重要,如果SIGTERM用于关闭整个数据库集群, 但是如果尝试SIGTERM个人后端,可能有问题。

  • 修复可能的崩溃,由于当xy具有不同的数据类型的时候, 不正确规划引起x IN (SELECT y FROM ...)子句。 当从y的类型转换为x的类型有损耗时, 确保该操作是语义正确的。

  • 修复疏忽,避免规划器替代已知的Param值好像它们是常数(Tom)

    这个错误部分禁用8.3.0和8.3.1中未命名扩展查询语句优化: 特别是如果LIKE模式作为参数被传递,那么LIKE到索引扫描优化将永远不会被应用, 并且取决于参数值的约束排除也不能正常运行。

  • 当可索引的MIN或者MAX聚合用于DISTINCT或者 ORDER BY的时候,修复规划器错误(Tom)

  • 修复规划器以确保它为了正提供排序节点的规划节点从来不使用physical tlist(Tom)

    这导致排序摆布比实际需要的更多数据, 因为未使用列值被包含在排序数据中。

  • 避免查询字符串的不必要拷贝(Tom)

    当许多命令作为单一查询字符串被提交的时候,修复了8.3.0中介绍的性能问题。

  • 当检查子事务XID的时候,使得TransactionIdIsCurrentTransactionId()使用 二进制搜索而不是线性搜索(Heikki)

    这修复了8.3.0中比之前版本显著缓慢的情况。

  • 修复ISO-8859-5和其它编码之间转换用来处理Cyrillic Yo字符 (使用两个点的eE) (Sergey Burladyan)

  • 修复一些数据类型输入函数,尤其是array_in(),被允许结果中未使用字节包含 未初始化,不可预测的值(Tom)

    这可能导致错误,其中两个似乎相同文本值被认为不相同,导致解析器抗议 不匹配的ORDER BYDISTINCT表达式。

  • 修复正则表达式子字符串匹配的情况(substring(string来自 pattern)) (Tom)

    当有一个匹配模式整体,但用户指定括号子表达式, 并且子表达式还没有得到匹配。那么出现问题, 一个例子是substring('foo' from 'foo(bar)?')。 这应该返回NULL,因为(bar)不匹配,但 它错误地返回全模式匹配(即foo)。

  • 阻止发动自动清理防止XID重叠的取消(Alvaro)

  • 完善未确定元组的ANALYZE的处理(通过尚未提交的事务插入或者删除),以使 它报告给统计收集器的数量可能是正确的(Pavan Deolasee)

  • 修复initdb拒绝--xlogdir (-X)选项的相对路径(Tom)

  • 采用psql输出标签字符作为适当空间数, 而不是8.3.0和8.3.1中执行的\x09(Bruce)

  • 更新时区数据文件到tzdata发布2008c (为Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba和Argentina/San_Luis中DST变化)

  • 添加ECPGget_PGconn()函数到ecpglib (Michael)

  • 修复来自ecpgPGTYPEStimestamp_sub()函数不正确结果(Michael)

  • 修复ecpg中连续行标记的处理(Michael)

  • 修复contrib/cube函数中可能的崩溃(Tom)

  • 当输入查询返回NULL值的时候,修复contrib/xml2xpath_table()函数中核心转储(Tom)

  • 修复contrib/xml2的makefile而不覆盖CFLAGS, 并且为libxslt存在或者不存在使其自动配置(Tom)