E.113. 版本 9.0.18

E.113.1. 迁移到版本 9.0.18
E.113.2. 修改列表

发布日期:. 2014-07-24

这个版本包含各种自9.0.17以来的修复。想要获得关于9.0主版本的新特性信息, 请参阅第 E.131 节

E.113.1. 迁移到版本 9.0.18

运行9.0.X的系统不需要转储/恢复。

这个版本纠正了一些GiST索引中索引损坏的问题。查看下面的第一个修改日志项, 找出您的安装是否受到了影响,和如果受到影响应该采取的步骤。

另外,如果你是从一个早于9.0.15的版本升级而来,请参阅第 E.116 节

E.113.2. 修改列表

  • 正确的初始化bit字段上contrib/btree_gist 索引中的填补字节 (Heikki Linnakangas)

    由于值应该是比较相等而不是看做相等,所以这个错误会导致不正确的查询结果。 在bitbit varying字段上有GiST索引的用户应该在安装此更新后 REINDEX这些索引。

  • 在删除GIN列表页时保护撕裂的页面 (Heikki Linnakangas)

    如果系统崩溃发生在页更新写入磁盘时,这个修复阻止了可能的索引损坏。

  • 在从WAL中重放更新时,不要清理GiST索引页的右连接 (Heikki Linnakangas)

    这个错误会导致来自热备份上执行的GiST索引扫描的瞬态错误回复。

  • 修复ReceiveSharedInvalidMessages嵌套调用期间, 可能不正确的缓存失效 (Andres Freund)

  • 如果有一个设置返回函数在查询的目标列表中, 呢么不要假设它的输出是唯一的 (David Rowley)

    这个疏忽会导致像WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP BY y)这样的构造的错误最优化。

  • 修复未能detoast结构化类型的复合元素中的字段 (Tom Lane)

    这纠正了TOAST指针没有解除引用就被拷贝到其他表的情况。 如果原来的数据稍后被删除了,那么在使用当前的悬摆指针时, 会导致像missing chunk number 0 for toast value ...这样的错误。

  • 修复整行引用到附加计划节点输出的record type has not been registered 失败 (Tom Lane)

  • 修复在倒回游标时调用用户定义的函数时可能的崩溃 (Tom Lane)

  • 修复评估FROM中的一个函数的参数时,查询寿命的内存泄露 (Tom Lane)

  • 修复规则表达式处理中的会话寿命内存泄露 (Tom Lane, Arthur O'Dwyer, Greg Stark)

  • 修复hungarian.stop中的数据编码错误 (Tom Lane)

  • 修复在当前事务中插入然后被子事务的回滚删除的行的活跃性检查 (Andres Freund)

    如果在相同的事务中稍后执行了CREATE INDEXCLUSTER, 这会导致问题(至少是虚假的警告,最坏是无限循环)。

  • PREPARE TRANSACTION期间清理 pg_stat_activity.xact_start (Andres Freund)

    PREPARE之后,起始会话不再在事务中,所以它不能显示事务开始时间。

  • 修复REASSIGN OWNED,使其在文本搜索对象上不会失败 (Álvaro Herrera)

  • 在主服务器启动期间封锁信号 (Tom Lane)

    这确保了主服务器在它,比如仍在启动时收到SIGINT, 之后将正确的清理。

  • make check期间保护临时主服务器启动的Unix域套接字 (Noah Misch)

    任何可以访问该套接字文件的本地用户都可以作为服务器的超级用户连接, 然后继续执行操作系统用户运行测试的任意代码, 就像我们之前在CVE-2014-0067中记录的那样。 这个修改通过将服务器的套接字放在/tmp下临时的、 模式0700的子目录中防止风险。在不支持Unix套接字的平台上仍然有该风险, 尤其是Windows,因为临时主进程必须接受本地TCP连接。

    这个修改的一个有用的副作用是在重写DEFAULT_PGSOCKET_DIR 的建立中简化make check测试。流行的需要绕开的非缺省值, 像/var/run/postgresql,通常不是建立用户可写的, 将不再是必须的了。

  • 修复表空间创建WAL重放,以在Windows上工作 (MauMau)

  • 修复Windows上套接字创建失败的检测 (Bruce Momjian)

  • 在Windows上,允许新的会话从配置文件中读取PGC_BACKEND 参数的值(比如log_connections) (Amit Kapila)

    以前,如果这样的参数在文件启动之后做了修改,那么该修改将没什么影响。

  • 在Windows上正确的引用可执行路径名 (Nikhil Deshpande)

    这个疏忽会导致initdbpg_upgrade 在Windows上失败,如果安装路径既包含空格又包含@符号。

  • 修复macOS上的libpython链接 (Tom Lane)

    我们以前使用的方法在Xcode 5.0和以后的版本提供的Python库中是不行的。

  • 在服务器持续以比客户端可接收的速度发送数据时, 避免libpq中的缓冲区膨胀 (Shin-ichi Morita, Tom Lane)

    可以强迫libpq扩大它的输入缓冲区,直到它耗尽内存 (这会误导的报告为丢失与服务器的同步)。在普通情况下, 比较难获取到数据持续传输的比recv()循环可接收的快, 但是在通过调度器约束手动的将客户端变慢的情况下可以观察到。

  • 确保libpq中的LDAP查找尝试像预期的那样超时 (Laurenz Albe)

  • 修复ecpg,在FETCH语句的目标是char *类型的数组时, 返回多于一行,还有一些其他数组处理修复 (Ashutosh Bapat)

  • 修复pg_restore对老旧风格的大对象注释的处理 (Tom Lane)

    9.0之前版本的pg_dump生成的归档文件中, 如果包含稍多一些大对象的注释,那么直接到数据的转储通常会失败。

  • contrib/pgcrypto函数中, 确保在返回前清除了堆栈变量中的敏感信息 (Marko Kreen)

  • contrib/uuid-ossp中,在调用间缓存OSSP UUID库的状态 (Tom Lane)

    这提高了UUID生成的效率并减少了从/dev/urandom中获得的熵的数量, 在有它们的平台上。

  • 更新时区数据文件到tzdata版本2014e, 因为DST规律在Crimea、Egypt和Morocco发生了改变。