企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# E.75\. 发布8.3.2 > **发布日期:** 从未公布 该发布中包含8.3.1中各种修复。关于8.3主要发布中新特性信息, 参阅[Section E.77](#calibre_link-34)。 ## E.75.1\. 迁移到版本8.3.2 运行8.3.X不需要备份/恢复。然而,如果从8.3.1更早版本更新,参阅 8.3.1发布说明。 ## E.75.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)