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

# E.20. 版本9.2.4

> 发布日期: 2013-04-04

该版本包含了9.2.3的各种修复。关于9.2主要版本的新功能信息，请参阅第 E.24 节。

## E.20.1. 迁移到版本9.2.4

为了运行9.2.X不需要转储/恢复。

然而，该版本修正了GiST索引管理的一些错误。在安装这个更新之后，`REINDEX` 任何GiST索引满足一个或更多个下面描述的条件是明智的。

同时，如果你正从9.2.2更早版本中更新，参阅第 E.22 节。

## E.20.2. 变化

- 修复服务器命令行开关安全解析(Mitsumasa Kondo, Kyotaro Horiguchi)

  包含以"`-`"开头的数据库名字的连接请求可以用来损坏或者破坏 服务器的数据目录文件，即使最终拒绝该请求。(CVE-2013-1899)

- 在每个postmaster子进程中重置OpenSSL随机状态(Marko Kreen)

  通过`contrib/pgcrypto`函数产生的随机数 可能对于另外一个猜测的数据库用户相对容易，避免这种情况。 当postmaster使用`ssl` = `on`被配置时，该风险是非常显著的， 但是大多数连接不能使用SSL加密。 (CVE-2013-1900)

- 使用REPLICATION权限检查测试当前用户不是认证用户(Noah Misch)

  一个未经授权的数据库用户可以利用这个错误调用`pg_start_backup()`或者`pg_stop_backup()`, 因此可能干扰常规备份的创建。(CVE-2013-1901)

- 当不适合这样执行时，不使用"fuzzy"几何比较修复GiST索引。(Alexander Korotkov)

  核心几何类型使用"fuzzy"等式执行比较，但是`gist_box_same`必须执行 精确比较，否则GiST索引使用它可能变得不一致。安装这个更新之后， 用户应该在`box`, `polygon`, `circle`或者`point`列上 `REINDEX`任何GiST索引，因为所有这些使用`gist_box_same`。

- 修复不正确的范围并集以及为了可变宽度数据类型使用`contrib/btree_gist`的GiST索引中惩罚逻辑， 也就是`text`, `bytea`, `bit`和`numeric`列(Tom Lane)

  这些错误可能导致不一致索引，其中一些出现的关键字不会被搜索发现，并且在无用的索引膨胀中， 在安装此更新后建议用户`REINDEX`这种索引。

- 修复为多列索引在GiST页中分离代码的错误(Tom Lane)

  这些错误可能导致不一致索引，其中一些出现的关键字不会被搜索发现， 并且在索引中是不必要的无效的搜索。 在安装此更新后建议用户`REINDEX`多列GiST索引。

- 修复`gist_point_consistent`处理模糊一致性(Alexander Korotkov)

  在`point`列GiST索引上的索引扫描可能有时产生不同于顺序扫描的结果， 因为`gist_point_consistent`不同意底层操作编码关于是否精确或者模糊的执行比较。

- 在WAL重放中修复缓冲区泄露(Heikki Linnakangas)

  在回放期间这个缺陷可能产生"不正确的本地针数"错误，使得恢复不可能。

- 确保我们在进入归档恢复前执行故障修复，如果数据库没有规则地中断，并且`recovery.conf`文件 是存在的(Heikki Linnakangas, Kyotaro Horiguchi, Mitsumasa Kondo)

  这需要确保数据库在一定情况下的一致性， 比如初始化一个来自运行的服务器上的文件系统快照的备用服务器。

- 避免在崩溃恢复期间删除未归档的WAL文件(Heikki Linnakangas, Fujii Masao)

- 修复`DELETE RETURNING`中的紊乱情况(Tom Lane)

  在这样的情况下，`DELETE RETURNING`试图从当前进程不再有任何针的 共享缓冲区中抓取数据。 如果一些其他进程同时改变缓冲区，这将导致垃圾`RETURNING`输出，甚至崩溃。

- 修复规则表达式编译中的无限循环风险(Tom Lane, Don Porter)

- 修复规则表达式编译中潜在的空指针引用(Tom Lane)

- 合适的地方修复`to_char()`只使用ASCII大小写折叠规则(Tom Lane)

  这种修复一些区域独立化的模板模式的不当行为，但是 在Turkish区域中胡乱操作"`I`"和 "`i`"。

- 修复时间戳`1999-12-31 24:00:00`不必要的拒绝(Tom Lane)

- 修复SQL语言函数可以安全的用于支持范围类型的函数(Tom Lane)

- 当一个事务执行`UNLISTEN`然后`LISTEN`时，修复逻辑错误(Tom Lane)

  该会话根本不监听通知事件，尽管它确实在这种情况下应该监听。

- 在列被添加到依赖于其他视图的视图中之后修复可能的规划器崩溃(Tom Lane)

- 修复`EXPLAIN (ANALYZE, TIMING OFF)`中的性能问题(Pavel Stehule)

- 删除无效的"picksplit不支持的二次分裂"日志消息(Josh Hansen, Tom Lane)

  该消息似乎被添加到从未写入的期望代码中，并且可能从来不是，因为二次分裂的GiST的缺省处理 实际上相当好。所以停止打扰关于它的最终用户。

- 删除`gist_box_picksplit()`中残留的二次分裂支持(Tom Lane)

  这不仅是二次分裂的实现不如缺省实现，它实际上更糟。 所以删除它并让缺省代码路径处理该情况。

- 修复发送会话的 最后几个事务提交/终止计数到统计收集器的可能错误(Tom Lane)

- 消除在PL/Perl中的`spi_prepare()`函数的内存泄露(Alex Hunsaker, Tom Lane)

- 修复pg_dumpall以处理正确包含"`=`"的 数据库名字(Heikki Linnakangas)

- 当给定一个不正确的连接字符串时，避免pg_dump中崩溃(Heikki Linnakangas)

- 忽略pg_dump和pg_upgrade中的无效索引(Michael Paquier, Bruce Momjian)

  备份无效索引可能导致恢复时间的问题， 比如如果索引创建失败的原因是它试图强制 不满足表的数据的唯一性条件。同时，如果索引创建实际上仍然在进行中， 认为它是一个不受约束的DDL变化似乎是合理的，其中pg_dump 不期望备份。pg_upgrade现在也跳过无效索引而非失败。

- 在pg_basebackup中，当备份表空间时，仅仅包含当前服务器版本的子目录 (Heikki Linnakangas)

- 在pg_basebackup和 pg_receivexlog中添加服务器版本检查， 因此它们与不工作的版本联合失败(Heikki Linnakangas)

- 修复`contrib/dblink`以安全地处理`DateStyle`或者`IntervalStyle`的 不一致设置(Daniel Farina, Tom Lane)

  先前，如果远程服务器有这些参数的不同设置，可能错误地读取模糊日期。 这个修复确保了通过`dblink`查询抓取的日期时间和间隔列将正确的被解释。 注意然而这个不一致的设置仍然有风险，因为出现在SQL命令中发送到远程服务器的文本值可能 比他们局部的有不同的解释。

- 修复`contrib/pg_trgm`的`similarity()`函数为少于三个的字符串返回零(Tom Lane)

  先前它返回`NaN`由于内部除以零。

- 使用Microsoft Visual Studio 2012启动编译PostgreSQL (Brar Piening, Noah Misch)

- 为了Chile, Haiti, Morocco, Paraguay和一些Russian区域中DST变化规律更 新时间区域数据文件到tzdata版本2013d。 同时为更多地方修正历史区域数据。

  同时，为俄罗斯和其他地方的最近变化更新时区缩写文件：`CHOT`, `GET`, `IRKT`, `KGT`, `KRAT`, `MAGT`, `MAWT`, `MSK`, `NOVT`, `OMST`, `TKT`, `VLAT`, `WST`, `YAKT`, `YEKT`现在遵从他们当前的含义，以及 `VOLT` (Europe/Volgograd)和`MIST`(Antarctica/Macquarie) 被添加到缺省缩写列表中。

上一页 | 起始页 | 下一页
版本9.2.5 | 上一级 | 版本9.2.3