Toggle navigation
PostgreSQL中文社区
首页
(current)
社区新闻
中文文档
加入ACE
相关资料
了解PostgreSQL
PostgreSQL相关文档
PostgreSQL软件下载
PostgreSQL中文图书
社区年会PPT资料
关于中文社区
注册
登录
所有版本列表
首页
新版本发布声明
PostgreSQL 10.4版本发布说明
翻译:
doudou586
... 新闻稿采编:
2018-05-13 23:41:55+08
软件发布:2018-05-10
2018-05-10,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()函数中有过于宽松的权限控制 请浏览以下的“系统更新”段落了解安装后应执行的步骤。 ## BUG修正和改进 本次更新修正了近三个所上报的超过50个Bug。部分Bug仅影响10版本,但大部分都对目前在支持的版本有影响。 这些修正包括: - 在几个内置函数中修正“不正确的函数非稳态和并行安全标记”的问题,以确保正确的查询优化; - 几处有关分区的修正,包括潜在的宕机以及允许布尔值TRUE 和 FALSE 作为分区边界; - 修正当一条记录值可以标记为dead-but-not-yet-vacuumed(已呆死但还未清除)的 TOAST OID,这样会导致类似“unexpected chunk number 0 (expected 1) for toast value nnnnn"的错误提示; - 修正"CREATE TABLE ... LIKE"在32位平台上使用bigint identity 列的问题; - 修正一个查询在重复执行hash join时的内存泄漏; - 几处使用GROUPING SET的查询可能引起宕机的问题; - 在提交一个预处理的事务时,避免当一个”查询取消“或是”会话强制终止“的中断导致的问题; - 在autovacuum自动清理进程的计划中减少锁定,以防止潜在的进程并发操作的失效; - 修正可能的REFRESH MATERIALIZED VIEW CONCURRENTLY (并发刷新物化视图)的低效执行; - 几处使用"index-only"扫描的查询规划更新; - 在使用SERIALIZABLE或是REPEATABLE READ的事务模式下并发执行CREATE INDEX CONCURRENTLY指令时的更新,以避免死锁的发生; - 几处对SP-GiST 索引的修正,包括TEXT字段列的搜索时的内码自适应; - 修正几处有关GiST, SP-GiST 和 Bloom 索引的分区表对记录记数的处理; - 几处有关逻辑解码和复制的更新; - 修正在导出时,几处对使用列表值类型的GUC变量的不合适的引用,包括local\_preload\_libraries, session\_preload\_libraries, shared\_preload\_libraries, temp\_tabl espaces; - 几处对 pg\_stat\_activity的更新; - 几处对ecpg的更新; - 修正pg\_recvlogical,以保证与PostgreSQL 10以下版本的兼容性; - 几处有关pg_rewind的更新; 本次更新也包含2018d版本的时区数据,包括对Palestine 和Antarctica时区的更新,加上对Portugal及其殖民属地历史数据的更新,也包括Enderbury, Jamaica, Turks & Caicos Islands 和Uruguay。 ## 系统更新 所有PostgreSQL的更新版本是累进方式的。对一般小版本的更新,并不需要用户对数据进行导出和导入或是使用pg_upgrade进行更新(不过对这次更新,用户需要浏览下面有关"volatility 和 parallel-safety 函数标记的段落操作"),只需要停止PostgreSQL服务,更新一下服务器的二进制文件即可。 用户跳过了一个或是多个补丁版本可能也需要额外的后续操作,请浏览详细的发布说明来检查更早版本升级的细节。 ## 安装后处理CVE-2018-1115问题的步骤 如果你在PostgreSQL 9.6或是10版本安装了"adminpack"扩展,你需要使用数据库管理员的权限在所有安装了“adminpack”扩展的数据库,运行以下指令: ``` ALTER EXTENSION adminpack UPDATE; ``` ## 安装后对 MARKINGS 功能的处理步骤 ### 应标记为"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表中,手工在更新函数的标记内容。你可以使用数据库管理员权限,通过执行以内容实现目的: ``` /* 应标记为 "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; /* 应标记为 "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://www.postgresql.org/download/ - 发布声明的详细文档: https://www.postgresql.org/docs/current/static/release.html - 安全说明页面: https://www.postgresql.org/support/security/ - 版本策略页面: https://www.postgresql.org/support/versioning/ - 关注我们Twitter的帐号 @postgresql : https://twitter.com/postgresql
© 2010 PostgreSQL中文社区