ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# E.32\. 版本 9.0.2 > **发布日期:** 2010-12-16 这个版本包含各种自9.0.1以来的修复。要想获得关于9.0主版本的新特性信息, 请参阅[Section E.34](#calibre_link-163)。 ## E.32.1\. 迁移到版本 9.0.2 运行9.0.X版本的用户不需要转储/恢复。 ## E.32.2\. 修改列表 * 强制缺省[`wal_sync_method`](#calibre_link-1432) 在Linux上为`fdatasync` (Tom Lane, Marti Raudsepp) linux上的缺省实际上已经`fdatasync`很多年了,但是最近的内核改变导致 PostgreSQL选择了`open_datasync`。 这个选择不会导致任何性能改进,并且在某些文件系统上导致彻底的失败, 尤其是带有`data=journal`接口选项的`ext4`。 * 修复热备重放期间的"too many KnownAssignedXids"错误 (Heikki Linnakangas) * 修复热备期间锁捕获中的竞态条件 (Simon Riggs) * 避免热备期间不必要的冲突 (Simon Riggs) 这修复了一些认为重放与备用查询相冲突的情况(导致重放延迟或可能取消查询), 但是没有真正的冲突。 * 修复为GIN索引WAL重放逻辑中的各种错误 (Tom Lane) 这会导致复制期间"bad buffer id: 0"失败或索引内容的损坏。 * 修复起始检查点WAL记录和它的重做点不在同一个WAL段中时的从基础备份中恢复 (Jeff Davis) * 修复在创建主数据库集群之后立即启用流复制时的极端情况错误 (Heikki Linnakangas) * 修复多个workers持续活跃了很长一段时间时autovacuum workers的持续放缓 (Tom Lane) autovacuum worker如果处理了足够的表,那么它有效的`vacuum_cost_limit` 可以下降到接近零,导致它运行极其的慢。 * 修复autovacuum启动器中长期的内存泄露 (Alvaro Herrera) * 避免试图从一个事务外面报告一个迫近的事务概括条件时的失败 (Tom Lane) 这个监督防止了事务概括太近之后的恢复,因为数据库启动处理会失败。 * 添加支持检测寄存器栈在`IA64`上溢出 (Tom Lane) `IA64`体系结构有两个硬件堆栈。全面预防堆栈溢出失败都需要检查。 * 添加一个`copyObject()`中堆栈溢出的检查 (Tom Lane) 某些代码路径会由于给出足够复杂的查询堆栈溢出而崩溃。 * 修复临时GiST索引中页面分裂的检测 (Heikki Linnakangas) 在一个临时索引中有"并发的"页分裂是可能的,例如有一个打开的游标在插入时扫描索引。 GiST未能检测这种情况,并且因此可能当游标的执行继续时交付错误的结果。 * 修复早期连接过程期间的错误检查 (Tom Lane) 太多子进程的检查在某些情况下是跳过的, 可能会导致试图添加新的子进程到固定大小的数组时postmaster崩溃。 * 提高窗口函数的效率 (Tom Lane) 某些情况需要提前读取大量的元组,但是`work_mem`足够大的允许它们都在内存中进行, 这会出乎意料的慢。尤其是`percent_rank()`, `cume_dist()` 和 `ntile()`有这个问题。 * 避免`ANALYZE`复杂的索引表达式时的内存泄露 (Tom Lane) * 确保使用整行Var的索引依赖于它的表 (Tom Lane) 一个像`create index i on t (foo(t.*))`这样声明的索引, 当它的表被删除时它不会自动被删除。 * 在`DROP OWNED BY`中为删除属于一个用户的外部数据封装/服务器权限添加缺失支持 (Heikki Linnakangas) * 不要用多个`OUT`参数"inline"一个SQL函数 (Tom Lane) 这避免了由于丢失关于预期的结果行类型的信息而引起的可能的崩溃。 * 修复内联一个参数列表包含一个引用可内联的用户函数的设置返回函数时的崩溃 (Tom Lane) * 如果`ORDER BY`, `LIMIT`, `FOR UPDATE`, 或 `WITH`附属于`INSERT ... VALUES`的`VALUES`部分则行为正确 (Tom Lane) * 使`OFF`关键字无限制 (Heikki Linnakangas) 这阻止了在PL/pgSQL中使用`off`作为变量名的问题。 在9.0之前是好用的,但是现在打破了,因为PL/pgSQL 现在将所有的内核保留字作为保留的。 * 修复`COALESCE()`表达式的常量部分 (Tom Lane) 规划器有时试图计算子表达式,实际上从未达成,可能导致预想不到的错误。 * 修复"could not find pathkey item to sort"规划器带有整行Vars比较失败 (Tom Lane) * 修复连接接受(`accept()`或在它之后立即做的调用中的一个)失败时的postmaster崩溃, 并且postmaster是用GSSAPI支持编译的 (Alexander Chernikov) * 在从RADIUS认证服务器接收到一个无效的响应包之后重试 (Magnus Hagander) 这修复了一个低风险潜在拒绝服务的情况。 * 修复了`log_temp_files`活跃时错过了删除临时文件 (Tom Lane) 如果在试图发出日志消息时发生错误,删除文件没有做,导致临时文件的积累。 * 为`InhRelation`节点添加打印功能 (Tom Lane) 这避免了启动`debug_print_parse`和执行确定类型的查询时的失败。 * 修复了从一个点到一个水平线段的距离的不正确的计算 (Tom Lane) 这个错误影响几个不同的几何距离测量操作。 * 修复ecpg中交易状态的不正确的计算 (Itagaki Takahiro) * 修复psql的Unicode逃逸支持中的错误 (Tom Lane) * 当归档包含许多大对象(blobs)时加速并行的pg_restore (Tom Lane) * 修复PL/pgSQL处理"简单的"表达式,以不在递归或错误恢复的情况下失败 (Tom Lane) * 修复PL/pgSQL错误报告no-such-column的情况 (Tom Lane) 截止到9.0,有时会报告"missing FROM-clause entry for table foo", 而此时"record foo has no field bar"将会更合适。 * 修复分配到元组字段时PL/Python遵从typmod(也就是,长度或精度限制) (Tom Lane) 这修复了从8.4的回归。 * 修复PL/Python处理设置返回函数 (Jan Urbanski) 试图在迭代器中调用SPI函数生成一个设置结果将会失败。 * 修复`contrib/cube`的GiST picksplit算法中的错误 (Alexander Korotkov) 这可能会导致大量的低效,尽管不是实际上错误的答案,在`cube`字段上的GiST索引中。 如果你有这样的一个索引,那么考虑在安装这个更新之后`REINDEX`它。 * 不要在`contrib/dblink`中发出"identifier will be truncated"通知, 除非创建新的连接时 (Itagaki Takahiro) * 修复`contrib/pgcrypto`中丢失公钥潜在的内核转储 (Marti Raudsepp) * 修复`contrib/pg_upgrade`中的缓冲区溢出 (Hernan Gonzalez) * 修复`contrib/xml2`的XPath查询函数中的内存泄露 (Tom Lane) * 更新失去数据文件为tzdata版本2010o,因为DST规律在Fiji和Samoa发生了改变; 还有Hong Kong的历史修正。