发布8.3.2

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

# E.111. 发布8.3.2

> 发布日期: 从未公布

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

## E.111.1. 迁移到版本8.3.2

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

## E.111.2. 变化

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

- 为`recovery_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个人后端，可能有问题。

- 修复可能的崩溃，由于当`x`和`y`具有不同的数据类型的时候， 不正确规划引起``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"字符 (使用两个点的`e`和`E`) (Sergey Burladyan)

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

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

- 修复正则表达式子字符串匹配的情况(`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)

- 修复来自ecpg的`PGTYPEStimestamp_sub()`函数不正确结果(Michael)

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

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

- 当输入查询返回NULL值的时候，修复`contrib/xml2`的 `xpath_table()`函数中核心转储(Tom)

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

上一页 | 起始页 | 下一页
发布8.3.3 | 上一级 | 发布8.3.1