Documentation Home
MySQL 5.7 发行说明  /  MySQL 5.7.8 的变化(2015-08-03,发布候选)

MySQL 5.7.8 的变化(2015-08-03,发布候选)

此版本增加了对 Debian 8 和 Ubuntu 15.04 的支持。

账户管理注意事项

  • CREATE USER语句现在支持一个IF NOT EXISTS子句,该子句使该语句为每个已存在的命名帐户生成警告,而不是错误。ALTER USERand DROP USER语句现在支持一个子句,该 IF EXISTS子句导致语句为每个不存在的命名帐户生成警告,而不是错误。有关详细信息,请参阅 CREATE USER 语句ALTER USER 语句DROP USER 语句

    当帐户集在主从之间不同时,这些语句变体在复制场景中很有用。它们还允许编写帐户管理操作脚本,否则这些操作会因语句错误而终止。

  • MySQL 用户名的最大长度已从 16 个字符增加到 32 个字符,这在选择 MySQL 帐户名的用户名部分时提供了更大的灵活性。此更改会影响这些上下文中允许的用户名:

    客户端/服务器协议没有变化,该协议将用户名交换为以 null 结尾的字符串。但是,使用该协议进行通信的第三方程序,如果使用或存储用户名是基于最大16个字符的假设,则可能需要修改。

    最大用户名长度的增加对 MySQL 管理有影响:

    • 复制含义:将超过 16 个字符的用户名复制到仅支持较短用户名的从服务器将失败。但是,这应该仅在从较新的主服务器复制到较旧的从服务器时发生,这不是推荐的配置。

    • 降级影响:如果较新的服务器支持任何用户名超过 16 个字符的帐户,则无法降级到仅支持较短名称的旧版本的 MySQL。

    如果从早期版本升级到此 MySQL 版本,则必须运行mysql_upgrade(并重新启动服务器)以将此更改合并到用户名长度中。

备份笔记

  • 一个新的客户端程序mysqlpump提供了mysqldump的替代方法。其特点包括:

    • 并行处理数据库和数据库中的对象,以加速转储过程

    • 更好地控制转储哪些数据库和数据库对象(表、存储程序、用户帐户)

    • 将用户帐户转储为帐户管理语句 ( CREATE USER, GRANT) 而不是插入到mysql系统数据库 中

    • 创建压缩输出的能力

    • 进度指示器(值是估计值)

    • InnoDB对于转储文件重新加载,通过在插入行后添加索引 来更快地为表创建二级索引

    有关详细信息,请参阅mysqlpump — 数据库备份程序

    mysqlpumpmysqldump 之间有一些显着的区别 :

    • 如果没有选项,mysqlpump 会转储所有内容,而mysqldump什么也不转储。

    • 对于mysqlpump, 默认情况下启用--routines--events,而对于mysqldump,默认情况下禁用它们。

编译笔记

  • 服务器构建的 Boost 库的最低版本现在是 1.58.0。(错误#76354,错误#20721087)

  • 已完成清理源代码库的工作,包括: 删除不需要的CMake检查;从源文件中删除未使用的宏;重组头文件以减少依赖项的数量并使它们更加模块化,删除没有定义的函数声明,用行业标准库中的等效函数替换本地编写的函数。

配置注意事项

  • systemd 的默认配置现在设置 LimitNOFILE为 5000 以增加 MySQL 服务器可用的文件描述符的数量。此更改适用于使用 RPM 包执行 MySQL 安装的 Linux 系统。在此类系统上,可用的描述符数量通常由操作系统设置为 1024。此更改会导致描述符数量与 open_files_limit系统变量默认值 5000 相匹配。要配置不同数量的描述符,请LimitNOFILE按照管理 MySQL中的说明进行设置服务器与 systemd。(缺陷号 21073014)

  • 嵌入式服务器从CMake选项 中获取libmysqld默认secure_file_priv值 ,但不能与非嵌入式服务器共享同一目录。新 选项允许为 . 默认值为 。(缺陷号 20770671)INSTALL_SECURE_FILE_PRIVDIR INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIRlibmysqldNULL

弃用和移除说明

JSON 注释

  • JSON: MySQL 现在支持一种本地JSON 数据类型,可以高效访问 JSON(JavaScript 对象表示法)文档中的数据。与在字符串列中存储 JSON 格式的字符串相比,该 JSON数据类型具有以下优势:

    • 自动验证存储在 JSON列中的 JSON 文档。无效文档会产生错误。

    • 优化存储格式。存储在列中的 JSON 文档 JSON被转换为允许高效访问文档元素的内部格式。

    JSON数据类型一起,一组 SQL 函数可用于启用对 JSON 值的操作,例如创建、操作和搜索。此外,CONVERT()and CAST()函数可以在JSONand 和其他类型之间转换值。

    有关详细信息,请参阅JSON 数据类型JSON 函数

优化器注释

  • 优化器现在能够在生成的列上使用索引,即使查询不直接通过名称引用此类列也是如此。优化器识别与生成列的定义相匹配的查询表达式,并在查询执行期间适当地使用来自这些列的索引。有关详细信息,请参阅 优化器使用生成的列索引

  • 优化器成本模型 memory_block_read_cost在表中有一个新参数, mysql.engine_cost表示从内存数据库缓冲区读取索引或数据块的成本。

    io_block_read_cost 表示从磁盘读取块的成本的现有参数一起,此更改使数据访问方法的成本模型能够考虑从不同来源读取信息的成本;也就是说,从磁盘读取信息与读取内存缓冲区中已有信息的成本。对于初始实现,默认值 memory_block_read_cost与 相同 io_block_read_cost。调整这些值仍然是未来的工作,尽管您可以更改这些值以查看这对查询性能有何影响。有关详细信息,请参阅 优化器成本模型

    如果从早期版本升级到此 MySQL 版本,则必须运行mysql_upgrade(并重新启动服务器)以将此更改合并到 mysql系统数据库中。

  • MySQL 5.7.7 中引入的优化器提示功能已扩展到子查询执行策略。子查询提示会影响是否使用半连接转换以及允许使用哪种半连接策略,并且在不使用半连接时,是否使用子查询实现或 IN-to-EXISTS 转换。例子:

    SELECT /*+ SEMIJOIN(FIRSTMATCH, LOOSESCAN) */ * FROM t1 ...;
    SELECT id, a IN (SELECT /*+ SUBQUERY(MATERIALIZATION) */ a FROM t1) FROM t2;
    SELECT * FROM t2 WHERE t2.a IN (SELECT /*+ SUBQUERY(INTOEXISTS) */ a FROM t1);

    有关详细信息,请参阅 子查询优化器提示

    系统变量 还有一个新 duplicateweedout标志 。optimizer_switch此标志允许使用 optimizer_switch来指定是否使用 Duplicate Weedout 半连接策略,这在以前是不可能的。

包装说明

  • Microsoft Windows: 对于 Windows,MSI 安装程序包不再包含调试二进制文件/信息组件(包括 PDB 文件)。这些在分别命名 为 64 位和 32 位的 Zip 存档中可用。(漏洞#18296012)mysql-VERSION-winx64-debug-test.zipmysql-VERSION-win32-debug-test.zip

性能模式注释

  • 当前事件计时现在提供更多信息。以前,在执行等待、阶段、语句或事务事件时,相应的表显示事件已 TIMER_START填充,但带有 TIMER_ENDTIMER_WAIT 作为NULL

    events_waits_current
    events_stages_current
    events_statements_current
    events_transactions_current

    为了能够确定尚未完成的事件已经运行了多长时间,计时器列现在设置如下:

    • TIMER_START已填充(与之前的行为相同)

    • TIMER_END填充有当前计时器值

    • TIMER_WAIT填充了到目前为止经过的时间 ( TIMER_ENDTIMER_START)

    要查找尚未完成(即没有 END_EVENT_ID)并且到目前为止花费的时间超过 N皮秒的事件,监控应用程序可以在查询中使用此表达式:

    WHERE END_EVENT_ID IS NULL AND TIMER_WAIT > N

    (错误#75156,错误#20889406)

  • 性能模式包含以下更改:

    • 之前的show_compatibility_56 系统变量默认值 ON已更改为 OFF。需要 5.6 行为的应用程序应将此变量设置为,ON 直到它们已迁移到系统变量和状态变量的新行为。请参阅 迁移到性能模式系统和状态变量表

    • 当 Performance Schema 会话变量表产生输出时,它们不包含仅全局变量的行,因此没有完全反映对当前会话有效的所有变量值。这已得到纠正,因此每个表的每个会话变量都有一行,每个没有会话对应项的全局变量都有一行。此更改适用于 session_variablessession_status表。

    • 不再需要 show_compatibility_56 系统变量OFF用于 Performance Schema 系统变量表来产生输出。无论变量值如何,这些表现在都会产生输出。此更改适用于 global_variablessession_variablesvariables_by_thread表。

    • WHERE在 MySQL 5.7.6 中不推荐使用SHOW VARIABLES和 的子句 。SHOW STATUS此限制已取消,因此它 WHERE像 5.7.6 之前一样受到支持。

    • 该表现在metadata_locks显示表空间锁。这些锁的行的 OBJECT_TYPE值为 TABLESPACE

    • 性能模式在这些历史表中记录等待、阶段、语句和事务事件:

      events_waits_history
      events_waits_history_long
      events_stages_history
      events_stages_history_long
      events_statements_history
      events_statements_history_long
      events_transactions_history
      events_transactions_history_long

      以前,历史事件日志记录完全通过启用或禁用表中与历史相关的消费者来控制 setup_consumers。这些标志对于服务器是全局的,结果是为所有线程或没有线程收集历史数据。

      Performance Schema 现在将历史消费者与 setup_actors表结合使用,从而可以控制每个主机、用户或帐户(主机和用户的组合)的历史事件收集。该表有一个新HISTORY列,指示是否收集历史事件(也取决于启用了哪些历史消费者),并且每个新的前台线程都与表中的行匹配。如果找到匹配的行,它的HISTORY值将记录在 threads表中线程的行中,该表现在也有一个HISTORY列。

      为给定会话启用历史事件日志记录可以独立于为其启用检测来完成。因此,您可以更精确地控制在历史表中记录哪些事件,具有以下优点:

      • 当仅一部分检测会话需要历史数据时,运行时开销会减少。

      • 减少历史表中的噪音,有助于对产生大量事件的繁忙服务器进行故障排除。

      有关详细信息,请参阅 按线程预过滤setup_actors 表线程表

    • threads表现在包含一个 CONNECTION_TYPE指示传输协议的列。它可用于确定连接是如何建立的。允许的值为 TCP/IP(不使用 SSL 建立的 TCP/IP 连接)、(SSL/TLS使用 SSL 建立的 TCP/IP 连接)、Socket(Unix 套接字文件连接)、Named Pipe (Windows 命名管道连接)和Shared Memory(Windows 共享内存连接)。

      连接类型信息也被写入新连接的通用查询日志中,并且修改了审计日志界面以合并连接类型。

      有关详细信息,请参阅 线程表一般查询日志编写审计插件

    如果从早期版本升级到此 MySQL 版本,则必须运行mysql_upgrade(并重新启动服务器)以将这些更改合并到 performance_schema数据库中。

    参考资料:另请参阅:Bug #76167、Bug #20652173、Bug #20684424、Bug #20811494。

插件说明

  • 查询重写插件的初始实现使用了自己的 API。此 API 已重新实现以使用审计插件 API。有关详细信息,请参阅 编写审计插件。查询重写插件重新实现的一个效果是减少了开销。

  • MySQL 服务器插件可以访问服务器 服务,如 MySQL 插件服务中所述。MySQL 发行版现在包括演示如何测试插件服务 API 的插件。该test_framework插件是一个基本插件,显示了服务测试所需的最低框架。test_servicestest_services_threaded插件演示了如何在非线程和线程上下文中测试和服务my_snprintfmy_plugin_log_service有关详细信息,请参阅 MySQL Server Doxygen 文档,网址为 https://mysql.net.cn/doc/index-other.html

  • MySQL 发行版现在包括 Version Tokens,该功能可以创建服务器令牌并围绕服务器令牌进行同步,应用程序可以使用这些服务器令牌来防止访问不正确或过时的数据。Version Tokens 基于一个插件库,该插件库实现了一个version_tokens插件和一组可加载的函数。有关详细信息,请参阅 版本令牌

  • MySQL 发行版现在提供了一个锁定接口,该接口实现了具有三个属性的锁定:锁定命名空间、锁定名称和锁定模式。通过在不同的命名空间中创建锁,命名空间使不同的应用程序能够使用相同的锁名称而不会发生冲突。可以使用读(共享)或写(独占)模式创建锁。

    此锁定接口可在两个级别使用:1) 作为 C 语言接口,可作为插件服务从服务器插件或可加载函数中调用;2) 在 SQL 级别,作为映射到对服务例程的调用的一组可加载函数。有关详细信息,请参阅锁定服务

    锁定服务提供的接口不同于GET_LOCK()相关 SQL 函数提供的接口(请参阅锁定函数)。例如,GET_LOCK()不实现命名空间,只提供独占锁,不提供读写锁。

  • 这些更改是针对Rewriter 查询重写插件进行的(请参阅 The Rewriter Query Rewrite Plugin):

    • 现在只有一个安装脚本, install_rewriter.sql. 之前有两个安装脚本, install_rewriter.sqlinstall_rewriter_with_optional_columns.sql,区别在于是否创建表的 pattern_digestnormalized_columnsrewrite_rulesinstall_rewriter.sql现在总是创建这些列,所以不需要 install_rewriter_with_optional_columns.sql.

    • 表的enabledrewrite_rules现在定义为 , ENUM('YES,'NO')而不是 CHAR(1)。相应地,要启用规则,请将此列设置为YES而不是 Y

    如果您之前安装了 Rewriter插件,要升级,请先运行卸载脚本将其卸载,然后再运行安装脚本。重新安装后,再次加载您的重写规则(这是必要的,因为卸载会删除规则表)。有关说明,请参阅 安装或卸载重写器查询重写插件

安全说明

  • MySQL Community Edition RPM 包现在在安装过程中调用 mysql_ssl_rsa_setup来创建默认的 SSL 和 RSA 密钥和证书文件。(缺陷号 20855737)

  • my_print_defaults现在屏蔽密码。要以明文形式显示密码,请使用新 --show选项。此外,使用该 --print-defaults选项调用的客户端程序的输出现在会屏蔽密码。(错误#19953365,错误#20903330)

  • 一个新的系统变量, require_secure_transport使管理员能够要求所有客户端连接到服务器使用某种形式的安全传输。合格连接是使用 SSL 的 TCP/IP 连接,或使用套接字文件(在 Unix 上)或共享内存(在 Windows 上)的连接。启用此变量后,服务器会拒绝不安全的连接尝试,这些尝试会因 ER_SECURE_TRANSPORT_REQUIRED 错误而失败。

    此功能补充了优先考虑的每个帐户的 SSL 要求。例如,如果一个帐户是用 定义的 REQUIRE SSL,启用 require_secure_transport后就无法使用该帐户使用 Unix 套接字文件进行连接。

空间数据支持

  • ST_NumInteriorRing() 被添加为更符合标准的别名 ST_NumInteriorRings()。(错误#77598,错误#21362781)

  • 所有空间计算现在都使用 Boost.Geometry 函数完成。所有较旧的非基于 Boost 的算法已被删除。(错误#77444,错误#21300713)

  • 采用 WKT 或 WKB 值(例如ST_GeomFromText()ST_GeomFromWKB())的几何构造函数不检查尾随垃圾字节。他们现在拒绝尾随非空白字符并产生错误。(错误#77244,错误#21198064)

  • 几何对象构造函数(例如 Point()MultiPolygon()现在)在拒绝无效参数方面更加严格。(错误#76337,错误#20712775)

SQL 模式注释

添加或更改的功能

  • InnoDB: 自适应哈希索引搜索系统现在是分区的,每个索引绑定到一个特定的分区,每个分区由一个单独的锁存器保护。分区由 innodb_adaptive_hash_index_parts 配置选项控制。

    在 MySQL 5.7.8 之前,自适应哈希索引搜索系统由单个闩锁 ( btr_search_latch) 保护,这可能成为争论的焦点。为减少争用, innodb_adaptive_hash_index_parts 默认设置为 8。最大设置为 512。(错误号 20985298)

  • InnoDB:innodb_log_checksum_algorithm选项指定如何生成和验证存储在重做日志磁盘块中的校验和。 innodb_log_checksum_algorithm支持与 相同的算法 innodb_checksum_algorithm,其中包括innodbcrc32none及其关联的严格形式。以前, innodb重做日志磁盘块仅支持该算法。 innodb_log_checksum_algorithm=innodb是默认设置。感谢 Alexey Kopytov 提供的补丁。(缺陷 #20531208,缺陷 #75595)

  • InnoDB: InnoDB现在支持虚拟生成列的二级索引。有关详细信息,请参阅 二级索引和生成的列

  • InnoDB: 添加了内部服务器层函数以允许 InnoDB清除线程构造和销毁线程句柄对象,并在表对象不存在时计算虚拟生成的列索引值。需要此增强功能来支持虚拟生成列上的二级索引。

  • InnoDB: 虚拟生成的列值不再占用数据库行中的空间。通过此更改,在添加或删除虚拟生成的列时不再需要重建表。只需要更新系统表来注册新的元数据。

    虚拟生成的列仍然在 InnoDB元数据中表示。的 N_COLS字段 INNODB_SYS_TABLES仍然计算虚拟生成的列,并且 INNODB_SYS_COLUMNS仍然包括虚拟生成的列元数据。

    INFORMATION_SCHEMAINNODB_SYS_VIRTUAL提供有关虚拟生成列所基于的列的元数据。

  • InnoDB: InnoDB现在支持 file-per-table 表空间的页级压缩。COMPRESSION通过在创建或更改表时指定属性来启用页面压缩支持的压缩算法包括ZlibLZ4。此功能称为透明页面压缩,它依赖于稀疏文件和打孔支持。它在具有 NTFS 的 Windows 和支持 MySQL 的 Linux 平台的子集上受支持,其中内核级别提供打孔支持。

    有关此功能的更多信息,请参阅 InnoDB 页面压缩

  • InnoDB:innodb_flush_sync 默认情况下启用 的新innodb_io_capacity忽略检查点发生的突发 I/O 活动的设置。要遵守InnoDB定义的后台 I/O 活动 innodb_io_capacity,请禁用innodb_flush_sync.

  • InnoDB:innodb_purge_threads和 的默认值 innodb_page_cleaners从 1 更改为 4。如果页面清理器线程的数量超过缓冲池实例的数量, innodb_page_cleaners则自动设置为与 相同的值 innodb_buffer_pool_instances

  • 复制: 的行为SET GTID_PURGED已更改,因此它不会 Previous_gtids_log_event向二进制日志添加任何 GTID,也不会轮换二进制日志。而是将 GTID 添加到 mysql.gtid_executed表中。此修复可确保在所有情况下用于 binlog_gtid_simple_recovery=1 使用 MySQL 5.7.8 或更高版本的服务器都是安全的,其中所有二进制日志都是由使用 MySQL 5.7.8 或更高版本的服务器生成的。(错误#75767,错误#20470724)

  • 复制: 当使用多线程从属时,每个工作线程都有自己的事务队列来处理。在以前的 MySQL 版本中, STOP SLAVE等待所有工作人员处理他们的整个队列。此逻辑已更改,以便STOP SLAVE首先找到由任何工作线程提交的最新事务。然后,它等待所有工作人员完成早于该时间的交易。不处理较新的交易。如果某些工作队列包含多个事务,新逻辑可以STOP SLAVE更快地完成。(缺陷 #75525,缺陷 #20369401)

  • Solaris: Solaris tarball 和 PKG 分发不再包含 -gcc分发文件名。(缺陷号 21047137)

  • 以前, max_digest_length系统变量控制计算语句摘要的所有服务器函数的最大摘要长度。然而,虽然性能模式可能需要维护许多摘要值,但其他服务器功能(例如查询重写插件)每个会话只需要一个摘要。增加该 max_digest_length值对这些函数的总内存需求影响不大,但会显着增加性能模式内存需求。要为性能模式单独配置摘要长度,其摘要长​​度现在由新 performance_schema_max_digest_length 系统变量控制。(缺陷号 20963147)

  • 服务器现在为错误的 值打印更多描述性诊断消息secure_file_priv。(缺陷号 20771331)

  • 对于创建多列 SPATIAL索引的尝试,服务器先前返回了一个Incorrect arguments to SPATIAL INDEX错误。现在它返回 ER_TOO_MANY_KEY_PARTS指定的关键部分太多;最多允许 1 个部分)。(漏洞 #18320371)

  • 对于包含对象信息的表,Performance Schema 现在使用小写的存储程序名称。(漏洞 #17818062)

  • 为了使密码更改操作的效果更清楚, mysql_secure_installation现在显示其密码被更改的用户。(漏洞#17343687)

  • 现在,服务器的每个补丁版本都会增加 C 客户端库的补丁编号。此号码的格式为 major.minor.patch. (错误#77544,错误#21341481)

  • 系统max_statement_time变量已重命名为max_execution_time. 、和 状态变量已重命名 为 Max_statement_time_exceeded、 和 。 Max_statement_time_setMax_statement_time_set_failedMax_execution_time_exceededMax_execution_time_setMax_execution_time_set_failed

    MAX_STATEMENT_TIMEstatements选项已 被SELECT删除,因为它的功能现在可以使用更通用的优化器提示语法(请参阅 优化器提示)。像这样开头的语句:

    SELECT MAX_STATEMENT_TIME = N ...

    应该重写为这样开始:

    SELECT /*+ MAX_EXECUTION_TIME(N) */ ...

    两者之间存在一些细微的实现差异。 MAX_STATEMENT_TIME不允许在非顶级SELECT语句(例如子查询)或存储程序中使用,并产生错误。MAX_EXECUTION_TIME在这些上下文中是允许的,但会被忽略。(错误#77461、错误#21306646、错误#77460、错误#21306392、错误#77459、错误#21306319)

  • GeometryCollection()现在允许不带参数作为创建空几何的一种方式。(错误#77114,错误#21127270)

  • /etc/init.d/mysqld中 的关闭超时值 对于某些环境来说太短了。该值已从 60 秒增加到 600 秒。(错误#76900,错误#20987568)

  • 优化器成本模型的使用扩展到估计test_if_cheaper_ordering() 访问表块的 I/O 成本中的索引扫描成本。(错误#76804,错误#20947871)

  • 对于从 DMG 包在 OS X 上安装 MySQL 的操作,如果生成随机root帐户密码,它现在会显示在对话框中。(错误#76792,错误#20930305)

  • 默认情况下, mysqldump不再转储 sys模式。仍然可以通过在命令行上明确命名它来转储它(例如, mysqldump --databases sys)。(错误#76735,错误#20902791)

  • 对于非 TCP/IP 连接,这些更改是在 --ssl指定强制使用 SSL 时进行的:

    • 对于命名管道和共享内存连接,尝试使用 SSL 现在会产生错误,因为这些连接使用非网络协议。

    • 对于 Unix 套接字文件连接,SSL 不增加任何安全性。连接是允许的,但 mysql客户端现在生成一个警告,表明 SSL 没有为此传输协议添加任何内容。

    (错误#76508、错误#20785409、错误#21025587)

  • mysql_ssl_rsa_setup现在有一个 --uid=name选项,指定程序创建的任何文件的所有者(如果程序执行为root)。(错误#76369,错误#20726413)

  • MySQL 发行版现在包括 innodb_stress一套测试用例。感谢 Mark Callaghan 的贡献。(错误#76347,错误#20717127)

  • 生成列的数据类型现在允许该 COLLATE属性。(错误#76329,错误#20709487)

  • FEDERATED 存储引擎的连接现在 将会话program_name 连接属性设置federated为允许识别连接源。(缺陷 #68781,缺陷 #16555730)

  • 以前,在服务器运行时更​​改validate_password 插件字典文件(由 validate_password_dictionary_file 系统变量命名)需要重新启动服务器才能识别更改。现在 validate_password_dictionary_file 可以在运行时设置并分配一个值会导致在不重新启动的情况下读取命名文件。

    此外,还有两个新的状态变量可用。 validate_password_dictionary_file_last_parsed 指示上次读取词典文件的时间,并 validate_password_dictionary_file_words_count 指示其中包含的单词数。(错误#66697,错误#14588145)

  • COM_FIELD_LIST 为包含太多数据 的命令产生的错误已从 更改ER_UNKNOWN_COM_ERROR为信息更丰富的ER_MALFORMED_PACKET。(错误#53699,错误#11761229)

  • 一个新的系统变量, disabled_storage_engines使管理员能够指定不能用于创建新表或表空间的存储引擎。默认情况下,此变量为空(未禁用任何引擎),但可以将其设置为一个或多个引擎的逗号分隔列表。值中指定的任何引擎都不能用于使用 或 来创建表或表空间 CREATE TABLECREATE TABLESPACE也不能用于ALTER TABLE ... ENGINEor ALTER TABLESPACE ... ENGINE更改现有表或表空间的存储引擎。尝试这样做会导致 ER_DISABLED_STORAGE_ENGINE 错误。

    disabled_storage_engines不限制现有表的其他 DDL 语句,例如 CREATE INDEXTRUNCATE TABLEANALYZE TABLEDROP TABLEDROP TABLESPACE。这允许平滑过渡,以便使用禁用引擎的现有表或表空间可以通过诸如. ALTER TABLE ... ENGINE permitted_engine

  • MySQL 发行版不再包含该 sql-bench目录。CMake选项也已被删除 。 INSTALL_SQLBENCHDIR

    参考资料:另请参阅:Bug #21303289。

  • 系统变量的默认值 table_open_cache_instances 已从 1 增加到 16。

  • 系统read_only变量使服务器能够进入只读模式,在这种模式下,服务器只允许具有 SUPER特权的用户进行客户端更新。一个新的 super_read_only系统变量,如果启用,将禁止客户端更新,即使是拥有SUPER. 超级只读模式对于准备服务器以进行移动或升级等操作很有用,因为它可以防止所有客户端用户修改数据,甚至是管理员。

  • 所谓的快速互斥代码已从服务器源中删除。它没有提供任何可衡量的好处,使代码复杂化,并且对于某些架构(如 POWER8)来说是有问题的。(未记录的) WITH_FAST_MUTEXES CMake 选项也已被删除。

    参考资料:另请参阅:Bug #37703、Bug #11748914、Bug #72806、Bug #18871517、Bug #72807、Bug #18871138、Bug #72805、Bug #18870931。

  • mysqld_safe不再使用数据目录作为设置的可能位置 MYSQL_HOME。(自 MySQL 5.0 以来已弃用。)

  • session_track_transaction_info 系统变量配置一个会话跟踪器,提供有关事务状态和特征的信息。此信息旨在使应用程序(例如,执行负载平衡的应用程序)知道何时可以将事务从一个会话移动到另一个会话。从 C API 中,事务状态信息可以通过传递 SESSION_TRACK_TRANSACTION_CHARACTERISTICSSESSION_TRACK_TRANSACTION_STATE作为 type参数传递给 mysql_session_track_get_first()mysql_session_track_get_next() 函数来获取。有关详细信息,请参阅 客户端会话状态的服务器跟踪

修正错误

  • Incompatible Change:在定义宏的情况下,头文件中 的mysql_parser插件服务接口此符号的测试使用了错误的名称,因此接口未启用正确的代码。测试已更正,并对结构内函数指针成员的 API 进行了一些调整: service_parser.hMYSQL_DYNAMIC_PLUGINmysql_parser_service_st

    • 有些函数指针名称以 开头 mysql_parser_,有些以 开头mysql_。为了保持一致性,以 开头的函数指针成员名称 mysql_parser_更改为以 开头 mysql_

    • 添加了缺少的mysql_get_statement_digest 函数指针成员。

    这些修改改变了服务 API。必须重新编译依赖于该服务的与此版本的 MySQL 一起使用的任何插件。(缺陷号 20856729)

  • 不兼容的更改:VIRTUAL生成列的 内部存储格式对于MyISAM 具有此类列的表,这是一个不兼容的更改;对于升级,用于ALTER TABLE在升级前删除列并在升级后重新添加它们。(错误#77312,错误#21237637)

  • 不兼容的更改: 对于多字节字符集,LOAD DATA可能无法正确分配空间并因此忽略输入行。

    此更改的结果是以前接受的无效字符数据现在被拒绝,如果您从没有此错误修复的旧服务器复制到具有此错误修复的较新服务器,这可能会导致问题。例如,如果接受无效utf8字符集数据的旧服务器通过此错误修复复制到较新的服务器,则较新的服务器将不会接受数据并且复制将失败并出现 无效的 utf8 字符串错误。此问题的解决方案包括:

    • 更正无效数据,使其对字符集正确

    • 使用数据不无效的不同字符集

    • 将 master 升级到修复了错误的版本,以便 master 和 slave 以相同的方式解释数据

    (错误#76237、错误#20683959、错误#23080148)

    参考资料:此问题是 Bug #14653594 的回归。

  • 创新数据库;分区: 在某些极少数情况下,优化器会修剪表的所有分区, InnoDB但未能将表从考虑作为获取匹配项的来源中删除,而是要求初始化表并准备获取记录。这发生在初始化期间未设置活动索引时。为了解决这个问题,我们现在在初始化期间设置活动索引 ID,即使没有可供选择的分区也是如此。此行为也与 MySQL 5.6 中处理相同情况的方式相匹配。(漏洞 #21211524)

  • 创新数据库;分区: 分区表上的排序索引读取 InnoDB将行添加到预取缓存,这可能会导致来自错误分区的行,因为预取缓存不支持分区表。现在在这种情况下预取缓存被禁用。(缺陷号 20584754)

  • 创新数据库;分区: 与同一分区 表ALTER TABLE ADD UNIQUE INDEX并发运行时失败 (缺陷 #20510811,缺陷 #75834)INSERTInnoDB

  • 创新数据库;分区:表 的CREATE_TIMEINFORMATION_SCHEMA.TABLES现在显示分区表的正确表创建时间 InnoDB。表的 CREATE_TIMEINFORMATION_SCHEMA.PARTITIONS现在显示分区表分区的正确分区创建时间InnoDB

    表的UPDATE_TIMEINFORMATION_SCHEMA.TABLES现在显示分区InnoDB表最后一次由 、 或 更新INSERTDELETE时间 UPDATE。表的 UPDATE_TIMEINFORMATION_SCHEMA.PARTITIONS现在显示分区 InnoDB表的分区上次更新的时间。(缺陷 #69990,缺陷 #17299181)

  • 创新数据库;Microsoft Windows: 无法在类 Unix 系统上打开使用相对数据文件路径在 Windows 上创建的通用表空间。 InnoDB无法转换Windows 版本相对数据文件路径中使用的反斜杠 ( “ \ ” ) 目录分隔符。(缺陷号 20555168)

  • 创新数据库;Microsoft Windows: 在 Windows 上关闭期间,在 handle_shutdown()侦听器运行时释放了侦听器对象,导致 buf_pool_from_bpage(). (缺陷号 20421223)

  • 创新数据库;Microsoft Windows: 在 Windows 上,异步 I/O 请求在 InnoDB初始化中止后仍处于等待状态。(漏洞#19363615)

  • InnoDB: 对于innodb_strict_mode=OFF,一条 CREATE TEMPORARY TABLE ... ROW_FORMAT=Compressed TABLESPACE=innodb_file_per_table DATA DIRECTORY ... 语句提出了一个断言。临时表不支持该DATA DIRECTORY子句,应将其忽略。(缺陷 #21324507,缺陷 #77495)

  • InnoDB:btr_search_drop_page_hash_index函数在获取闩锁之前取消引用自适应哈希索引块,这可能导致竞争条件。(缺陷号 21310520)

  • InnoDB: MySQL 5.7.2 中引入的回归导致与 innochecksum相关的内存泄漏。(漏洞 #21255718)

  • InnoDB:records_in_range函数为空间索引返回了一个常量值。(缺陷 #21245805,缺陷 #77332)

  • InnoDB: 在某些情况下,没有为 rw_lock_t实例正确分配内存。(漏洞 #21242541)

  • InnoDB: SHOW ENGINE INNODB STATUS不再报告互斥指标。互斥指标现在由 报告 SHOW ENGINE INNODB MUTEX。(缺陷 #21238953,缺陷 #77314)

    参考资料:另请参阅:Bug #21052754、Bug #21266784。

  • InnoDB: 重新引入了在字段前缀上构建自适应哈希索引所需的功能,以提高顺序插入性能。该功能在 MySQL 5.7.2 中被 Bug #21198396 的修复移除。(缺陷 #21198396,缺陷 #77246)

  • InnoDB: 定义时buf_block_t,经常在同一区域访问锁和互斥锁,这可能会导致意外的缓存行共享。(缺陷号 21153684)

  • InnoDB:ib_cursor_moveto函数不接受字段少于为索引定义的字段的搜索元组。(缺陷 #21121197,缺陷 #77083)

  • InnoDB: 函数ib_table_truncate未能释放事务,导致服务器关闭时挂起。(错误#21121164,错误#77084)

  • InnoDB:ib_open_table_by_id函数向 传递了一个不正确的参数dict_table_open_on_id。(缺陷 #21121084,缺陷 #77100)

  • InnoDB: 在类 Unix 平台上, os_file_create_simple_no_error_handling_funcos_file_create_func设置 innodb_flush_methodO_DIRECT. (缺陷 #21113036,缺陷 #76627)

  • InnoDB: 级联操作导致 FTS_DOC_ID_INDEX. 两个级联操作使用相同的文档 ID。(错误#21111301,错误#77087)

  • InnoDB: 使用无效 innodb_data_file_path设置启动服务器不会产生足够信息的错误消息。(缺陷 #21103446,缺陷 #77056)

  • InnoDB: MySQL 5.7.5 中引入的回归导致在删除单列主键后重建表时跳过排序。(漏洞 #21103101)

  • InnoDB:当表或数据库名称包含特殊字符时, 打开外键引用表 foreign_key_checks会导致错误。(缺陷 #21094069,缺陷 #77043)

  • InnoDB: 函数page_zip_verify_checksum为有效的压缩页面返回 false。(缺陷号 21086723)

  • InnoDB: 表空间的 DDL 操作可能无法隐式提交当前事务。(漏洞 #21081898)

  • InnoDB: 包含多个空间索引更新的部分完成事务的回滚在 row_ins_sec_index_entry_by_modify(). (缺陷号 21076238)

  • InnoDB: 在锁冲突的情况下,关闭可能会挂起等待异步回滚完成。(漏洞 #21075892)

  • InnoDB: 为避免与隐式创建的 file-per-table 表空间冲突,CREATE TABLESPACE ... ADD DATAFILE不再支持在 MySQL 数据目录 (datadir) 下的子目录中创建表空间数据文件。此外,语句中指定的数据文件路径 CREATE TABLESPACE ... ADD DATAFILE必须是现有目录。InnoDB不再为 CREATE TABLESPACE ... ADD DATAFILE语句创建丢失的目录。(缺陷 #21068487,缺陷 #77002)

  • InnoDB: SHOW ENGINE INNODB MUTEX在 MySQL 5.7.2 中删除的功能已修改并重新添加。现在可以使用以下选项动态配置互斥锁统计信息收集:

    • 要启用互斥锁统计信息的收集,请运行:

      SET GLOBAL innodb_monitor_enable='latch';
    • 要重置互斥量统计信息,请运行:

      SET GLOBAL innodb_monitor_reset='latch';
    • 要禁用互斥锁统计信息的收集,请运行:

      SET GLOBAL innodb_monitor_disable='latch';

    有关详细信息,请参阅SHOW ENGINE 语句

    InnoDB之前在 下定义 的存储引擎同步调试检查UNIV_SYNC_DEBUG现在在 下定义, UNIV_DEBUG并且在使用 CMake选项编译调试支持时可用。编译调试支持时,同步调试检查由 配置选项控制。(漏洞 #21052754)WITH_DEBUG InnoDBinnodb_sync_debug

  • InnoDB: 在保护模式下未关闭由截断例程在本地打开的表空间。(缺陷号 21046968)

  • InnoDB: 当截断逻辑将不活动的撤消表空间识别为撤消日志截断的候选者时,引发了断言。当可用撤消表空间的数量超过撤消日志的数量时,一些撤消表空间处于非活动状态。(缺陷号 21046781)

  • InnoDB: 在启动时,InnoDB更新 SYS_DATAFILES内部系统表, space_id即使记录已经存在并且 SYS_DATAFILES.PATH与当前值匹配。(漏洞 #21044191)

  • InnoDB: 在 Windows 调试版本中, innodb_flush_method设置 normalunbuffered 引发断言。(缺陷号 20981684)

  • InnoDB: 事务在执行 DDL 操作时可能会受到回滚。事务未标记为 DDL 事务,TRX_FORCE_ROLLBACK_DISABLE 也未设置。(缺陷号 20979020)

  • InnoDB:ALTER TABLE ... IMPORT TABLESPACE对具有前缀索引的表 的(缺陷 #20977779,缺陷 #76877)

  • InnoDB:innodb_page_size使用64KB 的设置和小于 12MB 的系统表空间数据文件大小 初始化数据库 InnoDB页面大小为 64KB,第一个系统表空间数据文件 ()ibdata1不足以包含双写缓冲区块(block1 和 block2)。为确保双写缓冲区块适合第一个系统表空间数据文件,强制执行最小数据文件大小。如果 innodb_page_size小于或等于 16KB,则第一个系统表空间数据文件 (ibdata1) 的最小数据文件大小为 3MB。对于 32KB 页面大小,最小数据文件大小为 6MB,对于 64KB 页面大小,最小数据文件大小为 12MB。(缺陷号 20972309)

  • InnoDB: 在迭代 DML 级联操作期间,由外键约束相关的表之间的全文搜索操作未正确级联。(缺陷 #20953265,缺陷 #76817)

  • InnoDB: 在 MySQL 5.7.2 中,128 个 undo logs(回滚段)中的 32 个被保留为临时表事务的非重做 undo logs。由于始终将剩余的撤消日志之一分配给系统表空间,因此仍有 95 个撤消日志可用于分配给系统表空间或单独的撤消表空间。此更改有效地将 innodb_undo_tablespaces最大限制降低到 95。换句话说,95 个可用撤消日志的限制也将撤消表空间的最大数量限制为 95。在 MySQL 5.7.8 中, innodb_undo_tablespaces最大值正式降低到 95。(错误# 20938115)

  • InnoDB: 外键约束对象加载父表而子表加载失败时发生内存泄漏。外键约束对象应该只加载子表。(错误#20926253,错误#21041449)

  • InnoDB: 仅调试代码集m_prebuilt,这可能会影响就地ALTER TABLE 行为。m_prebuiltto 不应用于在仅调试代码中存储中间值。(缺陷 #20921940,缺陷 #76774)

  • InnoDB:数据结构 的定义fil_node_t已从移动fil0fil.cc到, fil0fil.h以便该模块外部的诊断代码可以访问有关属于表空间的文件的信息。(错误#20886222,错误#76694)

  • InnoDB: 修改断言代码以避免在 OS X 10.10.2 上编译 MySQL 时出现编译器警告。(缺陷 #20883256,缺陷 #76690)

  • InnoDB: 升级到 MySQL 5.7.6 或更高版本后,在截断最初在 MySQL 5.7.5 或更早版本中创建的表后重新启动服务器会引发SYS_INDEXES 中的 MERGE_THRESHOLD 长度不正确错误。MySQL 5.7.6 中 MERGE_THRESHOLD的内部表中添加了一 升级后未重建或导入的表的记录不包括新列。该 操作更新了表的 记录以包含新列,但将 值设置为 NULL。(缺陷号 20882432)SYS_INDEXESSYS_INDEXESTRUNCATE TABLESYS_INDEXESMERGE_THRESHOLD

  • InnoDB: 在并发删除表空间操作期间加载更改缓冲区位图页面失败导致服务器退出。(缺陷号 20878735)

  • InnoDB:innodb_force_recovery当3 或更高的设置阻止回滚处于某个ACTIVE状态 时,会发生关闭挂起 ACTIVE 事务现在放置在XA PREPARE 主内存数据结构中的状态中,以允许关闭正常进行。事务将 ACTIVE在下次重新启动时恢复并回滚,除非 innodb_force_recovery再次设置为 3 或更高。(缺陷号 20874411)

  • InnoDB: 如果在 期间发生服务器退出XA ROLLBACK,则事务在 XA PREPARE状态中被错误地恢复。因此,后续 XA COMMIT事务是可能的,这将破坏 ACID 合规性并可能导致表索引之间的损坏。(缺陷 #20872655,缺陷 #76672)

  • InnoDB:由于函数中 的CREATE TABLESPACE内存泄漏,操作引发了 Valgrind 错误 os_create_subdirs_if_needed。(缺陷号 20865674)

  • InnoDB:删除了对的 调用以buf_page_print()避免页面转储mysql-test-run日志 InnoDB仍然打印与文件 I/O 相关的页面转储。(缺陷号 20863042)

  • InnoDB: CREATE TABLESPACE无法将内部表空间文件移动到以前缀开头的保留名称空间innodb_,从而允许删除内部表空间文件。(漏洞 #20840368,漏洞 #76603)

  • InnoDB:TRUNCATE TABLE对具有全文搜索索引的通用表空间表 的(缺陷号 20834483)

  • InnoDB: 由于 XA PREPARE 事务持有显式锁,关闭时引发断言。(缺陷 #20816223,缺陷 #76567)

  • InnoDB:fts_print_doc_id函数在调试版本中打印了太多调试信息。 fts_enable_diag_print现在改为使用。(缺陷号 20811125)

  • InnoDB:操作 失败后DROP TABLE ,清除后台线程在尝试访问表的索引页时断言。清除不应尝试清除标记为已损坏的表。清除现在检查损坏的主索引。(缺陷 #20789078,缺陷 #75913)

  • InnoDB:crc32在从具有不同字节顺序的机器复制的数据文件上重新启动服务器时,遇到校验 和校验和不匹配错误无论生成校验和的系统的本 crc32机字节顺序如何,都应识别校验和。(缺陷 #20783098,缺陷 #76375)

  • InnoDB:ALTER TABLE ... DROP INDEX对具有外键依赖项的表 的(缺陷号 20768847)

  • InnoDB:InnoDB尝试取消引用 NULL 外键对象 时引发断言(缺陷号 20762798)

  • InnoDB:ALTER TABLE由于 MySQL 5.7.6 中引入了对通用表空间的本机分区支持而引入的回归,因此操作引发了断言 。(缺陷号 20759613)

  • InnoDB: 在某些情况下,调用的函数 DBUG_ENTER没有调用 DBUG_RETURN. (缺陷 #20753620,缺陷 #76447)

  • InnoDB: MySQL 5.7.6 中的函数回归trx_is_started导致关机挂起。(缺陷号 20744155)

  • InnoDB: MeCab 全文插件解析器无法处理内存不足异常。(缺陷号 20742590)

  • InnoDB: 由于记录被错误地取消删除标记,在回滚操作期间引发了断言。(缺陷号 20734998)

  • InnoDB: 当操作调用过时的外键代码时,在调试版本中引发断言, ALTER TABLE同时尝试创建优化的临时表作为优化程序计划的一部分。临时表不支持外键。对于优化的临时表,外键代码的调用现在被阻止。(缺陷号 20730289)

  • InnoDB: 一个INSERT操作提出了一个断言。BLOB 确定存储压缩页面时要保留的范围数的计算(缺陷号 20713559)

  • InnoDB:函数 中缺少括号fsp_flags_is_valid 可能导致无法识别损坏的数据文件。(缺陷号 20671465)

  • InnoDB: 使用百分比字符“%”作为查询标记中最后一个字符的查询引发了全文解析器插件断言。如果指定为查询标记中的第一个或最后一个字符,使用全文解析器插件框架创建的全文解析器插件现在将忽略“%”字符。内部 SQL 解析器不允许使用“%”字符作为查询标记中的第一个字符。使用“%”字符作为查询令牌中的最后一个字符是为前缀匹配保留的。(缺陷号 20668156)

  • InnoDB:INFORMATION_SCHEMA.FILES报告所有InnoDB 表空间类型的元数据,包括 file-per-table 表空间、通用表空间、系统表空间、临时表空间和撤消表空间(如果存在)。和表不再报告系统表空间和临时表空间元 INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES 数据 INFORMATION_SCHEMA.INNODB_SYS_DATAFILES 。但是,这些表继续为 file-per-table 和通用表空间提供元数据。(错误#20660744、错误#21086257、错误#77032、错误#76182)

  • InnoDB: MeCab 解析器插件 的InnoDB全文搜索功能将打印一条空错误消息。(缺陷 #20651493,缺陷 #76164)

  • InnoDB: 导入具有全文索引的表空间导致在尝试重建索引时出现断言。(缺陷号 20637494)

  • InnoDB: DML 操作在 btr_estimate_n_rows_in_range(). 断言代码过于严格。(缺陷号 20618309)

  • InnoDB: 将用户创建的FTS_DOC_ID列定义为主键会产生不正确的全文搜索相关性排名。(缺陷号 20597981)

  • InnoDB: 在表导入操作期间,由于初始化值INSERT 上出现重复键错误而失败 (缺陷 #20597821,缺陷 #76037)AUTO_INCREMENTAUTO_INCREMENT

  • InnoDB: 删除全文搜索索引后,隐藏 FTS_DOC_IDFTS_DOC_ID_INDEX列阻止了在线 DDL 操作。(缺陷 #20590013,缺陷 #76012)

  • InnoDB:当尝试在只读模式下在InnoDB不存在的临时目录 () 中创建临时文件 时,服务器启动时出现断言 tmpdir(缺陷号 20578834)

  • InnoDB: 设置(、 和 遇到有效但不匹配的校验和时停止 例如,对于 ,有效的校验和会导致服务器停止。现在,不是停止服务器,而是 只打印一条错误消息。(缺陷号 20568464)innodb_checksum_algorithm strict_*strict_nonestrict_innodbstrict_crc32InnoDBinnodb_checksum_algorithm=strict_crc32innodbInnoDB

  • InnoDB: 移动MySQL数据目录并修改 datadir配置参数指向新位置后,存储在普通表空间的表因找不到表空间数据文件而无法打开。为了解决这个问题, CREATE TABLESPACE ... ADD DATAFILE现在 isl在 MySQL 数据目录之外创建一个通用表空间数据文件时,会在 MySQL 数据目录中创建一个文件。此外,该fil_ibd_open 函数现在搜索通用表空间的方式与搜索 file-per-table 表空间的方式相同。(缺陷号 20563954)

  • InnoDB: 通用表空间现在支持分区 InnoDB表,现在可以将单个分区和子分区分配给通用表空间。 SHOW CREATE TABLE输出被修改为包括表空间标识符周围的引号。(错误#20554858,错误#20588947)

  • InnoDB:添加空间索引 的ALTER TABLE操作导致服务器退出。(缺陷号 20547644)

  • InnoDB: 检查表空间可能的最低页码的断言代码没有考虑到一般表空间。(漏洞 #20544581,漏洞 #20810627)

  • InnoDB: memcachedInnoDB 插件 错误地处理了无符号 NOT NULL 整数列。感谢 Piotr Jurkiewicz 提供的补丁。(缺陷 #20535517,缺陷 #75864)

  • InnoDB: 对全文索引辅助表进行了如下改动:

    • 如果主表被分配到一个通用表空间,则在同一个通用表空间中创建全文辅助表。

    • 全文辅助表使用与主表相同的行格式创建。

    • 如果使用该DATA DIRECTORY子句在数据目录之外的位置创建主表,则在与主表相同的位置创建全文辅助表。

    (缺陷 #20527217,缺陷 #75869)

  • InnoDB:memcached set命令允许负过期时间值。过期时间在内部存储为无符号整数。负值将被转换为一个大数字并被接受。最大过期时间值现在被限制为INT_MAX32防止负过期时间值。(缺陷 #20478242,缺陷 #75790)

  • InnoDB:当对父表的操作检测到无法加载父表的外键 的中断ALTER TABLE 操作导致崩溃恢复后的错误和调试断言 ALTER TABLE删除了调试断言,错误被警告取代。(缺陷号 20476395)

    参考资料:此问题是 Bug #19267051 的回归。

  • InnoDB: 在调试版本中,启用该 btr_cur_limit_optimistic_insert_debug标志会在更改缓冲区聚集索引中引发死锁异常。(缺陷 #20459905,缺陷 #75736)

  • InnoDB:DB_TRX_ID如果 发现存储在记录中的值大于 , 现在会打印一条警告消息max_trx_id。在调试版本中,会引发断言。(缺陷号 20445525)

  • InnoDB: 对给定数据集范围内记录数的估计可能因页面大小而异。(缺陷号 20427694)

  • InnoDB: SHOW ENGINE INNODB STATUS由于计数器溢出错误,输出显示负保留和信号计数值。(缺陷号 20417397)

  • InnoDB: 在重新使用游标事务进行写入操作之前,未能检查游标事务只读选项的状态,导致服务器在 memcached工作负载期间退出。(缺陷号 20391552)

  • InnoDB:在操作 期间填充空间索引时,在调试版本中引发断言ALTER TABLE 。压缩行的数据元组大小在 rec_get_converted_size_comp_prefix_low 函数中计算。函数中的调试代码没有考虑DATA_SYS_CHILD节点指针中的空间索引或数据类型。(缺陷号 20372749)

  • InnoDB: CHECK TABLE为具有空间索引的表返回 错误计数错误。(缺陷号 20313067)

  • InnoDB:内存缓存客户端 采用的 MDL 锁导致 MySQL 企业备份FLUSH TABLES WITH READ LOCK操作挂起。(缺陷号 20275612)

  • InnoDB: 嵌入式 MySQL 服务器无法以 innodb_undo_tablespaces=2. 服务器无法找到在初始化 MySQL 实例时创建的撤消表空间。对于嵌入式 MySQL 安装, innodb_undo_directory的默认值可能与 MySQL 数据目录不同。为解决此问题, 现在默认为 NULL,需要指定路径。如果未指定路径,则在 MySQL 数据目录中创建撤消表空间,如. MySQL 5.7.8 之前的嵌入式安装的解决方法是为 . (缺陷号 20023425).innodb_undo_directorydatadirinnodb_undo_directory

  • InnoDB: 一个 DML 操作在文件中提出了一个断言 lock0lock.cc。在聚簇索引页上持有独占行锁的会话启动了页面重组,而另一个会话在同一行上等待锁。页面重组更改了锁定顺序,导致 lock_rec_add_to_queue(). (缺陷号 20005279)

  • InnoDB: 一个DROP DATABASE操作提出了一个断言。(漏洞 #19929435)

  • InnoDB: InnoDB在表空间的数据目录位置从相对路径更改为完整路径后无法打开表空间。InnoDB无法识别保留在数据字典中的相对路径指向与完整路径相同的数据文件。(漏洞#19896685)

  • InnoDB:TRUNCATE TABLE与读写工作负载并行运行时,操作似乎挂起 。(缺陷 #19873470,缺陷 #74312)

  • InnoDB: MySQL 5.7.5 中引入的排序索引构建特性在为小表添加索引时导致性能下降。回归是由于排序索引构建后发生的强制检查点触发的过度刷新。(缺陷 #19865673,缺陷 #74472)

  • InnoDB: 在 MySQL 5.7.5 及更高版本中,对索引列的更新可能会更慢。在 MySQL 5.7.5 之前的版本中,InnoDB 在聚集索引页中保留 1/16 的空间用于将来的插入和更新。随着 innodb_fill_factor选项的引入,此行为在 MySQL 5.7.5 中发生了变化。使用 innodb_fill_factor=100,B-tree 索引页面在排序索引构建期间被完全填满,随后对索引页面的更新导致页面拆分。要恢复 MySQL 5.7.5 之前的行为,默认设置 innodb_fill_factor=100now 会在聚集索引页中留出 1/16 的空间供将来的索引增长使用。(缺陷 #19821087,缺陷 #74325)

  • InnoDB:ha_innobase::index_flags函数返回了空间索引的无效标志。(漏洞 #19473391)

  • InnoDB: 由于结构不一致,在回滚时找不到索引记录purge_node_t。这种不一致导致警告和错误消息,例如 sec 索引条目更新错误无法清除记录试图清除未标记为删除的 sec 索引条目。(错误#19138298、错误#70214、错误#21126772、错误#21065746)

  • InnoDB:ut_when_dtor结构在 MySQL 5.7 中添加以解决 Valgrind 问题,已被删除以降低代码复杂性。(漏洞 #18309926)

  • InnoDB:INSERT事务启动后修改事务模式时,操作引发断言。(漏洞#15866285)

  • InnoDB: 同时使用和禁用索引的查询UNIONUNION ALL由于重复的 B 树值而导致断言。(错误#76439,错误#20752543)

  • InnoDB: 在调试版本中,尝试在删除表后创建空间索引会在函数mysql.innodb_table_stats中引发断言 btr_cur_open_at_rnd_pos_func(错误#76437,错误#20753642)

  • InnoDB: 事务对象被传递给优化的临时表 API,导致断言。不支持回滚且不跨连接共享的优化临时表应忽略事务对象。(错误#76415,错误#20748479)

  • InnoDB: 当 时 innodb_thread_concurrency=1,对优化临时表的查询导致其他会话挂起。对优化临时表的查询不应增加活动线程的数量。(错误#76346,错误#20762059)

  • 分区: 在执行相关子查询期间,服务器重新初始化对同一个表执行的扫描,而不会结束先前的扫描。(缺陷 #20949314,缺陷 #76810)

  • 分区: CREATE TABLE在子分区表达式中使用无效函数的语句并不总是像预期的那样优雅地失败。(缺陷号 20310212)

  • 分区: 对于多个分区的有序索引扫描,MySQL 使用优先级队列对它们执行合并排序,优先级队列的条目包含指向包含已提取行的缓冲区的指针。当所有分区的所有行都被提取时,这个队列现在是空的。发生这种情况时,后续尝试通过传递空缓冲区指针来获取行,这导致服务器失败。HANDLER ... READ ... PREV当对分区表执行时,这可能会表现出来 现在在这种情况下,这个指针会保持不变NO_CURRENT_PART_ID,这样分区处理程序就会知道队列是空的。(缺陷号 20270687)

  • 分区: REPAIR TABLE ... QUICK与多个分区表一起使用时可能会失败。(错误#76154,错误#20647894)

  • 分区: 在某些情况下, ALTER TABLE ... REBUILD PARTITION在锁定表上执行时未正确处理。(错误#75677,错误#20437706)

  • 复制: 当使用多个复制通道时, RESET SLAVE在非默认复制通道上发布会删除该通道,而 RESET SLAVE在默认复制通道上发布不会删除该通道,因为它始终存在。在以前的版本中,这意味着默认复制通道没有正确重置某些配置和状态参数。该修复程序确保 RESET SLAVE在默认复制通道上发布会重置所有参数。(错误#21107331、错误#21111229、错误#77086)

  • 复制:在表上的长时间写锁定期间 重复检查 ERR_LOCK_WAIT_TIMEOUT(如所做,例如通过重复执行SHOW SLAVE STATUS)导致断言。(缺陷号 21095969)

  • 复制: SHOW BINLOG EVENTS未显示 的正确语句XA COMMIT ... ONE PHASE。虽然事件已正确记录和复制,SHOW BINLOG EVENTS但在处理事件时显示的语句不正确。此修复可确保语句正确显示。(漏洞 #21053526)

  • Replication:在线 更改时gtid_mode,如果autocommit设置为 0 并且set gtid_next=UUID:NUMBER已发出语句,则更改 gtid_mode未被阻止。该修复确保只能在事务上下文之外设置的变量现在只能在线程不拥有 GTID 且不持有匿名所有权的情况下设置。这会改变这些变量的行为:

    (缺陷号 20865683)

  • 复制: mysqlbinlog将在应用数据库过滤器之前应用任何重写规则。这意味着在基于语句的复制事务与基于行的复制事务混合的情况下,只会输出一种或另一种类型的事务。该修复更改​​了行为,以便重写规则也适用于该 子句, 根据 参数的设置重写指定的数据库。这使得可以 在查询和行事件上使用该选项。此外,它消除了对USE db_namedb_name--rewrite-db--databaseUSE db_name语句并确保重写在数据库过滤器之前完成。(缺陷号 20810442)

  • 复制:binlog_row_image在运行设置为 的服务器时,在某些情况下,行解包无法正常运行 minimal。(缺陷号 20468712)

  • 复制: 当从站,尤其是半同步复制从站连接到主站时,他们有可能遇到一个 从站有比主站更多的 GTIDS 错误。在连接期间,slave 将所有复制的 GTID 发送给 master,master 检查是否所有与其匹配的 server_uuid都包含在其 gtid_executedGTID 集中。GTID 有可能已经在从站的 gtid_executedGTID 集中,但不在主站的gtid_executed GTID 集中。这是由于 GTID 被添加到 gtid_executed在它被添加到二进制日志之后,这意味着一个事务可能已经被复制并应用到从服务器上,但还没有提交到主服务器上。该修复确保 master 检查是否所有 GTID 都在 和 的联合 gtid_executedgtid_owned。(缺陷号 20464737)

  • Replication: 一个复制从属运行的 gtid_mode不是 OFFlog_bin=OFF并且 relay_log_info_repository=TABLE 在应用跨不同中继日志文件的事务时过早地使用事务的 GTID。这是由于从属 SQL 线程在 mysql.slave_relay_log_info事务中间或事务的 GTID 之后立即将中继日志信息刷新到表时引起的,因为中继日志的轮换。该修复程序跳过了gtid_state将中继日志信息保存到 mysql.slave_relay_log_info表中的操作。(缺陷号 20451386)

  • 复制:gtid_mode=ON,发出一条 SET gtid_next='UUID:NUMBER'语句,然后发出一条导致错误的语句,例如 CREATE..SELECT,导致 上的断言失败COMMIT。这是由于 gtid_next隐式提交语句被错误地设置为未定义,即使语句在隐式提交发生之前因错误而失败。(错误#20343644,错误#20444828)

  • 复制: 如果在启用的情况下重新启动从站 --relay-log-recovery并且默认复制通道的初始化失败,则从站可以拒绝启动或在调试模式下引起断言。(漏洞 #20191813,漏洞 #20236305)

  • 复制: 使用RESET MASTER时,GTID 状态(gtid_executedgtid_purged)被重置。在具有 的服务器上log_bin=OFF,使用 RESET MASTER失败,因为未启用二进制日志。但是,从 MySQL 5.7.5 开始,即使禁用二进制日志,也可以启用 GTID。所以在这种情况下,没有办法重置 GTID 状态。该修复程序确保 RESET MASTER可以在启用了 GTID 的服务器上执行 log_bin=OFF,使您能够重置 GTID 状态。(漏洞 #19706455)

  • 复制: 如果使用基于语句的日志记录,当在单个语句中更新多个表时,单个事务可能被记录为两个不同的事务。这是由于二进制日志记录过程没有正确识别在事务表上运行的语句。该修复可确保正确识别它们,即使此类语句不会更改表的内容。(错误#16621582,错误#21349028)

  • 复制: 当在同一主机上同时启动多个 mysqld实例时,这些实例可以获得相同的 server_uuid. 该修复使用每个启动的mysqld 实例独有的设置来确保每个实例都获得一个唯一的 UUID。(漏洞 #16459136)

  • 复制: 某些复制线程状态未显示在表的 PROCESSLIST_INFO列中 threads。(错误#77115,错误#21127308)

  • 复制: 在 MySQL 5.7.7 及更早版本中,GTID 会在任何时候自动禁用--initialize--bootstrap启用。在 MySQL 5.7.8 及更高版本中,GTID 在启用时不会被 --initialize禁用 --bootstrap。(错误#76884,错误#20980271)

  • 复制: 当使用带有 选项的mysql-test-run.pl--ps-protocol对服务器运行测试时log_bin=OFF,设置gtid_next然后执行 DDL 语句会导致错误。这是由于未正确记录 DDL 语句以使用设置时指定的 GTID gtid_next。(错误#76820,错误#20954452)

  • 复制: 当 时log_bin=ON,如果只读 XA 事务已准备好但主体为空,则后续会 XA ROLLBACK导致断言。(错误#76734,错误#20902763)

  • Replication: explicit_defaults_for_timestamp 已经从一个全局变量变成了一个global和session变量,现在复制了session变量。这意味着您可以更改变量并仍然保证每个语句在主从上使用相同的变量值,即使变量没有在主从上同步更改。(错误#76657,错误#20866059)

  • Replication: 当一个slave停止时, replication_applier_status_by_worker 显示worker_id为1,没有显示正确的数字。(错误#76637,错误#20857660)

  • 复制: 设置SESSION.GTID_NEXT=default后立即设置SESSION.GTID_NEXT='ANONYMOUS' 会导致 ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID 错误,但这也会将 gtid_next类型从 ANONYMOUSAUTOMATIC,这意味着下一个事务可能会导致 GTID_NEXT->TYPE != AUTOMATIC_GROUP || THD->OWNED_GTID.IS_EMPTY()断言。为避免这种可能性,修复程序确保设置 SESSION.GTID_NEXT=default不会更改 gtid_next可能导致错误的类型。(错误#76434,错误#20753378)

  • 复制:server_id=0如果服务器已经以默认 方式启动,则无法添加其他复制通道 该修复程序确保复制从站在 继续初始化通道之前server_id是否大于 0CHANGE MASTER TO(错误#76432、错误#20753463、错误#20712720)

  • 复制: 当服务器配置为 gtid_mode=ONlog-bin=OFFautocommit启用时,在提交期间可能会遇到ASSERTION `IS_STARTED()' FAILED错误。gtid_executed当应用程序线程在禁用二进制日志记录或启用和禁用二进制日志记录时,在事务准备之前 将事务的 GTID 提交到表中时,这是可能的 log_slave_updates。原因是当服务器将事务的 GTID 保存到gtid_executed 表中时,计算的事务上下文可以在保存阶段提交 autocommit被启用。该修复程序确保在保存 GTID 的状态后计算事务上下文,然后对任何剩余的事务执行提交。(错误#76425,错误#20748570)

  • 复制: 当使用 autocommit禁用和 GTID_MODE=OFF_PERMISSIVE,如果事务以CREATE TEMPORARY TABLE语句开始,那么无论表是事务性的还是非事务性的,事务都会开始一个自动的 GTID 违规事务。但是,如果 类型设置为 语句 GTID_NEXT='UUID:NUMBER'后立即发出,在提交事务时,对可能违反 GTID 一致性的检查会导致断言失败,因为 gtid_next 类型已从更改为 。 CREATE TEMPORARY TABLEgtid_nextGTID_GROUPAUTOMATIC_GROUPGTID_GROUP

    该修复程序确保拥有空 GTID 的事务正确检查它们是否破坏了 GTID 一致性。作为此修复的一部分,发现 autocommit禁用时,该语句CREATE TEMPORARY TABLE 不会启动事务,因此立即设置 GTID_NEXT='UUID:NUMBER'不会导致错误。该修复程序确保在 autocommit禁用、执行CREATE TEMPORARY TABLEDROP TEMPORARY TABLE启动事务时,无论 的状态如何 log_binbinlog_format以及是否正在使用事务或非事务存储引擎。这使行为保持一致,但在log-bin=OFF. (错误#76416,错误#20748502)

  • 复制: 当将 GTID 与 一起使用时 log-bin=OFF,包含BINLOG执行Format_description_log_event 将导致断言。原因是服务器将运行例程来处理 GTID 违规事务的结束,这是不正确的,因为 --log-bin=OFF事务不应作为违规事务处理。该修复程序确保在兼容性测试之前 log_bin检查 的状态。如果 log_bin=OFF,则跳过兼容性检查。这使得服务器不会激活标志,这些标志随后会触发例程的错误运行来处理最终导致断言的 GTID 违规事务。(错误#76406,错误#20743468)

  • 复制: 启用二进制日志记录后,使用存储函数和触发器导致长时间运行的过程插入许多记录导致内存使用量迅速增加。这是由于每个变量都分配了内存。该修复程序确保在这种情况下,内存分配一次并重复使用相同的内存。(错误#75879,错误#20531812)

  • 复制: 如果在使用多线程从站时发生错误,发出 CHANGE MASTER TO导致 ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS 错误的语句,然后发出RESET SLAVE,由于重复 的ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS 错误而无法更改主站。在这种情况下,运行mysqld的调试版本会 导致意外退出。该修复确保多线程从站的恢复过程避免了这种情况。(错误#75574,错误#20411374)

  • 复制: 当使用半同步复制时,当线程数增加到超过某个阈值时性能会下降。为了提高性能,现在只有提交的线程负责删除活动事务节点。所有其他操作都不会触及此活动事务列表。(错误#75570,错误#20574628)

  • Replication:gtid_executed_compression_period 设置为大于0的数时,每经过指定数量的事务后就有一个线程被唤醒, gtid_executed_compression_periodmysql.gtid_executed表进行范围压缩。线程错过信号而未唤醒的可能性很小,因此压缩算法的一次通过将被错过并且表未压缩。该修复可确保线程始终如一地唤醒。(错误#75014,错误#20104307)

  • 复制: 使用mysqlbinlog处理大于 1.6GB 的日志事件因内存不足错误而失败。这是由转换长度变量的内部错误引起的。该修复程序升级了长度变量以避免编码和解码函数溢出。(错误#74734,错误#20350989)

  • 复制:在存储过程中 设置gtid_next并提交空事务导致错误。这是由于未正确记录空事务以使用设置指定的 GTID gtid_next。(错误#74253,错误#19774317)

  • 复制:log_warnings一些本应在大于 1 时打印的消息 尤其是关于多线程应用程序的信息过于冗长,而且这些信息中的大部分都是非常技术性和开发导向的。该修复可确保不记录这些消息。(错误#74203,错误#19729278)

  • 复制: 当使用带有 的多线程从站时 slave_preserve_commit_order=1,并行应用的某些事务组合可能会导致死锁并停止从站响应。该修复引入了对此类死锁的检查,以便当一个事务需要等待另一个事务释放行锁时,InnoDB检查是否存在由提交顺序引起的死锁。如果它发现由提交顺序引起的死锁,它会为持有行锁的从属工作者设置一个死锁标志。然后工作人员回滚其事务并再次尝试。(缺陷 #74177,缺陷 #20136704)

  • 复制:设置 时relay_log_recovery,报告新恢复位置的错误日志条目已扩展为还报告旧中继日志位置。(错误#74089,错误#21305976)

  • 复制: 当主服务器 正在复制到从服务器时 --binlog_checksum=none, 重新启动从服务器的 SQL 线程会导致事件 crc 检查错误。这是因为 在重新启动从属服务器的 SQL 线程后,无法在现有的中继日志中正确找到来自主服务器的请求。该修复确保 正确跳过,并 在重新启动从属 SQL 线程后在现有中继日志中找到正确的。(错误#73806、错误#20644100、错误#76746、错误#20909880)--gtid-mode=ON--binlog_checksum=crc32Format_description_log_eventPrevious_gtids_log_eventFormat_description_log_event

  • 复制: 当 时gtid_mode=on,GTID 会自动添加到 mysql.gtid_executed表中。如果手动将 GTID 插入 mysql.gtid_executed表中,然后自动更新插入相同的 GTID,则服务器崩溃。手动插入 GTIDmysql.gtid_executed是一项不受支持的操作,但此修复可确保服务器在这种情况下不会崩溃。(缺陷 #73601,缺陷 #19451053)

  • 复制: 当使用 GTID 时,已经 relay_log_recovery=1意外停止的多线程从站可能会遇到 重启时在 MTS 模式错误中被杀死时无法执行。该修复确保中继日志恢复过程检查 GTID 是否在使用中。如果正在使用 GTID,则多线程从属恢复过程使用 GTID 协议来填充任何未处理的事务。(错误#73397,错误#19316063)

  • 复制:master_info_repository=TABLE 接收线程将接收到的事件信息存储在一个表中时。更新表过程中使用的内存未正确释放,这可能导致内存不足错误。该修复程序可确保在接收线程将事件刷新到中继日志文件后,释放使用的内存。(错误#72885、错误#19390463、错误#69848、错误#20124342)

  • 复制: 当两个具有相同 server_uuid内容的从服务器被配置为从单个主服务器复制时,从服务器的 I/O 线程不断重新连接并生成没有新内容的新中继日志文件。在这种情况下,主机现在会生成一个错误并发送给从机。通过从 master 接收到这个错误,slave I/O 线程不会尝试重新连接,从而避免了这个问题。(错误#72581,错误#18731252)

  • 复制: 如果从服务器在从主服务器获取时间戳或服务器 ID、设置等时遇到 ER_NET_READ_INTERRUPTEDER_NET_WRITE_INTERRUPTED错误,从服务器 MASTER_HEARTBEAT_PERIOD的接收线程将停止。该修复确保这些错误被视为瞬态网络错误,并且从接收器线程会尝试在这种情况下自动重新连接到主线程。(错误#71374,错误#18091217)

  • 复制: 使用mysqlbinlog重播以 结尾的中继日志GTID_LOG_EVENT可能导致以下错误:

    ERROR 1790 (HY000) @@SESSION.GTID_NEXT 不能被拥有 GTID 的客户端更改。客户拥有 UUID:GTID. 所有权在 COMMIT 或 ROLLBACK 时释放。

    如果中继日志轮换发生(通过接收器线程重新启动或在发出ROTATE命令之后)恰好在写入 之后GTID_LOG_EVENT,当重放此类中继日志的结尾时 ROTATE_EVENT,它被错误地识别为在事务内,而事务实际上是在 之后开始的GTID_LOG_EVENT。这导致 mysqlbinlog追加SET @@SESSION.GTID_NEXT='AUTOMATIC',导致 GTID_NEXT一条接一条的两条语句。该修复程序确保mysqlbinlogSET @@SESSION.GTID_NEXT='AUTOMATIC' 仅在事务之外且没有先前 的GTID_LOG_EVENT.

    同样,使用mysqlbinlog连接和重放包含部分 GTID 事务的中继日志会导致上述错误。AUTO_POSITION 如果接收器线程在从主服务器传输事务的过程中重新启动,则中继日志可以包含部分 GTID 事务。在重新启动时,slave 再次检索完整的事务。在这种情况下,第一个中继日志包含部分 GTID 事务,第二个中继日志再次包含完整的 GTID 事务。当使用mysqlbinlog连接这样的中继日志时,未正确检测到部分事务,因此ROLLBACK未正确生成。该修复程序使用第二个中继日志的格式描述事件识别部分 GTID 事务,确保ROLLBACK正确添加。(错误#70711,错误#17650326)

  • 复制: 复制连接现在发送 program_name属性 mysqld,与其他客户端连接的行为一致。此外,添加了一个_client_role 属性并将其设置为 binary_log_listener,以阐明复制连接的角色,以及 _client_replication_channel_name设置为复制通道名称的属性。同样, mysqlbinlog现在设置 _client_rolebinary_log_listener。这些变化通过session_connect_attrs 性能模式表。(漏洞 #68782,漏洞 #16555723)

  • char未签名的平台上, mysql_config_editor可能无法检测到失败的操作。受影响的平台包括 ARM 和 PowerPC。(缺陷号 21355630)

  • 链接到库的Rewriter插件 mysys已经链接到服务器,因此在安装插件时在加载时可用。(漏洞 #21255496)

  • 通过启用 AddressSanitizer 发现的内存泄漏已在mysqlmysqlcheckmysqldumpmysqlshowmysqlslapmysqltestmysql_client_testmysql_upgrademysql_install_db. (错误#21246627,错误#21246842,错误#21246964,错误#21247377,错误#21250562,错误#21250584,错误#21250644,错误#21250876,错误#21250947,错误#21253535,错误#216,错误36,错误36,错误#21,2 #21255860)

  • key_memory_KEY_CACHE 启用 ASAN 时, 多个定义导致编译失败。(缺陷号 21245718)

  • 对于调试版本,范围优化器未能正确传播分区修剪期间发生的错误可能会引发断言。(漏洞 #21211492)

  • 失败的SET PASSWORD语句 ER_MUST_CHANGE_PASSWORD仍然可以更改表password_last_changed中一行的列mysql.user。(缺陷号 21192879)

  • 当在语句的两个部分中都使用一个表时,可能会引发优化器提示断言INSERT INTO ... SELECT。(缺陷号 21192857)

  • create_tmp_table()检查返回值,这可能导致服务器退出。(缺陷号 21190532)

  • semijoin Duplicate Weedout 策略的成本计算不正确可能会导致服务器退出。(漏洞 #21184091)

  • 中的一些 Valgrind 警告 Item_type_holder::join_types()是虚假的并且已被压制。(漏洞 #21156155)

    参考资料:此问题是 Bug #19471564 的回归。

  • 优化器提示解析器可以读取释放的内存。(漏洞 #21148405)

  • 对于调试版本,VIRTUAL生成的列可以在读取操作期间标记为可写,并导致为分区表引发断言。(漏洞 #21142905)

  • 对于调试版本,全文搜索的缺失错误测试可能会导致引发断言。(缺陷号 21140111)

  • 外部引用不能用作 的参数 MATCH(),但服务器未正确检测到它们。现在它确实发生了并引发了一个错误。(缺陷号 21140088)

    参考资料:另请参阅:Bug #20007383。

  • EXPLAIN可能会提出一个断言,试图显示非常大的全文搜索排名值。(缺陷号 21140067)

  • 对于调试版本,如果优化器在不合适的情况下尝试使用覆盖索引,则全文搜索可能会引发断言。(缺陷号 21140039)

  • SHOW STATUS如果服务器在禁用性能模式的情况下启动, SHOW VARIABLES则无法生成输出。(缺陷号 21139458)

  • ST_Intersection()可以产生面和点相交结果,但不能产生线性相交结果。(漏洞 #21109896)

  • ALTER TABLE在其表达式中使用定义生成列MATCH ... AGAINST的语句可以引发断言。(缺陷号 21098119)

  • 如果无法识别要插入的单个表,服务器可能会提出断言或生成不正确的错误消息以插入到视图中。(缺陷号 21097485)

  • open_files_limit可以设置为高于操作系统允许的值。(缺陷号 21074643)

  • InnoDB如果日志重建或恢复时间过长,则可能会触发systemd超时逻辑 因为这可能需要的时间未知, 所以现在禁用了服务启动或停止期间的systemd超时。(漏洞 #21071740)

  • 优化器提示中的表名比较不考虑 lower_case_table_names系统变量的值。(缺陷号 21056644)

  • 调整CMake配置以禁用 Clang 报告的不必要警告,并仅在 -DMYSQL_MAINTAINER_MODE=1使用时显示它们。(漏洞 #21041451)

  • 多次执行 SET 使用子查询的准备好的语句可能会导致服务器退出。(缺陷号 20982756)

  • 启用后,如果数据目录中缺少、 和 中的auto_generate_certs任何一项,服务器会自动创建 SSL 文件 ca.pem。 现在它仅在所有文件都丢失时才创建文件(与 mysql_ssl_rsa_setup使用的测试相同)。(缺陷号 20963082)server-cert.pemserver-key.pem

  • performance_schema=OFF由于架构依赖于它,因此 无法启动使用性能架构支持编译的服务器 ,该sys架构期望找到性能架构表。性能模式现在在启动期间创建其表,即使禁用也是如此。(缺陷号 20956599)

  • 对于CREATE TABLE ... SELECT,可以将值分配给目标表中的生成列。(缺陷号 20949226)

  • 当 Performance Schema 在负载下读取线程状态变量时,服务器可能会退出。(错误#20927157、错误#20922218、错误#21103103)

  • CMake支持已针对Clang 3.6-Wno-unused-local-typedefs选项 -Wno-unused-local-typedef(缺陷号 20921370)

  • 对于调试版本,XA PREPARE如果事务至少包含一个更新并且没有InnoDB更新则引发断言。(缺陷号 20920851)

  • ST_Centroid()与包含无效多边形的几何集合一起 使用可能会导致服务器退出。(缺陷号 20918881)

  • 对于较小的 read_rnd_buffer_size系统变量值,临时结果的内部缓存可能会失败并导致查询执行失败。(缺陷号 20895852)

  • 在访问 events_statements_history Performance Schema 表期间可能会发生无效的内存指针访问,从而导致服务器退出。(缺陷号 20878306)

  • 对于调试版本,传递 EXPORT_SET()VALIDATE_PASSWORD_STRENGTH() 可以引发断言。(缺陷号 20863229)

  • 失败FLUSH PRIVILEGES 的语句后跟创建或删除帐户的语句可能会导致服务器退出。(缺陷号 20857652)

  • points_per_circle 函数参数的 大值ST_Buffer_Strategy()可能会导致使用大量内存。为避免无意中过度使用内存,此参数的最大值现在被限制为新 max_points_in_geometry系统变量的值。此变量的默认值、最小值和最大值分别为 65,536、3 和 1,048,576。(错误#20842030,错误#21212788)

  • 对于某些输入,ST_Buffer() 可以提出断言。(缺陷号 20841874)

  • 如果服务器使用字符串列作为临时表的键,则可能会引发断言。(缺陷号 20835095)

    参考资料:此问题是 Bug #19695490 的回归。

  • SHOW VARIABLES互斥量被锁定两次,导致服务器退出。(缺陷号 20788853)

  • ull2dec()进行了修改以避免 GCC 5 在优化模式下出现问题。(缺陷号 20768820)

  • 使用 GCC 5,调试构建因编译器警告而失败。(缺陷号 20768717)

  • 配置 InnoDB为只读的服务器上的 DDL 操作导致服务器在错误报告期间由于无效的内存访问而退出。(缺陷号 20763179)

  • ALTER TABLE可能无法阻止生成列定义中的子查询,从而导致服务器退出。(缺陷号 20757211)

  • 将结构与生成的列一起使用无效THD可能会导致引发断言。(缺陷号 20746926)

  • 解析器状态未正确初始化以解析生成的列表达式。(缺陷号 20745142)

  • 对于较大的值 max_digest_length,性能模式在计算内存需求时可能会遇到溢出错误,从而导致服务器退出。(缺陷号 20738072)

  • 通过派生表指定的列JOIN ... USINGNATURAL JOIN从派生表解析的列可以引发断言。(缺陷号 20733540)

  • MySQL 5.7.6 限制了 C 客户端库导出的符号列表。其中之一是 mysql_get_parameters,但它被 DBD::mysql Perl 模块使用。mysql_get_parameters 现在出口。(缺陷号 20686665)

    参考资料:另请参阅:Bug #18427840、Bug #20476596、Bug #20821550。

  • 操作后的清理MATCH()可以写入释放的内存。(缺陷号 20685427)

  • NDB尝试获取元数据锁时可能会针对未能获取表空间名称提出断言。(缺陷号 20676000)

  • mysqlslap并且 mysql_client_test默认情况下无法使用 SSL 连接。(缺陷号 206540​​23)

  • regex用于 运算符 的 Spencer库REGEXP在某些情况下可能会发生堆溢出。(缺陷号 20642505)

  • 在优化器内部调用后缺少错误检查 find_field_in_tables()可能会导致引发断言。(缺陷号 20615597)

  • 的优化x IN (SELECT y FROM DUAL WHERE ...)与 相同x IN (SELECT y FROM DUAL),丢失WHERE子句并导致服务器退出。(缺陷号 20615023)

  • 在选项解析期间, mysqlslap 可能会发生缓冲区溢出错误 。(缺陷号 20605441)

  • 对于调试版本,DROP DATABASE 如果数据库目录中有非数据库文件,则提出断言。(缺陷号 20573701)

  • 对于CREATE TABLE ... SELECT,如果选定列是依赖于未选定列的生成列,则会发生错误。为处理此问题,目标表不会保留有关所选列是否为生成列的信息。(缺陷号 20566243)

  • 密码过期的用户可以执行 ALTER USER语句而不是分配新密码。(缺陷号 20553132)

  • 与每个线程关联的 OpenSSL 错误队列在线程释放时未被释放,从而导致 Valgrind 错误。(漏洞 #20551271)

  • 视图是否可更新的属性是在创建时计算的。如果视图引用了另一个被删除并重新创建的视图,并且引用视图的新定义具有与原始定义不同的可更新性,这可能会影响引用视图的可更新性。不考虑可更新性的这种变化可能会导致提出断言。为避免此问题,服务器现在在读取视图定义时而不是在视图创建时评估可更新性。(缺陷号 20515155)

  • 如果使用错误的线程指针产生错误或警告消息,内置 SQL 函数可能会引发断言或导致服务器退出。(缺陷号 20454979)

  • 写入二进制日志的字符串长度计算不正确可能会引发断言或导致服务器退出。(缺陷号 20444737)

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

  • 范围优化器将隐藏键部分(InnoDB主键)解释为最小边界矩形 (MBR) 索引。此类主键不能用作 MBR,并导致服务器退出。(缺陷 #20430526)

  • 如果WITH CHECK OPTION视图包含在另一个视图中,有时会忽略视图的 。有关此修复的影响的讨论,请参阅 View WITH CHECK OPTION 子句。(缺陷号 20407961)

  • 对于某些类型的几何集合,计算withincontains 关系失败。(缺陷号 20379981)

  • 某些选项的长路径名值可能导致堆栈溢出。(缺陷号 20376760)

  • 为不使用内置身份验证插件的帐户设置密码可能会导致该帐户无法使用。

    此问题的修复涉及更改身份验证插件 API,以将新的 authentication_flags 成员添加到服务器端插件描述符。请参阅 编写服务器端身份验证插件 (缺陷号 20364862)

  • 空间 WKT 导出函数生成了太长的坐标值字符串表示,而不是切换到指数表示法。(缺陷号 20363531)

  • 字符串复制代码中的差一错误可能会导致缓冲区溢出。(缺陷号 20359808)

  • events_waits_summary_by_instance 性能模式表可能无法返回套接字工具的行 。 (缺陷号 20348824)

  • 在某些情况下,libedit 命令行库可能会在数组边界之外写入并导致客户端程序崩溃。(缺陷号 20318154)

  • 具有单个点的无效线串值和具有少于四个点的未闭合多边形可能会导致服务器退出。现在拒绝此类无效值。(缺陷号 20316779)

  • mysql_config_editor在加密密码时可能会异常退出。(缺陷号 20294225)

  • 损坏的mylogin.cnf文件可能导致客户端程序异常退出。(缺陷号 20294148)

  • InnoDB 报告的死锁错误可能导致 InnoDB 内部回滚,而事务在 SQL 层继续进行。(缺陷号 20262654)

  • 当 MySQL 无法解释给定字符集中的字符时,有时不会产生警告。(缺陷号 20238729)

  • 授权表的主机值匹配可能无法使用包含通配符的最具体的值。(缺陷号 20181776)

  • 对于与 yaSSL 链接的 MySQL 发行版,损坏的客户端密钥文件可能会导致客户端退出。(缺陷号 20168526)

  • 在子句中使用SELECT COUNT(DISTINCT)in 子查询FROM可能会产生不正确的结果。(缺陷号 20145024)

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

  • 对于具有大量表的连接查询,服务器可以退出将连接转换为半连接。(缺陷号 20109861)

  • ALTER TABLE仅更改索引注释的操作不被视为快速/就地更改。(缺陷号 20106553)

  • 在执行 GRANT ... WITH GRANT OPTION语句之后,执行带有视图的准备好的语句可能会导致服务器退出。(缺陷号 20030284)

  • ADDTIME()年 >= 10,000 可能会产生超出范围的结果。(漏洞 #19900900)

  • 在存储过程中,访问 DDL 之后的视图列或 FLUSH TABLES过程中的语句可能会导致服务器退出。(漏洞#19897405)

  • 从内部查询的相关子查询的子句中引用外部查询的选择列表列 HAVING应该但没有返回错误,从而导致服务器退出。(漏洞#19823076)

  • 修正了几个ST_Envelope()问题:

    • 如果几何的最小边界矩形 (MBR) 退化为 aPoint或 horizo​​ntal 或 vertical LineStringST_Envelope()则返回该值而不是无效的多边形。

    • 空几何集合的返回值现在是一个空几何而不是NULL.

    • 如果几何在几何上无效但具有有效的 WKB 字符串,则返回有效的 MBR 而不是 NULL.

    (错误#19811953,错误#20196720)

  • 对于调试版本,当顶级查询的HAVING子句包含引用顶级查询中的列的子查询时,可以引发断言。(漏洞#19811896)

  • GROUP BY或列ORDER BYCHAR(0) NOT NULL可能导致服务器退出。(漏洞 #19660891)

  • 如果分组查询具有包含对聚合函数的引用的非分组子查询,则服务器可能会退出。(漏洞 #19585938)

  • 将损坏的空间数据加载到MyISAM 表中可能会导致服务器在索引构建期间退出。(漏洞#19573096)

  • 一些空间函数将 -0 转换为 0。这不再发生。(漏洞 #19504183)

  • 对于调试版本,某些UPDATE 语句可能会引发断言。(漏洞 #19055268)

  • 半连接的 LooseScan 执行策略无法评估WHERE来自外部连接的第一个内部表的行的条件。(漏洞 #18892055)

  • 创建临时表并期望将表达式的平坦列表映射到表列的内部过程有时会收到一个不平坦的列表,从而导致引发断言。(漏洞#18745214)

  • 对于MyISAMor表,启用该标志MEMORY 时,带有子查询的嵌套连接可能会生成缺少行的结果集 。(漏洞#18717059)optimizer_switch condition_fanout_filter

  • 对于一些应该单调增加的状态变量, SHOW GLOBAL STATUS在一个会话中,当其他并发会话更改用户或断开连接时,它们可能会显示为减少。(漏洞#18591145)

  • 在 Windows 上,设置 query_cache_min_res_unit过大的值可能会导致值为 0 并导致随后的服务器退出。(漏洞#18487951)

  • 对于调试版本, SET 将子查询值分配给变量的语句可能会由于与 GROUP BYorORDER BY 子句相关的不正确清理而引发断言。(漏洞#18486509)

  • validate_password对于使用 systemd 或 SysV 样式初始化脚本的平台,RPM 包未安装 该插件。(漏洞 #18438833)

  • 一些涉及空间关系检查的查询会为MyISAM表而不是 InnoDB表产生正确的结果。(漏洞 #18422162)

  • 从具有空间索引的空MyISAM表中删除行会导致出现有关索引损坏的虚假错误消息。(漏洞#18412756)

  • 表的布尔全文搜索MyISAM可能会失败。(缺陷号 18279587)

  • 尝试同时从大量线程建立 SSL 连接的客户端可能会因分段错误而退出。(漏洞 #18052165)

  • 从表中删除CSV可能会导致服务器退出。(漏洞#17902624)

  • 对于HANDLER扫描空间索引的读取语句,从索引读取的值的类型转换错误可能导致服务器退出。(漏洞 #17846865)

  • 带有IN左侧为标量子查询的子查询的查询可能会导致服务器退出。(漏洞 #17832047)

  • 当查询包含以下构造但产生空结果时,服务器可能会在某些情况下退出:

    literal-valued row constructor <=> (subquery containing UNION)

    (漏洞#17668844)

  • 如果内存分配的所有权在线程之间转移,Performance Schema 内存检测可能会错误地报告线程的内存使用情况。(漏洞 #17473077)

  • 对于调试版本,包括无表子查询在内的语句在计划事件中执行时可能会引发断言。(漏洞 #17435114)

  • mysql_secure_installation显示 的--help 消息 没有显示与选项文件处理相关的选项,例如 . (漏洞 #17339009)--defaults-file

  • 性能模式表中的内存使用值 memory_summary_global_by_event_name 可能为负数。(漏洞 #17243619)

  • 对于调试版本,由于条件过于严格,可能会在字符集转换代码中引发断言。(漏洞 #13740934)

  • 事件调度程序线程可能被不正确地释放,可能导致服务器退出。(错误#77593、错误#21145277、错误#21053167)

  • mysql-systemd-start如果 datadir/etc/my.cnf. (错误#77357,错误#21262883)

  • 未使用和未维护的 BUILD/build_mccge.sh脚本已从源代码树中删除。(错误#77336,错误#21246941)

  • ST_IsValid()MultiPolygon可以为某些有效参数返回 false 。(错误#77317,错误#21238969)

  • ST_Buffer()with a LineStringargument 可能会产生一个 Polygon自相交的结果。(错误#77316,错误#21238614)

  • 在没有 Performance Schema 的情况下构建 MySQL 时编译失败。(错误#77292,错误#21229433)

  • 更新setup_consumers表以设置历史或长期历史消费者对现有线程的历史事件日志记录没有影响。(错误#77278,错误#21223458)

  • SHOW GLOBAL STATUS Com_xxx柜台没有反映SELECT 报表。(错误#77231,错误#21186946)

  • plugin/daemon_example/ChangeLog删除 了过时且未维护的 文件。(错误#77188,错误#21168681)

  • ST_ConvexHull()MultiLineString 可能会为参数返回不正确的结果。(错误#77167,错误#21153716)

  • 执行准备好的EXPLAIN 语句可能会导致服务器挂起。(错误#77144,错误#21139522)

  • 如果服务器启动时 ssl_cipher设置了系统变量,则 SSL 证书的自动生成和自动检测不起作用。(错误#77078,错误#21108296)

  • 优化器提示查询块名称是标识符,但解析器无法识别有效的标识符名称,例如 123a在 语法中使用时。(错误#77047,错误#21095608)@query_block_name

  • 对于mysqldump,该-T选项应该是该选项的缩写形式 --tab,但被错误地与 --debug-infoinstead 相关联。(错误#77037,错误#21088793)

    参考资料:这个问题是 Bug #66854 的回归。

  • 服务器自动生成的 SSL 证书的 CN 值可能超过 64 个字符。在这种情况下,服务器现在省略了 CN 值的一部分,因此长度在 64 个字符以内。(错误#77036,错误#21087159)_server_version

  • mysql_ssl_rsa_setup写入客户 client-cert.pem端证书文件 的 Common Name 值 不是 . (错误#77035,错误#21087116)MySQL_Server_suffix_Auto_Generated_Server_CertificateMySQL_Server_suffix_Auto_Generated_Client_Certificate

  • 在处理程序关闭连接方法中解除调试同步结构 InnoDB可能会引发断言。(错误#77005,错误#21069721)

  • 如果列上存在UNIQUE索引,则对几何列的查询返回错误而不是结果。(错误#77000,错误#21067378)

  • 如果视图的多表 (在and 子句中UPDATE使用了相同的列)用作准备好的语句,则可能会引发断言。(错误#76962,错误#21045724)SETJOIN

  • 使用基于行的二进制日志记录,自动删除已达到其生命周期末尾的计划事件可能会引发断言。(错误#76958,错误#21041908)

  • 如果单表子查询的列上有相同的GROUP BYandORDER BY子句 UNIQUE NOT NULL,则结果的排序可能不正确。(错误#76947,错误#21038929)

  • 解析器内部使用的PARSE_GCOL_EXPR关键字被视为保留字,因此不加引号就不能用作标识符。(错误#76943,错误#21035515)

  • 当为系统变量指定的目录 secure_file_priv不存在时,服务器会产生一个Failed to normalize the argument错误消息。它现在会生成一条消息,指示该目录不存在。mysql_ssl_rsa_setup--datadir的选项也 出现了同样的问题, 并以同样的方式修复。(错误#76918,错误#21021894)

  • 为了记录到二进制日志,服务器可以重写 CREATE USERALTER USER语句,添加 ACCOUNT UNLOCK原始语句中不存在的子句。这可能会解锁锁定的帐户并导致主从服务器之间存在差异。除非出现在原始陈述中,否则该条款不再被写入。(错误#76911,错误#20996273)

  • INDEX_NAMEPerformance Schema 表 的列table_io_waits_summary_by_index_usage 有时会显示不正确的表索引名称,直到它们被使用了一段时间。(错误#76882,错误#20980217)

  • 某些CMake选项 的查询重写插件代码编译可能会失败 。(错误#76800,错误#20937654)

  • DO包含多个表达式的语句可能会导致内存泄漏。

    错误修复的结果是 DO以前转换为警告的语句错误现在作为错误返回。(错误#76779、错误#20924241、错误#17479887)

  • 以前,服务器自动创建的 SSL 文件有效期为一年。有效期已延长至十年(与 mysql_ssl_rsa_setup创建的 SSL 文件相同)。(错误#76778,错误#20923066)

  • show_compatibility_56如果启用了系统变量,则mysql_upgrade失败 (错误#76757,错误#20914786)

  • 未对齐的内存访问可能导致空间操作失败。(错误#76748,错误#20911624)

  • 规范化语句中的标识符有时被引用有时不被引用,这种不一致导致语句摘要和摘要文本匹配失败。这导致了按摘要聚合性能模式的问题。标识符现在被一致引用。(错误#76723,错误#20896539)

  • Ubuntu 软件包缺少 killallpsmisc的依赖项。(错误#76716,错误#20893836)

  • SHOW GLOBAL VARIABLES并从 INFORMATION_SCHEMA GLOBAL_VARIABLES表中选择导致关于 sql_log_bin系统变量的虚假警告。(错误#76626,错误#20854952)

  • InnoDB如果缓冲池配置为较大,则mysqld --help --verbose会很慢 现在使用这些选项,不会执行缓冲池分配。(错误#76625,错误#20856397)

  • 可以为带有GROUP BY子句和表的查询提出断言,优化器为其识别了多个候选索引。(错误#76576,错误#20819199)

  • CREATE USER写入二进制日志的事件包括新ACCOUNT语法,即使 log_backward_compatible_user_definitions 启用。(缺陷 #76560,缺陷 #20814051)

  • 服务器拒绝了空COM_SHUTDOWN 数据包。(错误#76552,错误#20810928)

    参考资料:此问题是 Bug #14525642 的回归。

  • 对于某些启动错误,服务器可能会 exit()在关闭插件之前调用,因此无法调用它们的atexit()处理程序。(错误#76532,错误#20798617)

  • sql/handler.h, HA_ATTACHABLE_TRX_COMPATIABLEHA_GENERATED_COLUMNS中定义了相同的值。(错误#76503,错误#20783191)

  • mysqlimport --use-threads实际上并没有使用多线程。(错误#76480,错误#20772273)

  • Performance Schema 未检测用于优化器成本模型成本常量缓存的互斥体。该仪器现在可作为 wait/synch/mutex/sql/Cost_constant_cache::LOCK_cost_const. (缺陷 #76460,缺陷 #20755430)

  • 这些语句超时问题已得到纠正:

    • max_statement_time可以使用大于零的集合和执行某些 EXPLAIN语句的 多个并发会话 来提出断言 。

    • 指示语句执行被中断的错误消息引用 max_statement_time系统变量,即使相关超时是每个语句的值。错误消息现在更加通用。

    • 无法 max_statement_time在服务器启动时设置系统变量。

    • 设置max_statement_time语句超时可能会导致 Windows 上的内存泄漏或断言失败。

    • 试图终止使用可附加事务的语句会导致后续语句无法正常运行,从而导致断言失败。此类语句的 max_statement_time超时可能会产生类似的结果。

    笔记

    在这些更改之后, max_statement_time系统变量被重命名为 max_execution_time.

    (错误#76446、错误#20788811、错误#76915、错误#21021670、错误#76916、错误#21021754、错误#20705648、错误#20705642、错误#75782、错误#20507804)

    参考资料:另请参阅:Bug #77461、Bug #21306646。

  • 尝试创建与 FULLTEXT索引匹配的外键失败。对于调试版本,尝试创建与 SPATIAL索引匹配的外键会引发断言。(错误#76445,错误#20752436)

  • 派生表的ORDER BY子句附加到INSERT语句,但插入表的顺序无关紧要并导致服务器退出。(错误#76436,错误#20753569)

  • 失败的ALTER TABLE表空间操作(DISCARD TABLESPACE或者 IMPORT TABLESPACE可能产生不正确的内部表空间状态,导致后续语句失败。(错误 #76424,错误 #20748660)

  • 启用sql_buffer_result 系统变量可能会导致服务器退出多表 UPDATE语句。(错误#76419,错误#20748537)

  • secure_file_priv 显示为NULL--secure_file_priv=NULL 正确)和 (不正确) 的值--secure_file_priv="" 。(错误#76401,错误#20741572)

  • ProvidesRPM .spec文件 中 的规则将mysql-embedded拼错为mysql-emdedded。(错误#76385,错误#20734434)

  • 在启用 AddressSanitizer (ASAN) 的情况下使用 Clang 3.5 或更高版本进行编译会导致该gen_lex_hash实用程序在 Clang LeakSanitizer 内存泄漏检查失败时中止。(错误#76351、错误#20720615、错误#22558597、错误#80014)

  • SHOW CREATE TABLE未正确显示已定义字符集的生成列。(错误#76328,错误#20709462)

  • 和 Performance Schema 表 中Com_stmt_reprepare缺少状态变量。(错误#76305,错误#20697446)global_statussession_status

  • 如果客户端有密码且服务器未启用常规查询日志,则尝试与 Community Edition 服务器建立 SSL 连接失败。(错误#76286,错误#20693153)

  • prepared_statements_instances 性能模式表 中未正确跟踪准备好的语句执行统计信息 。(错误#76284,错误#20692556)

  • 一些服务器警告提到了现已弃用的 mysql_install_db命令。(错误#76251,错误#20681412)

  • 由于缺少对 lex_token.hfor 的依赖,编译可能会失败sql_yacc.cc.o。(错误#76235、错误#20678411、错误#27470071、错误#89482)

  • EXPLAIN对于包含不相关子查询的查询,可以尝试两次具体化子查询,从而引发断言。(错误#76205,错误#20665051)

  • Debian 和 Ubuntu 软件包安装程序在安装期间忽略了运行 mysql_ssl_rsa_setup。(错误#76163,错误#20650118)

  • 与 SSL 证书元数据相关的全局状态变量仅在使用 SSL 建立的会话中可用。(错误#76157,错误#20648276)

  • 当 禁用 SQL 模式时, mysql_real_escape_string_quote() C API 函数无法转义反引号 ( `) 字符 。NO_BACKSLASH_ESCAPES(错误#76146,错误#20645725)

  • 显示的消息指示密码已过期并且必须重置引用已弃用的 SET PASSWORD语句。现在指的是ALTER USER。(错误#76053,错误#20602572)

  • ALTER USER命名身份验证插件的语句不检查插件是否有效。(缺陷 #76052,缺陷 #20602525)

  • 如果代理用户使被代理用户的密码过期,则当前代理用户会话会受到影响(服务器认为其密码已过期)。再次执行SQL语句,需要代理用户断线重连。(错误#76043,错误#20599280)

  • mysqld --help --verbose试图执行与显示帮助消息无关的操作:锁定文件、初始化系统文件和检查 plugin表。(错误#75995,错误#20581228)

  • 对于存储过程中的语句,如果执行子查询转换,服务器可能会退出。(错误#75994,错误#20583321)SET = (subquery)

  • 用于读取和写入授权表的代码假定这些是MyISAM表,并且不处理如果表由不同的存储引擎处理时可能抛出的错误。(错误#75955,错误#20561087)

  • 通过使用 Boost.Geometry for GIS 算法解决了几个空间函数问题:

    (错误#75829、错误#20508769、错误#69425、错误#19270344、错误#69538、错误#19270334)

  • 键查找的非最佳成本估计可能会导致某些查询使用表扫描而不是键查找来执行。(错误#75695,错误#20443863)

  • max_allowed_packet对超过字节 的字符串的操作 可能会返回并错误地替换 语句中NULL的现有值而不是失败。(错误#75539,错误#20376498)UPDATENULL

  • MeCab 全文解析器插件已从 RPM 和 Debian 软件包中删除。(缺陷 #75429,缺陷 #20315007)

  • EXPLAIN多表视图中的for INSERT ... SELECT语句始终显示视图的第一个表作为要插入的表,即使它不是。(缺陷 #75424,缺陷 #20310257)

  • 解析器可以在内存不足错误后取消引用空指针。(错误#75372,错误#20294206)

  • 某些查询可能会返回不同的结果,具体取决于系统变量的semijoin标志 optimizer_switch是启用还是禁用。(错误#75270,错误#20239912)

  • 对于小线程堆栈,具有许多表达式的查询可能会产生线程堆栈溢出错误。(错误#74985,错误#20087571)

  • char未签名的平台上,服务器无法解析包含非 7 位 ASCII 字符的归类定义。受影响的平台包括 ARM 和 PowerPC。感谢 Alexey Kopytov 提供的补丁。(错误#74891、错误#20928289、错误#21682439)

  • 如果服务器是在 explicit_defaults_for_timestamp 启用系统变量的情况下启动的,则将CREATE TABLE列定义为 TIMESTAMP NOT NULL失败的语句。(错误#74529,错误#19881933)

  • threadsPerformance Schema 表中,随着线程状态的改变,主线程仪器的PROCESSLIST_STATEPROCESSLIST_INFO值没有改变。thread/sql/main(错误#74517,错误#19887143)

  • 在 OS X 10.10 (Yosemite) 上,mysqld无法自动启动。启动项已被 launchd作业替换,这使自动启动的首选项窗格复选框再次起作用。(错误#74434,错误#19858350)

  • 指定错误的init_file 系统变量值可能会导致服务器在启动时挂起。(错误#74402,错误#19822257)

  • mysql_install_db没有将日期写入 .mysql_secret文件。(错误#74006,错误#19659004)

  • 外部联接内侧的视图和派生表可能会产生不正确的结果,并且从中选择不可为空的表达式(例如文字)。(错误#73953、错误#20841369、错误#67014、错误#15967464、错误#65936、错误#14358878、错误#67300、错误#15936817、错误#76327、错误#20708288)

  • 如果空间列包含无效的空间数据,则在该列上创建 SPATIAL索引将无法产生错误。(错误#73871,错误#19593342)

  • 当存在大量空 表时,对INFORMATION_SCHEMA TABLES和 表 的某些查询可能会导致内存使用过多。(错误#72322,错误#18592390)COLUMNSInnoDB

  • 转换为浮点数以与十进制数据进行比较的大整数文字可能会失去精度并产生不正确的结果。(错误#72056、错误#18411494、错误#21139707)

  • 选择连接顺序时,优化器可能会错误地计算表扫描的成本并选择表扫描而不是更有效的eq_ref连接。(错误#71584,错误#18194196)

  • --tc-heuristic-recover由于差一错误 ,服务器错误地解释 了选项值。感谢 Laurynas Biveinis 提供补丁。(错误#70860,错误#19771769)

  • 在 OS X 上,该vio_io_wait()调用可能导致大量文件描述符(超过FD_SETSIZE)的堆栈损坏。(缺陷 #69903,缺陷 #17259750)

  • 包含HAVING基于非确定性函数的子句的查询可能会产生不正确的结果。(缺陷 #69638,缺陷 #17055185)

  • MySQL 无法使用 OpenSSL 0.9.8e 进行编译。(错误#68999,错误#16861371)

  • 对于mysqlslap--auto-generate-sql-secondary-indexes , 和的组合 --auto-generate-sql失败了,因为它试图将 36 位 UUID 值插入到 VARCHAR(32)列中。感谢 Tsubasa Tanaka 提供补丁。(错误#55265,错误#11762644)