Documentation Home
MySQL 5.7 发行说明  /  MySQL 5.7.11 的变化(2016-02-05,全面上市)

MySQL 5.7.11 的变化(2016-02-05,全面上市)

编译笔记

  • CMake选项system现在允许 使用值。如果此选项未设置或设置为,则假定在标准位置的编译主机上安装了正确版本的 Boost。在这种情况下,使用已安装的 Boost 版本,而不是 MySQL 源代码分发中包含的任何版本。(缺陷号 22224313)WITH_BOOST system

  • 除了mysql-5.7.11.tar.gz 源压缩包之外, mysql-boost-5.7.11.tar.gz还提供了另一个名为的压缩包。新的 tarball 包含第一个 tarball 中的所有内容,但还在名为boost. 这是为了那些没有安装正确的 Boost 版本并且不想或不能下载它的人的利益。要从此源代码分发构建,请添加 -DWITH_BOOST=boostCMake命令行。

数据类型注释

  • 位函数和运算符包括 BIT_COUNT(), BIT_AND(), BIT_OR(), BIT_XOR(), &, |, ^, ~, <<>>。目前,位函数和运算符需要 BIGINT(64 位整数)参数和返回BIGINT值,因此它们的最大范围为 64 位。其他类型的参数被转换为BIGINT并且可能会发生截断。

    MySQL 8.0 的扩展改变了这种强制转换BIGINT行为:位函数和运算符允许二进制字符串类型参数(BINARYVARBINARYBLOB类型),使它们能够接受参数并产生大于 64 位的返回值。因此,MySQL 5.7 中二进制字符串参数的位操作可能会在 MySQL 8.0 中产生不同的结果。为了提前通知这种潜在的行为变化,服务器现在为二进制字符串参数在 MySQL 8.0 中未转换为整数的位操作生成警告。这些警告提供了重写受影响语句的机会。要以升级到 8.0 后不会更改的方式显式生成 MySQL 5.7 行为,请转换位操作二进制字符串参数以将它们转换为整数。有关详细信息和示例,请参阅位函数和运算符

弃用和移除说明

安装注意事项

  • 以前,mysqld --initialize要求数据目录不存在,或者如果存在,则为空。.现在,如果每个条目的名称以句点 ( ) 开头或使用 --ignore-db-dir选项命名,则允许现有数据目录为非空。(错误#79250,错误#22213873)

钥匙圈笔记

  • MySQL 服务器现在支持密钥环,使内部服务器组件和插件能够安全地存储敏感信息以供以后检索。该实现包括一个 keyring_file插件,该插件将密钥环数据存储在服务器主机的本地文件中。有关详细信息,请参阅 MySQL 密钥环编写密钥环插件密钥环服务

包装说明

  • 为 Ubuntu 15.10 添加了打包支持。(错误#79104,错误#22147191)

安全说明

  • yaSSL 已升级到版本 2.3.9。此升级解决了一个问题,即 yaSSL 仅处理密钥协议的零个或一个前导零的情况,而不是潜在的任何数字,这在极少数情况下可能导致使用 DHE 密码套件时连接失败。(缺陷号 22361038)

  • MySQL Commercial Server 的链接 OpenSSL 库已从版本 1.0.1p 更新到版本 1.0.1q。有关此版本中修复的问题的说明,请参阅 http://www.openssl.org/news/vulnerabilities.html

    此更改不影响 Oracle 生成的 MySQL Community 构建的 MySQL Server,它使用 yaSSL 库。(漏洞#22348181)

  • 控制全局密码过期策略的系统变量的默认值 default_password_lifetime 已从 360(360 天)更改为 0(无密码过期)。当帐户密码在升级到 MySQL 5.7 一年后过期时,360 的默认值有时会让人感到意外。要继续使用 0 以外的值作为密码到期时间,请使用 的显式设置启动服务器default_password_lifetime。例如,在选项文件中使用这些行:

    [mysqld]
    default_password_lifetime=360

    (错误#77277,错误#21284761)

  • MySQL 客户端程序现在支持一个 --ssl-mode选项,使您能够指定与服务器的连接的安全状态。允许的选项值是PREFERRED (如果服务器支持该功能,则建立加密连接,否则回退到未加密连接),DISABLED(建立未加密连接),REQUIRED(建立加密连接,否则失败),VERFIFY_CA (如REQUIRED,但另外验证服务器证书),VERIFY_IDENTITY(类似于 VERIFY_CA,但另外验证服务器证书是否与尝试连接的主机名相匹配)。为了向后兼容,默认是 PREFERREDif --ssl-mode未指定。

    这些客户端支持 --ssl-modemysqlmysqladminmysqlbinlogmysqlcheckmysqldumpmysqlimportmysqlshowmysqlpumpmysqlslapmysqltestmysql_upgrade

    --ssl-mode选项包括客户端的能力 --ssl--ssl-verify-server-cert 选项。因此,这两个选项现在都已弃用,并将在未来的 MySQL 版本中删除。使用 --ssl-mode=REQUIRED代替 --ssl=1--enable-ssl。使用--ssl-mode=DISABLED代替--ssl=0, --skip-ssl, 或 --disable-ssl。使用--ssl-mode=VERIFY_IDENTITY 而不是 --ssl-verify-server-cert 选项。(不推荐使用服务器端--ssl 选项。)

    对于 C API,新MYSQL_OPT_SSL_MODE 选项mysql_options() 对应于--ssl-mode选项。和 选项 对应于客户端MYSQL_OPT_SSL_ENFORCE和 选项 。它们现在已被弃用,并将在未来的 MySQL 版本中删除。与选项值or 一起使用。 MYSQL_OPT_SSL_VERIFY_SERVER_CERTmysql_options()--ssl--ssl-verify-server-certMYSQL_OPT_SSL_MODESSL_MODE_REQUIREDSSL_MODE_VERIFY_IDENTITY

    有关详细信息,请参阅 加密连接的命令选项mysql_options()

    由于此更改,次要 C API 版本号增加了。

添加或更改的功能

  • InnoDB: 一个新的InnoDB配置选项, 重建表的innodb_tmpdir在线操作期间创建的临时文件配置一个单独的目录引入此选项是为了帮助避免由于在线操作 ALTER TABLE期间创建的大型临时文件而可能发生的 MySQL 临时目录溢出 可以使用 语句动态配置。 ALTER TABLEinnodb_tmpdirSET

    重建表的联机ALTER TABLE操作还会 在与原始表相同的目录中创建一个中间表文件。innodb_tmpdir选项不适用于中间表文件。(漏洞 #19183565)

  • InnoDB: 现在支持对存储在 file-per-table 表空间中的表InnoDB数据加密通过在创建或更改表InnoDB指定选项来启用加密 有关更多信息,请参阅 InnoDB 静态数据加密ENCRYPTIONInnoDB

  • 复制:添加 该 log_statements_unsafe_for_binlog 变量是为了控制错误 1592 生成的警告是否添加到二进制日志中。

  • Valgrind 函数签名 mysql-test/valgrind.supp已针对 Valgrind 3.11 进行了升级。(缺陷号 22214867)

  • audit_log插件现在在MYSQL_AUDIT_TABLE_ACCESS_CLASS类中生成事件。这些事件是可以中止的。(漏洞 #21458192)

  • mysqld_safe 生成的日志输出格式 现在可以使用该 --mysqld-safe-log-timestamps 选项进行配置。此选项可用于以与服务器兼容的格式或 旧版本 MySQL 中mysqld_safe使用的格式生成日志时间戳。有关详细信息,请参阅mysqld_safe — MySQL 服务器启动脚本。(错误#78475,错误#21862951)

  • 服务器现在支持一个 --early-plugin-load选项,该选项指示在加载强制内置插件之前和存储引擎初始化之前加载哪些插件。此选项的一种用途是加载 keyring_file插件: InnoDB存储引擎使用密钥环进行静态数据加密,因此keyring_file 必须尽早加载插件以确保它在InnoDB初始化之前可用。

  • 存储引擎现在可以请求有关获取和释放独占元数据锁的通知。结果, Performance Schema 表的LOCK_STATUS列 有两个新的状态值。metadata_locks和 状态值很简短PRE_ACQUIRE_NOTIFYPOST_RELEASE_NOTIFY表示元数据锁定子系统在进入锁定获取或离开锁定释放操作时通知感兴趣的存储引擎。

修正错误

  • 创新数据库;分区:OPTIMIZE TABLE重建分区 时InnoDB,将生成的分区表空间文件(*.ibd文件)放置在默认数据目录中,而不是使用该DATA DIRECTORY选项指定的目录。(错误#75112,错误#20160327)

  • InnoDB: InnoDB添加或删除虚拟列时无法更新索引统计信息。(缺陷 #22469660,缺陷 #79775)

  • InnoDB: 信息架构接口代码中的服务器方法调用已修复,以避免不必要的类型转换。(漏洞 #22391925)

  • InnoDB:InnoDB具有较大 的较小innodb_stats_persistent_sample_pages 导致难以在缓冲池警告中找到空闲块。(缺陷号 22385442)

  • InnoDB: 内存缓存连接被阻止访问包含索引虚拟列的表。访问索引虚拟列需要回调到服务器,但memcached连接无权访问服务器代码。(错误#22384503,错误#79691)

  • InnoDB: 拒绝尝试添加索引和虚拟列InnoDB的在线操作时未返回信息性消息ALTER TABLE(缺陷号 22374827)

  • InnoDB: 无效 innodb_saved_page_number_debug 设置导致服务器退出。(缺陷 #22311319,缺陷 #79516)

  • InnoDB: InnoDB在同一共享表空间中创建压缩表和临时压缩表时,无法释放表对象。(漏洞 #22306581)

  • InnoDB: 在 NUMA 相关代码中,传递给 mbind()调用 buf_chunk_init()不正确。(缺陷 #22293530,缺陷 #79434)

  • InnoDB: NUMA 对在线缓冲池大小调整操作的支持不完整。(缺陷 #22293511,缺陷 #79354)

  • InnoDB:SELECT COUNT(*)计算全文子查询结果的查询引发断言 。(缺陷号 22270139)

  • InnoDB: InnoDB为虚拟列传递了一个 TINYBLOB数据长度不正确的缓冲区,导致清除线程失败。(缺陷号 22256752)

  • InnoDB: 从包含空间索引的表中删除数据时发生清除失败。(错误#22230442,错误#22366370)

  • InnoDB: 当尝试从聚集索引重建虚拟列数据时清除访问释放的页面时引发断言。(缺陷号 22204260)

  • InnoDB: 仅为索引虚拟列记录前缀字节,导致sec rec 未找到错误的聚集记录。(漏洞 #22202788)

  • InnoDB:innodb_page_size设置为 的小型缓冲池 64K可能会导致启动、引导和恢复失败。(缺陷 #22179133,缺陷 #79201)

  • InnoDB: 删除了检查 32 位文件偏移量的无法访问的代码。(缺陷 #22163880,缺陷 #79150)

  • InnoDB: 缓慢关闭失败是由后台线程在清除线程退出期间或之后将撤消记录添加到清除历史列表引起的。(缺陷号 22154730)

  • InnoDB: 清除InnoDB线程在尝试清除未标记为删除的虚拟列索引记录时死亡。(缺陷号 22141031)

  • InnoDB: 在调试版本中,ALTER TABLE 增加虚拟列的列长度的操作引发了断言。(缺陷号 22139917)

  • InnoDB: ut_allocator在 32 位系统上使用 12 字节标头为分配有效载荷添加前缀,导致未对齐的内存访问。在 32 位 SPARC 系统上,未对齐的内存访问导致引导期间崩溃。(缺陷号 22131684)

  • InnoDB: 在调试版本中,ALTER TABLE 在现有虚拟列引发断言之前添加新虚拟列的操作。(错误#22123674,错误#22111464)

  • InnoDB: InnoDB改进了与缓冲池转储和加载相关的启动消息。(缺陷 #22096661,缺陷 #78960)

  • InnoDB: 支持ALGORITHM=INPLACE 在现有虚拟列上添加索引同时删除另一个虚拟列的操作。还支持 ALGORITHM=INPLACE添加虚拟列和索引的操作。在新添加的虚拟列上添加索引时,清除现在会跳过未提交的虚拟索引。(漏洞 #22082762)

  • InnoDB: 错误的表对象用于计算访问同一表的多个实例的查询的虚拟列值。(缺陷号 22070021)

  • InnoDB: 插入和删除空间数据时发生清除线程故障。在 R 树搜索阶段未存储子页码字段。(漏洞 #22027053)

  • InnoDB:以配置文件中 的空 innodb_data_home_dir条目启动服务器导致InnoDB在根目录中查找缓冲池文件,从而导致启动错误。(缺陷 #22016556,缺陷 #78831)

  • InnoDB: 计算虚拟列值失败导致错误消息过多。(缺陷号 21968375)

  • InnoDB: 一个 INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX 查询提出了一个断言。InnoDB在填充内存堆表时采用了字典互斥体 InnoDB 在尝试将内存中的堆表转换为优化的内部临时表之前,互斥体未被释放(缺陷 #21950756,缺陷 #78714)

  • InnoDB: 为避免潜在的挂起和重做日志覆盖, innodb_log_file_size最小值已从 1MB 增加到 4MB,并且log_margin_checkpoint_age() 修改了长度计算。(错误#21924224,错误#78647)

  • InnoDB: 在高并发下运行的全文查询由于无效的内存访问导致服务器退出。(漏洞 #21922532)

  • InnoDB:对跨多个表空间分区的表 的ALTER TABLE操作将现有分区移动到表的默认表空间,导致对SHOW CREATE TABLE. 同样, 将现有分区移动到指定的表空间。Only 应该将现有分区移动到表的默认表空间或命名表空间。在跨多个表空间分区的表上运行(错误#21914047、错误#22124042、错误#79030)ALTER TABLE tbl_name TABLESPACE tablespace_nameALTER TABLE ... REORGANIZE PARTITIONALTER TABLE tbl_name TABLESPACE tablespace_name

  • InnoDB:设置 较大 innodb_sort_buffer_size 时,在空表上添加索引的速度比预期慢。(缺陷 #21762319,缺陷 #78262)

  • InnoDB:fil_names_write()和 之间发生竞争条件 file_rename_tablespace_in_mem()。(缺陷号 21549928)

  • InnoDB: 清除尝试访问由先前的撤消日志截断操作释放的撤消页面,从而导致断言。(缺陷号 21508627)

  • InnoDB: 拒绝对具有空间索引的表进行InnoDB在线操作时未返回信息性消息ALTER TABLE(漏洞 #20111575)

  • InnoDB: 编译器屏障被添加到 ut_relax_cpu(). 虚拟全局ut_always_false变量已从. ut_delay()(缺陷 #20045167,缺陷 #74832)

  • InnoDB: 删除虚拟列时返回了不正确的索引值。更改的表对象用于评估虚拟列值。(错误#79773,错误#22469459)

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

  • 分区: 对具有虚拟列的分区表进行子查询扫描可能会泄漏内存。(错误#79145,错误#22162200)

  • 复制: 5.6 和 5.7 版本之间 的行为SET GTID_PURGED不一致。此修复可确保 5.7 版不会启动SET GTID_PURGED语句事务。(漏洞 #21472492)

  • 复制: 当 DML 调用插入AUTO_INCREMENT列的触发器或存储函数时,该 DML 必须标记为不安全语句。如果表在 DML 语句之前的事务中被锁定(例如通过使用 LOCK TABLES),则 DML 语句未被标记为不安全语句。此修复可确保将此类 DML 语句正确标记为不安全。(漏洞 #17047208)

  • 复制: 如果pseudo_slave_mode在 XA 事务处于准备阶段时设置为 1,则会生成断言。此修复可确保在 XA 事务期间可以进行从 0 到 1 的更改。请注意,此变量仅供服务器内部使用。(错误#79416、错误#22273964、错误#78695、错误#21942487)

  • 复制: 使用 GTID 时,违反 GTID 的语句在以下情况下会产生错误:

    该错误阻止了导致竞争条件的隐式预提交。这已通过使错误不阻止隐式预提交的发生来解决。这与违反 GTID 的 DDL 语句的预期行为相匹配,以在执行之前隐式提交先前的事务。(错误#78543,错误#21895421)

  • 复制: 当从服务器配置为 时 log_bin=OFF,应用程序 (SQL) 线程无法正确回滚留在中继日志中的部分事务。该修复确保在重新连接时,应用程序线程正确地回滚部分事务并从下一个中继日志文件开始再次应用它。(错误#78211,错误#21691396)

  • 复制: 如果服务器在提交已准备好的 XA 事务之前意外停止,并且该事务修改了mysql.gtid_executed表,则后续恢复 innodb_lock_wait_timeout会因读取mysql.gtid_executed 表时出错而中止。为了解决这个问题,不再允许 XA 事务修改mysql.gtid_executed 表。(错误#77740,错误#21452916)

  • 复制: 作为 Bug #16290902 修复的一部分,将 DROP TEMPORARY TABLE IF EXISTS查询写入二进制日志时,查询前面不再有USE `db`语句。相反,查询使用完全限定的表名,例如 DROP TEMPORARY TABLE IF EXISTS `db`.`t1`;。这改变了 replicate-rewrite-db过滤规则的应用,因为它们仅适用于 USE语句中指定的默认数据库。这会导致从站在CREATE TEMPORARY TABLE应用结果时失败。该修复确保在将DROP TEMPORARY TABLE IF EXISTS查询写入二进制日志时,对默认数据库进行检查。如果存在,则查询写为USE default_db在二进制日志中。如果不存在默认数据库,则使用限定的表名记录查询。(错误#77417,错误#21317739)

  • 复制: 如果为事务生成 GTID 失败,事务不会写入二进制日志,但仍会提交。虽然 GTID 耗尽的情况很少见,但如果确实发生,则会将错误作为同步阶段错误写入二进制日志。使用 binlog_error_action=ABORT_SERVER,服务器会在出现此类错误时中止,从而避免数据不一致。当 时 binlog_error_action=IGNORE_ERROR,服务器在发生此类错误后继续进行二进制日志记录,可能会导致主从之间的数据不一致。该修复将错误更改为正确记录为刷新阶段错误。(错误#77393,错误#21276561)

  • 复制: 当使用--gtid-mode=ON, --enforce-gtid-consistency, 和--binlog-format=row时,如果在主服务器上执行具有多个 DROP TEMPORARY TABLE语句的用户定义函数,生成的二进制日志会导致从服务器出错。该修复程序确保存储的函数和触发器也被视为多语句事务,并且在 --enforce-gtid-consistency启用时,带有 CREATE TEMPORARY TABLEDROP TEMPORARY TABLE语句的函数会产生 ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION 错误。(错误#77354,错误#21253415)

  • 复制:语句 中使用的存储过程局部变量 ALTER EVENT未正确复制。CALL这与语句未写入二进制日志这一事实有关 相反,在存储过程中执行的每个语句都是单独的二进制日志,除了修改语句字符串以便将存储过程局部变量的使用替换为 NAME_CONST('spvar_name', 'spvar-value')电话。DDL 语句(无论当前的二进制日志格式如何,始终以语句二进制日志模式进行二进制记录)也可以使用存储过程局部变量,并且冲突可能导致它们无法正确复制。该修复程序确保语句中使用的任何存储过程局部变量都替换 NAME_CONST(...)为 ,但当它是 DML 语句且二进制日志格式为 ROW. (错误#77288,错误#21229951)

  • 复制: DROP TABLE语句在写入二进制日志之前由服务器重新生成。如果表或数据库名称包含非常规字符,例如非拉丁字符,则重新生成的语句使用了错误的名称,从而破坏了复制。该修复确保在这种情况下重新生成的名称被正确地转换回原始字符集。同样在处理此错误期间,我们发现在极少数情况下,表或数据库名称包含 64 个字符时,服务器会抛出assert(M_TBLLEN < 128)断言。断言已更正为小于或等于 128。(错误 #77249,错误 #21205695)

    参考资料:另请参阅:Bug #78036、Bug #22261585、Bug #21619371。

  • 复制: 无论当前 格式binlog_format写入二进制日志STATEMENT此类 DDL 可能来自基于事件的 SQL 语句,例如 CREATE EVENTor DROP EVENT,或具有不安全函数的事务,例如 sysdate(). 当 binlog_format=MIXED并试图复制这样的 DDL 时,它没有被正确识别,因此没有被正确复制。(错误#71859,错误#19286708)

  • Microsoft Windows: 在 Windows 上创建用于处理连接的线程时可能会发生线程句柄资源泄漏,这可能导致 Windows 服务器最终耗尽句柄。(错误#79714,错误#22455198)

  • JSON:ALTER TABLE当语句将列的类型从 更改为TEXT时 ,并不总是执行语法检查 JSON。这可能会导致 JSON包含无效 JSON 数据的列。TEXT原始列使用 utf8mb4_bin排序规则时会出现此问题 (错误#79432,错误#22278524)

  • 默认情况下,RHEL6 或更早版本的 System-V 初始化脚本无法启用该mysqld服务。(漏洞 #22600974)

  • 引用查询中的值的触发器的某些激活 NEW可能会导致服务器退出。(缺陷号 22377554)

  • 将 的输出解析 ST_GeometryType()DATETIME具有默认字符集的值utf32导致服务器退出。(缺陷号 22340858)

  • 对于从 XML 文件加载的字符集,服务器可能无法正确初始化其状态映射,从而导致服务器退出。(缺陷号 22338946)

  • 将 84 个 4 字节字符的标记插入全文索引会引发断言。最大令牌长度为 84 个字符,最多 252 个字节,这不包括 4 个字节的字符。最大字节长度现在是 336 字节。(缺陷 #22291765,缺陷 #79475)

  • 对于某些消费者组合,Performance Schema 准备好的语句检测可能会导致服务器退出。(漏洞 #22291560)

  • 如果客户端尝试使用不受支持的客户端字符集 ( ucs2, utf16, utf32),则报告给客户端的错误消息对于 SSL 和非 SSL 连接是不同的。(漏洞 #22216715)

  • 如果存储过程具有声明为 TEXTor 的变量,并且使用or 列BLOB中的 SELECT ... INTO 语法将数据复制到该变量, 则可能会发生数据损坏或服务器退出。(错误#22203532、错误#22232332、错误#21941152)TEXTBLOB

  • 对于调试版本,在 ONLY_FULL_GROUP_BY禁用 SQL 模式的情况下,优化器可能会尝试对外部引用进行排序,从而引发断言。(漏洞 #22200984)

  • 当在生成的列表达式中使用这些值时,对和 的YEAR值的 不同处理可能会引发断言。(缺陷号 22195458)INSERTSELECT

  • 对于调试版本,对于涉及 MIN()MAX()在索引列上的查询以及对未索引日期时间列的引用,优化器可能会尝试访问未读值,从而导致引发断言。(缺陷号 22186926)

  • 由于舍入算法过于激进 ,Geohash 解码(例如,对于 ST_LongFromGeoHash()ST_LatFromGeoHash()和 )可能会产生不正确的结果。ST_PointFromGeoHash()(缺陷号 22165582)

  • 在调试版本中,使用READ UNCOMMITTED事务隔离级别, SELECT使用索引读取生成的列可能会引发断言。(缺陷号 22133710)

  • 对于生成的列,优化器可能无法建立正确的表引用,从而导致服务器退出。(漏洞 #22132822)

  • NULL对于某些消费者组合,由于在检测临时文件 I/O 时 尝试使用指针,性能模式文件检测可能会失败 。(缺陷号 22130453)

  • 性能模式可以基于(不正确的)假设提出断言,即检测临时文件打开操作总是会导致检测文件。(缺陷号 22118669)

  • ALTER TABLE使用该算法在虚拟生成列上添加索引 的语句INPLACE未正确报告有关虚拟列值问题的警告(或严格 SQL 模式下的错误)。由于评估有问题的值, ALTER TABLE在同一表上使用该 算法的任何后续操作都会产生此类警告(或在严格的 SQL 模式下失败),但由于相同的原因使连接处于导致对表进行进一步更改失败的状态。(缺陷号 22095783)COPYINPLACE

  • 如果表达式的左侧表达式IN是不访问任何表的行子查询,则可能会引发断言(在调试版本中),或者可能返回不正确的结果(在发布版本中)。(缺陷号 22089623)

  • 与索引生成列匹配的表达式可能会被优化器替换为生成列,以启用关联索引的使用。但是,对于单表的update和delete语句并没有进行这种优化。优化器现在将此替换优化扩展到此类语句。(缺陷号 22077611)

  • ANSISQL 模式可能导致处理生成的列表达式时出现不一致。(缺陷号 22018979)

  • 删除服务器会话插件是错误的,可能导致服务器退出。(漏洞 #21983102)

  • 对于某些查询,如果优化器对生成的列使用 Disk-Sweep Multi-Range Read 优化,则服务器可能会退出。(缺陷号 21980430)

  • mysqlpump尝试尽可能多地并行工作,但转储线程在备份数据之前缺少同步点,导致备份不一致。mysqlpump现在锁定服务器并刷新所有表, FLUSH TABLES WITH READ LOCK以确保任何进一步的连接查看所有数据库的相同状态。

    此更改解除了 --single-transaction选项与并行性相互排斥的限制。使用时 --single-transaction,不再需要通过设置 --default-parallelism为 0 且不使用任何实例来禁用并行性 --parallel-schemas。(缺陷号 21980284)

  • 即使对于已经解锁的对象,它也会减少锁定计数器的错误pthread_rwlock_unlock()可能会导致死锁。(缺陷号 21966621)

  • Performance Schema 可以获得会话系统变量的双重锁定,导致服务器挂起或(在调试版本中)引发断言。(漏洞 #21935106)

  • 包含以下形式的某些查询WHERE 0可能会由于未初始化的读取而导致服务器退出:。(漏洞 #21922202)SELECT (SELECT col AND constant FROM t WHERE 0) IN (SELECT constant FROM t1)

  • CREATE TEMPORARY TABLE .. SELECTBIT涉及导致列类型重新定义的列的语句可能会导致服务器退出或创建不正确的表。(漏洞 #21902059)

  • 对于表UPDATE操作 InnoDB,索引中虚拟生成列的值与之前缓冲区中的值可能不匹配,导致服务器退出。(缺陷号 21875520)

  • 对于 character_set_server=utf16le,某些值 ft_boolean_syntax可能会导致服务器退出以进行全文搜索。(漏洞 #21631855)

  • 对于gtid_mode=ON,并发执行SHOW TABLE STATUSREVOKE ALL PRIVILEGES可能会导致死锁,因为数据库中有一个视图并且 REVOKE ALL PRIVILEGES对某些但不是所有指定用户失败。(漏洞#21463167)

  • 由于转储处理期间视图处理线程的不正确同步, mysqlpump可能会退出。(错误#21399236,错误#21447753)

  • LOCK TABLES生效时,尝试打开MERGE由其表列表中的视图组成的临时表(不是列表中的最后一个表)导致服务器退出。(缺陷号 20691429)

  • 对于某些准备好的语句,优化器可以转换连接条件,以便它使用指向临时表字段的指针,该字段在初始执行后不再可用。随后的执行导致服务器退出。(漏洞#19941403)

  • 重复执行ALTER TABLE v1 CHECK PARTITION准备好的语句,其中 v1是一个视图,导致服务器退出。

    此外,一些管理操作的输出,当它们在视图上尝试时,从 损坏变为操作失败。其中包括执行ANALYZE TABLE、 、和 操作的、OPTIMIZE TABLE、 和 REPAIR TABLE和 语句。(漏洞 #19817021)ALTER TABLEANALYZE PARTITIONCHECK PARTITIONOPTIMIZE PARTITIONREPAIR PARTITION

  • Valgrind 在用于非对称加密的代码中检测到一些可能不安全的字符串函数使用。(漏洞 #19688135)

  • 连接缓冲区分配中的内存不足故障可能会导致多表查询的结果不正确。(漏洞 #19031409)

  • MYSQL_OPT_READ_TIMEOUTSSL 连接忽略通过将选项传递给 mysql_options()C API 函数 所做的任何更改 。(漏洞 #17618162)

  • 对于ALTER TABLE语句,解析器不支持ALGORITHM某些涉及表空间或分区的操作的子句。(漏洞 #17400320)

  • Debian 软件包root使用身份验证插件创建用户帐户,以在使用空白密码auth_socket完成安装时实现默认安全安装。root但是, auth_socket即使密码不为空,也会被使用。(错误#80137、错误#22594846、错误#23321113、错误#81518)

  • Solaris 软件包未能注意到 MySQL 客户端库对该libstlport库的依赖性。(错误#79778,错误#22504264)

  • 如果配置文件包含多行,则 使用 systemd 启动mysqld会失败 。datadir现在使用最后 datadir一行。(错误#79613,错误#22361702)

  • SET应具体化语句子句中 包含的派生表,UPDATE以避免更新也在同一语句中读取的表时出错。某些语句没有发生具体化,从而导致该错误。(错误#79590,错误#22343301)

  • MySQL 5.7.8 禁止引用从内部查询的相关子查询的子句中选择外部查询的列表列,HAVING因为标准 SQL 不允许这样做。但是,由于这是一个经常使用的扩展,因此再次被允许。(错误#79549,错误#22328395)

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

  • 仅安装共享库、客户端和开发支持文件无法安装构建客户端应用程序所需的一切,因为 binary_log_types.h未安装头文件。(错误#79531,错误#22321338)

  • SHOW CREATE TRIGGER可能无法显示所有适用的 SQL 模式。(缺陷 #79526,缺陷 #22313133)

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

  • 在 SELinux 上,使用 系统变量的mysqld --initializeinit_file可能无法初始化数据目录。(错误#79442、错误#22314098、错误#79458、错误#22286481)

  • 写入保存的视图定义的十六进制和位文字可能会被截断。这也可能影响扩展 EXPLAIN输出。(错误#79398,错误#22268110)

  • ST_Buffer()对于 SRID 不为 0 的几何返回错误。现在允许但忽略非零 SRID 值(仍然使用笛卡尔坐标进行计算)。(错误#79394,错误#22306745)

  • 回归导致 子查询限制的解决方法失败,以避免 在子查询中ER_UPDATE_TABLE_USED引用同一个表作为UPDATEor DELETE语句的目标时出现错误。(错误#79333,错误#22239474)

  • 导致多个解析错误的语句可能会引发断言。(缺陷 #79303,缺陷 #22222013)

  • 与合并到外部查询中相比,具有派生表的某些查询在具体化时执行得更好。优化器不再默认对选择列表中包含依赖子查询的派生表使用合并。(错误#79294,错误#22223202)

  • ALTER USER并且 在使用系统变量SET PASSWORD命名的文件中调用时在服务器启动时不起作用 。init_file(错误#79277,错误#22205360)

  • 当不在严格 SQL 模式下时,尝试隐式插入 NULL列会NOT NULL 导致不同的行为,具体取决于表是否有触发器。(错误#79266,错误#22202665)

  • 某些仅复制代码不受保护, #ifdef并且无法在 启用CMake选项的情况下进行编译。(错误#79236,错误#22190632)WITH_UBSAN

  • 使用CMake选项 配置 MySQL 会 导致来自comp_err的虚假运行时警告。这些现在都被压制了。此外,还添加了一条CMake警告,指出未定义行为地址消毒剂支持目前处于试验阶段。(缺陷 #79230,缺陷 #22190656)-DWITH_UBSAN=ON

  • INSERT INTO ... SELECTDEFAULT语句可以将值插入生成的列以外的值。(错误#79204,错误#22179637)

  • 启用系统变量的derived_merge标志后,在optimizer_switch外部联接的内侧使用派生表的查询可能会返回不正确的结果。(错误#79194,错误#22176604)

    参考资料:另请参阅:Bug #80526、Bug #22833364。

  • 内存泄漏libmysqld已得到纠正。(错误#79187,错误#22174219)

  • FOUND_ROWS()UNION如果前面的查询涉及 SQL_CALC_FOUND_ROWSand ,则可能返回负值 LIMIT ... OFFSET。(错误#79131,错误#22155786)

  • INEXISTS子查询的转换可能导致返回 0 而不是. SELECT NULL IN (subquery)NULL

    IN对于非空表的查询,子EXISTS查询转换可能会产生不正确的结果,谓词左侧的子查询IN产生空结果,并且半连接优化被禁用。(错误#78946、错误#22090717、错误#74403、错误#19822406)

  • 在视图中使用时,结果WEIGHT_STRING() 可能不正确。(错误#78783,错误#21974321)

  • 对于使用 Unix 套接字文件建立 --ssl-ca的连接,指定选项会导致连接失败。(错误#78509,错误#21878661)

  • 如果服务器以 启动 --thread-handling=no-threads,则不会为客户端连接创建前台线程。Performance Schema 没有考虑到没有前台线程查询 session_connect_attrs表的可能性,导致引发断言。(错误#78292,错误#21765843)

  • mysqlpump为已生成列的表生成了不正确 INSERT的语句。(错误#78082,错误#21650559)

  • ALTER TABLE ... CONVERT TO CHARACTER SET如果表仅包含数字数据类型,则使用该 INPLACE算法的操作将无效。此外,此类操作无法清理其临时.frm 文件。(错误#77554,错误#21345391)

  • 繁重SHOW PROCESSLISTSELECT ... FROM INFORMATION_SCHEMA.PROCESSLIST活动可能导致服务器接受多个 max_connections连接。(错误#75155,错误#20201006)

  • 当与libmysqld嵌入式服务器一起使用时,mysql_stmt_execute()C API 函数malformed communication packet会因错误而失败,即使对于简单的准备语句也是如此。(错误#70664,错误#17883203)

  • SUM(DISTINCT)当存在许多不同的值时, 使用 的查询可能会产生不正确的结果。(错误#56927、错误#11764126、错误#79648、错误#22370382)