Documentation Home
MySQL 5.7 发行说明  /  MySQL 5.7.30 的变化(2020-04-27,正式发布)

MySQL 5.7.30 的变化(2020-04-27,正式发布)

JSON 注释

  • MySQL 附带的rapidjson库已升级到 2020 年 1 月 16 日的 GitHub 快照。添加了针对在 Mac OS X 上从快照构建时遇到的编译器错误的修复程序。(缺陷号 30898701)

包装说明

  • 包含curl而不是链接到系统curl库的二进制包已升级为使用curl7.69.0。(缺陷号 30866333)

  • 捆绑libedit库已升级到 3.1 版。(错误#28939380、错误#20770875、错误#22930525、错误#22332089、错误#27433491、错误#27285445)

修正错误

  • InnoDB:row_upd_clust_rec_by_insert聚集索引记录标记为已删除并将记录的更新版本插入聚集索引的函数将不正确的n_ext值(外部字段的总数)传递给较低级别​​的函数,导致断言失败。(缺陷号 30437378)

  • InnoDB:innodb_buffer_pool_evict使用调试变量设置 执行的操作 uncompressed导致断言失败。(缺陷号 30405531)

  • InnoDB: 添加列操作导致断言失败。失败是由于悬空指针造成的。(漏洞#29866408)

    参考:这个问题是 Bug #28491099 的回归。

  • InnoDB: 更新某些InnoDB采用字符串值的系统变量会在 Valgrind 测试期间引发无效读取错误。(缺陷 #29717909,缺陷 #95215)

  • InnoDB: 由于元组损坏,具有空间索引的表上的插入语句引发了记录类型不匹配断言。(漏洞#29465567)

  • InnoDB: 在撤销日志记录损坏的情况下,计算撤销日志记录大小的函数可能会计算出不正确的长度值,从而导致 malloc 失败。添加断言代码以检测不正确的计算。(缺陷 #29448406,缺陷 #82734)

  • 复制: 虽然正在为二进制日志重写 SQL 语句,以便敏感信息不会以纯文本形式出现,但如果使用SHOW PROCESSLIST 语句检查查询,则查询在写入二进制文件时可能会损坏日志,导致复制停止。重写查询的过程现在是私有的,只有在重写完成时才会更新查询线程。(错误#30569003、错误#97531、错误#30654405)

  • 复制: 当一个GRANTREVOKE语句只被部分执行时,一个事件事件被记录在二进制日志中,这使得复制从的应用程序线程停止,以便从可以手动与主协调。以前,如果失败GRANTREVOKE语句是会话中执行的第一条语句,则不会将 GTID 应用于事件事件(因为会话的缓存管理器尚不存在),从而导致复制从站出错。此外,在发生以下情况时,没有记录任何事件事件 GRANT语句创建了一个用户,但由于权限指定不正确而失败,再次导致复制从站出错。这两个问题现在都已修复。(错误#30566518,错误#30324661)

  • 复制: 当复制从属具有主表中没有的生成列时,生成列上有二级索引,生成的表达式应该被评估,并且存储引擎存储在二级索引中的值。当使用基于行的二进制日志记录时,复制从服务器将默认值分配给不在主服务器的表定义中的任何字段。对于没有默认值的生成列,slave 先前为该列分配了空值或零值。这个值随后被存储引擎存储在二级索引中,导致表和索引都被破坏。要解决此问题,在将值发送到存储引擎之前,现在会重新评估复制从站上表中生成的列。(缺陷号 30034874)

  • 复制: 如果复制从站与主站意外断开连接,则可能不会从已注册从站列表中删除对主站转储线程的引用,在这种情况下,访问从站列表的语句将失败。该问题现已解决。(漏洞#29915479)

  • 复制: 在设置 binlog_format=MIXEDtx_isolation=READ-COMMITTEDbinlog_row_image=FULL,涉及事务存储引擎的 INSERT ... SELECT查询从写入二进制日志的行映像中省略了任何具有空值的列。发生这种情况是因为在处理INSERT ... SELECT语句时,在选择二进制日志记录格式之前列被标记为插入。该问题现已解决。(缺陷 #29110804,缺陷 #93423)

  • 复制: 在某些情况下,条件注释的复制可能会失败。(缺陷号 28388217)

  • -libs-compatRPM 包现在是用系统构建的, 以zlib避免在 libmysqlclient.so.18. (缺陷 #30722389,缺陷 #98130)

  • 事件调度程序有内存泄漏。(缺陷号 30628268)

  • 在某些情况下,memcached 命令可能会导致读取未初始化的内存缓冲区,从而导致失败。(缺陷号 30592346)

  • 在所有当前帐户连接终止(如果有)之前,用于重置ALTER USER帐户MAX_USER_CONNECTIONS值不会生效。(错误#30578217,错误#97735)

  • 包含列值用作非确定性函数的输入的条件的具体化子查询产生了不正确的结果。(缺陷号 30368937)

  • CONCAT()并且 CONCAT_WS()在极少数情况下可能会由于不正确的子字符串处理而产生不正确的结果。(漏洞 #30350206,漏洞 #96950)

  • 删除事件可能会扰乱事件的安排。(漏洞 #30301356,漏洞 #96849)

  • 客户端程序可以从插件库外部加载身份验证插件。(错误#30191834,错误#30644258)

  • 服务器未正确处理UNION 其中一个查询包含使用 的子查询 ORDER BY。(漏洞#29952565)

  • WHERE未正确处理带有其谓词包含科学记数法数值 的子句的查询。

    此外,当字符串到整数的转换不成功时,尝试插入指定为字符串的特定整数会导致服务器退出。(错误#29723340,错误#30441969)

  • 以前,mysqlpump 从选项文件中读取 [mysql_dump]和组。mysqlpump现在另外读取该组。该 组仍被接受但已弃用。(漏洞 #24733245,漏洞 #83144)[client][mysqlpump][mysql_dump]

  • 更新连接到连接两个其他表的派生表的表的多表UPDATE语句没有像在 MySQL 5.6 中那样正确优化,而是被视为好像 STRAIGHT_JOIN已与创建派生表的子查询一起使用。(缺陷 #97418,缺陷 #30488700)