2025年9月25日: PostgreSQL 18 发布!

PostgreSQL 10.4、9.6.9、9.5.13、9.4.18 和 9.3.23 已发布!

发布于 2018-05-10,作者:PostgreSQL Global Development Group
PostgreSQL 项目

PostgreSQL 全球开发组发布了我们数据库系统所有支持版本的更新,包括 10.4、9.6.9、9.5.13、9.4.18、9.3.23。本次发布修复了一个安全问题以及过去三个月报告的若干 bug。用户应计划在下次方便的停机时间进行更新。

请参阅“更新”部分,了解有关安全修复和“不正确的易变性和并行安全性标记”修复的安装后步骤。

请注意,PostgreSQL 在 10.0 版本发布时更改了其版本方案,因此从 10.0、10.1、10.2 或 10.3 更新到 10.4 版本被视为次要更新。

安全问题

本次发布修复了一个安全漏洞

  • CVE-2018-1115:函数 pg_logfile_rotate() 的访问控制列表过于宽松

请参阅下面的“更新”部分,了解更新后的步骤。

错误修复和改进

本次更新还修复了过去几个月报告的 50 多个 bug。其中一些问题仅影响 10 版本,但许多问题影响所有支持的版本。

这些修复包括:

  • 修复了多个内置函数不正确的易变性 (volatility) 和并行安全性 (parallel-safety) 标记,以确保正确的查询计划优化。
  • 对分区进行了多项修复,包括潜在的崩溃以及允许将 TRUE 和 FALSE 用作分区边界。
  • 修复了新 TOAST 值可能被分配给一个已删除但尚未 vacuum 的 TOAST OID 的问题,这将导致类似“toast value nnnnn 的意外块编号 0(预期为 1)”的错误。
  • 修复了 32 位平台上具有 bigint 标识列的“CREATE TABLE ... LIKE”问题。
  • 修复了查询重复执行哈希连接时内存泄漏的问题。
  • 修复了使用 GROUPING SET 的查询相关的多处崩溃。
  • 在提交预备事务时,避免在发生查询取消或会话终止中断时失败。
  • 减少了自动 vacuum 工作进程调度期间的锁定,这可以防止潜在工作进程并发性的丢失。
  • 修复了 REFRESH MATERIALIZED VIEW CONCURRENTLY 可能执行缓慢的问题。
  • 修复了使用“仅索引扫描 (index-only)”的查询计划相关的多处问题。
  • 在 SERIALIZABLE 或 REPEATABLE READ 事务隔离级别下运行时,避免并发 CREATE INDEX CONCURRENTLY 命令发生死锁。
  • 修复了 SP-GiST 索引的多处问题,包括文本列上的一个与排序规则相关的搜索。
  • 修复了与计算部分 GiST、SP-GiST 和 Bloom 索引中的元组数量相关的问题。
  • 对逻辑解码和复制进行了多项修复。
  • 修复了转储中列表值 GUC 变量(例如 local_preload_libraries、session_preload_libraries、shared_preload_libraries、temp_tablespaces)的值的错误引用。
  • 修复了 pg_stat_activity 的多处问题。
  • 修复了 ecpg 的多处问题。
  • 修复了 pg_recvlogical,以确保与 10 版本之前的 PostgreSQL 版本兼容。
  • 修复了 pg_rewind 的多处问题。

本次更新还包含 tzdata 2018d 版本,增加了对巴勒斯坦和南极洲(凯西站)的更新,以及对葡萄牙及其殖民地、恩德伯岛、牙买加、特克斯和凯科斯群岛以及乌拉圭的历史修正。

更新

所有 PostgreSQL 更新版本都是累积的。与其它次要版本一样,用户不需要转储和重新加载其数据库或使用 pg_upgrade 来应用此更新版本(尽管对于此版本,请参阅关于“易变性和并行安全性标记”的说明);您可以简单地关闭 PostgreSQL 并更新其二进制文件。

跳过了一个或多个更新版本的用户可能需要执行额外的、更新后的步骤;有关详细信息,请参阅早期版本的发布说明。

CVE-2018-1115 的安装后步骤

如果您在任何 PostgreSQL 9.6 或 10 版本中安装了“adminpack”,则需要让您的数据库管理员在安装了“adminpack”的每个数据库中运行以下命令。

ALTER EXTENSION adminpack UPDATE;

函数标记的安装后步骤

应标记为“volatile”的函数:

  • cursor_to_xml
  • cursor_to_xmlschema
  • query_to_xml
  • query_to_xml_and_xmlschema
  • query_to_xmlschema

应标记为“parallel-unsafe”的函数:

  • binary_upgrade_create_empty_extension,
  • brin_desummarize_range
  • brin_summarize_new_values
  • brin_summarize_range
  • cursor_to_xml
  • cursor_to_xmlschema
  • gin_clean_pending_list
  • pg_import_system_collations
  • ts_rewrite
  • ts_stat

如果您使用上述任何函数,可以通过以下方式更新标记:

选项 1:在您使用的每个数据库的“pg_proc”表中手动更新标记。

这些函数。您可以通过以数据库超级用户的身份执行以下命令来完成此操作。

/* Functions that should be marked "volatile" */
ALTER FUNCTION pg_catalog.cursor_to_xml(refcursor, int, boolean, boolean, text) VOLATILE;
ALTER FUNCTION pg_catalog.cursor_to_xmlschema(refcursor, boolean, boolean, text) VOLATILE;
ALTER FUNCTION pg_catalog.query_to_xml(text, boolean, boolean, text) VOLATILE;
ALTER FUNCTION pg_catalog.query_to_xml_and_xmlschema(text, boolean, boolean, text) VOLATILE;
ALTER FUNCTION pg_catalog.query_to_xmlschema(text, boolean, boolean, text) VOLATILE;
/* Functions that should be marked "parallel-unsafe" */
ALTER FUNCTION pg_catalog.binary_upgrade_create_empty_extension(text, text, bool, text, _oid, _text, _text) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.brin_desummarize_range(regclass, bigint) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.brin_summarize_new_values(regclass) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.brin_summarize_range(regclass, bigint) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.cursor_to_xml(refcursor, int, boolean, boolean, text) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.cursor_to_xmlschema(refcursor, boolean, boolean, text) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.gin_clean_pending_list(regclass) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.pg_import_system_collations(regnamespace) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.ts_rewrite(tsquery, text) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.ts_stat(text) PARALLEL UNSAFE;
ALTER FUNCTION pg_catalog.ts_stat(text, text) PARALLEL UNSAFE;

选项 2:运行 pg_upgrade 到包含正确标记数据的版本(例如 10.4 及更高版本)。

链接

  • 下载:https://postgresql.ac.cn/download/
  • 发行说明:https://postgresql.ac.cn/docs/current/static/release.html
  • 安全页面:https://postgresql.ac.cn/support/security/
  • 版本策略:https://postgresql.ac.cn/support/versioning/
  • 在 Twitter 上关注 @postgresql:https://twitter.com/postgresql