Documentation Home
MySQL 5.7 发行说明  /  MySQL 5.7.2 的变化(2013-09-21,里程碑 12)

MySQL 5.7.2 的变化(2013-09-21,里程碑 12)

笔记

这是一个里程碑版本,使用风险自负。不支持里程碑版本之间的升级(或从里程碑版本升级到 GA 版本)。重大的开发变更发生在里程碑版本中,您可能会遇到兼容性问题,例如除了运行mysql_upgrade的常规过程之外还需要注意的数据格式更改。例如,您可能会发现有必要在升级前使用mysqldump转储数据并 在升级后重新加载。(无论如何,在升级之前进行备份是一种谨慎的预防措施。)

认证注意事项

  • 不兼容的更改: 以前,表中的帐户行mysql.user 可能有一个空plugin列值。mysql_native_password在这种情况下,服务器使用或 此类帐户进行身份验证mysql_old_password,具体取决于 Password列中的密码哈希值是使用本机哈希还是旧的 4.1 之前的哈希方法。随着 MySQL 5.6.5 中旧格式密码哈希的弃用,这种用于决定使用哪个身份验证插件的启发式方法是不必要的,并且希望user表行始终明确指定应用哪个身份验证插件。

    为此,该plugin列现在被定义为非NULL-,默认值为 'mysql_native_password',并且关联的服务器操作要求该列为非空。结合此plugin列定义修改,还进行了其他几项更改:

    • 命令行 --default-authentication-plugin 选项重新实现为 default_authentication_plugin 系统变量。它在服务器启动时的使用没有改变,但现在可以在运行时使用SHOW VARIABLES或检查默认插件值SELECT @@default_authentication_plugin。该变量是只读的,不能在运行时更改。

    • 当运行mysql_install_db时,它会调用服务器来初始化mysql 数据库。服务器现在为每个 user表行分配一个非空 plugin列值。'mysql_native_password'除非 default_authentication_plugin 在服务器启动时以其他方式设置系统变量, 否则该值为 。

    • mysql_upgrade检查 user表行,对于任何具有空plugin列的行,将该列设置为 'mysql_native_password''mysql_old_password'取决于Password列值的散列格式。

    • 在启动时和运行时FLUSH PRIVILEGES执行时,服务器会检查 user表行。对于任何包含空plugin列的行,服务器都会将警告写入此表单的错误日志:

      [Warning] User entry 'user_name'@'host_name' has an empty plugin
      value. The user will be ignored and no one can login with this user
      anymore.

      要解决此问题,请执行 mysql_upgrade

    如果从早期版本升级到此 MySQL 版本,则必须运行mysql_upgrade(并重新启动服务器)以将plugin列更改合并到mysql系统数据库中,并将适当的非空插件值分配给任何空 plugin列值。但是,由于服务器现在检查并禁用具有空 plugin列值的帐户,因此需要进行如下升级。

    如果您计划使用现有 MySQL 安装中的数据目录进行升级:

    1. 停止旧服务器

    2. 就地升级 MySQL 二进制文件(用新二进制文件替换旧二进制文件)

    3. --skip-grant-tables使用禁用权限检查 的选项重新启动服务器

    4. 运行mysql_upgrade升级系统表

    5. 正常重启服务器(没有 --skip-grant-tables

    如果您计划通过重新加载从现有 MySQL 安装生成的转储文件来升级:

    1. 要生成转储文件,请运行 不带 选项 的mysqldump--flush-privileges

    2. 停止旧服务器

    3. 就地升级 MySQL 二进制文件(用新二进制文件替换旧二进制文件)

    4. --skip-grant-tables使用禁用权限检查 的选项重新启动服务器

    5. 重新加载转储文件 ( mysql < dump_file )

    6. 运行mysql_upgrade升级系统表

    7. 正常重启服务器(没有 --skip-grant-tables

    mysql_upgrade默认以 MySQL root用户身份运行。对于前面的过程,如果在root运行 mysql_upgrade时密码已过期,您将看到一条消息,提示您的密码已过期,因此 mysql_upgrade失败。要更正此问题,请重置root密码以取消其有效期并再次运行mysql_upgrade

    shell> mysql -u root -p
    Enter password: ****  <- enter root password here
    mysql> SET PASSWORD = PASSWORD('root-password');
    mysql> quit
    
    shell> mysql_upgrade -p
    Enter password: ****  <- enter root password here

    如果服务器以 启动,密码重置语句通常不起作用 --skip-grant-tables,但mysql_upgrade的第一次调用刷新权限,因此当您运行mysql时,该语句被接受。

编译笔记

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

弃用和移除说明

  • 以前,程序选项可以完整指定或指定为任何明确的前缀。例如, --compress可以将选项赋予mysqldump as --compr,但不能赋予 as ,--comp 因为后者不明确。不再支持选项前缀;只接受完整选项。这是因为当为程序实现新选项时,前缀可能会导致问题,并且当前明确的前缀将来可能会变得不明确。此更改的一些含义:

    • --key-buffer选项现在必须指定为--key-buffer-size.

    • --skip-grant选项现在必须指定为--skip-grant-tables.

    (漏洞#16996656)

  • 已弃用的thread_concurrency系统变量已被删除。(漏洞#16661195)

  • 以下项目已弃用,将在未来的 MySQL 版本中删除。在显示备选方案的地方,应更新应用程序以使用它们。

    (漏洞 #16463921)

诊断说明

  • 不兼容的更改: 根据 SQL 标准,非诊断语句在开始执行时应清除诊断区域。以前,MySQL 与此不同,一些非诊断语句不会这样做。MySQL 现在遵循 SQL 标准,这会影响某些语句的诊断区域的内容。因此, SHOW WARNINGS显示诊断区域等语句的结果现在有所不同:

    • 先前的行为:SHOW WARNINGS显示有关条件(错误、警告和注释)的信息,该条件由当前会话中生成消息的最新语句产生。如果最近的语句使用了一个表并且没有生成任何消息,它什么也不会显示。(即,使用表但不生成消息的语句清除消息列表。)不使用表且不生成消息的语句对消息列表没有影响。

    • 新行为:SHOW WARNINGS显示有关在当前会话中执行最近的非诊断语句所产生的条件的信息。

    其他诊断语句的结果受到类似的影响 ( SHOW ERRORS, GET DIAGNOSTICS)。

    以下示例演示了行为上的差异。

    之前:

    mysql> DROP TABLE test.no_such_table;
    ERROR 1051 (42S02): Unknown table 'test.no_such_table'
    mysql> SELECT @@warning_count;
    Query OK, 0 rows affected (0.00 sec)
    mysql> SHOW WARNINGS;
    +-------+------+------------------------------------+
    | Level | Code | Message                            |
    +-------+------+------------------------------------+
    | Error | 1051 | Unknown table 'test.no_such_table' |
    +-------+------+------------------------------------+
    1 row in set (0.00 sec)

    在这里,该SELECT语句不使用表并且不生成消息,因此它不会更改诊断区域。因此, SHOW WARNINGS输出属于DROP TABLE语句。

    现在:

    mysql> DROP TABLE test.no_such_table;
    ERROR 1051 (42S02): Unknown table 'test.no_such_table'
    mysql> SELECT @@warning_count;
    Query OK, 0 rows affected (0.00 sec)
    mysql> SHOW WARNINGS;
    Empty set (0.00 sec)

    此处,SELECT语句清除诊断区域,因为它是非诊断语句。因此,SHOW WARNINGS 输出属于该SELECT 语句(并且是空的,因为它 SELECT不产生任何消息)。

    诊断区域处理中的这一变化意味着如果您希望显示警告计数和消息列表,您应该首先列出消息,因为选择该warning_count 值会清除消息列表。或者,用于 SHOW COUNT(*) WARNINGS显示计数;这被识别为诊断语句并且不会清除诊断区域。类似的考虑适用于 error_count.

    为了符合 SQL 标准,该标准规定诊断语句不可准备,MySQL 不再支持以下准备语句:

    • SHOW WARNINGS,SHOW COUNT(*) WARNINGS

    • SHOW ERRORS,SHOW COUNT(*) ERRORS

    • warning_count包含对或 error_count系统变量 的任何引用的语句 。

    换句话说,就可准备性而言,这些陈述现在被视为与GET DIAGNOSTICS已经不可准备的相同。

日志记录

  • 不兼容的更改: 已进行多项更改以提供更多日志记录控制和更多信息日志消息:

    • log_error_verbosity系统变量现在控制服务器在将错误、警告和注释消息写入错误日志时的详细程度 。允许的值为 1(仅错误消息)、2(错误和警告消息)、3(错误、警告和注意消息),默认值为 3。

      log_error_verbosity优先于旧的系统变量,应该使用它来代替旧的 log_warnings系统变量。log_warnings有关该变量如何与 log_error_verbosity服务器系统变量)相关的信息,请参阅说明 。系统 log_warnings变量和--log-warnings 命令行选项现在已弃用,并将在未来的 MySQL 版本中删除。

      笔记

      有效的默认详细程度现在不同了。之前的默认值 ( log_warnings=1) 对应于 log_error_verbosity=2,但默认 log_error_verbosity值为 3。要实现与之前的默认值类似的日志记录级别,请设置 log_error_verbosity=2

    • 使用该选项调用时,默认服务器的详细程度较低 --bootstrap(例如mysql_install_db完成的):在安装过程中仅写入错误,因此安装程序不太可能忽略它们。

    • 引入了log_timestamps系统变量来控制写入错误日志的消息的时间戳时区,以及写入文件的一般查询日志和慢查询日志消息。(它不影响写入日志表的一般查询日志和慢速查询日志消息的时区,但是可以使用 CONVERT_TZ()或通过设置会话time_zone 系统变量从这些表中检索的行从本地系统时区转换为任何所需的时区.)

      笔记

      默认时间戳时区现在不同了(UTC而不是本地系统时区)。要恢复以前的默认值,请设置 log_timestamps=SYSTEM

    • 对于写入错误日志的消息,以及写入文件的一般查询日志和慢速查询日志消息,时间戳的格式已更改。时间戳使用 ISO 8601 / RFC 3339 格式编写: 加上表示祖鲁时间 (UTC) 或 (与 UTC 的偏移量)的尾值。此外,对于一般的查询日志文件,时间戳包含在每条消息中,而不仅仅是第二次更改的时间。 YYYY-MM-DDThh:mm:ss.uuuuuuZ±hh:mm

      对于写入一般查询日志和慢速查询日志表 ( mysql.general_log, mysql.slow_log) 的消息,时间戳的格式也发生了变化,现在包括小数秒。(时间戳的列类型已从 更改TIMESTAMPTIMESTAMP(6)。)

    • 以前,错误日志消息中包含的 ID 是 mysqld进程 ID。现在 ID 是mysqld中负责写入消息的线程的 ID。这对于服务器的哪个部分产生了消息提供了更多信息。它还与包含连接线程 ID 的一般查询日志和慢速查询日志消息更加一致。

    有关日志输出目标的信息,请参阅 选择一般查询日志和慢速查询日志输出目标。有关特定日志的信息,请参阅错误日志一般查询日志慢速查询日志

性能模式注释

  • 性能模式现在提供公开复制信息的表。这类似于SHOW SLAVE STATUS语句中可用的信息,但表格形式的表示更易于访问并且具有可用性优势:

    • SHOW SLAVE STATUSoutput 对于目视检查很有用,但对于编程用途则没有那么多。相比之下,使用 Performance Schema 表,可以使用一般SELECT查询来搜索有关 slave 状态的信息,包括复杂WHERE条件、连接等。

    • 查询结果可以保存在表中以供进一步分析,或分配给变量,从而在存储过程中使用。

    • 复制表提供更好的诊断信息。对于多线程从属操作, 使用和 字段SHOW SLAVE STATUS报告所有协调器和工作线程错误 ,因此只有最近的这些错误是可见的,信息可能会丢失。复制表以每个线程为基础存储错误,不会丢失信息。 Last_SQL_ErrnoLast_SQL_Error

    • 最后看到的事务在每个工作人员的复制表中是可见的。这是无法从 获得的信息SHOW SLAVE STATUS

    • 熟悉 Performance Schema 接口的开发人员可以扩展复制表,通过向表中添加行来提供额外的信息。

    这些表提供复制信息:

    • replication_connection_configurationreplication_connection_status 指示slave用于连接master的配置参数和连接状态。

    • replication_execute_configurationreplication_execute_status指出,对于不特定于任何给定线程的从属事务执行的方面,配置参数和当前执行状态。

    • replication_execute_status_by_coordinatorreplication_execute_status_by_worker 包含特定于线程的事务执行信息,或者关于 SQL 线程(对于单线程从属),或者关于协调器和工作线程(对于多线程从属)。

    如果从属是多线程的,则 SQL 线程是工作线程的协调器。在这种情况下, 输出Last_SQL_Error字段 SHOW SLAVE STATUS现在准确显示 Performance Schema 表中的Last_Error_Message 列 显示的内容。replication_execute_status_by_coordinator修改字段值以表明其他工作线程中可能存在更多故障,这可以在 replication_execute_status_by_worker显示每个工作线程状态的表中看到。

    有关详细信息,请参阅 性能模式复制表

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

  • Performance Schema 现在检测存储的程序执行并为它们聚合统计信息。这包括存储过程、存储函数、触发器和事件调度程序事件。

    实施了这些具体更改:

    有关详细信息,请参阅 事件预过滤语句汇总表

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

  • Performance Schema 现在检测内存使用情况并汇总内存使用情况统计信息,详细说明如下:

    • 使用的内存类型(各种缓存、内部缓冲区等)

    • 间接执行内存操作的线程、账户、用户、主机

    性能模式检测内存使用的以下方面

    • 使用的内存大小

    • 操作计数

    • 低水位线和高水位线

    内存大小有助于了解或调整服务器的内存消耗。

    操作计数有助于了解或调整服务器对内存分配器施加的总体压力,这会对性能产生影响。分配单个字节一百万次与一次分配一百万个字节不同;跟踪大小和数量可以揭示差异。

    低水位线和高水位线对于检测工作负载峰值、整体工作负载稳定性和可能的​​内存泄漏至关重要。

    实施了这些具体更改:

    有关详细信息,请参阅 内存摘要表

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

转速说明

  • 无法使用rpm -uvhyum localupdate将社区 RPM 升级到商业 RPM 。为了解决这个问题,MySQL 5.7.2 更新了 RPM spec 文件,结果如下:

    • 对于非升级安装(未安装现有的 MySQL 版本),可以使用 yum安装 MySQL 。

    • 对于升级,有必要清理任何早期的 MySQL 安装。实际上,更新是通过删除旧安装并安装新安装来执行的。

    其他详细信息如下。

    对于 MySQL 5.7.2 的非升级安装,可以使用yum安装:

    shell> yum install MySQL-server-NEWVERSION.glibc23.i386.rpm

    对于升级到 MySQL 5.7.2,升级是通过删除旧安装并安装新安装来执行的。为此,请使用以下过程:

    1. 删除现有的 5.7。X 安装。OLDVERSION是要删除的版本。

      shell> rpm -e MySQL-server-OLDVERSION.glibc23.i386.rpm

      对所有已安装的 MySQL RPM 重复此步骤。

    2. 安装新版本。 NEWVERSION是要安装的版本。

      shell> rpm -ivh MySQL-server-NEWVERSION.glibc23.i386.rpm

    或者,可以使用 yum完成删除和安装:

    shell> yum remove MySQL-server-OLDVERSION.glibc23.i386.rpm
    shell> yum install MySQL-server-NEWVERSION.glibc23.i386.rpm

    (错误#16445097、错误#16445125、错误#16587285)

安全说明

  • mysql_secure_installation 的平台可用性、可用性和安全性 已得到改进。以前,该程序是可用于 Unix 和类 Unix 系统的 shell 脚本。它已转换为可在所有平台上使用的二进制可执行程序(用 C++ 编写)。作为 C++ 程序的实现允许 mysql_secure_installation使用客户端/服务器协议直接连接到 MySQL 服务器,而不是通过调用mysql来这样做并使用临时文件 与mysql通信。

    mysql_secure_installation的 重新实现 与以前的版本功能兼容,但在可用性方面进行了以下改进:

    • validate_password插件可用于密码强度检查。

    • 命令行和选项文件中支持 标准 MySQL 选项,例如--host和 。--port

    有关详细信息,请参阅 mysql_secure_installation — 提高 MySQL 安装安全性。有关 的更多信息validate_password,请参阅 密码验证插件

半同步复制说明

  • 复制: 半同步复制主服务器现在默认使用不同的等待点与从服务器通信。这是在将状态返回给提交事务的客户端之前,master 等待 slave 确认事务接收的时间点。等待点由新的 rpl_semi_sync_master_wait_point 系统变量控制。这些值是允许的:

    • AFTER_SYNC(默认):master 将每个事务写入其二进制日志和 slave,并将二进制日志同步到磁盘。master 在同步后等待 slave 确认交易接收。收到确认后,主服务器将事务提交给存储引擎并将结果返回给客户端,然后客户端可以继续进行。

    • AFTER_COMMIT:master将每个事务写入自己的binary log和slave,同步binary log,将事务提交给存储引擎。master 在提交后等待 slave 确认交易接收。收到确认后,master 将结果返回给 client,然后 client 可以继续。

      对于旧版本的 MySQL,半同步 master 行为等同于 AFTER_COMMIT.

    这些设置的复制特征不同如下:

    • 使用AFTER_SYNC,所有客户端同时看到已提交的事务:在它被从服务器确认并提交给主服务器上的存储引擎之后。因此,所有客户端都在主服务器上看到相同的数据。

      在主服务器发生故障的情况下,主服务器上提交的所有事务都已复制到从服务器(保存到其中继日志中)。主服务器崩溃和故障转移到从服务器是无损的,因为从服务器是最新的。

    • 使用AFTER_COMMIT,发出事务的客户端仅在服务器提交到存储引擎并收到从属确认后才获得返回状态。在提交之后和从确认之前,其他客户端可以在提交客户端之前看到提交的事务。

      如果出现问题导致从服务器不处理事务,那么在主服务器崩溃并故障转移到从服务器的情况下,这些客户端可能会看到与他们在主服务器上看到的相关的数据丢失。

    新的等待点是一种行为更改,但不需要重新配置。该更改确实引入了版本兼容性约束,因为它增加了半同步接口版本:MySQL 5.7.2 及更高版本的服务器不能使用旧版本的半同步复制插件,旧版本的服务器也不能使用 MySQL 5.7 的半同步复制插件。 2 及以上。

触发笔记

  • INSERT以前,对于触发事件 ( , UPDATE, DELETE) 和操作时间 ( BEFORE, ) 的每个组合,一张表最多只能有一个触发器AFTER。此限制已取消,允许多个触发器。伴随着这一变化,还进行了一些额外的修改:

    • 默认情况下,触发事件和动作时间的每个组合的触发器按照它们创建的顺序执行。为了能够指定触发器激活顺序, CREATE TRIGGER现在支持 FOLLOWSPRECEDES 子句。每个子句都采用具有相同触发事件和动作时间的现有触发器的名称。

    • 表中的ACTION_ORDERINFORMATION_SCHEMA.TRIGGERS 不再是 0,而是一个大于零的整数,表示触发器激活的顺序。

    • 触发器的创建时间现在保持为一个 TIMESTAMP(2)值(以百分之一秒为单位的小数部分):

      • 对于从 MySQL 5.7.2 开始创建的触发器, 表中 的CREATEDTRIGGERS不再是 。NULL

      • 对于输出Created 列和SHOW TRIGGERS 输出的(新)Created 列也是如此SHOW CREATE TRIGGER

      • tbl_name.TRG 存储表触发器信息 的 文件tbl_name现在包含 created一行触发器创建时间。

      有关其他信息,请参阅使用触发器CREATE TRIGGER 语句SHOW CREATE TRIGGER 语句SHOW TRIGGERS 语句INFORMATION_SCHEMA TRIGGERS 表表触发器存储

    • 如果针对具有触发器的表运行, mysql_upgradeCHECK TABLE ... FOR UPGRADE为在 MySQL 5.7.2 之前创建的每个触发器显示此警告:

      Trigger db_name.tbl_name.trigger_name does not have CREATED attribute.

      该警告仅供参考。没有对触发器进行任何更改。

    这些更改对备份、升级和降级有影响,如下所述。为了简洁起见,这里的多个触发器”是具有相同触发事件和动作时间的多个触发器”的简写。

    备份还原。 mysqldump以激活顺序转储触发器,以便在重新加载转储文件时,以相同的激活顺序重新创建触发器。但是,如果 mysqldump转储文件包含具有相同触发事件和操作时间的表的多个触发器,则尝试将转储文件加载到不支持多个触发器的旧服务器时会发生错误。(有关解决方法,请参阅降级说明;您可以转换触发器以与旧服务器兼容。)

    升级。假设您将不支持多触发器的旧服务器升级到 MySQL 5.7.2 或更新版本。如果新服务器是复制主服务器并且具有不支持多个触发器的旧从服务器,如果在主服务器上为已经具有具有相同触发事件和操作时间的触发器的表创建触发器,则这些从服务器会发生错误。为避免此问题,请先升级从属服务器,然后再升级主服务器。

    降级。如果将支持多个触发器的服务器降级为不支持的旧版本,则降级会产生以下影响:

    • 对于具有触发器的每个表,所有触发器定义都保留在.TRG该表的文件中。但是,如果有多个触发器具有相同的触发事件和动作时间,则服务器在触发事件发生时只执行其中一个。有关 .TRG文件的信息,请参阅 表触发器存储

    • 如果在降级后添加或删除表的触发器,服务器将重写表的 .TRG文件。重写的文件只保留每个触发事件和动作时间组合的触发;其他人都迷路了。

    为避免这些问题,请在降级之前修改您的触发器。对于每个触发器事件和操作时间的组合都有多个触发器的每个表,将每个这样的触发器集转换为单个触发器,如下所示:

    1. 对于每个触发器,创建一个包含触发器中所有代码的存储例程。NEW使用和访问的值可以 OLD使用参数传递给例程。如果触发器需要来自代码的单个结果值,您可以将代码放在存储函数中并让函数返回该值。如果触发器需要来自代码的多个结果值,您可以将代码放在存储过程中并使用OUT参数返回值。

    2. 删除表的所有触发器。

    3. 为调用刚刚创建的存储例程的表创建一个新触发器。因此,此触发器的效果与其替换的多个触发器相同。

    参考资料:另请参阅:Bug #28803、Bug #11746800、Bug #37567、Bug #11748861。

添加或更改的功能

  • 不兼容的更改: 以前,Performance Schema 语句检测不包括在从属复制服务器上执行的语句。statement/rpl/relay_log为了解决这个问题,表中添加了一个新的抽象工具 setup_instruments。在知道确切的语句类型之前,在复制语句分类的早期阶段使用该工具。(错误#16750433,错误#17271055)

  • Incompatible Change: 之前,负责接受客户端连接的主循环还会对每个连接相关的数据结构进行初始化。这些初始化任务现在委托给工作线程,以最大限度地减少接受循环所做的工作并最大限度地提高连接接受率。

    作为此更改的结果 bind_addressthread_cache_size、 和 thread_handling系统变量不再对嵌入式服务器可见 ( libmysqld)。同样, Slow_launch_threadsThreads_cached状态变量在嵌入式服务器中没有意义。这些变量在嵌入式服务器中不再可见,并且应该相应地修改依赖这些变量的嵌入式应用程序。(错误#62288、错误#12951536、错误#62284、错误#12951595、错误#62283、错误#12951605)

  • 不兼容的更改:mysql_upgrade 的未使用--basedir--datadir选项 已被删除。

  • 重要变更;分区: 现在可以检查和修复包含重复键违规的分区。这是通过or选项语句中 IGNORE关键字 关键字对这些语句的行为有以下影响: ALTER TABLECHECK PARTITIONREPAIR PARTITION

    笔记

    IGNOREMySQL 5.7.4 中删除 了对关键字的支持。

    (漏洞 #16900947)

  • 重要变更;复制: 默认情况下,当将整数从 master 上的较小类型提升到 slave 上的较大类型时(例如,从 SMALLINTmaster 上的BIGINT列到 slave 上的列),提升后的值被视为已签名. 现在在这种情况下,可以使用 服务器系统变量指定的一组值中的ALL_SIGNED一个 有关详细信息,请参阅 基于行的复制:属性提升和降级,以及变量的说明。(漏洞 #15831300)ALL_UNSIGNEDslave_type_conversions

  • 表现; InnoDB: 多版本并发控制 ( MVCC ) InnoDB要求为每个使用 MVCC的事务分配一个读取视图。为了提高InnoDB只读和读写性能,已通过减少互斥争用来优化读取视图创建。

  • 表现; InnoDB: Ansx-lock,一种新型的 rw-lock,优化并发性并提高读写工作负载的可扩展性。 sx-locks通过提供写访问同时允许其他线程进行不一致的读取来减少 B 树索引操作的锁定争用。

  • 表现; InnoDB: 事务实例 (trx_t) 的内存现在分配在可配置大小的块中,这些块是事务实例大小的倍数。事务实例也被放置在一个优先队列中,并按它们在内存中的地址排序,这样当实例从池中分配时,它们就靠得很近。此增强功能减少了在从池中分配实例时迭代事务实例所产生的成本。

  • InnoDB: innochecksum功能已通过新选项和扩展功能得到增强。请参阅 innochecksum — 离线 InnoDB 文件校验和实用程序。(漏洞 #16945722)

  • InnoDB:添加了 一个新的CMake选项, WITH_INNODB_EXTRA_DEBUG可以启用额外的 InnoDB 调试检查。 WITH_INNODB_EXTRA_DEBUG仅当该WITH_DEBUG 选项也已启用时才能启用。(漏洞 #16821155)

  • InnoDB: 从源代码构建 MySQL 时,您现在可以InnoDB使用新的 CMake选项定义使用的互斥体类型。 MUTEX_TYPE

  • InnoDB: 重构的互斥锁代码使得选择合适的互斥锁更容易,并允许在同一个实例中组合多个互斥锁类型。fast_mutex_t重构后的代码还消除了brew 和 home brew 之间的区别ib_mutex_t,为两种 mutex 类型实现了一个通用接口,并允许在未来添加新的 mutex 类型。此外,互斥锁代码与代码分离, InnoDB因此它可以用作库,并且引入了PolicyMutex接口。新接口使用静态继承(模板)实现互斥量,从而更容易定义策略和自定义互斥量行为。

  • InnoDB: 优化了缓冲池列表扫描和相关批处理,以降低扫描复杂度和扫描页数。

  • InnoDB: InnoDB缓冲池转储和加载操作已得到增强。一个新的系统变量, innodb_buffer_pool_dump_pct允许您指定每个缓冲池中最近使用的页面的百分比以读出和转储。InnoDB 当后台任务正在执行其他 I/O 活动时设置 InnoDB限制每秒缓冲池加载操作的数量 innodb_io_capacity

  • InnoDB:通过禁用重做日志记录、锁定和更改缓冲来优化临时表上的 DML 操作(INSERT、、 UPDATEDELETE不需要重做日志记录,因为临时表的生命周期受服务器进程生命周期的限制,并且不需要锁定,因为临时表仅对创建它的会话可见。临时表大小的减少使得更改缓冲变得不必要,因为临时表现在更有可能驻留在内存中。

  • InnoDB: 并发数据修改 事务的限制现在是 96 * 1023 个生成 撤消记录的事务。从 MySQL 5.7.2 开始,128 个回滚段中的 32 个被分配给修改临时表和相关对象的事务的非重做日志。这将并发数据修改事务的最大数量从 128K 减少到 96K。96K 限制假定事务不修改临时表。如果所有数据修改事务也修改临时表,则限制为 32K 并发事务。

  • InnoDB: MySQL 5.7.2 为普通和压缩临时表及相关对象引入了一种新型撤消日志。新类型的撤销日志不是重做日志,因为临时表在崩溃恢复期间不被恢复并且不需要重做日志。新的撤销日志驻留在临时表空间中。默认临时表空间文件默认 ibtmp1位于数据目录中,并且始终在服务器启动时重新创建。可以通过设置指定临时表空间文件的用户定义位置 innodb_temp_data_file_path。有关详细信息,请参阅撤消日志

  • InnoDB: 只读事务将不再分配事务 ID。相反,只有当事务被明确标记为“读写,如果事务已获取表上的 X 或 IX 锁,或者事务是写入临时表的只读事务时,才会分配 ID. 所有其他事务都被视为只读并且未分配 ID。此外,只读事务不会被标记为只读,除非它们明确地以 开头START TRANSACTION READ ONLY。对于没有交易 ID 的交易, SHOW ENGINE INNODB STATUS打印唯一的标识符,但仅在 SHOW ENGINE INNODB STATUS调用的上下文中。

  • InnoDB: SELECT COUNT(*) FROM t语句现在调用对存储引擎的单个处理程序调用来扫描聚簇索引并将行计数返回给优化器。以前,行计数通常是通过遍历较小的二级索引并为每条记录调用处理程序来执行的。SELECT COUNT(*) FROM t在大多数情况下,对存储引擎的单个处理程序调用以对聚集索引中的行进行计数可以提高有关详细信息,请参阅 InnoDB 限制和限制

  • InnoDB: 从 MySQL 5.7.2 开始,显示 上 执行 UPDATE_TIME 的时间戳值 。以前, 表显示 NULL 值 对于 MVCC,时间戳值反映了时间,这被认为是最后更新时间。当服务器重新启动或表从数据字典缓存 中逐出时,时间戳不会保留UPDATEINSERTDELETEInnoDBUPDATE_TIMEInnoDBCOMMITInnoDB

  • InnoDB: 优化了将事务的隐式锁转换为显式锁的过程以提高性能。优化减少了lock_sys_t::mutex 争用。

  • InnoDB:代码 中的许多内部调试标志 InnoDB只能在编译时或从调试器中设置。结果,大量诊断信息未被使用。此增强功能将内部调试标志替换为 DBUG 标签,以便 可以使用DBUG 包,并且可以使用mysqld命令行选项来自各种InnoDB子系统的有关配置 MySQL 以进行调试、创建跟踪文件和使用mysqld选项 请参阅调试 MySQL 服务器部分。 --debug --debug

  • 分区: 现在单个子分区和分区都支持以下操作:ANALYZECHECKOPTIMIZEREPAIRTRUNCATE(请参阅 ALTER TABLE 分区操作)。

    笔记

    此修复程序还允许使用REBUILD 单独的子分区,即使这实际上不受 MySQL 支持,并且没有任何效果。此问题在 MySQL 5.7.5 及更高版本中通过禁止 REBUILDALTER TABLE语句中使用子分区得到解决。

    (缺陷 #14028340,缺陷 #65184)

    参考资料:另请参阅:Bug #19075411、Bug #73130。

  • 复制: 以前,事务只有在不接触同一个数据库的情况下才能并行应用。但是,MySQL 服务器使用基于锁的调度程序,这意味着应该可以并行执行准备阶段中所有未提交的复制线程,而不会违反一致性。现在可以通过启动从属mysqld来在从属上启用这种并行执行, slave_parallel_type=LOGICAL_CLOCK 或者,如果mysqld已经启动,则通过将全局 slave_parallel_type'LOGICAL_CLOCK'为停止的从属。

    启用此功能后,每个事务都标记有逻辑时间戳。这个时间戳标识当前事务进入准备阶段时最后提交的事务,具有相同时间戳的所有事务可以并行执行。

    要在不重新启动的情况下禁用此功能,请停止从站使用 STOP SLAVE(如果它作为从站运行),发出SET @global-slave_parallel_type='DATABASE',然后 START SLAVE在您希望从站恢复时发出。您还可以通过在不设置 的情况下重新启动从属mysqldslave_parallel_type或将其显式设置为来禁用该功能DATABASE。当禁用预准备事务的并行执行时,从服务器遵循旧行为并仅并行应用那些不会导致同一数据库中发生更改的事务。

  • 复制: 重构主转储线程以减少锁争用并提高主吞吐量。以前,转储线程在读取事件时锁定二进制日志;现在只有在读取最后一次成功写入事件结束时的位置时才会持有锁。这意味着多个转储线程现在可以从二进制日志文件并发读取,并且转储线程可以在客户端写入二进制日志时读取。

  • 已从源代码中删除对 LinuxThreads 的支持。LinuxThreads 在 Linux 2.6 中被 NPTL 取代。(错误#17007529、错误#72888、错误#18913935)

  • 已从源代码中删除对构建 Apple 通用二进制文件以支持 PowerPC 的支持。(漏洞 #16959103)

  • CMake不再检查 memmove()ormemcpy() 因为它们是标准 C 库函数。此外,该bmove_upp()函数的实现已替换为对 的调用memmove(),这可能会对性能产生积极影响。(漏洞 #16839824)

  • C APIlibmysqlclient共享库 .so文件现在有版本 18.1.0(从 MySQL 5.5 中使用的版本 18.0.0 开始)。18.1.0 可用作 18.0.0 的替代品。(错误#16809055、错误#59106、错误#12407476)

  • 的使用DYNAMIC_ARRAY减少了,这将某些范围查询的性能提高了 3-4%。(错误#16736776,错误#17030235)

  • mysqladmin现在支持 --show-warnings显示因执行发送到服务器的语句而产生的警告的选项。(漏洞 #16517756)

  • mysql_upgrade现在验证服务器版本是否与编译它的版本相匹配,如果不匹配则退出。此外,一个 --version-check选项允许指定是否启用版本检查(默认),或者如果给定则禁用检查 --skip-version-checking。(漏洞 #16500013)

  • 如果无法构建 PAM 插件,则使用 now 调用CMake会导致构建失败(而不是仅发出警告)。-DWITH_AUTHENTICATION_PAM=1(漏洞 #14554639)

  • 在批处理模式下,mysql 会格式化结果状态消息,例如“Query OK, 1 row affected”,但不会打印它们。现在这些消息没有格式化。(漏洞 #69486,漏洞 #16971432)

  • 纠正了几个效率低下的问题:

    • 一个循环 Item_in_subselect::single_value_transformer() 可能会执行太多次。

    • 代码中的myisamchk()my_test_if_sort_rep()recreate_table()函数 MyISAM可能会执行太多次。

    感谢 Po-Chun Chang 提供修复这些问题的补丁。(错误#69138、错误#16764131、错误#69117、错误#16751784、错误#69561、错误#17007268、错误#69553、错误#17001703)

  • MYSQL_SYSVAR_DOUBLE()插件现在可以使用和 MYSQL_THDVAR_DOUBLE()访问器宏 定义和公开双精度类型的浮点系统变量 。请参阅 客户端插件描述符。(缺陷 #68121,缺陷 #16194302)

  • MySQL 现在支持使用协议跟踪插件:客户端插件实现了使用客户端/服务器协议跟踪客户端和服务器之间的通信。协议跟踪插件使用客户端插件 API。

    在 MySQL 源代码发行版中,测试协议跟踪插件test_trace_plugin.cc 在目录中的文件中实现libmysql。这可以作为编写其他协议跟踪插件的指南进行检查。

    有关详细信息,请参阅编写插件;特别是编写协议跟踪插件

  • 为了更容易看出好的和坏的执行计划之间的区别,JSON 格式的 EXPLAIN输出现在包括以下额外的成本信息:

    • query_cost:查询块的总成本,无论是顶级查询还是子查询。对于顶级SELECT,这应该等于Last_query_cost状态变量。

    • sort_cost: where 和 if使用的第一个排序操作 ( GROUP BYor )的成本。 ORDER BYfilesort

    • read_cost:从查询块中使用的每个表读取数据的成本(即访问方法成本)。

    • eval_cost:查询块中每个表的条件评估成本。

    • prefix_cost:在查询块中执行prefix join的开销;也就是说,将查询块的表从第一个表连接到给定值的那个表(包括它)的成本。

    • data_read_per_join:每次查询或子查询执行时处理程序接口处理的估计数据量。这本质上是记录宽度 * 读取记录数。

    • rows_produced_per_join/ rows_examined_per_join:每次单个查询块执行时生成或检查的表中记录的估计数量(查询块中的每个表)。

    • used_columns:用于在查询中读取或写入的表中的列列表(查询块中的每个表)。

    不会为 INFORMATION_SCHEMA表显示此成本信息。

  • EXPLAIN现在可用于获取在命名连接中执行的可解释语句的执行计划:

    EXPLAIN [options] FOR CONNECTION connection_id;

    例如,如果您在一个会话中运行一条需要很长时间才能完成的语句,那么 EXPLAIN FOR CONNECTION在另一个会话中使用它可能会产生有关延迟原因的有用信息,并帮助您优化该语句。

    connection_id是从 INFORMATION_SCHEMA PROCESSLIST表或 SHOW PROCESSLIST语句中获取的连接标识符。如果您有PROCESS权限,您可以为任何连接指定标识符。否则,您可以仅为自己的连接指定标识符。

    输出变化EXPLAIN

    • 在 的输出中EXPLAIN FOR CONNECTIONExtraPlan isn't ready yet表示优化器尚未完成为在命名连接中执行的语句创建执行计划。(对于 JSON 格式的输出,这由 表示planned: false。)

    • 在anyEXPLAIN用于获取非SELECT语句执行计划的输出中,该 select_type值显示受影响表的语句类型。例如, select_typeis DELETE forDELETE语句。

    新的状态变量Com_explain_other指示EXPLAIN FOR CONNECTION已执行的语句数。

    有关详细信息,请参阅EXPLAIN 语句获取命名连接的执行计划信息

  • Semijoin LooseScan 策略现在可以使用 ref访问并适用于更广泛的查询。

修正错误

  • 不兼容的更改: 当用于现有 MySQL 帐户时, 表行 中命名的插件不同的身份验证插件的子句, GRANT语句可能会产生意外结果IDENTIFIED WITHmysql.user

    因为IDENTIFIED WITH仅用于 GRANT创建新用户的语句,所以如果指定的帐户已经存在,现在将被禁止。(漏洞 #16083276)

  • Incompatible Change:DEFAULT值可能在建表时有效,在插入或更新行时sql_mode无效 sql_mode例子:

    SET sql_mode = '';
    CREATE TABLE t (d DATE DEFAULT 0);
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t (d) VALUES(DEFAULT);

    在这种情况下,应该接受 0 CREATE TABLE而拒绝 0 INSERT。但是,以前服务器不会DEFAULT根据当前 sql_mode. 在示例中, INSERT成功并插入 '0000-00-00'DATE列中。

    服务器现在应用适当的 sql_mode检查以在插入或更新时生成警告或错误。

    如果您使用基于语句的日志记录 ( binlog_format=STATEMENT),则导致的复制不兼容是,如果从属服务器升级,未升级的主服务器将无错误地执行前面的示例,而 INSERT从属服务器将失败并且复制将停止。

    要处理这个问题,请停止主服务器上的所有新语句并等待从服务器赶上来。然后升级奴隶,然后升级主人。或者,如果您不能停止新语句,请暂时更改为在主服务器上进行基于行的日志记录 ( binlog_format=ROW) 并等待所有从服务器处理到此更改点之前生成的所有二进制日志。然后升级从属服务器,然后升级主服务器,并将主服务器更改回基于语句的日志记录。(缺陷 #68041,缺陷 #16078943)

  • 重要变更;表现; InnoDB: InnoDB无法打开具有多个数据文件的表空间。这消除了 MySQL Server 5.6.12 中的已知限制。(错误#17033706,错误#69623)

  • 重要变更;复制: 当服务器运行 --binlog-ignore-db并 返回 (即,当前没有选择的数据库),使用完全限定表名的语句 。 格式未写入二进制日志。这是因为在这种情况下缺少当前选择的数据库被视为匹配任何可能的忽略选项,而不是没有这样的选项;这意味着这些陈述总是被忽略。 SELECT DATABASE()NULLdbnametblname

    现在,如果没有当前数据库,则始终将使用完全限定表名的语句写入二进制日志。(缺陷 #11829838,缺陷 #60188)

  • 表现; InnoDB: MySQL 5.6 中引入的代码回归对性能产生了负面 DROP TABLE影响 ALTER TABLE。这可能会导致 MySQL Server 5.5.x 和 5.6.x 之间的性能下降。(漏洞 #16864741,漏洞 #69316)

  • 表现; InnoDB:innodb_thread_concurrency 设置为非零值时,有可能 innodb_concurrency_tickets 在读取每一行后全部释放,导致每次读取后进行并发检查。这可能会影响所有查询的性能。一种症状可能是系统 CPU 使用率较高。如果您使用此设置,我们强烈建议您升级到 MySQL Server 5.6.13。这可能会导致 MySQL Server 5.5.x 和 5.6.x 之间的性能下降。(错误#68869,错误#16622478)

  • 创新数据库;分区: 涉及InnoDB 具有一列或多BLOB 列的分区表的联接并不总是能得到正确处理。一个 BLOB或多个列不需要是连接列,或者在包含连接的语句中以其他方式命名或引用,才会发生此问题。(漏洞#16367691)

  • 创新数据库;分区: 在对 INFORMATION_SCHEMA.PARTITIONS 表进行任何查询之后,InnoDB如语句输出中所示的索引统计信息是 从最后一个分区读取的,而不是从包含最大行数的分区读取的。(缺陷 #11766851,缺陷 #60071)SELECT * FROM INFORMATION_SCHEMA.STATISTICS

    参考资料:另请参阅:Bug #16882435、Bug #69179。

  • 创新数据库;复制: 尝试更新一个 NULLInnoDB表的列(之前设置为 )导致从属服务器上的复制失败,无法在“ table中找到记录。

    笔记

    这个问题在 MySQL 5.6.6 中无意中重新引入,并在 MySQL 5.6.12 中再次修复。

    (缺陷 #11766865,缺陷 #60091)

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

  • InnoDB: 在 Windows 64 位调试版本中,读取视图 向标准错误输出COPY_TRX_IDS报告 矢量下标超出范围”错误。(漏洞 #17320056)

  • InnoDB: 在在线期间记录记录的删除标记时 ALTER TABLE...ADD PRIMARY KEYInnoDB将事务 ID 写入日志,就像记录删除或删除标记之前一样。这样做时, InnoDB会覆盖 DB_TRX_ID原始表中的字段,这可能会导致锁定问题。(漏洞 #17316731)

  • InnoDB: 在搜索索引树并遍历在每个级别访问或固定块的多个级别时,会发生断言失败。(漏洞 #17315967)

  • InnoDB:row_sel_sec_rec_is_for_clust_rec函数会错误地准备将二级索引中的 NULL 列前缀与聚集索引中的非 NULL 列进行比较。(漏洞#17312846)

  • InnoDB: 回滚对删除标记的记录的更新时会发生不正确的清除。(漏洞 #17302896)

  • InnoDB:ut_ad(oldest_lsn <= cur_lsn) 文件中 的断言buf0flu.cc失败,因为当前最大 LSN 将在最早的 LSN 之前从缓冲池中检索。(漏洞 #17252421)

  • InnoDB: InnoDB memcached addset操作比 SQL INSERT操作执行得更慢。(漏洞 #17214191)

  • InnoDB: 如评论中log0log.hold_lsn并且old_buf_free 只应在UNIV_LOG_DEBUG 启用时编译。(漏洞 #17160270,漏洞 #69724)

  • InnoDB: 当以只读模式启动时,InnoDB将断言保存点。(漏洞#17086428)

  • InnoDB: 在删除索引之前,执行检查以确保索引根页面是空闲的。如果索引根页面空闲,则可以避免删除活动。在执行检查之前将初始化事务。如果检查评估为真,则初始化的事务将处于悬空状态。(漏洞#17076822)

  • InnoDB: 添加一个外键,其约束名称包含字符串_ibfk_ ,导致InnoDB创建具有生成的内部名称的重复约束。生成的内部名称也可能与同名的现有用户定义约束冲突,导致重复键错误。(错误#17076737、错误#69693、错误#17076718、错误#69707)

  • InnoDB:由于互斥体冲突 ,InnoDB监视器测试会引发断言ha_innodb.cc(漏洞 #17027249)

  • InnoDB: 在调试版本中, trx_sys->rw_max_trx_id变量有时会被反转导致 CLUST_INDEX_SIZE值不一致。(漏洞 #17026780)

  • InnoDB:ha_innobase::clone函数会错误地断言一个线程不能克隆另一个线程使用的表处理程序,并且原始表处理程序和克隆的表处理程序必须属于同一个事务。不正确的断言已被删除。(漏洞 #17001980)

  • InnoDB: 错误 #14606334 的修复中引入的回归会导致崩溃恢复期间启动时崩溃。(漏洞#16996584)

  • InnoDB:INSERT在写入失败后 回滚BLOB将导致断言失败。如果在写入BLOB期间发生错误,断言已被修改为允许 NULLBLOB(漏洞 #16971045)

  • InnoDB: SHOW ENGINE INNODB STATUS输出以十六进制格式引用了一个线程(示例:)事务列表中以十进制格式 thread handle 0x880引用了相同的线程 。(漏洞 #16934269,漏洞 #69437)SHOW ENGINE INNODB STATUSthread id 2176

  • InnoDB:使用IN BOOLEAN MODE修饰符 的全文搜索将导致断言失败。(漏洞 #16927092)

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

  • InnoDB:CHECK TABLE发现包含错误数量条目的二级索引时,它会报告错误但不会将索引标记为已损坏。 CHECK TABLE现在遇到此错误时会将索引标记为损坏,但只有索引被标记为损坏,表不会。结果,只有索引变得不可用,直到它被删除并重建。该表不受影响。(漏洞 #16914007)

  • InnoDB: InnoDB将尝试收集有关部分创建的索引的统计信息。(漏洞 #16907783)

  • InnoDB: 为避免命名空间冲突,'using namespace std'已从InnoDB. (漏洞 #16899560)

  • InnoDB: 当删除具有多个索引的列上的所有索引 当外键约束需要索引时InnoDB无法阻止 DROP INDEX(漏洞#16896810)

  • InnoDB: 优化显式记录锁定例程。(漏洞 #16880127)

  • InnoDB:服务器会在memcached设置操作 期间崩溃失败是由于 utf8CHAR列的填充长度值造成的。在 memcached更新操作期间,旧元组中的字段将被复制,其数据长度小于填充的 utf8CHAR列值。此修复可确保不会复制旧元组。相反,每次都会创建一个新的元组。(漏洞 #16875543)

  • InnoDB: innochecksum将忽略其返回值, 启用CMakefwrite时可能会导致错误或生成警告和编译错误 (漏洞#16872677)WITH_INNODB_EXTRA_DEBUG

  • InnoDB: 断言失败将发生在 包含意外但有效数据目录标志的表row0log.ccROW_FORMAT=REDUNDANT(漏洞#16863098)

  • InnoDB: 中的一个断言row0mysql.cc,它确保字典操作锁不是递归的,失败了。(漏洞 #16862290)

  • InnoDB: InnoDB 缓冲池 的两个INFORMATION_SCHEMA表可能显示读取固定块的无效页面类型。此修复将显示 I/O 固定读取块的未知页面类型。(漏洞 #16859867)

  • InnoDB: InnoDB简化和优化了记录比较功能。(漏洞 #16852278)

  • InnoDB:InnoDB删除了编译memcached 插件 时出现的无效编译警告消息(漏洞 #16816824)

  • InnoDB: 在插入缓冲区合并期间,InnoDB 将调用 lock_rec_restore_from_page_infimum()可能无效的记录指针。(漏洞 #16806366)

  • InnoDB:表中 的innodb_rwlock_x_spin_waits项目 INFORMATION_SCHEMA.INNODB_METRICS 将显示与项目相同的值 innodb_rwlock_x_os_waits。(漏洞 #16798175)

  • InnoDB: 中的trx_tables_locked计数器 INFORMATION_SCHEMA.INNODB_TRX不会考虑所有带锁的表。(漏洞#16793724)

  • InnoDB: 此补丁删除了UNIV_INTERNMySQL 5.1 中引入的功能,以帮助用共享对象插件替换 InnoDB 中的静态链接。 UNIV_INTERN不再需要。(漏洞 #16781511)

  • InnoDB: 在调试版本中,执行全表复制的在线ALTER TABLE操作会引发断言。该断言是由于在 BLOB 检索期间将表修改日志应用于除最后一个日志块之外的任何日志块时会发生的竞争条件。此修复修改 row_log_table_apply_convert_mrec()以确保获取索引 B 树锁以保护对 log->blobsBLOB 页面的访问。(漏洞#16774118)

  • InnoDB:OPT_CHECK_ORDER_BY在调试版本中,在搜索字符串中直接使用二进制时 可能会出现断言 NULL字节和其他无意义的字符。此修复程序将在运行搜索之前删除无意义的字符。(漏洞#16766016)

  • InnoDB: 调试page_zip_validate()功能,UNIV_ZIP_DEBUG在编译时定义时启用,调用 page_zip_decompress(),这反过来会更新一些压缩统计信息。这会导致一些 mysql-test-run 测试失败。(漏洞 #16759605)

  • InnoDB: Valgrind 测试返回了内存泄漏错误,这是由修复 Bug #11753153 引入的回归引起的。该 dict_create_add_foreign_to_dictionary 函数将调用pars_info_create但未能调用pars_info_free. (漏洞 #16754901)

  • InnoDB: 当函数 trx_rollback_or_clean_recovered()在崩溃恢复期间回滚或清理事务时,它会从trx_sys列表中删除 trx 对象,而不释放这些对象使用的内存。为防止内存泄漏,此修复添加了对删除 trx 对象的函数的trx_free_for_background() 调用trx_rollback_resurrected()(漏洞#16754776)

  • InnoDB:dict_check_tablespaces_and_store_max_id()space_id等于零 会发生内存泄漏 (漏洞 #16737332)

  • InnoDB: 压缩page_zip_validate()页面后一致性检查失败,在 page_zip_compress(). 此问题是由 引起的当记录不包含用户数据字节时page_zip_decompress()未能正确设置 heap_no例如,当主键为空字符串且所有二级索引字段为 NULL 或空字符串时,会出现没有用户数据字节的记录。(漏洞 #16736929)

  • InnoDB:输出 中缺少逗号SHOW STATUS 会破坏 MySQL Enterprise Monitor 解析。(漏洞#16723686)

  • InnoDB: 此补丁是一个代码清理,当键未用于列和使用默认latin1_swedish_ci 排序规则时,它可能会提供较小的性能改进。(漏洞 #16723431)

  • InnoDB:在表导出期间修改了外键约束 标识符中的某些字符 (漏洞 #16722314,漏洞 #69062)

  • InnoDB: 干净关闭后,InnoDB不在 .ibd启动时检查文件头。因此,在崩溃恢复情况下,InnoDB可能会加载损坏的表空间文件。此修复实施一致性和状态检查以避免加载损坏的文件。(漏洞 #16720368)

  • InnoDB: 针对 Bug #11762038 的修复引入的回归会导致InnoDB引发不正确的错误消息。该消息指出,InnoDB 无法删除/更新具有超过最大深度 20 的级联外键约束的行。当终止从InnoDB 没有外键约束的表中读取的连接时,会出现错误消息。(漏洞 #16710923)

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

  • InnoDB: 陈旧InnoDB的 memcached 连接会导致内存泄漏。(漏洞 #16707516,漏洞 #68530)

  • InnoDB:innodb_log_group_home_dir在调试版本中,如果不存在 ,则会发生断言失败 如果不存在InnoDB 现在会中止并显示错误消息 ,而不是断言innodb_log_group_home_dir(缺陷 #16691130,缺陷 #69000)

  • InnoDB:ALTER TABLE ADD FULLTEXT由于全文缓存不同步, 现有的全文索引运行后会失效 (错误#16662990,错误#17373659)

  • InnoDB: 进入INSERT临时表导致以下断言:ASSERT ID > 0 IN TRX_WRITE_TRX_ID()。此修复更正了当服务器以只读模式运行时将事务从只读列表移动到读写列表的情况。(漏洞 #16660575)

  • InnoDB: 关闭并重新启动 --innodb-force-recovery设置为 3 或更大(4、5 或 6)的 InnoDB 并尝试删除表会导致崩溃。innodb_force_recovery 模式设置为 3 或更大时,应阻止 DML 操作并允许 DDL 操作。此修复确保允许 DDL 操作。(漏洞 #16631778)

  • InnoDB:ALTER TABLE ... ADD KEY和 之间会出现竞争条件 INSERT ,导致无法清除记录错误。(漏洞 #16628233)

  • InnoDB: 非常大InnoDB的全文搜索 (FTS) 结果可能会消耗过多的内存。此错误修复减少了 FTS 结果的内存消耗,并引入了一个新的配置参数, innodb_ft_result_cache_limit它将 InnoDBFTS 查询结果缓存的默认大小限制设置为 2000000000 字节。 innodb_ft_result_cache_limit 具有无限的最大值,可以动态设置。(漏洞 #16625973)

  • InnoDB: 此修复解决了在已恢复事务的回滚和锁定操作中创建二级索引之间可能发生的竞争条件。竞争条件会破坏二级索引。(漏洞 #16593427)

  • InnoDB: 压缩临时表上的 DML 操作会导致缓冲区管理器堆栈中出现 Valgrind 错误。(漏洞 #16593331)

  • InnoDB:ADD PRIMARY KEY列在ALTER TABLE语句中重新排序时(例如ALTER TABLE t1 ADD PRIMARY KEY(a,b), CHANGE a a INT AFTER b,日志申请 UPDATE操作无法找到行。(漏洞 #16586355)

  • InnoDB: 代码回归导致字典操作中的记录锁定等待。为避免在临时表上启动事务而进行的代码修改未能将状态重置回init操作完成时的状态。如果事务开始,状态通常由 重置 trx_commit。为了在未来发现类似的问题,此修复程序将断言添加到 innobase_commit(), innobase_rollback(), 并且 和 未设置ha_innobase::update_thd()时触发 (漏洞#16575799)trx->dict_operationtrx->dict_operation_lock_mode

  • InnoDB: 在调试版本中,assert_trx_in_list() 断言失败,导致竞争条件。此修复程序删除了断言。相同的断言在调用者中得到验证,现有的检查就足够了。(漏洞 #16567258)

  • InnoDB: MySQL printf 工具 (my_vsnprintf) 不理解 Microsoft I32 和 I64 整数格式宽度说明符,例如%I64u用于打印 64 位无符号整数。因此, DBUG_PRINT无法与%I64u在 Windows 上定义的 InnoDB UINT64PF 格式一起使用。此修复程序将 Windows 上的非标准I64I32长度修饰符替换 为“ lllmy_snprintf() ,以便和 都能理解它们ut_snprintf()。(漏洞 #16559119)

  • InnoDB: 对使用列前缀添加的表的ALTER TABLE操作 可能会产生不正确的结果。(漏洞 #16544336)InnoDBPRIMARY KEY

  • InnoDB: 对于ALTER TABLE操作 InnoDB的表操作,表上的其他事务可能会在复制过程中失败。但是,如果此类事务发出部分回滚,则回滚将被视为完整回滚。(漏洞 #16544143)

  • InnoDB: 包含row0purge.h文件包含自引用包含。(漏洞 #16521741)

  • InnoDB: 在事务提交期间, prepare_commit_mutex获取以保留提交顺序。如果提交操作失败,事务将被回滚,但互斥锁不会被释放。随后的插入操作将无法获取相同的互斥体。此修复程序 prepare_commit_mutexinnobase_rollback. (漏洞 #16513588)

  • InnoDB: 线程recv_writer只会在所有重做日志扫描完成后启动。在多次重做日志扫描的情况下,累积的重做记录将在每次扫描之后和处理下一次扫描之前应用。缺少 recv_writer帮助刷新的线程会减慢恢复速度或导致服务器启动超时。此修复可确保recv_writer线程在处理第一个扫描批次之前启动。(漏洞 #16501172)

  • InnoDB: 在某些情况下,LRU 刷新会花费很长时间,可能会影响所有刷新活动并导致关闭超时。(漏洞 #16500209)

  • InnoDB: 当字符集表InnoDBmemcached test.demo_test表无法工作utf8(漏洞 #16499038)

  • InnoDB: 在线程被迫进行单页刷新的情况下, fsync()将为所有数据文件触发。此修复允许同步单页刷新。(漏洞 #16477781)

  • InnoDB: 此修复 OS_THREAD_SLEEP从 InnoDB 中删除了对的大多数调用。(错误#16472953,错误#68588)

  • InnoDB: FLUSH TABLES ... FOR EXPORT从缓冲池中刷新页面时经常休眠。(漏洞 #16471701)

  • InnoDB: 并发插入全文表会导致部分插入失败。在对隐藏的全文搜索文档 ID 列执行插入操作时,会为全文搜索文档 ID 生成重复值。(漏洞#16469399)

  • InnoDB: memcachedInnoDB文件描述符泄漏会导致严重错误。(漏洞#16466664)

  • InnoDB:page_zip_available函数会对某些字段进行两次计数。(漏洞 #16463505)

  • InnoDB: 此修复将IB_ULONGLONG_MAX 常量LSN_MAX为代码引用日志序列号的TRX_ID_MAX 位置trx->no为初始化为未定义值的位置。此更改不会改变常量的值。(漏洞 #16458660)

  • InnoDB: 此修复更正了 InnoDB 错误 6025 的文本,该文本指出 InnoDB:无法在 ./ib_logfile0 模式下打开读取。。更正后的消息指出,InnoDB: ./ib_logfile0 无法以读取模式打开。消息结构中的变量和模式被调换了。(漏洞#16434398)

  • InnoDB:innodb_data_file_path当使用并保留当前日志文件 更改共享表空间文件名 InnoDB将创建一个新的表空间文件并覆盖日志文件,从而导致数据字典与磁盘上的表不匹配。如果存在不一致的系统表空间、撤消表空间或重做日志文件,此错误修复可确保 InnoDB不会创建新的表空间。(漏洞 #16418661)

  • InnoDB:使用该算法 创建外键约束 设置为 0 ()。因此,不会执行适当的重复 ID 检查。(漏洞 #16413976)ALTER TABLE INPLACEforeign_key_checksSET foreign_key_checks = 0;

  • InnoDB: 当InnoDB shutdown mode(innodb_fast_shutdown)设置为2,master线程进入flush循环后,在某些情况下线程会无法退出。这可能会导致关机挂起。(漏洞#16411457)

  • InnoDB: 在调试版本中,插入失败,断言无效: sync_thread_levels_g(array, level - 1, TRUE)。(漏洞 #16409715)

  • InnoDB:!recv_no_log_write读取页面时崩溃恢复因断言而 失败 (漏洞 #16405422)

  • InnoDB:ALTER TABLE执行表复制 的此修复通过将当前日志序列号 (LSN) 添加到先前表或文件名的末尾,使临时表和表空间名称更加独特。例如,表名 test/#sql-ib21变为 test/#sql-ib21-1701208,,其中 1701208是当前 LSN。LSN 和表 ID 都需要确保名称是唯一的,因为理论上可能多个线程具有相同的 LSN。包括表 ID 允许临时名称与表相关联。(漏洞 #16403420)

  • InnoDB: 多个并发调用 dict_update_statistics()将导致不必要的服务器负载。(漏洞 #16400412)

  • InnoDB: 在 64 位 Windows 构建中, INNODB_BUFFER_POOL_SIZE不会接受超过 32GB 的分配。此限制是由于一个错误,该错误在 64 位 Windows 构建中将 InnoDB 缓冲池大小的内部值截断为 32 位。(漏洞 #16391722,漏洞 #68470)

  • InnoDB: 以只读模式重新启动 InnoDB 并运行工作负载偶尔会返回一个global_segment < os_aio_n_segments断言。(漏洞 #16362046)

  • InnoDB: DROP DATABASE如果数据库包含一个 InnoDB 表,该表在外部数据目录中有一个数据文件,则失败。外部数据文件具有 MySQL 无法识别的“ InnoDB 符号链接文件类型 (.isl此修复程序添加了.isl一个已知的 InnoDB 文件类型。(漏洞 #16338667)

  • InnoDB: RENAME TABLE由于 MySQL mutex 获取死锁会导致挂起。(漏洞 #16305265)

  • InnoDB: 此修复程序删除了受UNIV_LOG_ARCHIVE宏保护的过时和不完整的代码。(漏洞 #16296837)

  • InnoDB: 在测试FLUSH TABLES 由于缺少清除线程已停止的确认,操作导致超时。(漏洞#16277387)

  • InnoDB: 对于压缩表,页面重组操作总是将MLOG_ZIP_PAGE_REORGANIZE记录写入重做日志,只有在 innodb_log_compressed_pages=OFF. 当 时 innodb_log_compressed_pages=ON,页面重组操作应该记录压缩页面图像。(漏洞 #16267120)

  • InnoDB: 当表通过外键约束链接时,加载一个表将递归打开其他链接表。当许多表通过外键约束链接时,这有时会导致线程堆栈溢出,从而导致服务器退出。由外键约束链接的表现在以迭代方式加载。也以递归方式执行的级联操作现在使用显式堆栈迭代执行。(错误#16244691,错误#65384)

  • InnoDB: 禁用外键检查 并执行 a后,重新启动服务器后无法再访问该表。此修复允许在. 当表可访问时,用户必须重新创建丢失的索引以满足外键约束。(错误#16208542,错误#68148)SET foreign_key_checks=0DROP INDEXSET foreign_key_checks=0

  • InnoDB: 当事务处于READ COMMITTED隔离级别时,插入行时仍然在二级索引中获取间隙锁。当扫描二级索引以查找重复项时,会发生这种情况。无论事务隔离级别如何,该 函数 row_ins_scan_sec_index_for_duplicate()始终调用该函数 此修复根据事务隔离级别修改 函数以 使用 或 (漏洞 #16133801,漏洞 #68021)row_ins_set_shared_rec_lock()LOCK_ORDINARYrow_ins_scan_sec_index_for_duplicate()row_ins_set_shared_rec_lock()LOCK_ORDINARYLOCK_REC_NOT_GAP

  • InnoDB: 在只读模式下运行时,持久统计信息将被不必要地禁用。当以只读模式运行时,从磁盘获取统计信息不涉及对磁盘数据的任何修改,除了 whenANALYZE TABLE运行。此修复为只读模式启用持久统计信息。(漏洞 #16083211)

  • InnoDB: 启动mysqld--innodb-log-buffer-size=50GB 分配内存失败并返回 NULL。对于非调试构建,没有适当的检查并且发生了分段错误。此修复程序添加了一条日志消息,指出无法分配内存,并添加了一个断言。(漏洞 #16069598,漏洞 #68025)

  • InnoDB:UNIV_DEBUG调试版本中启用时, buf_validate()通常会调用它,有时会在信号量等待超时测试中导致错误警报。此修复增加了计数器值以减少误报。(漏洞 #16068056)

  • InnoDB: 打印 UTF-8 表名时,InnoDB 会截断表名,导致缓冲区不完整和随后的 Valgrind 错误。此错误修复还解决了不正确的调试错误消息。(漏洞 #16066351)

  • InnoDB:explain_filename函数通过解析文件名来提供有关分区的信息,在尝试解析没有分区信息的文件名时会返回错误。(漏洞 #16051728)

  • InnoDB: 停止服务器,从数据目录中删除数据库表 (d1.t1) .frm文件,重新启动服务器并删除数据库 (d1),将导致断言。(漏洞 #16043216)

  • InnoDB: 在处理读写工作负载时,InnoDB 会扫描比刷新所需更多的页面,从而不必要地消耗 CPU 资源。(漏洞 #16037180)

  • InnoDB: TRUNCATE TABLE无法处理调用 创建新索引btr_create时 (漏洞 #16026889)btr_createTRUNCATE TABLE

  • InnoDB:innodb_row_lock_time_max和 会发生溢出 innodb_row_lock_current_waits。此修复修改了 storage/innobase/srv/srv0srv.c. (漏洞 #16005310)

  • InnoDB: 尝试在 innodb_read_only模式下创建表导致以下错误:ERROR 1015 (HY000): Can't lock file (errno: 165 - Table is read only)。(漏洞 #15963619)

  • InnoDB: 活动 FLUSH TABLES ... FOR EXPORT线程会在关闭期间导致挂起。该修复确保 trx_is_interrupted()ibuf_merge. (漏洞 #15953255)

  • InnoDB: innochecksum在压缩表上运行时会返回错误。(缺陷 #14612872,缺陷 #66779)

  • InnoDB:由重复键错误引起的 多行 INSERT ... ON DUPLICATE KEY UPDATE插入失败将导致重复的自动增量值。(漏洞 #14483484,漏洞 #66301)

  • InnoDB:如果因崩溃而中断,.ibd文件和 InnoDB数据字典 之间的不匹配TRUNCATE TABLE恢复后会遇到不匹配。为避免此问题,将截断表信息写入临时驻留在日志目录中的截断日志文件。截断日志文件具有以下命名约定: . 如果操作成功,截断日志文件将被删除。如果ib_space_id_trunc.logTRUNCATETRUNCATE 操作因崩溃而中断,在恢复期间从截断日志文件中读取信息,应用日志记录,并删除截断日志文件。(错误#14174004、错误#13997329、错误#17227149、错误#17238361)

  • InnoDB: 文档错误地指出 或 START TRANSACTION WITH CONSISTENT SNAPSHOT时才提供一致的快照 。 仅适用于 . 所有其他隔离级别都将被忽略。文档已修改,现在只要 忽略该子句就会生成警告。(错误#14017206,错误#65146)REPEATABLE READSERIALIZABLESTART TRANSACTION WITH CONSISTENT SNAPSHOTREPEATABLE READWITH CONSISTENT SNAPSHOT

  • InnoDB: 后台srv_master_thread线程,它监视服务器活动并在服务器处于非活动状态或处于关闭状态时执行页面刷新等活动,以一秒延迟循环运行。 srv_master_thread休眠前未能检查服务器是否处于关机状态。(缺陷 #13417564,缺陷 #63276)

  • InnoDB: 在错误日志中,在操作期间会报告数据字典中缺少全文搜索索引 TRUNCATE TABLE。重启mysqldInnoDB后会报 如下 错误: “ InnoDB: Error: trying to load index idx13 for table test/g1 but the index tree has been freed. . (漏洞 #12429565)

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

  • InnoDB:innodb_buffer_pool_size在 32 位系统上提供的值太大时,错误消息会错误地引用内部变量 , innobase_buffer_pool_size而不是 innodb_buffer_pool_size。(缺陷 #11759578,缺陷 #51901)

  • InnoDB:使用 Visual Studio 2005 在 Windows Vista 64 位上 编译InnoDB会导致编译错误。(缺陷 #11752731,缺陷 #44004)

  • InnoDB:row_check_index_for_mysql在索引扫描或操作期间检查 NULL 字段 的CHECK TABLE会不必要地迭代。感谢 Po-Chun Chang 提供的补丁解决了这个问题。(错误#69377,错误#16896647)

  • InnoDB:在布尔模式下 运行InnoDB全文搜索时,在*搜索字符串 ('*string') 会导致错误,而对于MyISAM,前缀星号将被忽略。InnoDB为确保和之间的兼容性 MyISAMInnoDB现在以与 相同的方式处理带前缀的星号MyISAM。(缺陷 #68948,缺陷 #16660607)

  • InnoDB: 按降序键顺序连续删除会导致InnoDB索引页不足。当 InnoDB索引页未满时,它会与左兄弟节点或右兄弟节点合并。为确定兄弟节点是否可用于合并而执行的检查未正常运行。(缺陷 #68501,缺陷 #16417635)

  • InnoDB: 设置foreign_key_checks=0 并运行ALTER TABLE以更改具有多个具有外键约束的表的数据库的外键列的字符集将使数据库处于不一致状态。由于检测到不一致,后续ALTER TABLE操作(使用该COPY 算法)foreign_key_checks=1部分执行的ALTER TABLE操作的恢复也会失败,导致被更改的表丢失。当使用子句运行相同的ALTER TABLE 操作时RENAME,不会检测到不一致,但如果ALTER TABLE操作由于其他原因失败,则部分执行的恢复ALTER TABLE失败,结果相同。

    foreign_key_checks在恢复以前的表定义时, 错误修复会暂时禁用 。(缺陷 #65701,缺陷 #14227431)

  • InnoDB: 创建带有注释或默认文本值的表,其中包含用反斜杠转义的撇号有时会导致 InnoDB 存储引擎忽略外键定义。(缺陷 #61656,缺陷 #12762377)

  • InnoDB:已初始化但从未使用过 的pthread_mutex, commit_threads_m已从代码库中删除。(缺陷 #60225,缺陷 #11829813)

  • InnoDB:exit(1)在很多情况下,InnoDB在遇到致命错误时 调用exit(1)调用不会产生故障转储或提供有关进程状态的信息。此外,在 Windows 上, exit(1)调用不会在事件查看器中报告崩溃的进程。此修复 在许多地方exit(1)ut_error(错误#56400,错误#11763660)

  • 分区:t1使用 创建表CREATE TABLE ... PARTITION BY LIST ... PARTITION ... VALUES IN (NULL),然后尝试执行 CREATE TABLE ... LIKE t1导致服务器失败。(漏洞 #16860588)

  • 分区:当升级到 MySQL 5.5.31 或更高版本时,当遇到分区表时 ,一条消息会写入mysql_upgradeALGORITHM的输出中,该分区表需要选项来保持与原始文件的二进制兼容性;该消息包括 ALTER TABLE进行更改所需的声明。对于这样一个具有足够多分区的表,在ALTER TABLE可以写入完整语句之前,消息被错误截断。(漏洞 #16589511)

  • 分区: 当在WHERE 针对按范围分区的表的查询条件中指定范围时,并且指定的范围完全在其中一个分区内时,也会检查下一个分区的行,尽管它应该被删除。

    t 假设我们有一个使用以下 SQL 语句创建 的范围分区表:

    CREATE TABLE t  (
        id INT AUTO_INCREMENT,
        dt DATETIME,
        PRIMARY KEY (dt,id),
        UNIQUE KEY (id,dt)
    )
        PARTITION BY RANGE  COLUMNS(dt) (
            PARTITION p0 VALUES LESS THAN ('2013-01-01'),
            PARTITION p1 VALUES LESS THAN ('2013-01-15'),
            PARTITION p2 VALUES LESS THAN ('2013-02-01'),
            PARTITION p3 VALUES LESS THAN ('2013-02-15'),
            PARTITION pmax VALUES LESS THAN (MAXVALUE)
    );

    此处显示了在运行时出现此问题的查询示例 t

    SELECT COUNT(*) FROM t
        WHERE dt >= '2013-02-01' AND dt < '2013-02-15';

    在这种情况下,pmax即使WHERE 子句中给出的范围完全位于 partition 内,也会检查 partition p3。(漏洞 #16447483)

  • 分区: 删除分区表时, .par首先删除表的文件,然后再删除表定义或数据。这意味着,如果服务器在删除操作期间发生故障,则表可能处于不一致状态,既无法访问也无法删除。

    此问题的修复进行了以下更改:

    • 现在,删除分区表时, .par直到删除所有表数据后才会删除表的文件。

    • 在执行DROP TABLE分区表时,如果确定其 .par文件丢失,.frm则立即删除该表的文件,从而强制完成删除。

    (错误#13548704,错误#63884)

  • 复制;Microsoft Windows: 在 Windows 平台上,SHOW SLAVE STATUS在从属 I/O 线程因错误而终止时发出导致从属失败。(漏洞 #16662771)

  • 复制: 服务器在重置表时尝试执行表的内部截断 slave_worker_info,即使这是 DDL 操作并且不应与 DML 操作同时使用。为了防止这种情况发生,重置现在执行顺序行删除来代替截断操作。(错误#17286858,错误#69898)

  • 复制: 计算了在执行期间创建的表映射事件的数据大小,但不是在从网络数据包创建事件时计算的。当尝试将事件写入缓存或二进制日志时,当此类事件的数据字段被视为长度等于 0 时,这可能会在以后导致问题。

    为了避免将来出现这种性质的问题,现在在两种情况下都会计算表格映射的数据大小。(漏洞 #17164074)

  • Replication: 当该设置为大于1的值--relay-log-info-file 一起使用时 , mysqld启动失败。(漏洞 #17160671)slave_parallel_workers

  • Replication: 二进制日志轮转失败导致的提交错误在二进制日志文件中产生了一个事件事件,并以错误消息中断了用户会话,其中没有提到重播事件事件时从属服务器将在稍后停止。

    现在,当遇到二进制日志轮换失败时,一个更有帮助的错误消息会写入日志,提醒用户及时进行调查。(漏洞 #17016017)

  • 复制: 导致错误 #16579083 中修复的问题的条件继续引发错误,即使条件本身不再导致问题发生。(漏洞 #16931177,漏洞 #69369)

    参考资料:另请参阅:Bug #16271657、Bug #16491597、Bug #68251、Bug #68569。此问题是 Bug #16579083 的回归。

  • 复制:mysqlbinlog选项 --rewrite-db导致 该USE选项未引用的数据库也是如此。(漏洞 #16914535)

  • Replication:rpl_semi_sync_master_timeout 设置为非常大的值时,半同步复制变得非常慢,尤其是当许多会话并行工作时。发现计算这个超时的代码是在等待循环本身内部,结果是增加值 rpl_semi_sync_master_timeout导致重复迭代。此修复改进了用于计算唤醒时间的方法,并将其移出等待循环,以便仅执行一次。(漏洞 #16878043,漏洞 #69341)

  • 复制:FLUSH TABLES WITH READ LOCK通过向STOP SLAVE从站发出新连接,然后SHOW SLAVE STATUS使用原始连接 ,可能会在发出后导致死锁

    对此的修复包括添加 系统变量,以控制在返回警告之前rpl_stop_slave_timeout等待从发出后停止的时间(以秒为单位) 。STOP SLAVE(漏洞 #16856735)

  • 复制: 可以在CHANGE MASTER TO语句中将 MASTER_DELAY选项设置为大于支持的最大值 ()。此外,由于设置为大于的值 没有得到正确处理。(错误#16820156、错误#16960315、错误#69249、错误#69469)231 − 1MASTER_DELAY232

  • 复制: 一些使用变量的表达式没有被正确处理LOAD DATA。(漏洞 #16753869)

  • 复制: 在某些情况下, 尽管当前未实现此变量(该名称已保留以备将来使用)引用 Last_Error了输出列 现在在这种情况下,错误消息不再引用该变量。(漏洞 #16742886,漏洞 #69096)SHOW SLAVE STATUSGTID_NEXT_LIST

    参考资料:另请参阅:Bug #16715809、Bug #69045。

  • 复制: 当目标数据库的名称包含任何下划线 () 字符时, mysqlbinlog失败。 (漏洞 #16737279)--rewrite-db_

  • 复制:在启用 GTID 的主服务器上 发出FLUSH TABLES语句导致复制失败。发现此错误行为是由 Bug #16062608 的修复程序引入的,它不允许执行隐式提交但在 gtid_next设置为 . 以外的任何值AUTOMATIC。该修复程序中所做的更改已被还原,并且(再次)允许此类语句而不考虑此变量的值。(漏洞 #16715809,漏洞 #69045)

    参考资料:恢复补丁:Bug #16062608。

  • 复制:尝试使用带 选项的mysqlbinlog 从基于行格式的二进制日志还原单个数据库时,时间点恢复可能会失败 --database(漏洞 #16698172)

  • 复制:InnoDB在执行RESET MASTER语句 导致丢失先前事务的提交时崩溃错误 发生这种情况是因为准备阶段导致刷新到磁盘,而提交阶段没有在InnoDB.

    为了解决这个问题,RESET MASTER现在导致存储引擎日志在提交时被刷新。(错误#16666456,错误#68932)

  • 复制: 当从二进制日志中处理一个Update_rows_log_eventDelete_rows_log_event时,之前的图像被散列并存储在散列表中。在此之后,扫描原始表以查找所需的记录;后续处理对从原始表中获取的每条记录进行哈希处理,并在哈希表中对其执行查找。但是,从最初设置为的图像中读取的列NULL可能包含随机或 垃圾数据,导致查找(以及复制)失败并出现诸如Could not execute Update_rows event on table...之类的错误。(漏洞 #16621923)

    参考资料:另请参阅:Bug #11766865。此问题是 Bug #16566658 的回归。

  • 复制: 当与 options 一起使用时 , mysqldump在引号内打印端口号,就好像它是一个字符串值而不是一个整数。(漏洞 #16615117)--dump-slave --include-master-host-port

  • 复制:log_event.h如果头文件包含在包含多个源文件的应用程序中,则会 发生链接器错误 rpl_tblmap.cc包含在 log_event.h. 此修复程序将包含的内容移动 rpl_tblmap.cc到使用 log_event.h. (漏洞#16607258)

  • Replication:SHOW SLAVE STATUS当工作线程未能应用事件时 显示的错误事件组的 GTID 也未显示。现在在这种情况下,显示的文本Last_SQL_Error以(物理)主二进制日志坐标为前缀,以及gtid_next设置时的值。(漏洞 #16594095)

  • 复制: 组提交期间的会话附件错误导致事务回滚(如预期的那样),但发生这种情况的事务仍然写入二进制日志并复制到从属服务器。因此,这样的错误可能会导致主从不匹配。

    现在,当发生此错误时,会在二进制日志中写入一个事件事件,导致复制停止,并通知用户二进制日志中可能存在冗余事件。现在还会向客户端报告一个额外的错误,表明正在进行的事务已被回滚。(漏洞 #16579083)

  • Replication: 由于某些系统上的时间分辨率问题,转储线程从从属回复所花费的时间可以计算为小于零,导致Semi-sync master wait for reply fail to get wait time错误. 由于这种情况不会对复制产生负面影响,因此由这些情况引起的错误已减少为警告。(漏洞#16579028)

  • 复制:--log-slave-updates与一起 运行服务器 --replicate-wild-ignore-table--replicate-ignore-table在某些情况下导致不记录用户变量的更新。(漏洞 #16541422)

  • 复制: 当使用mysqlbinlogmysql客户端在启用了 GTID 的服务器上前滚两个或多个二进制日志 gtid_next时,从第一个二进制日志切换到第二个二进制日志时变量没有正确重置,导致处理停止并出现错误观点。(漏洞 #16532543)

  • 复制:尝试处理多个文件时 , mysqlbinlog选项 --include-gtids--exclude-gtids--skip-gtids(漏洞 #16517775)

  • 复制: 当在二进制日志中发现一个或多个 GTID 日志事件但没有以前的 GTIDs 日志事件时,由此产生的错误处理不当并导致服务器故障。(这是一种极其罕见的情况,在正常情况下永远不会发生,并且可能表明二进制日志文件已以某种方式损坏。)现在在这种情况下,会发出适当的错误并得到正确处理。(漏洞 #16502579,漏洞 #68638)

  • 复制: 尝试START SLAVE 在导入新slave_master_infoslave_relay_log_info表后执行失败并显示空错误消息。现在在这种情况下会发出适当的错误和消息。(缺陷 #16475866,缺陷 #68605)

  • 复制:slave_relay_log_info在清空表 后重新启动服务器 导致mysqld在尝试返回错误时失败。(漏洞 #16460978,漏洞 #68604)

  • Replication:MASTER_USER specifying or MASTER_PASSWORDwith 时发出的警告 CHANGE MASTER TO由于多种原因不明确,已改为读取, Storing MySQL user name or password information in the master info repository is not secure,因此不推荐。请考虑为 START SLAVE 使用 USER 和 PASSWORD 连接选项;有关详细信息,请参阅 MySQL 手册中的“START SLAVE 语法”。 (错误#16460123、错误#16461303、错误#68602、错误#68599)

  • 复制: 由于在二进制日志变满时并发尝试旋转,因此执行了额外的二进制日志旋转,允许成功。这可能会导致不必要地创建许多小的二进制日志文件。(错误#16443676,错误#68575)

  • 复制: 当执行事件的大小超过为缓冲区 (slave_pending_jobs_size_max) 设置的最大值时,基于行的复制可能会因Waiting for slave workers to free pending events 而挂起。(漏洞 #16439245,漏洞 #68462)

  • 复制: 在与主服务器断开连接后,从服务器在某些情况下可能会在重新连接时错误地报告它收到了一个大于 的数据包 slave_max_allowed_packet,从而导致复制失败。(漏洞 #16438800,漏洞 #68490)

  • 复制: 使用基于行的复制的从属无法正确读取包含类型列的行MYSQL_TYPE_DECIMAL (旧式十进制,在 MySQL 5.0.3 之前使用)。现在,如果从站接收到这种类型的数据,它就会抛出一个错误。您可以使用 ; 将旧式DECIMAL 格式转换为当前 MySQL 版本中使用的二进制格式 ALTER TABLE;有关详细信息,请参阅 从 MySQL 4.1 升级到 5.0。(漏洞 #16416302)

  • Replication: MTS slave 恢复期间的 SQL 线程错误导致 slave 失败。(缺陷 #16407467,缺陷 #68506)

  • 复制: 当使用选项 , mysqlbinlog无法重置用于存储文件中当前位置的计数器。(漏洞 #16316123,漏洞 #68347)--read-from-remote-server --stop-never --base64-output=decode-rows --verbose

  • Replication: 使用mysqldump备份MySQL 5.6.4及之前版本创建的数据库时,设置 --set-gtid-purged=AUTO导致备份失败,因为5.6.5之前版本的MySQL不支持GTIDs,无法判断是否为GTIDs已为数据库启用。此修复确保 mysqldumpSET @@GLOBAL.gtid_purged在备份任何 5.6.5 之前的数据库时不会尝试输出 (错误#16303363,错误#68314)

  • 复制: DROP TEMP TABLE IF EXISTS语句可能导致在时间点恢复操作期间应用二进制日志失败。这是因为,当使用基于行的复制时,服务器会附加IF EXISTS到写入二进制日志的任何DROP TEMPORARY TABLE语句,并且从属 SQL 线程不会检查 * 通配符过滤规则DROP TEMPORARY TABLE IF EXISTS。如果 --log-slave-updates在从机上也启用了,则这样的语句之前有一个 USE语句。如果语句引用的数据库USE不存在,则语句失败,并停止复制。

    现在,写入DROP TEMPORARY TABLE IF EXISTS二进制日志时,没有USE 写入语句,语句中的表名DROP TEMPORARY TABLE是完全限定的表名。(漏洞 #16290902)

  • 复制: 死锁有时会发生在具有大量并发更新的组提交上,以及当一个客户端从提交中持有锁而另一个客户端在轮换二进制日志时强加锁。(错误#16271657、错误#16491597、错误#68251、错误#68569)

  • 复制: 由于事务的 GTID 已被记录而跳过事务后,所有剩余的已执行事务都被错误地跳过,直到 gtid_next指向不同的 GTID。

    为避免这种不正确的行为,所有事务(即使是那些已被跳过的事务)在提交或回滚时都被标记为未定义,因此每当在同一 SET @@SESSION.gtid_next语句之后执行第二个事务时都会抛出错误。(漏洞 #16223835)

  • 复制: 启用半同步复制后,使用创建的事件自动丢弃到主服务器上ON COMPLETION NOT PRESERVE会导致主服务器失败。(漏洞 #15948818,漏洞 #67276)

  • 复制: 在事务中修改大量数据会导致创建临时文件。max_binlog_cache_size当修改的数据大小超过二进制日志缓存 ( )的大小时,将创建此类文件以前,此类文件会一直存在,直到客户端连接关闭,这可以让它们不断增长,直到耗尽tmpdir. 为防止这种情况发生,在给定事务中以这种方式创建的临时文件的大小现在在事务提交或回滚时重置为 0。(错误#15909788、错误#18021493、错误#66237)

  • Replication: 当master有多个自增列的表, slave--replicate-ignore-table由于规则 原因忽略了至少其中一张表 ,但至少有一张被复制了,即便如此——被复制的一张或多张表至少有一个触发器更新仅存在于从属服务器上的一个或多个表——更新主服务器上的任何自动增量表导致复制失败。(缺陷 #15850951,缺陷 #67504)

  • 复制:SET列设置到 NULL存储过程内部导致复制失败。(缺陷 #14593883,缺陷 #66637)

  • 复制: 二进制日志内容有时会损坏,因为MYSQL_BIN_LOG::write_cache当函数报告“0”时,该函数始终认为它已到达缓存末尾 my_b_fill(),而这也可能意味着发生了错误。此修复可确保每当my_b_fill()返回“0”时,都会对 执行错误检查info->error。(缺陷 #14324766,缺陷 #60173)

  • 复制: 内部函数 MYSQL_BIN_LOG::open_binlog()包含一个不需要的变量,已被删除。(漏洞 #14134590,漏洞 #60188)

  • 复制: PURGE BINARY LOGS按设计不会删除正在使用或活动的二进制日志文件,但在发生这种情况时没有提供任何通知。现在,如果在这种情况下未删除日志文件,则会发出警告;此警告包括有关文件的信息,或者在发出语句时文件未被删除。(错误#13727933,错误#63138)

  • 复制: 当从站在等待下一个成功的作业被添加到工作队列时停止时,多线程从站协调器可能会泄漏内存。(漏洞 #13635612)

  • 复制: 当使用二进制日志记录格式复制到BLACKHOLE 表时,无法应用更新和删除,因此会被跳过。现在,无论何时发生,都会为此生成警告。

    笔记

    binlog_format=STATEMENT复制到使用 BLACKHOLE存储引擎的表时推荐使用。

    (漏洞 #13004581)

  • 复制:LOAD DATA如果语句失败, 创建的临时文件(缺陷 #11763934,缺陷 #56708)

  • 复制: 在从机上的客户端线程执行 a FLUSH TABLES WITH READ LOCK并随后在主机上进行一些更新后,从机在执行时挂起SHOW SLAVE STATUS。(漏洞 #68460,漏洞 #16387720)

  • Microsoft Windows: 在 Microsoft Windows 上, --local-servicemysqld.exe可能会导致启动时崩溃。(错误#16999777,错误#69549)

  • 涉及存储函数的查询的执行时间受同一会话中前一条语句生成的警告数量的影响。(漏洞 #23031008,漏洞 #80922)

  • 如果存储例程条件处理程序重新发出信号 ,SQL 条件项(例如 TABLE_NAME、 等)的内容将丢失。CONSTRAINT_NAME(漏洞 #17280703)

  • AES_ENCRYPT()当 MySQL 使用 192 或 256 的值构建时 AES_DECRYPT()无法正常工作 AES_KEY_LENGTH。(缺陷 #17170207)

  • SELECT * from performance_schema.events_statements_current由于负载下的竞争条件,可能会引发断言。(漏洞 #17164720)

  • InnoDB在名称以数字开头的数据库中全文搜索失败。(漏洞 #17161372)

  • 成功的连接未能重置用于计算连续连接失败的每个 IP 地址计数器。max_connect_errors当达到限制时,这可能会导致主机被阻止 。(漏洞 #17156507)

  • 在启用线程池插件并使用 SSL 的情况下,一个连接中的错误可能会影响其他连接,导致它们失去连接。(漏洞 #17087862)

  • 在负载下,截断accounts Performance Schema 表可能会导致服务器退出。(漏洞 #17084615)

  • my_pthread.hunconditionally included pfs_thread_provider.h,一个未安装的头文件,导致在针对已安装的头文件编译MySQL应用程序时编译失败。(漏洞 #17061480)

  • 与 5.6 相比,MySQL 5.7 中表的POINT列 索引查找速度较慢。InnoDB(漏洞#17057168)

  • Performance Schema 是为嵌入式服务器构建而构建的。这不再发生。(漏洞 #17041705)

  • 可能会从消息缓冲区读取已关闭的连接。(漏洞 #17003702)

  • 在使用游标从 UNION查询中获取行时,服务器可能会退出。(漏洞 #16983143)

  • 范围优化器错误地假定空间索引上的任何几何函数都以 ROWID 顺序返回行,这可能导致不正确的查询结果。(漏洞 #16960800)

  • mysql_secure_installation没有正确清理mysql.proxies_privs已删除帐户的表。(漏洞 #16959850)

  • 线程池插件中的竞争条件可能会导致状态变量 Aborted_connects不递增,并允许同一线程 ID 发生并发终止。(漏洞 #16959022)

  • 在服务器启动时,可以将 validate_password_length系统变量设置为小于与其相关的其他密码长度变量的值所允许的值。(漏洞#16957721)

  • keycache_*服务器启动期间变量 的初始化(请参阅多键缓存)可能会写入不正确的内存。(漏洞 #16945503)

  • 对于调试版本,inside 的不当使用SAFE_MUTEX 导致dbug.c不同的代码区域对互斥锁的大小和内容有不同的想法。这可能会导致越界内存写入。(漏洞 #16945343)

  • 性能模式可能会使用不正确的检测信息生成线程。(漏洞 #16939689)

  • 服务器对任何语句的LOCK_active_mi和 互斥锁进行 了过度锁定 ,即使模式与使用这些互斥锁的状态变量不匹配(, , , , )。现在尝试显示那些变量不会锁定那些互斥锁。这可能会导致数据稍微陈旧,但性能会更好。(漏洞 #16904035)active_mi->rli->data_lockSHOW STATUS LIKE 'pattern'Slave_heartbeat_periodSlave_last_heartbeatSlave_received_heartbeatsSlave_retried_transactionsSlave_running

  • InnoDB在表格 中进行全文短语搜索可能会读取不正确的内存。(漏洞 #16885178)

  • 不可能将多个主要版本的 MySQL 保存在同一个yum存储库中。(漏洞 #16878042)

  • 在这些情况下,多次执行存储过程会导致内存消耗过多:1) 存储过程有一条 SQL 语句在验证期间失败。2) 存储过程有一个需要重新准备的 SQL 语句。(漏洞 #16857395)

  • InnoDB如果 BKA 连接缓存中缓冲的表使用存储引擎(例如或 MyISAM具有小端存储格式),然后下一个表使用存储引擎(例如 NDB本机), 则批处理密钥访问方法可能会在大端机器上返回不正确的结果-endian 存储格式。(漏洞 #16853897)

  • string 的错误字符串 ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE 包含硬编码的数据库名称 ( 'mysql.%s'),当错误引用不同数据库中的表时,这是不正确的。(漏洞 #16813605)

  • 当优化器考虑下推包含可更新用户变量但不包含索引字段的索引条件时,可能会引发断言。(漏洞 #16804581)

  • 如果SET 包含子查询的语句导致内部死锁 InnoDBInnoDB则回滚事务。然而,SQL 层并没有注意到这一点并继续执行,最终导致内部出现断言InnoDB。(漏洞 #16802288)

  • 删除服务器 RPM 包不会关闭正在运行的现有服务器。(漏洞#16798868)

  • MySQL 5.7 中的一些错误与 MySQL 5.6 中的编号不同。(漏洞 #16780120)

  • 当启动被中止时 ,服务器中的竞争条件可能会导致 mysqld进程 ID 文件出现问题。作为此问题修复的一部分, mysqld_safemysqld_safe.pid现在在服务器的数据目录中创建自己的 PID 文件 。(缺陷 #16776528,缺陷 #70308)

  • HAVE_REPLICATIONnow 是从 CMake而不是 in 设置的,my_global.h因此它不依赖于是否 my_global.h包含在内。(漏洞 #16768511)

  • INSERT ... ON DUPLICATE KEY UPDATE如果将没有默认值的列设置为 ,可能会导致服务器退出 DEFAULT。(漏洞#16756402)

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

  • CMake现在假定存在标准的 C 头文件,例如stdlib.hstdarg.h. (漏洞#16748528)

  • 在准备好的语句或存储例程中,如果子查询的 HAVING子句引用了父查询的 GROUP BY 的某些列,则服务器可能会退出。(漏洞 #16739050)

  • -DMY_ATOMIC_MODE_RWLOCKS=1在 MySQL 不支持无锁原子操作(例如 ARM)的平台上 编译失败 。(漏洞#16736461)

  • 一般查询日志中的密码重写现在也适用于准备好的语句。(漏洞 #16732621)

  • 修改了代码库以说明gcc 4.8 引入的新警告检查。(漏洞 #16729109)

  • fill_locks_row()负责为表提供数据 的函数INFORMATION_SCHEMA.INNODB_LOCKS 将尝试在缓冲池中查找 B 树页面以查找INFIMUMSUPREMUM 记录,这两者都有一个预定义的 heap_no. 这会产生不必要的缓冲池争用,并导致当页面在缓冲池中不可用时信息被忽略。此修复PAGE_HEAP_NO_INFIMUM 程序 从. heap_no=0_ (漏洞 #16684523)PAGE_HEAP_NO_SUPREMUMheap_no=1fill_locks_row()

  • 运行时系统变量没有显示mysqldopen_files_limit进程可能拥有 的文件描述符的实际数量,而是在调整启动时指定的值后请求的数量。(漏洞#16657588)

  • 线程池插件中的终止处理会遇到超时问题和 Valgrind 警告。(漏洞 #16633880)

  • 在 Performance Schema 表中设置PROCESSLIST_STATE值的开销THREADS已减少。(漏洞 #16633515)

  • 在存储过程中,对带有分区的表重复执行准备好的 CREATE TABLE语句可能会导致服务器退出。(漏洞 #16614004)

  • 服务器可能会做出有关帐户密码是否已过期的错误决定。(漏洞 #16604641)

  • Windows 身份验证插件无法为每个连接释放上下文缓冲区。(漏洞#16591288)

  • session_connect_attrs在会话执行工作负载时 ,性能模式表中可能偶尔会丢失会话的某些行 。(漏洞 #16576980)

  • DBUG_PRINT()未启用调试时,宏会不必要地评估参数 。(漏洞#16556597)

  • 在 64 位模式下使用 gccg++在 Solaris 上编译的一些问题已得到纠正。(漏洞 #16555106)

  • SHOW WARNINGS并且 SHOW ERRORS没有正确重置警告计数。(漏洞 #16522662)

  • 客户端可以根据连接错误信息的内容判断一个账号是否存在。(错误#16513435、错误#17357528、错误#19273967)

  • 使用 WKB 数据的几何方法执行的输入数据验证不充分,这可能导致 Valgrind 错误或服务器退出。(错误#16510712,错误#12772601)

  • 服务器可能会尝试filesort对零大小排序长度进行操作,从而导致它退出。(漏洞 #16503160)

  • SELECT 在存储过程中 打开游标可能会导致分段错误。(漏洞 #16499751)

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

  • CREATE TABLE或者 ALTER TABLE如果语句指定了不受支持的选项或缺少某些内容,则可能会失败。以前,此类错误返回为 ER_ILLEGAL_HA。现在它们作为新 ER_MISSING_HA_CREATE_OPTION 错误返回。(漏洞 #16498740)

  • 启用查询缓存可能会导致可重复读取的事务返回不正确的结果。(漏洞#16497925)

  • my_load_defaults()进行了修改以适应 gcc 4.7.2 编译下的一些问题,这些问题可能会导致客户端在选项处理期间崩溃。(漏洞 #16497125)

  • 缺少变量初始化导致不正确地返回错误st_select_lex_unit::explain并导致断言失败。(漏洞 #16484966)

  • 当索引条件下推用于递减范围扫描并且第一个范围区间不包含任何符合条件的记录时,即使其他范围区间包含符合条件的记录,范围扫描的结果也可能为空。(漏洞 #16483273)

  • 用于空间操作的 WKB 读取器可能会失败并导致服务器退出。(漏洞 #16451878)

  • ER_OUTOFMEMORY错误在某些地方使用时没有传递正确的参数,导致错误的诊断输出。(漏洞 #16449659)

  • 未能正确处理全文搜索通配符可能会导致服务器退出。(漏洞 #16446108)

  • 在访问引用连接序列中较早的表的列的ref情况下, 优化器试探法不恰当地首选范围访问而不是 访问。ref(漏洞 #16437940)

  • 对于使用ref访问CHARVARCHAR数据类型的查询, ref访问条件可以作为查询条件的一部分再次评估,或者作为索引条件下推到存储引擎。(漏洞 #16437630)

  • 如果优化器正在使用松散索引扫描,则服务器可能会在尝试创建临时表时退出。(漏洞 #16436567)

  • 对嵌套子查询内的聚合表达式的引用可能会导致不正确的结果或服务器退出,其中聚合表达式是在引用外部两层以上的查询块中计算的。(漏洞#16436383)

  • 如果一个表被标记为只包含 NULL所有列的值,如果它是 NULL一个外连接的补充行,那么在不能为空的列上进行汇总会导致服务器退出。(漏洞 #16436014)

  • 与 不同MyISAMInnoDB不支持对非索引列进行布尔全文搜索,但并未强制执行此限制,从而导致查询返回不正确的结果。(漏洞#16434374)

  • 性能模式参数在启动时自动调整大小没有考虑稍后自动调整对性能模式参数所依赖的其他启动参数的更改。(漏洞 #16430532)

  • 全文搜索语法错误无法打印到标准输出。(错误#16429688,错误#16765397)

  • 使用的一些INFORMATION_SCHEMA查询 没有像在 MySQL 5.5 中那样ORDER BY使用 优化。filesort(漏洞 #16423536)

  • 如果用于设置 debug系统变量的调试标志是调试列表中已有的关键字前缀,则它们将被忽略。(漏洞 #16415978)

  • 密码格式错误的手动创建的帐户(使用 INSERT)实际上没有密码。(漏洞 #16414396)

  • 对于调试版本,当 系统变量值超过 255 个字符时会DBUG_EXPLAIN导致缓冲区溢出。debug(漏洞 #16402143)

  • 目录中的几个sql-bench本应可执行的脚本没有设置可执行访问位。(漏洞 #16395606)

  • 对于调试版本,XA 事务处于 IDLE 或 PREPARED 状态,在启用查询缓存的情况下执行查询可能会导致服务器退出。(漏洞 #16388996)

  • 如果删除了系统表的主键mysql.proc(不受支持且不推荐的操作),则服务器将退出以进行后续存储过程调用。其他系统表可能会出现类似的问题。现在出现错误。(漏洞 #16373054)

  • 当尝试评估子查询谓词SELECT (SELECT 1 FROM t1) IN (SELECT a FROM t1)的常量左侧参数时 ,表单查询可能会发生服务器退出 。IN(漏洞 #16369522)

  • TINYBLOB在列中的 a或 GEOMETRY列 的前缀上创建索引时可能会引发断言InnoDB。(错误#16368875、错误#18776592、错误#17665767)

  • 如果锁定超时是由于 UPDATE嵌套 SELECT无法访问另一个线程正在访问的行而导致的,则错误可能会未经检查并导致稍后引发断言。(漏洞 #16367039)

  • 在调试版本中,范围优化器中因 ER_LOCK_DEADLOCKor ER_LOCK_WAIT_TIMEOUT错误而失败可能不会被检测到,并导致在向客户端发送响应时引发断言。在发布版本中,此问题表现为客户端收到一个OK失败的语句。(错误#16366994,错误#16247110)

  • 在调试版本中,范围优化器中因 ER_LOCK_DEADLOCKor ER_LOCK_WAIT_TIMEOUT错误而失败可能无法检测到并导致filesort代码引发断言。在发布版本中,此问题表现为客户端收到 ER_FILSORT_ABORT错误代码而不是正确的错误代码。(漏洞 #16366881)

  • 对于调试版本,可以针对插入 列set_field_to_null()的尝试提出断言 。(漏洞#16362246)NULLNOT NULL

  • 如果在贪婪搜索模式下,优化器识别出连接顺序但无法选择一个,则可以提出断言。(漏洞 #16361170)

  • 竞争条件vio_shutdown()可能导致服务器退出。(漏洞 #16354789)

  • 对于调试版本,子句GROUP_CONCAT(... ORDER BY)内可能会导致服务器退出。ORDER BY(漏洞 #16347426)

  • GROUP_CONCAT()包含具有外部引用的子查询 的调用导致服务器退出。(漏洞#16347343)

  • validate_password插件并不总是对分配空密码实施适当的约束。(漏洞#16346443)

  • 将某些选择时间或 BIGINT类型的子查询或转换为半连接会导致服务器在第二次执行准备好的语句或存储的程序时退出。(漏洞 #16319671)

  • 重新执行存储过程可能会导致服务器退出 Item_field::fix_outer_field. (漏洞 #16317443)

  • 对于调试版本,服务器可以退出涉及嵌套子查询的查询,子查询转换为半连接并使用视图。(漏洞 #16317076)

  • do_copy_not_null() 服务器可能由于不正确的 -NULL值检查而 退出。(漏洞#16316564)

  • 如果在删除与多列索引关联的列后存在重复索引,则不会生成警告。(漏洞 #16315351)

  • SELECT DISTINCTwithWITH ROLLUP可能会导致Duplicate entry 'NULL' for key '<auto_key>'错误。(漏洞 #16314835)

  • Oracle RPM 包由于文件中的行 yum问题而无法使用,导致yum 将包解释为过时了。(漏洞 #16298542)obsoletes.spec

  • XOR范围优化器可能会为使用操作 的查询设置不正确的范围。(漏洞 #16272562)

  • 如果使用的帐户密码过期,则mysql_secure_installation无法连接到服务器。它以非交互方式调用mysql,导致该程序无法连接。现在mysql 支持一个 --connect-expired-password选项,该选项向服务器指示它可以处理过期密码帐户的沙箱模式,即使是非交互调用,并且 mysql_secure_installation使用此选项调用 mysql 。(漏洞 #16248315)

  • 通常的失败登录尝试计费不适用于失败的COM_CHANGE_USER命令。(错误#16241992,错误#17357535)

  • LOAD DATA对于调试版本,如果失败的语句后跟INSERT同一会话中的同一表, 则可以引发断言 。(漏洞 #16240526)

  • 如果在使用 的查询上使用了松散索引扫描,则 MIN()可能会发生分段错误。(漏洞 #16222245)

  • eq_ref对于调试版本,对于使用access 和 执行的查询错误地提出了断言filesort。(漏洞 #16164885)

  • 在执行准备好的语句期间引用的用户变量被设置为在执行结束时释放的内存。第二次执行该语句可能会导致在访问此内存时出现 Valgrind 警告。(漏洞 #16119355)

  • 准备好的语句中左表达式的错误优化可能导致服务器退出。(漏洞 #16095534)

  • 如果my_write()遇到磁盘已满的情况,它可能会返回不正确的错误值。(错误#16078792,错误#19984788)

  • 服务器可能会在第二次调用存储例程时退出,该例程在连接子句中执行UPDATEDELETE使用无效列。(漏洞 #16078466)

  • 某些包含ORDER BYSQL_CALC_FOUND_ROWS可能导致服务器退出 JSON 格式EXPLAIN 语句的查询。(错误#16077396,错误#16078113)

  • 使用的准备好的语句 GROUP_CONCAT()ORDER BY命名多列的子句可能导致服务器退出。(漏洞 #16075310)

  • ORDER BY MATCH ... AGAINST可能导致服务器退出。(漏洞 #16073689)

  • FEDERATED在不指定连接字符串的情况下 创建表导致服务器退出。(漏洞 #16048546)

  • 当一个分区丢失时,代码 in ha_innodb.cc将重试 10 次,每次按住 时休眠一微秒 LOCK_open。分区表的重试逻辑是作为 Bug#33349 的修复程序引入的,但不包括用于验证它的测试用例。此修复删除了分区表的重试逻辑。如果 Bug#33349 中报告的问题再次出现,将探索不同的解决方案。(漏洞 #15973904)

  • 来自 MySQL 5.6.4 及更高版本的客户端程序可能会在连接过程中使用旧服务器无法理解的较新协议功能来混淆旧服务器。(漏洞 #15965409)

  • 如果命令是在多个服务器运行的情况下执行 的,则mysql.server脚本会退出并出错。status(漏洞 #15852074)

  • 在某些情况下,REVOKE可能无法撤销GRANT OPTION 特权。(漏洞 #14799187)

  • 在语句的子句中 使用VALUES()函数可能导致 Valgrind 警告或服务器不稳定,可能导致服务器退出。(漏洞 #14789787)VALUES()INSERT

  • 调试同步工具可能会丢失信号,从而导致虚假ER_DEBUG_SYNC_TIMEOUT 错误。(错误#14765080,错误#18221750)

  • mysql客户端 在交互模式下读取每一行后分配但没有释放字符串,导致内存泄漏。(漏洞 #14685362)

  • 优化器跟踪可以打印不可用于范围访问的关键部分的范围。(漏洞 #14615536​​)

  • 在断开连接的过程中终止连接可能会导致提出断言、Valgrind 警告和一般不稳定。(漏洞 #14560522)

  • 语句中的密码在写入审计日志之前没有被混淆。(漏洞 #14536456)

  • INFORMATION_SCHEMA.INNODB_BUFFER_PAGE 对请求的table_name和 值 运行查询时 ,查询结果将包括没有或 值index_name的索引页。(漏洞 #14529666)table_nameindex_name

  • 客户端-服务器协议中的一些 命令没有对传入的网络数据包进行长度检查,这可能会导致格式错误的输入出现各种问题。(漏洞 #14525642)COM_xxx

  • 如果用于处理 带有或 参数 CALL的存储过程的准备语句,则没有正确设置检索所有结果集所需的标志。(错误#14492429,错误#17849978)OUTINOUTmysql_stmt_store_result()

  • INSERT ... ON DUPLICATE KEY UPDATE在视图上可能会导致服务器退出。(漏洞 #14261010)

  • 使用线程池插件时,正常的连接终止 Aborted_clients会导致状态变量增加。(漏洞 #14081240)

  • 如果HAVE_CRYPT为 0,则会发生构建失败。(缺陷 #14036425)

  • 按子查询中的外部BLOB列分组导致服务器退出。(错误#13966809,错误#14700180)

  • 在 Windows 上,表单的命令行选项 有效但 无效。 --opt_name="opt_value"--opt_name='opt_value'

    在所有平台上,对于形式的 Performance Schema 选项, 现在拒绝无效的仪器名称。(漏洞 #13955232)--performance_schema_instrument="instrument=value"

  • 服务器可能在未能处理 . 中的内存不足情况后退出 open_normal_and_derived_tables()。(漏洞 #13553905)

  • 由于对无效比较的错误处理不当,服务器可能会退出。(漏洞 #13009341)

  • 如果以自定义安装或更改模式运行,MySQL 安装程序会提供无效的安装选项。(漏洞 #12928601)

  • 为具有外连接的准备好的SELECT 语句返回的元数据可能表明包含NULL值的列是NOT NULL. (漏洞 #12818811)

  • 线程池插件生成了一条错误消息,其中包含不正确的最大值 thread_pool_prio_kickup_timer 。(漏洞 #12817590)

  • 对于调试版本,服务器可能会因一系列使用用户变量的语句而退出,这样它的字符集/排序规则从语句更改为语句。(漏洞 #12368577)

  • 当这些函数引用同一复合键的不同列时,使用多个aggr_func(DISTINCT) 函数(其中 aggr_func()是聚合函数,例如)的 查询可能会返回不正确的结果 。COUNT()(漏洞 #12328597)

  • 表单的查询SELECT ... UNION SELECT ... ORDER BY被错误地解析,ORDER BY应用到最终SELECT 而不是整个语句。(漏洞 #11886060)

  • 包含特殊字符的标识符在将此类字符转换为编码格式后可能会变得太长,从而导致 SQL 错误或无法找到文件。(漏洞 #11766880)

  • CMake检查 在unsigned time_t所有平台上都失败了。(漏洞 #11766815)

  • mysql_convert_table_format忽略 --engine-e作为该 --type 选项的同义词。(漏洞 #11756950)

  • mysqladmin debug使服务器将调试信息写入错误日志。在支持的系统上, 当mysqld消耗超过 4GB 内存 mallinfo()时,此输出的内存状态部分在 64 位环境中不正确

    现在服务器用于malloc_info()获取内存状态信息。malloc_info()不报告glibc malloc()实现内部使用分配的内存mmap()。但是,它确实提供了所有内存区域中的内存使用信息。

    此错误修复还涉及输出格式的更改。服务器现在以 XML 格式而不是纯文本格式写入内存信息。例子:

    Memory status:
    <malloc version="1">
    <heap nr="0">
    <sizes>
    <size from="33" to="33" total="1056" count="32"/>
    <size from="65" to="65" total="65" count="1"/>
    <size from="113" to="113" total="226" count="2"/>
    <size from="129" to="129" total="2451" count="19"/>
    <size from="145" to="145" total="290" count="2"/>
    <size from="161" to="161" total="1288" count="8"/>
    <size from="209" to="209" total="418" count="2"/>
    </sizes>
    <total type="fast" count="0" size="0"/>
    <total type="rest" count="66" size="5794"/>
    <system type="current" size="10833920"/>
    <system type="max" size="10833920"/>
    <aspace type="total" size="10833920"/>
    <aspace type="mprotect" size="10833920"/>
    </heap>
    <total type="fast" count="0" size="0"/>
    <total type="rest" count="66" size="5794"/>
    <system type="current" size="10833920"/>
    <system type="max" size="10833920"/>
    <aspace type="total" size="10833920"/>
    <aspace type="mprotect" size="10833920"/>
    </malloc>

    (漏洞 #11746658)

  • 函数的DBUG_ENTER字符串 THD::increment_questions_counter()错误地命名了 THD::increment_updates_counter()函数。(缺陷 #69989,缺陷 #17297266)

  • RPM 包没有为其内容提供小写标签。例如,服务器 RPM 表示它提供了 MySQL-server,但没有 提供mysql-server。(漏洞 #69830,漏洞 #17211588)

  • 如果使用不正确的 SSL 安装路径或不受支持(太旧)的 SSL 安装路径指定 CMake选项,则该选项将隐式更改为该值,并改用 yaSSL。现在 CMake以错误退出,因此用户知道必须更改选项值。(缺陷 #69744,缺陷 #17162055)WITH_SSL bundled

  • 选择空结果集(使用 WHERE 1=0或创建WHERE FALSE)与派生表的并集时,对派生表应用了不正确的筛选。(缺陷 #69471,缺陷 #16961803)

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

  • 对于带有ORDER BY ... LIMIT的查询,优化器可以为表访问选择一个无序索引。(漏洞 #69410,漏洞 #16916596)

  • 如果query_cache_type在启动时被禁用以防止在运行时启用查询缓存, query_cache_type即使它已经被禁用,在运行时禁用也会生成警告。(缺陷 #69396,缺陷 #16906827)

  • 当内部缓冲区对于工作负载来说太小时,性能模式可能会在内部自旋循环中花费大量时间来尝试分配内存缓冲区,然后失败。(漏洞 #69382,漏洞 #16945618)

  • 如果SQL_CALC_FOUND_ROWS在前面的查询中没有,FOUND_ROWS() 应该返回结果集中的行数,但如果查询包含 ,这并不总是发生ORDER BY。(缺陷 #69271,缺陷 #16827872)

  • InnoDB在搜索包含撇号的单词时, 对表格进行全文搜索失败。(漏洞 #69216,漏洞 #16801781)

  • libmysql.dll中缺少几个符号:my_initmysql_client_find_pluginmysql_client_register_pluginmysql_load_pluginmysql_load_plugin_vmysql_options4mysql_plugin_options。(漏洞 #69204、漏洞 #16797982、漏洞 #62394)

  • 如果一个UPDATE包含子查询的查询在内部引起死锁 InnoDB,则死锁没有被 SQL 层正确处理。SQL 层然后尝试在InnoDB回滚事务后解锁该行,在内部引发断言 InnoDB。(缺陷 #69127,缺陷 #16757869)

  • FOUND_ROWS()如果前面的查询使用 ,则可能会返回不正确的值 filesort。(漏洞 #69119,漏洞 #16760474)

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

  • 优化器可能会为带有ORDER BY ... LIMIT. (缺陷 #69013,缺陷 #16697792)

  • 释放后一些可能的内存使用情况已得到修复。感谢 Jan Staněk 提供的补丁。(缺陷 #68918,缺陷 #16725945)

  • 某些LEFT JOIN查询GROUP BY可能会返回不正确的结果。(漏洞 #68897,漏洞 #16620047)

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

  • 某些错误只有在它们由特定语句引发时才能由条件处理程序处理,例如 INSERT,但如果它们由其他语句引发则不能,例如UPDATE. 一个例子是外键错误 ER_NO_REFERENCED_ROW_2,它可以被不同地处理,这取决于引发它的语句。(漏洞 #68831,漏洞 #16587369)

  • 当在选项文件中指定时, plugin-dir客户端选项被忽略。(漏洞 #68800,漏洞 #16680313)

  • 对于排序规则 ,值和字符串的比较DATETIME无法正常工作 。utf8_unicode_ci(漏洞 #68795,漏洞 #16567381)

  • 当只计算事件而不是计时时,Performance Schema 会将MIN_TIMER_WAIT值报告为一个大数字而不是 0。(Bug #68768,Bug #16552425)

  • 使用带有索引前缀的范围访问可能会产生不正确的结果。(缺陷 #68750,缺陷 #16540042)

  • 对表的全文搜索在InnoDB搜索与+-运算符组合的文字短语时失败。(漏洞 #68720,漏洞 #16516193)

  • 对于调试版本,元数据锁定CREATE TABLE ... SELECT可能会引发断言。(缺陷 #68695,缺陷 #16503173)

  • 在 Solaris 上使用gcc 编译产生了不正确的 32 位系统构建。(漏洞 #68675)

  • mysqld --helpmysqld 执行了不必要的日志记录。(缺陷 #68578,缺陷 #16442113)--verbose --help

  • 提供了一个新的CMake选项, WITH_EDITLINE用于指示是使用捆绑的还是系统 libedit/editline库。允许的值为bundled(默认值)和system.

    WITH_EDITLINE替换 WITH_LIBEDIT,已被删除。(漏洞 #68558,漏洞 #16430208)

  • 该功能的开销skip_trailing_space() 减少了。(错误#68477,错误#16395778)

  • 如果使用松散索引扫描来评估将整数列与指定为带引号的字符串(例如,col_name = '1')的整数进行比较的查询,则该查询可能会返回不正确的结果。(错误#68473,错误#16394084)

  • 使用扩展辅助键的优化(请参阅 索引扩展的使用)仅适用于 InnoDB,即使对于具有必要的底层功能的存储引擎也是如此。(漏洞 #68469,漏洞 #16391678)

  • 如果不可用, mysql_install_db会错误地尝试创建mysql.innodb_table_statsmysql.innodb_index_statsInnoDB(缺陷 #68438,缺陷 #16369955)

  • BIT(0)不是有效的数据类型规范,但已自动转换为BIT(1). 现在发生 ER_INVALID_FIELD_SIZE错误,规范被拒绝。(漏洞 #68419,漏洞 #16358989)

  • mysql.user在使用未升级表( 尚未运行mysql_upgrade ) 的 MySQL 5.5 更新的 MySQL 服务器 中,设置密码的语句由于对password_expired列的错误检查导致服务器退出。(缺陷 #68385,缺陷 #16339767)

  • 在存储过程的第一次调用期间使用的派生表上的索引不会在后续调用中使用。(缺陷 #68350,缺陷 #16346367)

  • 如果诸如 AES_DECRYPT()需要 SSL 支持的函数失败,该错误可能会影响以后对需要 SSL 支持的函数的调用。(漏洞 #68340,漏洞 #16315767)

  • 对于DELETEand UPDATE语句, EXPLAIN显示 NULLref列中对于某些情况const来说是比较合适的。(漏洞 #68299,漏洞 #16296268)

  • 即使以多字节默认字符集启动,mysql 客户端也会错误地用于某些比较,从而导致客户 端崩溃latin1(漏洞 #68107,漏洞 #16182919)

  • 在选项文件中,如果值是在选项名称之后给出且 =两者之间没有符号,则服务器可能会误解选项设置。(缺陷 #67740,缺陷 #15930031)

  • 在基于行的日志记录格式下,包含参数替换标记的准备好的 DML 语句的性能 ?得到了改进:由于这种情况下的二进制日志不需要包含语句文本,并且由于语句不会像某些 DDL 语句可能那样被强制为基于语句的日志记录是的,不需要替换 ?标记来生成适合日志记录的语句。(错误#67676,错误#16038776)

  • ELT(LEAST(...),..)NULL即使 LEAST()返回 ,也可能返回非值NULL。(漏洞 #67578,漏洞 #16171537)

  • 如果服务器在启动时找不到该errmsg.sys 文件,则生成的错误消息不会指示要检查哪个配置参数。(漏洞 #67576,漏洞 #15880018)

  • mysqldumpSET将 语句写 SET OPTION,重新加载时失败,因为不推荐使用的OPTION 关键字已从 SET 语法中删除。(漏洞 #67507,漏洞 #15844882)

  • 对于为事件调度程序、事件执行或新连接创建新线程失败,没有消息写入错误日志。这可能会给人留下事件调度程序正常运行的印象,而实际上却没有。(错误#67191、错误#14749800、错误#16865959)

  • 使用cmake -DWITHOUT_SERVER 配置以在没有服务器的情况下构建客户端对于源代码树之外的构建失败。(缺陷 #66000,缺陷 #14367046)

  • mysqldump假定数据库中存在 general_logslow_logmysql。如果调用它从不存在这些表的旧服务器转储表,则会失败。(漏洞 #65670,漏洞 #14236170)

  • 如果帐户具有非零 MAX_USER_CONNECTIONS值,则该值并不总是被尊重。(漏洞 #65104,漏洞 #14003080)

  • 尝试从源 RPM 包构建可能会失败,因为构建过程试图引用 pb2user可能不存在的。(错误#64641、错误#13865797、错误#69339、错误#16874980)

  • ALTER TABLE使用无效的外键约束执行操作时,报告的错误 ER_CANT_CREATE_TABLE不是 ER_CANNOT_ADD_FOREIGN。(缺陷 #64617,缺陷 #13840553)

  • 如果一个会话在一个表上有任何元数据锁,另一个试图CREATE TABLE [IF NOT EXISTS]访问同一个表的会话就会挂起。发生这种情况是因为在检查表是否已存在之前,在第二个会话中尝试获取表上的独占元数据锁。独占元数据锁与任何其他元数据锁都不兼容,因此如果另一个会话锁定了表,则该会话会在锁定超时期限内挂起。

    现在服务器首先尝试获取表上的共享元数据锁以检查它是否存在,如果不存在则升级为独占锁。如果该表确实存在,则会发生错误CREATE TABLE并发出警告 CREATE TABLE IF NOT EXISTS。(错误#63144,错误#13418638)

  • sql-common/client_plugin.c包含不可移植的va_list参数使用。(缺陷 #62769,缺陷 #13252623)

  • InnoDB不支持全文解析插件,但指定了也报错。现在 ER_INNODB_NO_FT_USES_PARSER 返回一个错误。(缺陷 #62004,缺陷 #12843070)

  • 数据库帮助表中的urlmysql太短,无法容纳帮助内容中的某些 URL。这些列现在创建为类型TEXT以适应更长的 URL。(缺陷 #61520,缺陷 #12671635)

  • 中的错字cmake/dtrace.cmake阻止了 DTrace 支持被启用 -DENABLE_DTRACE-on。(缺陷 #60743,缺陷 #12325449)

  • 用于 LIKE模式匹配的 Turbo Boyer-Moore 算法无法处理某些模式。服务器现在使用原始的 Boyer-Moore 算法。(错误#59973,错误#11766777)

  • 布尔插件系统变量在未签名的机器上表现不佳char;一些代码试图为这些分配一个负值。(缺陷 #59905,缺陷 #11864205)

  • 某些子查询转换在 EXPLAIN输出中不可见。(缺陷 #59852,缺陷 #11766685)

  • 配置 MySQL -DWITH_EXTRA_CHARSETS=none导致构建失败。(错误#58672,错误#11765682)

  • 从当前 debug系统变量设置中添加或减去关键字的两个问题已得到纠正:

    • debug表示 'd'启用所有调试宏。以下序列使值处于不正确的状态:

      mysql> SET debug = 'd';SELECT @@debug;
      +---------+
      | @@debug |
      +---------+
      | d       |
      +---------+
      
      
      mysql> SET debug = '+d,M1';SELECT @@debug;
      +---------+
      | @@debug |
      +---------+
      | d,M1    |
      +---------+

      第一条 SET 语句启用所有调试宏。第二个 SET 应该将M1宏添加到当前集,这应该不会导致任何变化,因为当前集已经是所有宏。相反,第二个 SET 将当前设置重置为仅M1 宏,有效地禁用所有其他宏。服务器现在正确地将debug设置保留为'd'

    • debug表示 ''未启用调试宏。以下序列使值处于不正确的状态:

      mysql> SET debug = 'd,M1';SELECT @@debug;
      +---------+
      | @@debug |
      +---------+
      | d,M1    |
      +---------+
      
      
      mysql> SET debug = '-d,M1';SELECT @@debug;
      +---------+
      | @@debug |
      +---------+
      | d       |
      +---------+

      第一条 SET 语句设置debugM1*宏。第二个 SET 应该从当前集合中减去M1宏,不启用任何调试宏。相反,第二个 SET 将当前设置重置为'd'(启用所有宏)。服务器现在正确设置 debug''.

    (错误#58630,错误#11765644)

  • 现在可以 mysql-test通过调用CMake并将 INSTALL_MYSQLTESTDIR选项显式设置为空来在从源代码编译 MySQL 后抑制目录的安装:

    cmake . -DINSTALL_MYSQLTESTDIR=

    以前,尝试这样做会导致错误。(错误#58615,错误#11765629)

  • 在 64 位 OS X 系统上,CMake 在确定机器类型时使用 x86而不是。x86_64(错误#58462,错误#11765489)

  • 长表名或列名可能导致 mysqlshow退出。(错误#53956,错误#11761458)

  • big_tables启用后,在非重复键上使用具有常量相等条件的简单连接的查询 返回COUNT(DISTINCT)不正确的结果。(错误#52582,错误#11760197)

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

  • 选项文件中的!includedir指令未读取.cnf.ini 文件名中包含扩展名前的点的文件。(缺陷 #51609,缺陷 #11759306)

  • 从查询缓存提供的成功查询没有清除警告。(缺陷 #49634,缺陷 #11757567)

  • 如果ALTER TABLE用于设置在创建时作为默认值的TIMESTAMPDATETIME列 的默认值CURRENT_TIMESTAMP,则新默认值不会由 显示 SHOW CREATE TABLE,并且可能会在列中插入不正确的值。(错误#45669、错误#11754116、错误#76610、错误#20848203)

  • IF()在准备好的语句和非准备的语句中执行时,函数求值可能会产生不同的结果。(漏洞 #45370,漏洞 #11753852)

  • 范围优化器使用了错误的先决条件来得出一个表是外部连接的内部表的结论。这导致了不正确的成本估计和为查询处理选择了错误的索引。(错误#37333,错误#11748775)

  • 为了更好地防止堆栈溢出,服务器现在在发出线程堆栈大小请求时考虑保护区的大小。(漏洞 #35019,漏洞 #11748074)

  • 如果mysqld在由/etc/init.d/mysql stop启动的关闭期间崩溃, mysqld_safe会在不应该重启 mysqld时重启。(错误#34084,错误#13864548)

  • mysql.h不再 __WIN__在 Windows 上定义,并且 MySQL 源已更改为测试_WIN32。(缺陷 #20338,缺陷 #11745828)