E.15. 发布9.1.4
发布日期: 2012-06-04
这个发布包含来自9.1.3的各种修复。 关于9.1主要版本的新功能信息, 参阅Section E.19。
E.15.1. 迁移到版本9.1.4
为了运行9.1.X不需要转储/恢复。
然而,如果你使用citext
数据类型, 并且通过运行pg_upgrade升级原先主版本,你 应该运行CREATE EXTENSION citext FROM unpackaged
为了避免citext
操作中排序相关故障。 如果你从包含citext
数据类型 的实例中的9.1之前数据库中恢复备份,那么同样是必须的。 在更新到9.1.4之前如果你已经运行CREATE EXTENSION
命令, 你反而需要手动目录更新正如下面第三个日志项解释的。
另外,如果你从9.1.2更早版本进行更新, 参阅9.1.2发布说明。
E.15.2. 变化
修复
contrib/pgcrypto
的DEScrypt()
函数中 不正确密码转换(Solar Designer)如果密码字符串包含字节值
0x80
,那么忽略剩余的密码, 导致密码比它出现的更加弱。 使用这个修复,剩余字符串被恰当地包含在DES哈希中。 受这个错误影响的任何存储密码值将不再匹配,因此 存储值可能需要被更新。(CVE-2012-2143)为一个程序语言的调用处理程序忽略
SECURITY DEFINER
和SET
属性(Tom Lane)应用这些属性到调用处理器可以使服务器崩溃(CVE-2012-2655)
尝试
contrib/citext
的更新脚本修复citext
数组的排序规则和超过citext
的域(Tom Lane)发布9.1.2为
citext
列的排序规则和来自9.1之前安装的数据库更新或者重载中的 索引提供修复。但是这个修复是不完整的:它忽略处理数组和citext
上的域。 这个发布扩展模块的更新脚本以处理这些情况。 如以前,如果你已经运行更新脚本,你将需要手动运行排序规则更新命令。 参阅9.1.2发布说明获取更多关于做这个的详细信息。允许
timestamp
输入 中数值时区偏移量远离UTC达到16小时(Tom Lane)一些历史时区有大于15小时的偏移量,先前限制。 这可能导致备份数据值在重载期间被拒绝。
当给定时间恰恰是当前时区的最后DST转变时间时, 修复时间戳转换处理(Tom Lane)
这次疏忽已有很长时间,但是以前没有被注意到, 因为假设大多数DST时区有未来DST转换的不明确的序列。
修复
text
到name
并且char
到name
投射以便在 多字节编码中正确执行字符串截断(Karl Schnaitter)修复
to_tsquery()
中内存拷贝错误(Heikki Linnakangas)当在热备中执行时, 确保
txid_current()
报告正确时期(Simon Riggs)修复子查询内PlaceHolderVars外的规划器处理 (Tom Lane)
这个错误涉及到子SELECT,它引用来自周围查询的外部连接的空侧的变量。 在9.1中,这个错误影响的查询可能 伴随有"错误:在不被预期的地方发现上层PlaceHolderVar"而失败。 但是在9.0和8.4中,你可能默默地获得可能的错误结果,因为当需要时, 传递到子查询中的值不能定位到空。
修复有不是简单变量输出列的
UNION ALL
子查询计划(Tom Lane)这种情况下的规划在9.1中有着明显恶化,作为 错误修正"MergeAppend子目标列不匹配MergeAppend"错误的结果。 恢复那个修复并且以另一种方式执行它。
当
pg_attribute
非常大时, 修复缓慢会话启动(Tom Lane)如果
pg_attribute
超过了shared_buffers
的四分之一, 在会话开始时有时需要缓存重建代码可以触发同步扫描逻辑, 导致它采取比正常更长的时间。 如果许多新会话马上开始,那么问题是相当严重的。确保顺序扫描合理地检查查询取消(Merlin Moncure)
遇到许多包含非活跃元组连续页的扫描不会同时响应中断。
确保返回之前
PGSemaphoreLock()
清除ImmediateInterruptOK
的Windows实现(Tom Lane)这种疏忽意味着在同一个查询中后来收到的查询取消中断可能在不安全时间 被接受,伴随着不可预知的但不好的结果。
当输出视图或者规则时,安全显示整行变量(Abbas Butt, Tom Lane)
涉及歧义名字(也就是说,该名字可以是一个表或者查询的列名)的情况被以模糊方式输出, 冒险转储和重载之后不同地解释视图或者规则。 通过附加无操作计算避免模凌两可的情况。
修复
COPY FROM
以正确处理与无效编码一致的空标记字符串(Tom Lane)一个空标记字符串比如
E'\\0'
应该工作, 并且工作于过去,但是这种情况在8.4中被打破。修复
EXPLAIN VERBOSE
为可写CTE包含RETURNING
子句 (Tom Lane)在咨询锁存在下修复
PREPARE TRANSACTION
以正常工作(Tom Lane)从历史看,
PREPARE TRANSACTION
简单忽略了任何会话持有的会话级别 咨询锁,但是这种情况在9.1中被意外损坏。修复未记录表的截断(Robert Haas)
在
search_path
的非交互式分配中忽略缺失模式(Tom Lane)这重新排列带有旧分支的9.1的操作。先前9.1可能 为从某地比如
ALTER DATABASE SET
中获得的search_path
设置中提及的不存在的模式而抛出错误。修复用于扩展脚本的临时或者短暂表的错误(Tom Lane)
这个包含比如在扩展更新脚本中重写
ALTER TABLE
的情况, 因为在该场景后使用临时表。确保autovacuum工作进程恰当执行堆栈深度检查(Heikki Linnakangas)
先前,通过自动
ANALYZE
调用的无限递归函数可以使工作进程崩溃。修复日志收集器在高负载下没有丢失日志一致性(Andrew Dunstan)
如果它太忙,那么收集器先前可能重新收集大的信息失败。
修复日志收集器以确保它在接收SIGHUP之后 重启文件旋转(Tom Lane)
修复GiST索引中"太多LWLocks采取"错误 (Heikki Linnakangas)
如果索引随后被删除,那么修复GIN索引WAL重放逻辑而不失败(Tom Lane)
正确检测崩溃后预备事务的SSI冲突(Dan Ports)
当提交一个仅仅修改临时表的事务时,避免同步复制延迟(Heikki Linnakangas)
在这种情况下事务的提交记录不需要冲刷到备用服务器,但是 一些代码并不知道等待它发生。
修复pg_basebackup中的错误处理(Thomas Ogrisegg, Fujii Masao)
如果连接中断, 那么修复walsender不进入一个繁忙循环中(Fujii Masao)
修复PL/pgSQL的
RETURN NEXT
命令中的内存泄露 (Joe Conway)当目标是函数的第一个变量时,那么修复PL/pgSQL的
GET DIAGNOSTICS
命令(Tom Lane)确保PL/Perl包具有
_TD
变量(Alex Hunsaker)当它们被嵌套在改变当前包的函数调用中时,这个错误导致 触发器调用失败。
修复返回复合类型的PL/Python函数以接受结果值的字符串(Jan Urbanski)
这种情况通过9.1附加到 允许提供其他格式的复合结果值而被意外的打断,比如词典。
在psql的可扩展显示(
\x
)模式中 修复内存结尾潜在访问(Peter Eisentraut)当数据库包含许多对象时,那么修复pg_dump中的 一些性能问题(Jeff Janes, Tom Lane)
如果数据库包含许多视图,或者如果许多对象在依赖循环中, 或者如果有许多拥有的序列,那么pg_dump可能会很慢。
当读取目录格式归档时,修复内存和pg_restore中的 文件描述符泄露(Peter Eisentraut)
为数据库存储在 集群中的缺省表空间中包含表的非默认表空间的情况 而修复pg_upgrade(Bruce Momjian)
在ecpg中,修复罕见内存泄露并且
sqlca_t
结构后可能覆盖一个字节(Peter Eisentraut)修复
contrib/dblink
的dblink_exec()
不泄露临时数据库连接错误(Tom Lane)修复
contrib/dblink
以 报告错误消息中正确连接名(Kyotaro Horiguchi)当删除多个大对象的时候, 修复
contrib/vacuumlo
以使用多个事务(Tim Lewis, Robert Haas, Tom Lane)当多个对象需要被删除的时候, 这个改变避免超过
max_locks_per_transaction
。 该操作可以被调整为具有新的-l
(限制)选项。为了在Antarctica, Armenia, Chile, Cuba, Falkland Islands, Gaza, Haiti, Hebron, Morocco, Syria和 Tokelau Islands中DST变化规律 更新时区数据文件到tzdata发布2012c; 同时为Canada历史修正。