Documentation Home
MySQL 5.7 发行说明  /  MySQL 5.7.9 的变化(2015-10-21,全面上市)

MySQL 5.7.9 的变化(2015-10-21,全面上市)

审核日志说明

  • 有些事件无法终止。以前,如果审计插件为不可终止事件返回非零状态,服务器将忽略该状态并继续处理该事件。但是,如果审计插件使用my_message() 函数终止不可终止的事件,则会发生服务器退出。现在服务器使用 正确处理不可终止事件的终止my_message()。(缺陷号 21458066)

C API 说明

  • 不兼容 的更改:mysql_options()C API 函数有两个新选项, MYSQL_OPT_MAX_ALLOWED_PACKETMYSQL_OPT_NET_BUFFER_LENGTH,它们设置客户端/服务器通信缓冲区的客户端最大大小,以及 TCP/IP 和套接字通信的缓冲区大小。(设置这些选项类似于设置 max_allowed_packetnet_buffer_length系统变量。)每个选项名称现在也可以传递给 mysql_get_option()C API 函数以检索其值。有关详细信息,请参阅 mysql_options()mysql_get_option()

    (未记录的)mysql_get_parameters() 功能已被删除。尝试使用它的应用程序将出现链接错误,应修改为使用 mysql_options()and mysql_get_option()代替。

    一个受影响的应用程序是 DBD::mysql,它是 Perl DBI 的 MySQL 驱动程序。升级到 DBD::mysql 4.033 或更高版本,其中包括对刚刚描述的 C API 更改的修复。(缺陷号 20821550)

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

  • 以前, mysql_thread_end()每次 mysql_thread_init()调用都需要调用以避免内存泄漏。mysql_thread_init()C API 内部已经重新实现,以减少必须由以下人员释放的信息量 mysql_thread_end()

    (错误#11758368、错误#20621281、错误#21802367)

编译笔记

  • Microsoft Windows: 添加了对使用 Microsoft Visual Studio 2015 构建的支持。更改包括使用本机(在 VS 2015 中添加)timespec 库(如果存在)、重命名 lfind/lsearch 和 timezone/tzname 以避免重新定义问题、 默认设置为 TMPDIR不再存在、弃用 以支持 ,并添加了 Wix Toolset 3.10 支持. (缺陷号 21657078)""P_tmpdirstd::hash_mapstd::unordered_map

  • 服务器构建的 Boost 库的最低版本现在是 1.59.0。(错误#77960,错误#21567456)

  • MySQL 发行版现在包含一个 mysqlclient.pc文件,该文件提供有关供 pkg-config命令使用的 MySQL 配置的信息。这使得 pkg-config可以用作 mysql_config的替代品,以获取编译 MySQL 应用程序所需的编译器标志或链接库等信息。有关详细信息,请参阅 使用 pkg-config 构建 C API 客户端程序

    一个新的CMake选项可用于指定安装 文件的目录。默认值为 ,除非 以 结尾 ,在这种情况下首先删除。(错误#76131,错误#20637746)INSTALL_PKGCONFIGDIR mysqlclient.pcINSTALL_LIBDIR/pkgconfigINSTALL_LIBDIR/mysql

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

弃用和移除说明

  • 重要变更;复制: 在 MySQL 5.7 中, binlog_max_flush_queue_time MySQL 5.6 中引入的系统变量不再有任何作用。此变量现已弃用,并已标记为在未来的 MySQL 版本中最终删除。(缺陷号 21347087)

  • mysql_install_db 的 shell 和 Perl 版本 已从 MySQL 发行版中删除。在 MySQL 5.7.5 中实现的mysql_install_db的可执行 C++ 版本 仍然存在,但仍然被弃用(使用mysqld --initialize代替)并将在未来的 MySQL 版本中删除。(漏洞 #21625471)

  • 不再安装 已弃用_r的库版本 。libmysqlclient(缺陷号 21311067)

性能模式注释

  • 对 的影响进行了两项更改 show_compatibility_56

    • 以前,当 show_compatibility_56=OFF,从以下 INFORMATION_SCHEMA系统和状态变量表中进行选择时,会返回空结果和弃用警告:

      INFORMATION_SCHEMA.GLOBAL_VARIABLES
      INFORMATION_SCHEMA.SESSION_VARIABLES
      INFORMATION_SCHEMA.GLOBAL_STATUS
      INFORMATION_SCHEMA.SESSION_STATUS

      这给不知道此类选择可能为空的应用程序造成了混淆:空结果和警告不足以表明需要迁移到相应的性能模式系统和状态变量表。

      为了解决这个问题,从 INFORMATION_SCHEMA系统和状态表中进行选择现在会产生错误,以更加明显地表明应用程序正在需要修改的条件下运行,以及问题所在。错误代码是 ER_FEATURE_DISABLED_SEE_DOC。错误消息指示哪个表被禁用以及show_compatibility_56 应查阅文档。

    • 以前,当 show_compatibility_56=ON,从以下 Performance Schema 状态变量表中选择时返回空结果:

      performance_schema.global_status
      performance_schema.session_status

      这使得将应用程序从 INFORMATION_SCHEMA状态变量表迁移到相应的性能模式表变得更加困难:从性能模式表中成功选择需要知道服务器来自 MySQL 5.7 和 show_compatibility_56=OFF.

      为了解决这个问题,从 Performance Schema 状态变量表中选择现在会产生相同的结果,而不管 的值 show_compatibility_56。因此,只需要知道服务器来自 MySQL 5.7.9 或更高版本。(如果是,请从 Performance Schema 表中选择。否则,请从 INFORMATION_SCHEMA表中选择。)

    有关影响 show_compatibility_56和迁移问题的其他信息,请参阅服务器系统变量迁移到性能模式系统和状态变量表。(漏洞 #21606701)

  • 这些 Performance Schema 表现在是全球可读和可访问的,无需特权 SELECTglobal_variables、、、 和 。此更改的含义是,不再需要对在. (漏洞 #21251297)session_variablesglobal_statussession_statusSHOW VARIABLESSHOW STATUSshow_compatibility_56=OFF

  • show_compatibility_56 启用系统变量后, Last_query_costLast_query_partial_plans 状态变量的报告值不正确 。

    show_compatibility_56 禁用系统变量后 Created_tmp_tablesHandler_external_lock、 和 Table_open_cache_%status 变量的报告值不正确 。(错误#20483278、错误#21788549、错误#21788887)

  • 之前,表中的transactioninstrument setup_instruments默认是禁用的,表中的 events_transactions_currentand events_transactions_historyconsumers setup_consumers默认是启用的。这种设置是不一致的,并且启用消费者可能会让人觉得交易是默认检测的。现在,消费者也默认被禁用。要监控交易,请启用工具和适用的消费者。(错误#78311,错误#21780891)

  • show_compatibility_56 禁用系统变量的情况下,如果在没有性能模式支持的情况下编译 MySQL SHOW VARIABLESSHOW STATUS语句将失败。因此,没有 Performance Schema 就无法再进行编译。如果希望在没有特定类型的检测的情况下进行编译,可以使用以下CMake 选项来完成:

    DISABLE_PSI_COND
    DISABLE_PSI_FILE
    DISABLE_PSI_IDLE
    DISABLE_PSI_MEMORY
    DISABLE_PSI_METADATA
    DISABLE_PSI_MUTEX
    DISABLE_PSI_PS
    DISABLE_PSI_RWLOCK
    DISABLE_PSI_SOCKET
    DISABLE_PSI_SP
    DISABLE_PSI_STAGE
    DISABLE_PSI_STATEMENT
    DISABLE_PSI_STATEMENT_DIGEST
    DISABLE_PSI_TABLE
    DISABLE_PSI_THREAD
    DISABLE_PSI_TRANSACTION

    例如,要在没有互斥检测的情况下进行编译,请使用该-DDISABLE_PSI_MUTEX=1选项配置 MySQL。(错误#78159,错误#21669500)

  • Performance Schema 表被session_account_connect_attrs 错误地更改为需要SELECT特权。它不再需要特殊特权。(错误#77702,错误#21436364)

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

  • setup_timers表中, CYCLEARM64 平台的计时器现已可用。(错误#77620,错误#21374923)

  • Performance Schema 现在包括这些用于监视二进制日志和中继日志缓存文件上的 I/O 的工具:

    wait/io/file/sql/binlog_cache
    wait/io/file/sql/binlog_index_cache
    wait/io/file/sql/relaylog_cache
    wait/io/file/sql/relaylog_index_cache

    此外,默认值 performance_schema_max_file_classes 已从 50 增加到 80。(Bug #76225,Bug #20675180)

  • Performance Schema 表现在threads包含一个THREAD_OS_ID列,指示由底层操作系统定义的线程或任务标识符。例如,列值对应于 Windows 上的 Process Explorer 线程 ID 和 gettid()Linux 上的值。有关详细信息,请参阅 线程表

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

插件说明

  • 审计插件 API 已经过广泛修订,以支持将一般事件类型 ( MYSQL_AUDIT_GENERAL_CLASS) 更精细地分解为更具体的事件。这使审计插件能够更准确地指示它们感兴趣的事件类型,并减少仅用于少数事件类型的插件的开销。API 现在还允许提前终止事件执行。有关详细信息,请参阅 编写审计插件。一般事件类型仍然可用,但已弃用,并将在未来的 MySQL 版本中删除。

    此外,security_context现在还提供插件服务。审计插件可以使用此服务来检查或修改与审计事件关联的线程的安全上下文。请参阅MySQL 插件服务

安全说明

  • 对于基于 RPM 的包,用于创建数据目录 ( /var/lib/mysql) 的权限已从 755 更改为 751。这收紧了数据目录权限,同时仍允许世界访问 mysql.sock该目录中的文件。(缺陷号 21066592)

  • yaSSL 已升级到版本 2.3.8。

    从旧版本升级修复了与线程池插件一起使用时的连接失败问题。(错误#20774956,错误#21888925)

服务器管理

空间数据支持

  • 诸如 ST_MPointFromText()和 之类ST_GeomFromText()的接受 WKT 格式MultiPoint 值表示的空间函数现在允许值中的各个点用括号括起来。例如,以下两个函数调用都是有效的,而之前的第二个函数调用产生了错误:

    ST_MPointFromText('MULTIPOINT (1 1, 2 2, 3 3)')
    ST_MPointFromText('MULTIPOINT ((1 1), (2 2), (3 3))')

    此外, 生成 WKT 格式结果的 函数(例如ST_AsText()和 )现在显示每个点都带有括号的值。(错误#54065,错误#11761559)ST_AsWKT()MultiPoint

sys架构注释

  • MySQL 发行版中包含的sys架构已更新至 1.5.0 版。此版本包括新功能:

    • 新的diagnostics()存储过程使 DBA 和其他支持人员能够收集诊断信息以调查 MySQL 实例性能。新的 metrics视图和 statement_performance_analyzer() 存储过程为过程提供了支持基础 diagnostics()结构。

    • 以下sys模式视图现在为长时间运行的事务提供进度报告:

      processlist
      session
      x$processlist
      x$session

      这些视图的progress列显示了支持进度报告的阶段的已完成工作百分比。有关详细信息,请参阅 sys 模式进度报告

    • sys模式对象现在有 一个DEFINER'mysql.sys'@'localhost'(以前 DEFINER'root'@'localhost'。)使用保留 mysql.sys帐户可以避免在 DBA 重命名或删除 root帐户时发生的问题。

    sysschema 1.5.0 还包括对几个问题的修复:

    • 在某些情况下,架构和存储函数会返回不正确 的sys结果 ps_is_instrument_default_enabled()ps_is_instrument_default_timed()

    • 在早期 MySQL 5.7 版本中添加到 Performance Schema 表 的ENABLED和 列导致架构 存储过程不起作用。 HISTORYsetup_actorssysps_setup_reset_to_default()

    • 模式中事件计时信息的 sys处理已更新,以处理 MySQL 5.7.8 中性能模式事件计时列的更改。

    • mysql_upgrade先前检查模式中的确切对象计数值 sys以确定是否需要升级。如果添加了本地对象,则重新安装会删除这些对象。现在它至少检查预期数量的对象。

    如果从早期版本升级到此 MySQL 版本,则必须运行mysql_upgrade以将这些更改合并到sys架构中。

    感谢 Daniël van Eeden、Jesper Wisborg Krogh、Shlomi Noach 和 Morgan Tocker 对本次更新所做的贡献。(错误#78115、错误#21647101、错误#77927、错误#21550271、错误#78720、错误#21966366)

添加或更改的功能

  • 不相容的变化;InnoDB: 为了更好地管理重做日志格式更改,第一个重做日志文件 (ib_logfile0) 的重做日志标头现在包含一个格式版本标识符和一个文本字符串,用于标识创建重做日志文件的 MySQL 版本。

    一个新的布尔配置选项 innodb_log_checksums,取代了该innodb_log_checksum_algorithm选项。 innodb_log_checksums=ON启用CRC-32C校验和,使其成为重做日志页面唯一支持的校验和。

    此补丁还从重做日志标头和检查点页面中删除了未使用的字段。

    由于此补丁引入了重做日志格式更改,从 MySQL 5.7.9 及更高版本升级或降级需要干净关闭,并且在某些情况下,需要删除现有的重做日志文件。有关此更改的说明,请参阅 MySQL 5.7中的更改和 降级说明。(错误#21759424、错误#78275、错误#21752674)

  • 重要变更;InnoDB: DYNAMIC替换COMPACTInnoDB 表的隐式默认行格式。一个新的配置选项, innodb_default_row_format指定默认的InnoDB行格式。允许DYNAMIC的值包括(默认值)COMPACT、 和 REDUNDANT

    在此版本之前,行格式仍然是默认行格式,以确保与MySQL 5.1 及更早COMPACT版本的旧版本兼容。InnoDB现在 MySQL 5.1 已经到达其产品生命周期的末尾,较新的DYNAMIC行格式成为默认格式。有关 DYNAMIC行格式优点的信息,请参阅 动态行格式

    新创建的表使用由未明确指定选项或使用选项innodb_default_row_format时 定义的行格式 。 ROW_FORMATROW_FORMAT=DEFAULT

    ROW_FORMAT如果明确指定 了选项,则现有表会保留其当前行格式 。如果ROW_FORMAT未明确指定选项或ROW_FORMAT=DEFAULT使用了选项,则任何重建表的操作也会默默地将表的行格式更改为 定义的格式 innodb_default_row_format。有关详细信息,请参阅 定义表的行格式

  • 重要变更;JSON: 引入了 -> JSON 列路径运算符。 现在支持作为 的同义词 ,其中 是 列,并且 是有效的 JSON 路径。 column->pathJSON_EXTRACT(column, path)columnJSONpath

    表达式 with ->,就像它的等价物 uses JSON_EXTRACT()instead 一样,可以用来代替列标识符,只要列标识符可以出现在有效的 SQL 语句中。例如,以下 CREATE TABLEand SELECT语句是有效的:

    CREATE TABLE t1 (
      a JSON,
      b INT,
      g INT GENERATED ALWAYS AS (a->"$.id"),
      h INT GENERATED ALWAYS AS (a->"$.storeid"),
      INDEX i (g),
      INDEX j (h)
    );
    
    SELECT
      CONCAT(a->"$.fname", ' ', a->"$.lname") AS name,
      a->"$.id" AS id,
      a->"$.storeid" AS store
      FROM t1
      WHERE g > 500
      ORDER BY a->"$.storeid", a->"$.lname";

    列路径表达式可用于在SELECT列列表或任何 SQL 语句中的 WHERE,ORDER BYGROUP BY子句中读取的任何列值;此类表达式不能用于设置值。

    当一条 SQL 语句包含一个或多个使用 ->表示法的表达式时,这些表达式中的每一个都被翻译成一个等效的表达式,该表达式使用该 JSON_EXTRACT()函数来代替。这可以在EXPLAIN when used on such a statement 的输出中看到。

    与 一样JSON_EXTRACT()->运算符返回时就 NULL好像没有找到任何有效路径的匹配值一样。

    有关->和 的更多信息JSON_EXTRACT(),请参阅 搜索 JSON 值的函数。有关 JSON 路径支持的信息,请参阅 搜索和修改 JSON 值。有关其他信息和示例, 另请参阅索引生成的列以提供 JSON 列索引。

  • InnoDB: 一个新的INNODB_METRICS服务器操作计数器 (innodb_dict_lru_count) 计算从表缓存 LRU 列表中逐出的表数。感谢 Daniël van Eeden 提供补丁。(缺陷 #21682332,缺陷 #78190)

  • InnoDB:innodb_numa_interleave 的只读配置选项允许您启用 NUMA 交错内存策略以分配 InnoDB缓冲池。启用时 innodb_numa_interleave,NUMA 内存策略设置为 MPOL_INTERLEAVE用于 mysqld进程。InnoDB分配缓冲池 后 NUMA内存策略设置回 MPOL_DEFAULT。此选项仅在支持 NUMA 的 Linux 系统上可用。

    感谢 Stewart Smith 提供的补丁。(错误#18871046,错误#72811)

  • JSON: JSON 值更新函数 JSON_APPEND()JSON_SET()JSON_REPLACE()JSON_INSERT()现在将 SQL NULL值视为 JSON 空文字,这与JSON_OBJECT()JSON_ARRAY()。(错误#77733,错误#21450922)

  • MySQL 发行版现在包括这些头文件,因为 它们 my_sys.h依赖于它们 : my_thread_local.h、、、、 。(缺陷号 21909332)thr_cond.hthr_mutex.hthr_rwlock.h

  • MySQL Server RPM 包现在已过时 MySQL Connector C。安装 MySQL Server 会导致旧 libmysqlclient的 MySQL Connector C 包被删除,并用当前的 libmysqlclient. (缺陷号 21900800)

  • RPM.spec文件已更新,因此从源 RPM 包构建的 MySQL 服务器将包含适当的文件以利用操作系统 NUMA 功能。这引入了对 libnuma.so.1. RPM 和yum 检测到这一点,如果没有安装该库,则拒绝安装。(漏洞 #21775221)

  • JSON_APPEND()函数已重命名为JSON_ARRAY_APPEND(). (缺陷号 21560934)

  • default_storage_enginedefault_tmp_storage_engine 系统变量设置为 disabled_storage_engines系统变量中命名的禁用存储引擎时,服务器现在会生成警告。(漏洞 #21405865)

  • 表空间的元数据锁定已得到扩展,因此对于引用多个表空间的 DDL 语句,将在所有使用的表空间上获取元数据锁。(缺陷号 21376265)

  • 单元测试现在使用 Google Mock 1.7 而不是 1.6。(漏洞 #21215389)

  • 添加了对使用 Solaris Studio 5.13 构建的支持。(缺陷号 21185883)

  • mysql_ssl_rsa_setup现在默认情况下噪音较小。仅当给出openssl时才显示命令的 输出--verbose(漏洞 #21024979)

  • MEMORY 通过缓存计算的哈希值,减少 了存储表的插入开销。(错误#78480,错误#21866029)

  • mysqld --initialize 写入错误日志的初始密码消息已从 a 减少 [Warning]到 a [Note]。(错误#78182,错误#21680457)

  • mysqlpump现在支持一个 --version选项。(错误#77894,错误#21534277)

  • 不需要的脚本和测试文件已从 tests目录中删除,该目录已重命名为testclients. (错误#77807,错误#21490075)

  • 列中的性能模式摘要DIGEST_TEXT...附加到末尾以指示语句何时超过最大语句大小并被截断。现在也对SQL_TEXT列中的语句文本值执行此操作。(错误#75861,错误#20519832)

  • mysql_upgrade的 输出现在不那么嘈杂,信息量更大。(错误#59077,错误#11766046)

修正错误

  • 重要变更;创新数据库;分区: 无法升级现有分区表以使用 InnoDBMySQL 5.7.6 中为表实现的本机分区。此修复程序增加了对mysql_upgrademysqlInnoDB客户端的支持,以升级在以前版本中创建的分区 ha_partition处理程序,改为使用 InnoDB本机分区。

    • mysql_upgrade现在检查 InnoDB使用通用处理程序创建的所有表ha_partition并尝试将它们升级到InnoDB本机分区。

    • mysql客户端中,可以使用此版本中实现的语句将 5.7.6 之前的分区InnoDB表逐个升级为本机分区 。ALTER TABLE ... UPGRADE PARTITIONING

    (错误#20727344,错误#76374)

  • 重要变更;复制: andSTART SLAVE语句 STOP SLAVE不能再用于 group_replication_recovery通道。有关详细信息,请参阅 复制通道。(缺陷号 21680074)

  • 重要变更;复制: 当使用单线程从站时,applier 线程的状态现在作为 replication_applier_status_by_worker 表的一部分报告,而不是 replication_applier_status_by_coordinator. 这意味着 replication_applier_status_by_coordinator当使用单线程从站时它现在是空的;应该注意的是,多线程从站的此类报告没有改变,并继续显示在该表中。(缺陷 #74765,缺陷 #20001173)

  • 创新数据库;Microsoft Windows: 尝试在 Windows 根驱动器上创建通用表空间数据文件导致错误。(错误#21419888,错误#77676)

  • 创新数据库;Microsoft Windows:lower_case_table_names=0在不区分大小写的文件系统上进行 设置 使用错误的字母大小写运行操作。当尝试在 不区分大小写的文件系统上启动服务器时,现在会打印一条错误消息并退出服务器。(缺陷 #20198490,缺陷 #75185)INSERT INTO ... SELECT ... FROM tbl_nametbl_name--lower_case_table_names=0

  • InnoDB: 撤消日志包含有关虚拟列和虚拟列索引的信息不足,这可能导致在添加或删除虚拟列时服务器退出。因此, innodb_fast_shutdown=0在从 MySQL 5.7.8 执行就地升级或降级之前,需要缓慢关闭(使用 )。有关详细信息,请参阅 升级 MySQL。(缺陷 #21869656,缺陷 #78489)

  • InnoDB:ALTER TABLE 在虚拟列上创建索引 的表重建(缺陷 #21847170,缺陷 #78452)

  • InnoDB:SELECT ... FOR UPDATE对具有虚拟生成列的表 的InnoDB为覆盖二级索引扫描不必要地检索了一个非索引虚拟列。(缺陷号 21827963)

  • InnoDB:由于不正确的撤消日志记录大小计算ROW_FORMAT=DYNAMIC或 时创建具有大行的表失败 ROW_FORMAT=COMPRESSED相同的操作通过ROW_FORMAT=COMPACTROW_FORMAT=REDUNDANT

    ROW_FORMAT=DYNAMIC如果禁用, ROW_FORMAT=COMPRESSED现在允许在 DDL 时违反行长度 。innodb_strict_mode(错误#21816041,错误#78392)

  • InnoDB: 在索引前缀长度超过最大长度的虚拟生成列上添加索引导致服务器退出。(漏洞 #21812026)

  • InnoDB: 崩溃恢复后发生内存泄漏。分配的内存 fil_space_read_name_and_filepath()未释放。(漏洞 #21811321)

  • InnoDB: 更改虚拟生成列的数据类型或计算方法导致错误。(漏洞 #21810004)

  • InnoDB: 创建空间索引时提出了一个断言。 InnoDB未能对空间索引列之前的虚拟列进行计数。(缺陷号 21807340)

  • InnoDB: MySQL 5.7.5 中的表空间发现修改包括删除与MLOG_FILE_CREATE2 重做日志记录相关的代码。结果,重做日志没有包含足够的文件创建信息。(缺陷 #21801423,缺陷 #78363)

  • InnoDB: 重做日志没有提供在并发 DDL 操作期间为索引页写入禁用重做日志记录的指示。因此,外部热备份工具可能会产生损坏的备份。(缺陷 #21796691,缺陷 #78351)

  • InnoDB: 在调试版本中,恢复在透明页面压缩测试期间断言。双写缓冲区中的撕裂页面导致 LSN 调试检查失败。(缺陷号 21796092)

  • InnoDB: 在分区表上创建虚拟生成列导致服务器退出。(缺陷 #21790751,缺陷 #78326)

  • InnoDB:numactl在构建包含 NUMA 内存策略支持的 MySQL 版本时,构建主机上 的旧版本(缺陷号 21785074)

  • InnoDB:SELECT .. FOR UPDATE对索引虚拟生成列 的(缺陷号 21775459)

  • InnoDB: 表空间标识符 (space_id) 被记录两次以用于MLOG_TRUNCATE重做日志记录。(缺陷号 21744589)

  • InnoDB: 崩溃恢复发出了无效的错误消息,指示isl文件无法打开或不正确。(缺陷号 21691438)

  • InnoDB: Monitor 显示了一个信号量等待时间长的互斥体 的InnoDB不正确的互斥体创建信息。(错误#21682997,错误#78179)

  • InnoDB:函数 中的错误消息格式已更正 os_file_write_page()。(错误#21681433,错误#78184)

  • InnoDB:i_s_dict_fill_sys_tablespaces()函数可以在打印错误消息之前释放与文件名关联的内存。(错误#21680518,错误#78180)

  • InnoDB: 在调试版本中,扫描和应用的重做日志记录现在在 --debug=d,ib_log传递给 mysqld时使用字符串标识符而不是数字标识符打印。例如,rec MLOG_2BYTES现在打印而不是rec 2. (错误#21664268,错误#78148)

  • InnoDB:InnoDB 减少了页面压缩功能进行 的系统调用(漏洞 #21654695)

  • InnoDB:当遇到不完整的记录时, 该recv_parse_log_rec函数返回重做日志记录的长度而不是0MLOG_CHECKPOINT。(错误#21640085,错误#78058)

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

  • InnoDB: 在调试版本中, MATCH() AGAINST()子句中的括号不匹配引发了全文解析器断言。(缺陷号 21638907)

  • InnoDB: 添加了调试代码以避免在 Valgrind 测试期间出现双写缓冲区断言。(漏洞 #21631197)

  • InnoDB: 改进了日志消息,以帮助识别添加回滚段时可能发生的空间不足错误。(缺陷号 21629618)

  • InnoDB: 在调试版本中,在 innodb_log_checkpoint_now表重建ALTER TABLE 操作时启用调试选项可能会导致无限循环。(错误#21628087,错误#78056)

  • InnoDB: UNIV_INLINE没有为 dict_table_has_indexed_v_cols函数定义。(缺陷 #21628058,缺陷 #78055)

  • InnoDB: 不支持将虚拟列数据类型更改为就地操作。(缺陷号 21617377)

  • InnoDB: 排序被ALTER TABLE更改主键并删除前一个主键的最后一列的语句跳过。(错误#21612714,错误#78020)

  • InnoDB: 在恢复期间,无效isl文件被视为丢失重做日志isl中记录中定义的文件位置打开表空间如果文件无效MLOG_FILE_*,恢复将不再打开表空间 isl(错误#21577278,错误#77986)

  • InnoDB:删除 了提供旨在减少自适应哈希索引搜索闩锁 (btr_search_latch) 争用的超时机制的代码。在 MySQL 5.7.8 中引入自适应哈希索引搜索系统分区后,该代码已过时。(缺陷 #21569876,缺陷 #77957)

  • InnoDB:COMPRESSION选项在SHOW CREATE TABLE 输出中显示不正确。(缺陷 #21557723,缺陷 #77940)

  • InnoDB:innodb_data_file_path 匹配引发断言,使用对于指定页面大小来说太小的数据文件大小初始化数据库也是如此。(漏洞 #21551464)

  • InnoDB: 添加了检查以防止访问处于不一致状态的全文索引表。(缺陷号 21529012)

  • InnoDB:DROP INDEX导入 在源服务器上操作 更改的表空间时发生架构不匹配错误(缺陷 #21514135,缺陷 #77659)

  • InnoDB: 在前面的列上添加全文索引后在虚拟生成的列上创建索引会引发断言。(缺陷号 21478389)

  • InnoDB: 对于具有DYNAMICCOMPRESSED行格式的表,为虚拟列记录了比必要更多的数据。(缺陷号 21477535)

  • InnoDB: 一个INSERT操作提出了一个 btr_search_enabled断言。断言代码过于严格。(缺陷号 21457373)

  • InnoDB: 重新加载空表时被逐出的表会导致 AUTO_INCREMENT值被重置。(缺陷 #21454472,缺陷 #77743)

  • InnoDB:操作 期间崩溃TRUNCATE TABLE 导致服务器在启动时退出。(漏洞 #21451922)

  • InnoDB:删除在 MySQL 数据目录之外创建 的.isl通用表空间时未删除。(错误#21446772,错误#77724)

  • InnoDB:REPEATABLE READ在事务隔离级别 下发生不一致读在同一行上操作的事务以错误的顺序从事务 ID 列表中删除。(缺陷 #21433768,缺陷 #77699)

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

  • InnoDB: 禁用自适应哈希索引功能后,不必要地获取并释放自适应哈希索引锁存器。(缺陷号 21407023)

  • InnoDB:对具有在虚拟列上定义的索引的表 的ALTER TABLE操作错误地修改了虚拟列的数据。(错误#21376546,错误#77628)

  • InnoDB: 与虚拟列相关的清除操作引发了断言。(缺陷号 21374258)

  • InnoDB: 在分区表上,在生成的列上创建索引会引发断言。(缺陷号 21372331)

  • InnoDB: 由于内存已满情况,在线调整缓冲池的大小引发了断言。(错误#21348684,错误#77564)

  • InnoDB:ALTER TABLE ... IMPORT TABLESPACE带有 innodb_page_size=4KROW_FORMAT=DYNAMIC引发断言 的(缺陷 #21341030,缺陷 #77540)

  • InnoDB: 对于空间索引,InnoDB在撤消日志记录中不必要地存储了 3072 字节的前缀,而不仅仅是最大边界矩形 (MBR)。对于具有外部存储数据的列,前缀和 MBR 都会被记录。(缺陷 #21340268,缺陷 #77537)

  • InnoDB:init_ftfuncs()删除了 无效(缺陷号 21300774)

  • InnoDB: 内存分配完整性检查已添加到 memcached代码中。(缺陷号 21288106)

  • InnoDB: 不正确的引用计数导致 TrxInInnoDB构造函数挂起。 在销毁调整引用计数innobase_close_connection()的对象之前释放事务对象 TrxInInnoDB(缺陷号 21280816)

  • InnoDB: 重新引入 SHOW ENGINE INNODB MUTEX功能的 MySQL 5.7.8 补丁导致性能下降。(缺陷号 21266784)

    参考资料:另请参阅:Bug #77314、Bug #21238953。

  • InnoDB: memcached命令 flush_all 引发断言。从断言代码中调用了启动事务的函数。(错误#21239299,错误#75199)

  • InnoDB: 当高优先级事务等待受害者事务退出而受害者事务等待异步回滚完成时,发生关闭挂起。(漏洞 #21143276)

  • InnoDB: ARM64 上发生数据损坏。设置或取消设置锁定字时,GCC 内置程序未发出正确的围栏。(缺陷 #21102971,缺陷 #76135)

  • InnoDB: 服务器关闭延迟等待清除线程退出。为避免此问题,减少了调用 trx_purge()次数,并将 trx_purge()批处理大小减少到 20。(缺陷 #21040050)

  • InnoDB:READ COMMITTED模式下, REPLACE对唯一二级索引的操作导致约束冲突。感谢 Alexey Kopytov 提供的补丁。(缺陷 #21025880,缺陷 #76927)

  • InnoDB:IBUF_BITMAP_FREE位表示叶页中的可用空间多于实际可用空间。(缺陷号 20796566)

  • InnoDB: 在恢复崩溃的数据库之前移动数据目录导致在 MySQL 数据目录之外创建的 file-per-table 表空间的表空间发现失败。(缺陷 #20698468,缺陷 #76308)

  • InnoDB: 调试innodb_buf_flush_list_now设置无法将所有脏页刷新到磁盘。(缺陷号 20582189)

  • InnoDB: 一个ALTER TABLE ... ADD FULLTEXT INDEX操作提出了一个断言。线程试图使用在回滚操作完成之前正在回滚的较低优先级事务。(漏洞 #20481175)

  • InnoDB:ALTER TABLE在对引用表执行并发 DML 操作期间,在具有级联外键约束的引用表上运行操作会导致引用完整性丢失 。(缺陷号 20367116)

  • InnoDB: 服务器无法以 innodb_force_recovery大于 3 的设置InnoDB。在应用重做日志之前设置为只读模式。

    DROP TABLE现在支持innodb_force_recovery 大于 3 的设置。(缺陷 #19779113)

  • InnoDB:trx_sys_read_pertable_file_format_id() 函数报告了错误的文件格式。(漏洞 #19206671)

  • InnoDB:mysql_system_tables_fix_for_downgrade.sql 从 MySQL 安装目录中删除了用于在从 MySQL 5.7.6 或更高版本降级时促进系统表更改 的 该脚本不再对所有降级路径有效。有关详细信息,请参阅 降级注释。(错误#78259,错误#21753832)

  • InnoDB: 使用索引条件下推 (ICP) 的表上的虚拟生成列导致断言。(错误#77842、错误#21507796、错误#21478287)

  • 打包; OS X:在 OS X 上安装期间 使用user=mysql不允许mysql 安装数据库。为解决此问题,OS X 软件包现在--no-defaults 在创建此数据库时使用该选项。这也意味着my.cnf系统上有文件不再影响安装。(缺陷号 21364902)

  • 分区:ALTER TABLE未正确执行针对未分区表 的失败分区相关操作的错误处理

  • 分区: ALTER TABLE从存储过程执行时,并不总是能正确处理由RANGE. (错误#77333、错误#16613004、错误#21246891)

  • Replication: group replication applier 通道不 DATABASE支持 slave_parallel_type; 启动组复制时,会明确检查并正确处理。但是,仍然可以在稍后的某个时间点通过增加slave_parallel_workers 从属 SQL 线程停止时的值来间接更改此值,这会导致应用程序因错误而失败。为解决此问题, slave_parallel_typefor group_replication_applier以确保LOGICAL_CLOCK 无论何时将slave_parallel_workers 大于 0,而不仅仅是在首次启动组复制时将其设置为。(缺陷号 21798804)

  • 复制:binlog_error_action=ABORT_SERVER 是 MySQL 5.7.7 及更高版本中的默认设置,用于更多错误情况。该行为已调整为生成核心转储,以提高故障排除的可能性。(缺陷 #21486161,缺陷 #77738)

  • 复制: 在运行时,某些Gtid_set对象可以使用等于 0(无效)的 Performance Schema 互斥键进行检测,因为在实际未提供互斥键时将其用作有效默认值。这允许在没有有效密钥的情况下创建这些对象,从而导致在使用它们时出现更多问题。(漏洞 #21485997)

  • 复制: 使用 运行服务器时 gtid_mode=ONDELETEa MEMORY未正确写入二进制日志。(漏洞 #21045848)

  • 复制: ER_CANT_USE_AUTO_POSITION_WITH_GTID_MODE_OFF 没有使用正确的格式报告错误。(缺陷号 20545943)

  • 复制: 当转储线程在转储不活动的二进制日志时被杀死时,此日志中的某些事件可能会被跳过,因此不会被复制。(错误#78337,错误#21816399)

    参考资料:另请参阅:Bug #74607、Bug #19975697。

  • 复制: XA 事务可能导致断言条件 XA COMMIT;发生这种情况是因为内部事务状态没有在XA PREPAREXA COMMITXA ROLLBACK,因为这些操作构成 XA 下的单独事务。此外, XA ROLLBACK在某些情况下,报表处理不当。(错误#78264,错误#21755890)

  • 复制: Group Replication 插件和 Performance Schema 引擎之间的接口使用了一种传递给服务器的内存分配,并且在插件和performance_schema表之间传递信息时是潜在的问题来源。此接口的实现已重新设计,以避免在共享数据时执行此类内存分配。(错误#78263,错误#21755699)

  • 复制: 工作线程忽略了为每个通道设置的 MTS 子模式,它继续读取和使用为所有从属通道设置的全局标志。当协调器属于一种类型而其工作人员属于另一种类型时,这可能会导致错误。(错误#77763,错误#21464737)

  • 复制: 当复制从站仅被授予特权时,复制从属可能会因为没有足够的特权而失败 REPLICATION SLAVE。(缺陷 #77732,缺陷 #21455603)

  • 复制: 状态变量 Slave_open_temp_tables跟踪复制从站打开的临时表的数量。如果启用了多源复制,它是所有通道的临时表总数。此修复解决了与此变量相关的以下问题:

    • RESET SLAVE FOR CHANNEL channel将 的值强制Slave_open_temp_tables为 0;如果其他一些复制通道打开了临时表,但后来被删除,则该值会变成一个大的负值 ( )。这也会在发出 or 语句时导致虚假或错过警告。 1 - 232STOP SLAVECHANGE MASTER TO

    • 在这种情况下修改的内部函数 Slave_open_temp_tables依赖于两个不正确的假设:

      1. 当未启用多线程从属时,变量仅由一个线程更新,这在多源复制的情况下是不正确的。

        非原子操作对于单个写入器和多个读取器是安全的,这对于 MySQL 支持的某些平台来说不一定是正确的。

    (错误#77585,错误#21357008)

  • 复制: 警告“@@SESSION.gtid_executed”已弃用,将在未来版本中删除。即使会话变量 gtid_executed未包含在查询结果中,也会打印出来。此外,结果 SELECT @@SESSION.gtid_executed包含重复警告。这两个问题的发生是因为每当gtid_executed语句访问 的值时都会打印警告,这种访问是理所当然的,无论给定变量是否实际包含在结果中。

    为了解决这个问题,我们 通过进行以下更改来使处理与在这种情况下处理 @@SESSION.gtid_executedalso-deprecated 变量的方式一致 :@@GLOBAL.sql_log_bin

    警告仍然由诸如 SELECT @@SESSION.gtid_executedwhich 直接访问变量值的语句发出。(错误#77574,错误#21354712)

    参考资料:另请参阅:Bug #75980、Bug #20575529、Bug #76626、Bug #20854952。

  • 复制: 当由具有指定 GTID 的单个语句组成的事务在自动提交模式下失败时,在禁用二进制日志记录时回滚时不会释放其 GTID。(错误#77521,错误#21338147)

  • 复制: 从组事件解析器没有正确地将 XA_ROLLBACK事件注册为事务边界。(错误#77392,错误#21273010)

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

  • 复制: mysqlbinlog在二进制日志文件的末尾打印了一条 ROLLBACK 语句,当@@GLOBAL.GTID_MODE = ON 时回放失败并出现错误 1782 @@SESSION.GTID_NEXT cannot be set to ANONYMOUS。当二进制日志文件不包含任何与数据相关的事件,或者中继日志文件包含Format_description_log_event服务器启动时在主服务器上生成的事件时,就会发生这种情况。

    此问题的修复会导致中继日志在 Format_description_log_eventBINLOG 语句应用时不执行任何操作,并停止ROLLBACK从设置 gtid_nextANONYMOUS状态 gtid_next尚未由后续事件确定的时间。(错误#76887,错误#20980932)

  • 复制: SAVEPOINTROLLBACK TO SAVEPOINT在触发器内导致断言。(错误#76727,错误#20901025)

  • 复制:SHOW BINLOG EVENTS 执行语句时,任何并行事务都被阻止。此修复可确保SHOW BINLOG EVENTS进程现在仅在计算文件结束位置期间获取锁,因此并行事务不会长时间阻塞。(错误#76618,错误#20928790)

  • 复制: 如果一个CREATE VIEW语句失败,它被错误地写入二进制日志,即使它没有导致创建部分视图。此修复可确保此类语句不会记录在二进制日志中。此外还发现,当一个在主服务器上失败的语句被一个带有预期错误的从服务器接收到时,如果该语句在从服务器上被跳过,例如由于复制过滤器,预期错误将与实际错误进行比较从机上发生的错误。该修复确保如果从站接收到具有预期错误的语句,如果该语句未被过滤,则仅将其与从站上发生的实际错误进行比较。(错误#76493,错误#20797764)

  • 复制:在日志轮换期间发生硬件故障后 ,指定的操作 binlog_error_action并不总是正确执行。(错误#76379,错误#20805298)

  • 复制: 当使用 MySQL 5.7.6 及更高版本时 binlog_format=rowgtid_mode=off如果 CREATE ... SELECT在执行过程中被杀死,可能会导致不一致的状态,从而破坏复制。原因是在 MySQL 5.7.6 中记录的方式 和步骤CREATE ... SELECT之间引入了提交 该修复确保 不会在事务中间提交时 。(错误#76320、错误#77098、错误#20742519、错误#21114464)CREATE TABLESELECTCREATE ... SELECTbinlog_format=row

  • 复制: 修改事务的 master_info_repositoryrelay_log_info_repository 内部,然后回滚该事务,使存储库处于不可用状态。我们通过防止在事务中对这些存储库进行任何修改来解决此问题。(缺陷 #74950,缺陷 #20074353)

  • 复制: 在客户端或从属线程提交后续事务之前,不会考虑 添加到 gtid_executedusing (错误#73838,错误#19579811)SET gtid_purgedWAIT_FOR_EXECUTED_GTID_SET()

  • 复制: 使用 relay_log_info_repository=TABLE,在mysql.slave_relay_log_info提交事务或显式执行刷新时更新表,例如在中继日志轮换期间。如果使用任何非事务性表(例如 MyISAM表)的事务跨多个中继日志拆分,则它会在中继日志刷新时部分提交。当 时gtid_mode=ON,这导致相同的 GTID 用于事务的剩余部分,从而引发 ER_GTID_NEXT_TYPE_UNDEFINED_GROUP 错误。

    在这种情况下,我们通过推迟通常在中继日志轮换时发生的中继日志信息存储库的更新来解决此问题,直到已执行相关事务的提交。

    此问题不会影响使用事务存储引擎(例如InnoDB. (缺陷 #68525,缺陷 #16418100)

    参考资料:另请参阅:Bug #21630907、Bug #76974。

  • JSON: 虽然or JSON值,但服务器未正确处理这样做的尝试,导致 在调试版本中出现断言 (Linux) 或调用 (Windows)。现在,当您尝试将 JSON 值与这些函数中的任何一个一起使用时,服务器会发出合适的警告 ()。(缺陷号 21828321)GREATEST()LEAST()exit()ER_NOT_SUPPORTED_YET

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

  • JSON:在某些情况下 ,包含引用列的生成列的表会 JSON损坏,因此使用不同连接对该表进行后续访问会导致服务器失败。(缺陷号 21808680)

    参考资料:另请参阅:Bug #21824519、Bug #78408。

  • JSON: JSON_TYPE()返回 OPAQUE一些本应标识为BLOB. (缺陷号 21649073)

  • JSON: 如果将路径参数作为用户定义的变量传递并在结果集行之间更改值,则 JSON 函数可能会返回不正确的值。(漏洞 #21602361)

  • JSON: 如果多列UPDATE 语句未能更新JSON 随后在稍后更新中引用的列,则服务器可能会退出。(缺陷号 21547877)

  • JSON: 对于调试版本,不正确的 JSON 值缓存可能会导致引发断言。(漏洞 #21491442)

  • JSON: 空字符串(不是有效的 JSON 值)通常被解析并作为 JSON 空文字返回,但在某些情况下可能会引发调试构建的断言。(缺陷号 21487833)

  • JSON: 当视图是外部连接的内部表时, 预期JSON产生非NULLNULL(漏洞 #21448719)

  • JSON: 如果JSON_CONTAINS_PATH()使用one_or_all参数调用 all并且路径参数包含通配符,则该函数会找到每个路径的所有匹配项,即使在这种情况下一个匹配项就足够了。(漏洞 #21442775)

  • JSON: JSON_SET()如果路径表达式标识非数组值, JSON_REPLACE()有时会产生不正确的结果。(缺陷号 21442624)

  • JSON: 使用非严格 SQL 模式抑制 JSON 转换错误,或者INSERT IGNORE如果插入 JSON NOT NULL列的空值被复制到另一 JSON列,则可能引发断言。(缺陷号 21437989)

  • JSON: 用于深度嵌套的 JSON 输入, ST_GeomFromGeoJSON()否则 JSON_VALID()会产生堆栈溢出。(错误#21389101,错误#21377136)

  • JSON: 如果无法解析包含具有大负指数的浮点数的 JSON 字符串,可能会导致服务器退出。(缺陷号 21384048)

  • JSON: 对于调试构建, ST_AsGeoJSON()在内部 GROUP BY ... WITH ROLLUP可以引发断言。(漏洞 #21383497)

  • JSON: JSON_SEARCH()如果指定了无效的转义表达式,可能会返回不正确的结果。(缺陷号 21383284)

  • JSON: 对于调试版本,NULL第一个参数 JSON_SET()可以引发断言。(漏洞 #21381806)

  • JSON: 对于 form 的表达式 ,其中子查询可以返回 JSON 值,无法处理行结果可能会导致服务器退出。(缺陷 #21376088)(subquery) IN (subquery)

  • JSON: 未能JSON_APPEND()处理合法条件可能导致服务器退出。(缺陷号 21373874)

  • JSON: 某些 JSON 函数在具有路径表达式常量的准备好的语句中使用时可能会返回不正确的结果。(错误#77785,错误#21472872)

  • RHEL RPM 包的依赖信息不正确。(漏洞 #22218841)

  • 对于索引生成列的仅索引扫描,服务器可以进行随机计算;随机结果不会暴露给用户,但可能会出现 Valgrind 警告,并且当计算涉及不期望此类不正确数据的函数时,服务器可能会退出。(缺陷号 21833760)

  • 对于具有VIRTUAL生成列的表, INSERT具有空值列表的表可能会导致服务器退出。(缺陷号 21807818)

  • 调整CMake配置以处理 Clang 3.7 报告的新警告。(缺陷号 21803314)

  • 对于 类型的插件PROTOCOL_PLUGIN,执行INSTALL PLUGINUNINSTALL PLUGINSHUTDOWN可能会导致服务器退出。不再允许此类插件执行这些语句。(缺陷号 21797816)

  • 使用在包含生成列的表上定义的物化视图可能会导致服务器退出。(缺陷号 21797776)

  • 对于包含虚拟生成列的分区InnoDB表,从表中读取可能会返回该列的随机数据。(缺陷号 21779011)

  • CMake检查 NUMA 可用性可能会导致在不支持 NUMA 的平台上出现编译问题 。(缺陷号 21774859)

  • 优化器没有考虑非功能性表达式,例如 (a AND b) = 1在寻找索引生成的列来替代(a AND b)表达式时。现在考虑使用 ANDandOR逻辑运算符的表达式。(缺陷号 21770798)

  • 对于调试版本,当优化器尝试克隆某些类型的键以进行范围优化时,会引发断言。(漏洞 #21761867)

  • 对于调试版本,当优化器尝试估计在没有键的情况下处理唯一值的成本时,服务器可能会退出。(漏洞 #21697002)

  • 如果INSERT作为准备好的语句执行,则带有子查询的视图可能会失败。(缺陷号 21696206)

  • 对于InnoDB优化器使用SPATIAL索引进行全索引扫描的表的查询,结果为空,因为此类索引不支持全扫描。优化器不再将 SPATIAL索引视为完整索引扫描的候选对象。(缺陷号 21663612)

  • 对于某些输入, ST_Intersection()可能会返回无效的多边形。(缺陷号 21658453)

  • 空间函数可以在值可能用于查询的其他地方的上下文中简化几何值,从而产生不正确的结果。(漏洞 #21652012)

  • 如果ST_ConvexHull()ST_SRID()在视图定义中使用,则生成的定义包含 ST_Convex_Hull()(拼写错误)或 SRID()(弃用)。(漏洞 #21651588)

  • 对于调试版本,启用 PAD_CHAR_TO_FULL_LENGTHSQL 模式可能会SHOW FUNCTION STATUS引发断言。(漏洞 #21632425)

  • mysqlpump没有退出并显示某些不兼容选项组合的消息。(缺陷号 21628662)

  • 如果优化器尝试基于准备好的语句参数创建临时表,则可能会引发断言。(漏洞 #21625929)

  • 执行带有多个嵌套子查询的准备好的语句可能会引发断言。(漏洞 #21624851)

  • 对于调试版本,子查询优化失败可能会导致由于错误处理不当而引发断言。(漏洞 #21621313)

  • 一些表和索引优化器提示在语句处理的早期丢失,因此查询重写插件无法访问它们。这可能会导致传入语句和语句模式模板之间的不正确匹配。(漏洞 #21619780)

  • 包含组合分组和外部引用的嵌套子查询的查询可能会导致服务器退出。(缺陷号 21619634)

  • NULL作为第二个或第三个参数 传递给ST_AsGeoJSON()可能会导致服务器停止响应会话或(在调试版本中)引发断言。

    HANDLER READ无法转换为正确类型的输入提供可能会导致服务器停止响应会话或(在调试版本中)引发断言。(错误#21616810,错误#21650603)

  • 对于调试版本, ST_IsValid(NULL)可以提出断言。(缺陷号 21616647)

  • 对于调试版本,在将时间值转换为十进制时,可以针对负零值​​引发断言。(漏洞 #21616585)

  • ST_AsWKB() 如果给定无效数据,可能会导致服务器退出。(缺陷号 21614368)

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

  • 如果在本身是多列索引的一部分的生成列上使用聚合函数,则服务器可能会退出。(漏洞 #21613615)

  • 在列引用解析期间缺少错误检查可能会导致错误消息或(在调试版本中)引发断言。(漏洞 #21613422)

  • 对于调试版本,可以提出断言 Filesort::make_sortorder()以尝试对Item_ref对象进行排序。(漏洞 #21611270)

  • 对于调试版本,如果键长度或键部分的数量为零,则会针对某些具有半连接并使用具体化策略的查询提出断言。(缺陷号 21566735)

  • 在 ARM64 平台上 使用gcc 4.9 或 5.1 编译失败。(漏洞 #21552524)

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

  • 对于调试版本,无效的几何字节字符串可能会导致空间函数引发断言,而不是向调用者返回错误。(缺陷号 21546656)

  • 对于调试版本,无效字符可能会引发过于严格的断言LOAD DATA。(漏洞 #21542698)

  • InnoDB尝试更新VIRTUAL 生成的 类型列的二级索引时,服务器可能会退出BLOB。(缺陷号 21530366)

  • 对于为处理 UNION选择的语句 CHARSET列而创建的临时表,最大列宽可能太长而InnoDB无法处理。现在,此类列被创建为可变长度列。(缺陷号 21480999)

  • 对于配置MAX_INDEXES 大于 64 的构建,服务器使用临时表的某些查询可能会导致服务器退出。(缺陷号 21466850)

  • 添加或删除VIRTUAL生成的列可能会导致服务器退出。(缺陷号 21465626)

  • 对于使用审计插件 API 的插件, MYSQL_AUDIT_GLOBAL_VARIABLE_SET传递给通知函数的事件不包括新变量值。(缺陷号 21457699)

  • 如果表名包含特殊字符,则对包含索引生成列的表的查询可能会失败。(漏洞 #21454155)

  • 对于调试版本,一些接受空间参数原始字节数据(例如,指定为十六进制值)的空间函数可能会引发断言,如果此类参数包含有效数据后的额外垃圾。(缺陷号 21397107)

  • 对于调试版本,在子查询执行期间可能会引发不正确的断言。(缺陷号 21383882)

  • 对于调试版本,缺少错误检查 Item_sum_hybrid::fix_fields()导致引发断言。(缺陷号 21383714)

  • 对 的调用ST_Buffer()可能会挂起或引发断言。(缺陷号 21372946)

  • 如果配置为侦听另一个服务器实例已在使用的 TCP/IP 端口号,服务器可能会以不干净的方式退出。(缺陷号 21368299)

  • 某些子查询作为参数PROCEDURE ANALYSE()可能会导致服务器退出。(漏洞 #21350175)

  • 在派生表中使用右外连接的查询可能会返回错误的数据。(漏洞 #21350125)

  • --skip-grant-tables使用(或使用诸如隐式的选项) 启动服务器 --initialize--skip-grant-tables阻止INSTALL PLUGINandUNINSTALL PLUGIN语句工作。(漏洞 #21335821)

  • mysql_ssl_rsa_setup.rnd可能会在数据目录中创建不需要的 (该文件实际上是由openssl创建的, mysql_ssl_ras_setup 会调用 它。mysql_ssl_rsa_setup现在会清理该文件。)(漏洞 #21335818)

  • INFORMATION_SCHEMA由于查询计划不理想和物化不足, 一些查询消耗了过多的内存。(缺陷号 21299665)

  • 通过将服务器配置为将错误消息发送到 syslog或 日志文件,在错误日志设置之前生成的消息将发送到stderrstdout。这些消息现在被缓冲,直到错误日志设置完成,然后记录到正确的目的地。(缺陷号 21296553)

  • 在列表的子查询中使用派生表和聚合函数执行准备好的语句 SELECT可能会导致服务器退出。(缺陷号 21277074)

  • GRANT即使 NO_AUTO_CREATE_USER启用了 SQL 模式,也为不存在的帐户创建了帐户。(漏洞 #21271571)

  • 带有子查询的NOT IN查询 COUNT(DISTINCT)可能会返回不正确的结果。(漏洞 #21243772)

  • 当开始使用非常旧的数据目录(来自 MySQL 5.0)时,服务器可能会由于无法正确读取旧的授权表而退出。(缺陷号 21216433)

  • 涉及使用临时表更新的生成列的多表更新可能导致服务器退出或引发断言。(缺陷号 21216067)

  • 对于包含 form 表达式的查询 ,半连接和子查询具体化策略的组合可能会导致服务器退出。(漏洞 #21205577)(x IN (subquery)) IN (subquery2)

  • 如果查询包含外部连接,例如LEFT JOIN (t1,t2,...)并且使用提示禁用右侧表上的连接缓冲,但不禁用其他表上的连接缓冲,则会发生服务器退出。(漏洞 #21205282)

  • 对于 的游标类型CURSOR_TYPE_READ_ONLY,如果数据是数字,则为第一次执行准备好的 CALLstaement 检索结果集可能会丢失第一个结果集行;如果数据是字符串,则为调试构建提出断言;调用时导致服务器连接丢失 mysql_stmt_fetch()。(缺陷号 21199582)

  • 关闭表时可能会保留悬挂的 blob 指针 InnoDB,从而导致后续读取无效内存和服务器退出。(漏洞 #21153489)

  • 对于某些排序或分组需要临时表的操作,该表可能有零列并引发断言。(漏洞 #21143151)

  • 包含表单表达式的查询 可能导致服务器退出。(漏洞 #21139402)(x IS NULL) IN (subquery)

  • 在服务器 SSL 文件自动生成期间, ca.pem短暂地具有不安全的文件权限。(漏洞 #21138119)

  • 如果SELECT ... FOR UPDATE子查询导致死锁并导致回滚,则可能会由于不正确的错误处理而引发断言。(缺陷号 21096444)

  • 选择INSERT()以十六进制字符串形式传递输入的函数调用的结果可能会公开比传递给函数更多的信息。(缺陷号 21056907)

  • COUNT()带有with 的 子查询GROUP BY可能会产生不正确的结果。(错误#21055139、错误#78029、错误#21615020)

  • 视图的可更新属性是在视图创建期间设置的。如果基础表被删除并重新创建为不可更新的表,则原始视图的可更新属性不会相应修改。这可能会导致服务器退出以尝试插入或替换到视图中。(此问题特定于具有多个表/视图的视图,并且不会发生在更新语句中。)(缺陷 #21039264)

  • version_tokens插件 提供的锁定功能 已重命名为: vtoken_get_read_locks()vtoken_get_write_locks()vtoken_release_locks()现在分别命名为 version_tokens_lock_shared()version_tokens_lock_exclusive()、 和 version_tokens_unlock()

    这些函数也没有任何效果,因为它们在设置它们的语句结束时被隐式解锁。(漏洞 #21034322,漏洞 #21280801)

  • 链接到 yaSSL 并使用 GCC 4.8.2 编译的服务器可能无法正确响应连接尝试,直到启动后几秒钟。(缺陷号 21025377)

  • 升级旧数据目录(MySQL 5.0 或 5.1)时, mysql_upgrade可能无法正确读取 mysql.proc表。(缺陷号 20968596)

  • 对于具有子分区的表,如果可以识别分区但不能识别子分区,则服务器可能会由于分区修剪期间不正确的错误处理而退出。(缺陷号 20909518)

  • mysql_upgrade在修复阶段可能无法在错误的数据库中查找已检查的表。(缺陷号 20868496)

  • DELETE当使用表别名时,可以检查错误数据库的权限。(缺陷号 20777016)

  • mysqldump对生成的列定义使用了不正确的语法。(缺陷号 20769542)

  • 在触发器中,使用访问行中的游标 OLDNEW值可能会导致服务器退出。(缺陷号 20760261)

  • SHOW CREATE USER返回了意想不到的结果。(缺陷号 20625566)

  • 语句执行期间的失败 XA PREPARE 可能导致无效的 XA 事务状态。随后尝试启动另一个 XA 事务导致 ER_XAER_OUTSIDE错误。(缺陷号 20538956)

  • 审计日志插件可以审计 audit_log_exclude_accounts 系统变量中命名的帐户。(缺陷号 20408206)

  • 如果生成的外键索引被 ALTER TABLE添加同名新外键的同一语句重命名,则服务器可能退出。(缺陷号 20146455)

  • ALTER TABLE删除和添加相同FULLTEXT索引的操作不会作为避免使用表的临时副本的就地(快速)操作执行。(缺陷号 20106837)

  • 当函数计算的天数 DATE_FORMAT()为负数时,服务器可以退出。(漏洞#19985318)

  • ALTER TABLE由于缺少验证,添加或修改列的操作可能会创建包含无效数据的几何列。(漏洞#19880316)

  • 如果尝试对以字符串列作为其第一部分的索引进行范围优化,并且用于比较的值被完全截断,则比较将不正确并产生不正确的结果。(漏洞 #19333852)

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

  • 由于对查询中使用的聚合函数的清理不正确,服务器可能会挂起。(漏洞#18979515)

  • 服务器可能会在检查适当的索引以用于某些在 WHERE子句中使用聚合函数的查询时退出。(漏洞 #18706592)

  • 在 Windows 上,该validate_password插件可能会导致服务器在字典检查期间退出。(漏洞#18636874)

  • 调用存储程序而不用数据库名称对其进行限定可能会导致存储程序编译错误。(漏洞 #18599181)

  • EXPLAIN包含 GROUP_CONCAT()可能导致服务器退出的语句。(漏洞 #17865675)

  • 返回在上一个查询中找到的行数的函数的值FOUND_ROWS() 可能会在下一个查询的执行期间发生变化。现在,前一个查询的值FOUND_ROWS()在下一个查询的执行期间保持不变。(漏洞#17846246)

  • 未能检查错误情况可能会导致某些更新或删除导致服务器退出。(漏洞 #17763238)

  • 在 Windows 上,审计日志插件中的堆损坏导致服务器启动失败。(漏洞 #14700102)

  • 如果交换两个列值的UPDATE部分,服务器可能会读取不正确的数据并退出。INSERT ... ON DUPLICATE KEY UPDATE(漏洞 #13901905)

  • 对于调试版本,将派生表合并到外部查询块中可能会引发断言。(错误#79502、错误#22305361、错误#21139722)

  • mysqlpump无法使用 Clang 进行编译。(错误#78637,错误#21924096)

  • 对于调试版本,DROP TRIGGER 如果触发器是在包含生成列的表上定义的,则语句可以引发断言。(错误#78408,错误#21824519)

  • 目录中的一些压力测试文件 mysql-test/suite/innodb_stress设置了可执行文件模式,尽管它们不是脚本文件。(错误#78403,错误#21822413)

  • 使用派生表并包含引用该派生表中的列的集合函数的子查询可能会聚集在错误的查询块中。(缺陷 #78250,缺陷 #21753180)

  • 对于某些输入,ST_Union()可能会返回无效的几何集合。(错误#78206,错误#21689998)

  • 在非 Windows 系统上,在启动时将 range_alloc_block_sizeor 设置query_alloc_block_size为大于 32 位的值可能会导致服务器退出。这些系统变量(在所有平台上)的最大值现在限制为 2 · 32 − 1,向下舍入到最接近的 1024 的倍数。(错误 #78188,错误 #21682231)

  • mysql-test-run.pl现在有一个 --valgrind-clients选项,可以使所有由.test文件启动的客户端使用valgrind运行。此选项需要 valgrind 3.9 或更高版本。

    此外,还修复了多个客户端内存泄漏问题。(错误#78165,错误#21672747)

  • mysql客户端解析器错误地解释了包含 ;"'`字符 的优化器提示注释。(错误#78114,错误#21646026)

  • 这些版本令牌问题已解决:

    • version_tokens_delete()现在去除其参数中标记名称周围的空格,类似于version_tokens_set()and version_tokens_edit()

    • 传递NULLversion_tokens_delete()导致服务器退出。

    • 将带有空令牌名称的参数传递给 version_tokens_set()version_tokens_edit()导致服务器退出。

    • NULL作为超时值 传递给version_tokens_lock_exclusive()version_tokens_lock_shared()导致服务器退出。

    (错误#78111、错误#21645001、错误#21646106、错误#21645944、错误#21646017)

  • 从左联接的右侧表(也是派生表)中选择的列 NULL在子查询中使用时可能会产生不正确的值信息IN。(错误#77980,错误#21574933)

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

  • 在 Windows 上,如果 MySQL 服务器作为服务启动,则将禁用记录到错误日志文件。(错误#77977,错误#21574096)

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

  • setup_instruments Performance Schema 表中,可以将 memory instrument 设置为TIMED='YES',尽管 memory 操作从不计时。现在这种尝试被忽略了。可以将内置记忆工具(名称形式为memory/performance_schema/%)设置为 ENABLED='YES',但无法禁用内置记忆工具。现在这种尝试被忽略了。(错误#77944,错误#21562212)

  • 即使未转储模式, mysqldumpmysqlpump 输出也包括(错误#77926,错误#21549860)syssys

  • datadir如果配置文件包含多行, RPM 安装脚本将失败。现在使用最后 datadir一行。(错误#77878,错误#21527467)

  • 在性能模式摘要操作期间调用的不必要的memset()调用已被删除,这通过减少开销来提高性能。(错误#77863,错误#21528683)

  • 更正了安全互斥实施的潜在竞争条件。默认情况下,此实现仅针对调试版本启用。(错误#77862,错误#21522888)

  • 和语句的二进制日志记录可以在启用CREATE USER时记录密码散列的散列(而不是散列本身) 。log_backward_compatible_user_definitions语句的二进制日志记录ALTER USER可能包括原始语句中不存在的属性。

    由于对这些问题的修复, log_backward_compatible_user_definitions已被替换为 log_builtin_as_identified_by_password. 如果启用此变量,则 CREATE USER涉及内置身份验证插件的语句的二进制日志记录会重写语句以包含一个IDENTIFIED BY PASSWORD子句,并且 SET PASSWORD语句将记录为SET PASSWORD 语句,而不是被重写为 ALTER USER语句。(错误#77860、错误#21516392、错误#20535561)

  • mysqld --initialize产生了关于丢失 SSL 文件的警告,这是不必要的,因为初始化不需要 SSL。(错误#77825,错误#21498544)

  • 在对包含生成列的表进行分区修剪期间,可能会发生 Valgrind 错误。(错误#77782,错误#21469535)

  • 当使用该选项调用 mysqlpump时,它可能会为具有外键和主键但不具有二级索引的表--defer-table-indexes生成不正确的语句。CREATE TABLE(错误#77759,错误#21462732)

  • CONVERT_TZ()如果启用了 GTID 但未启用二进制日志,则 尝试使用以前未使用的时区 可能会产生警告或错误,或者(在调试版本中)引发断言。

    在调试版本中,尝试将以前未使用的时区与存储程序CONVERT_TZ()中的系统变量值一起使用或作为系统变量的值time_zone可能会引发断言。(错误#77753、错误#21459999、错误#77748、错误#21459795)

  • Linux 上用于service mysql status命令的服务器初始化脚本有时会错误地报告服务器已停止。(错误#77696,错误#21768876)

  • ALTER TABLE可以对具有列位置大于 64 的索引虚拟列的表提出断言。(错误 #77656,错误 #21391781)

  • 评估虚拟生成的列可能无法评估所有基列并导致无效的内存读取。(错误#77653,错误#21390605)

  • 对于形式为 的语句CREATE TABLE ... SELECT,其中表被定义为包含一个 DECIMAL UNSIGNED,行大小的计算不正确,导致表中的值不正确。(错误#77636,错误#21383896)

  • WHERE包含 TRIM(LEADING ..)和 的谓词TRIM(TRAILING ...)可能会被错误地优化掉。(错误#77631,错误#21447969)

  • 对于等待事件,性能模式 CYCLE默认使用定时器,但如果不可用则无法回退到不同的定时器CYCLE。(错误#77577,错误#21374104)

  • 语句执行期间的磁盘已满情况 CREATE TABLESPACE导致服务器退出。(错误#77556,错误#21347001)

  • 派生表的权限预检查可能会失败并导致服务器退出。(缺陷 #77525,缺陷 #21338077)

  • 对于空间函数,输入多边形在打开时会自动关闭。但是,开放地理空间联盟指南要求输入多边形已经关闭。未闭合的多边形现在被拒绝为无效而不是被关闭。(错误#77505,错误#21327888)

  • VIRTUAL生成的列添加到表中时,无法确保生成的列表达式计算的数据不会超出该列的范围。这可能会导致返回不一致的数据和意外失败的语句。

    ALTER TABLE现在支持WITHOUT VALIDATIONWITH VALIDATION 子句来控制是否ALTER TABLE 验证VIRTUAL生成列的数据:

    • 使用WITHOUT VALIDATION(如果未指定任何子句则为默认值),执行就地操作(如果可能),不检查数据完整性,并且语句完成得更快。但是,如果值超出范围,稍后从表中读取可能会报告该列的警告或错误。

    • 使用WITH VALIDATION,ALTER TABLE复制表格。如果发生超出范围或任何其他错误,该语句将失败。因为进行了表拷贝,语句耗时较长。

    WITHOUT VALIDATION并且WITH VALIDATION只允许与ADD COLUMNCHANGE COLUMNMODIFY COLUMN操作一起使用。(错误#77478,错误#21317507)

  • 对于某些字符串函数,由于在创建临时表以保存中间结果时空间计算不正确,因此在子查询中计算时数据被截断。(错误#77473,错误#21317406)

  • 语句摘要不包含有关优化器提示注释的信息,导致带有和不带有提示的语句被聚合。(错误#77414,错误#21286261)

  • 形式为 的谓词,其中是一个列名,是一个程序局部变量,可以在应该返回 true 时返回 false。(错误#77391,错误#21279005)WHERE ROUND(X,Y) > 0XY

  • ST_SymDifference()使用多面参数可能会返回不正确的结果。(错误#77372,错误#21263152)

  • 在同一 语句中 更新VARCHAR和 列可能会产生不正确的结果。当一个 列被分配给一个 列,然后该列被设置为一个不同的值时,该 列的结果包含该列的新值。(错误#77135,错误#21143080)TEXTUPDATEVARCHARTEXTVARCHARTEXTVARCHAR

  • HAVING返回多于 1 行 的子句中的子查询可能会导致服务器退出。

    除了错误修复之外, EXPLAIN现在显示 Zero limit而不是Impossible WHERE在使用优化查询时显示LIMIT 0。(错误#76998,错误#21067109)

  • 如果INFORMATION_SCHEMA执行表打开操作的查询遇到损坏的表并试图修复它,则可能会发生死锁,从而导致事务中止而没有报告适当的错误。这样的查询现在不尝试表修复。(错误#76912,错误#21021848)

  • mysqladmin -u root -p可能会因分段错误而退出。(错误#76538,错误#20802751)

  • 优化器有时会为派生表(子句中的子查询FROM)生成索引。如果在存储程序中执行的语句发生这种情况,则可能会发生内存泄漏。(错误#76349,错误#20728894)

  • 如果从表中选择的预期行数介于 0 和 1 之间,则优化器对过滤条件的估计可能会导致执行计划不理想。现在估计至少为 1。(错误 #76314,错误 #20701585)

  • 如果文件是使用 init_file系统变量指定的, mysqld --initialize 会为文件中的语句产生错误,例如 GRANT影响用户帐户的语句。(错误#75918,错误#20546898)

  • 优化器在为运算符优化范围扫描时可能会错误地假定内存不足的情况 OR,从而导致高估符合条件的行数。(错误#75248,错误#20229614)

  • 当其他列指示存在错误时, events_statements_history Performance Schema 表的ERRORS 列值可能为 0。(错误#74614,错误#19929832)

  • 如果另一个语句中的语句 多次使用相同的列名,则 视图创建UNION失败并出现重复列错误 。(错误#74539,错误#19886430)SELECTUNION

  • 写入慢速查询日志的时间戳值可能不正确。(错误#73974,错误#19646918)

  • mysql客户端使用密码过期的账号批量连接服务器时,报错信息没有意义。 在这种情况下, mysql现在报告请使用 --connect-expired-password 选项或以交互模式调用 mysql。(错误#72696,错误#21464621)

  • 对于UPDATE带有 的语句 ,优化器可以对用于扫描和更新的键ORDER BY执行不必要的操作。filesort(错误#72518,错误#18698556)

  • 对于具有许多范围条件的查询,优化器会估计范围扫描需要太多内存,然后回退到不太理想的计划,例如全表扫描。

    一个新的 range_optimizer_max_mem_size 系统变量现在控制范围优化器的内存消耗限制。值为 0 表示无限制。 如果优化器考虑的执行计划使用范围访问方法,但优化器估计此方法所需的内存量将超过限制,则放弃该计划并考虑其他计划。(错误#70247、错误#17413040、错误#17769777)

  • 语句<element/>未正确处理 具有 表单的空 XML 元素 。LOAD XML(漏洞 #67542,漏洞 #16171518)

  • 随着打开的MyISAM表的数量增加,检查表是否打开的查找变得昂贵,尤其是当表未打开时。table_open_cache查找性能已得到改进,开销减少特别有利于对具有大和 值的大量表进行选择 table_definition_cache。(错误#49177,错误#11757169)