Documentation Home
MySQL 5.6 发行说明  /  MySQL 5.6.7 的变化(2012-09-29,发布候选)

MySQL 5.6.7 的变化(2012-09-29,发布候选)

从 MySQL 5.6.7 开始,Oracle 不再为 OS X 10.5、Debian 5、RHEL/OL 4、SLES 10、FreeBSD 7、Windows XP 或 Windows 2003 提供二进制文件。

配置注意事项

  • 此版本延续了 MySQL 5.6.6 中开始的对服务器参数默认值进行更改的过程。这些更改的动机是提供更好的开箱即用性能并减少数据库管理员手动更改设置的需要。当我们获得反馈时,这些更改将在未来的版本中进行修订。

    下表总结了对默认值的更改。这些默认设置中的任何一个都可以通过在服务器启动时指定一个显式值来覆盖。

    范围 旧默认 新默认
    innodb_data_file_path ibdata1:10M: 自动扩展 ibdata1:12M: 自动扩展

弃用和移除说明

添加或更改的功能

  • 重要变更;分区: 用户分区表的最大分区数从 1024 增加到 8192。(缺陷 #11755685)

  • 表现; InnoDB: 配置选项O_DIRECT_NO_FSYNC中添加了 一个新设置innodb_flush_method此设置与 类似 O_DIRECT,但省略了后续 fsync()调用。适用于某些文件系统,但不适用于其他文件系统。(错误#11754304,错误#45892)

  • InnoDB:--innodb-read-only选项允许您以只读模式运行 MySQL 服务器。您可以访问 InnoDB只读介质(如 DVD 或 CD)上的表,或者设置一个包含多个实例的数据仓库,这些实例都共享同一个数据目录。有关使用详细信息,请参阅 配置 InnoDB 以进行只读操作。(漏洞 #14143600)

  • InnoDB:INFORMATION_SCHEMA表, innodb_cmp_per_indexinnodb_cmp_per_index_reset提供有关InnoDB使用 压缩的表的统计信息。索引级别的统计信息让 DBA 衡量压缩操作成功或失败的比例对于表、索引、 页面大小工作负载的特定组合是否可接受。通常情况下,压缩失败率应低于 10%,尤其是在使用压缩表处理具有频繁 、 或 操作的 OLTP 式工作INSERT负载 UPDATEDELETE

    因为收集这些统计数据可能非常耗时并且会对性能产生负面影响,所以只有在新配置选项 innodb_cmp_per_index_enabled设置为时才启用新表ON。(OFF默认情况下。)

  • InnoDB:InnoDB 压缩表中的 每个数据块都包含一定量的空白空间(填充)以允许 DML操作修改行数据而无需重新压缩新值。过多的填充会增加压缩失败的可能性,当数据在大量更改后确实需要重新压缩时,需要进行页面拆分。现在可以动态调整填充量,这样 DBA 就可以降低压缩失败率,而无需使用新参数重新创建整个表,或者使用不同的页面大小重新创建整个实例。相关的新配置选项是 innodb_compression_failure_threshold_pctinnodb_compression_pad_pct_max

  • InnoDB: 您现在可以 从熟悉的 0-9 范围内选择压缩表的压缩级别 。压缩级别由 配置选项控制,默认值为6: InnoDBzlibinnodb_compression_level

    • 提高压缩级别会增加 CPU 开销,可能会减少任何特定行所需的存储量,从而降低压缩失败和后续页面拆分的可能性。

    • 降低压缩级别会减少 CPU 开销,可能会增加任何特定行所需的存储量,从而增加压缩失败和后续页面拆分的可能性。

    您还可以控制当更新操作导致页面再次被压缩时,缓冲池中的压缩页面是否存储在重做日志中。此行为由 innodb_log_compressed_pages 配置选项控制。关闭压缩页面的日志记录会减少生成的重做数据量,可能会提高吞吐量。如果在 崩溃恢复期间需要压缩页面,则此时将再次压缩。

  • 当 MySQL 配置 -DWITH_SSL=system为使用 OpenSSL 构建时,如果 OpenSSL 早于版本 1.0.1,CMake 现在会产生错误(错误 #14167227)

  • mysql选项和 C API 函数--secure-auth选项 的默认值已从 false 更改为 true 。(漏洞 #13789417)MYSQL_SECURE_AUTHmysql_options()

  • CMake的WITH_SSL选项现在接受一个path_name值,该值指示要使用的 OpenSSL 安装的路径名。system 当 CMake 代码检测到较旧或不正确安装的 OpenSSL 版本时,这可能很有用,而不是值。(另一种允许做同样事情的方法是将CMAKE_PREFIX_PATH选项设置为 path_name。)(错误 #61619,错误 #12762891)

  • Note如果创建的索引与现有索引重复, 服务器现在会发出诊断。(缺陷 #37520,缺陷 #11748842)

  • MySQL 客户端库现在包含内置的 SSL 支持。链接 MySQL 客户端程序时,您不应再指定-lssl-lcrypto

    参考资料:另请参阅:Bug #12762891、Bug #14167227。

  • 明文客户端身份验证插件适用于要求服务器接收在客户端输入的密码的mysql_clear_password身份验证方案,无需散列。因为密码是明文发送的,所以这个插件应该在加密连接的上下文中使用,比如 SSL 连接,以避免通过网络暴露密码。为了减少无意中使用此插件的可能性,现在要求客户端明确启用它。这可以通过几种方式完成:

    • 将环境变量设置为以、或 LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN 开头的值 。这将为所有客户端连接启用插件。 1Yy

    • mysqlmysqladminmysqlslap客户端程序支持 --enable-cleartext-plugin在每次调用的基础上启用插件的选项 。

    • mysql_options()C API 函数支持 MYSQL_ENABLE_CLEARTEXT_PLUGIN在每个连接的基础上启用插件的选项 。此外,任何使用和读取选项文件的程序都可以通过在客户端库读取的选项组中 libmysqlclient包含一个选项来启用该插件 。enable-cleartext-plugin

修正错误

  • 不兼容的更改: 用于ALTER TABLE更改外键列的定义可能会导致引用完整性丢失。例如,更改包含NULL值的外键列会 NOT NULL导致NULL 值变为空字符串。同样, ALTER TABLE IGNORE删除父表中的行可能会破坏参照完整性。

    服务器现在禁止更改可能导致引用完整性丢失的外键列。解决方法是ALTER TABLE ... DROP FOREIGN KEY在更改列定义之前和 ALTER TABLE ... ADD FOREIGN KEY之后使用。(错误#46599,错误#11754911)

  • 重要变更;复制: 在正在进行的事务期间发出时,以下任何用于控制 MySQL 复制的语句现在都会导致事务被提交:

    有关详细信息,请参阅导致隐式提交的语句。(漏洞 #13858841)

    参考资料:另请参阅:Bug #14298750、Bug #13627921。

  • 重要变化:ALTER USER语句清除了mysql.user表中的用户密码。它不再这样做。(漏洞 #14226518)

  • 重要更改: 以前,ExtractValue()UpdateXML()函数支持作为参数提供给它们的 XPath 表达式的最大长度为 127 个字符。此限制现在已被删除。(缺陷 #13007062,缺陷 #62429)

  • 表现; InnoDB: 此修复通过多种方式提高了 InnoDB memcached插件的性能:

    (漏洞 #14252821)

  • 表现; InnoDB:OPTIMIZE TABLE语句现在会在适当的时候更新该InnoDB 表的持久统计信息。(漏洞 #14238097)

  • 表现; InnoDB: 此修复程序删除 了页面上的冗余校验和验证 。当从磁盘读取压缩页面和解压缩页面时,都会验证校验和。现在仅当从磁盘读取页面时才执行验证。(缺陷 #14212892,缺陷 #64170)InnoDB

  • 表现; 复制;Solaris: 在 Solaris 系统上,启用 slave_parallel_workers可能会导致从站上的事件执行速度减慢。(漏洞 #14641110)

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

  • 表现; 复制:启用 后slave_parallel_workers,表示工作队列中超过特定​​超限水平的事件数量的内部乘数永远不会重置为零,即使已经解决了超额问题;这导致乘数随着时间的推移不断增长,导致从属事件执行速度减慢。(漏洞 #13897025)

  • 性能: 视图定义(在.frm文件中)未被缓存,因此每次访问视图都涉及文件读取。现在缓存定义以获得更好的性能。(漏洞 #13819275)

  • 性能: 子查询具体化的某些实例可能会导致性能不佳。子查询具体化现在仅在其成本低于EXISTS 转换时才被选择。(请参阅使用物化优化子查询和使用 EXISTS 策略优化子查询。)

    optimizer_switch此修复为名为 的系统变量 引入了一个新标志 subquery_materialization_cost_based。如果标志是on(默认值),优化器在子查询实现和子查询转换之间执行基于成本的选择(IN -> EXISTS如果可以使用任何一种方法)。如果标志是 off,优化器选择子查询实现而不是IN -> EXISTS子查询转换,这是以前的行为。(漏洞 #13111584)

  • 创新数据库;分区:SELECT来自没有主键的分区 的 AInnoDB有时无法返回任何预期非空结果的行。在这种情况下,服务器还会返回错误 Can't find record in table_nameIncorrect key file for table table_name。(漏洞 #13947868)

  • InnoDB: 在配置InnoDB memached插件系统表时 INNODB_MEMCACHE.CONTAINERS,使用逗号(,)和空格作为分隔符,将多列映射到一个memcached值。此修复允许竖线字符 (| ) 也用作定界符。(漏洞 #14560228)

  • InnoDB: 在 Windows 系统上,由于 for 的值不正确而导致的文件访问错误MYSQL_DATADIR可能会导致 InnoDB断言错误。重新启动 MySQL 后错误可能仍然存在。(漏洞 #14558324)

  • InnoDB: 将不同记录长度的数据插入到 使用压缩InnoDB的表中 可能会导致服务器因错误而停止。(错误#14554000、错误#13523839、错误#63815、错误#12845774、错误#61456、错误#12595091、错误#61208)

  • InnoDB:innodb_checksum_algorithm在 MySQL 5.6 开发周期中被短暂更改为crc32 的默认值, 在降级到早期 MySQL 版本期间被切换回以 innodb提高数据文件的兼容性 InnoDB(漏洞 #14525151)

  • InnoDB:ALTER TABLE重建表的过程中,特别是 ,ADD COLUMNDROP COLUMN存在一些与FULLTEXT索引相关的断言失败,特别是对于包含多个 FULLTEXT索引的表。该修复 根据索引ALTER TABLE正确使用或不使用在线 DDL 。FULLTEXT如果一个表有一个FULLTEXT被删除的索引,那么由于隐藏FTS_DOC_ID列,对该表的联机 DDL 的任何限制仍然存在。(漏洞 #14488218)

  • InnoDB: 在某些条件下, innodb_io_capacity_max 配置选项现在使用以下公式计算默认值:

    innodb_io_capacity_max = max(2000, innodb_io_capacity * 2)

    该公式仅在您为 innodb_io_capacityat server startup 指定值而不为 指定值时生效 innodb_io_capacity_maxinnodb_io_capacity为动态使用SET语句设置值时不使用公式 。(漏洞 #14469086)

  • InnoDB: 在并发 DML和查询的重负载下, InnoDB具有唯一索引的表可能会向查询返回不存在的重复行。(错误#14399148,错误#66134)

  • InnoDB: 语法ALTER TABLE ... DROP FOREIGN KEY ... ALGORITHM=COPY 错误地认为 外键名称区分大小写。(漏洞 #14394071)

  • InnoDB: 当在线 DDL 操作期间检测到错误(例如重复键错误)时,在构建索引时应用对表所做的更改时,如果同一ALTER TABLE语句还包含任何DROP INDEX子句,则 MySQL 可能会遇到断言错误。(漏洞 #14392805)

  • InnoDB: 当 InnoDB 表具有系统选择的 主键时,基于不可空列上的唯一索引,如果其中一个主键列被更改为可空,则会发出错误。消息是:

    Warning	1082	InnoDB: Table table_name has a primary key in InnoDB data
    dictionary, but not in MySQL!

    此问题仅影响ALTER TABLE使用 在线 DDL机制的语句,即带有ALGORITHM=INPLACE指定或暗示的子句。(漏洞 #14353985)

  • InnoDB:InnoDB针对 具有索引的表 的繁重查询工作负载FULLTEXT可能会导致崩溃。该问题仅发生在每秒一定数量的查询和一定数量的并发连接上。(漏洞 #14347352)

  • InnoDB: 如果联机操作失败,并发 DMLCREATE INDEX操作可能会在短时间内 失败,因为表被认为处于错误状态。(漏洞 #14341099)

  • InnoDB: ALTER TABLE分区表的语句可能会导致不必要的 锁定撤消信息。作为新的在线 DDL 功能的一部分,MySQL 在可行时将此开销降至最低,或者您可以ALGORITHM=INPLACE在语句中指定子句ALTER TABLE。(漏洞 #14322667)

  • InnoDB:mysql_install_db命令可能会因断言错误而崩溃:

    InnoDB: Assertion failure in thread thread_num in file trx0rseg.cc line 326

    系统表空间的大小InnoDB上限为 10MB,但在 5.6 开发周期中,系统表空间的最小大小变得略大于 10MB。(漏洞 #14315223)

  • InnoDB:DROP TABLE竞争条件可能会在表的语句 期间导致断言错误 InnoDB。某些内部 InnoDB函数无法正确确定表空间是否丢失;如果缺少表空间,其他函数无法正确处理错误代码。(漏洞 #14251529)

  • InnoDB:InnoDB当在同一事务中创建和访问 多个ER_TABLE_DEF_CHANGED错误。(漏洞 #14234581)

  • InnoDB:SERIALIZABLE服务器可能因具有隔离级别 的事务 FLUSH TABLES ... WITH READ LOCK和后续查询的组合而崩溃。错误信息是:

    InnoDB: Failing assertion: prebuilt->stored_select_lock_type != LOCK_NONE_UNSET

    (漏洞 #14222066)

  • InnoDB: 在就地操作的重建阶段回滚的聚簇索引条目ALTER TABLE 未从二级索引中删除。(漏洞 #14221812)

  • InnoDB:此修复解决了使用在线 DDL(即,使用AUTO_INCREMENT添加列时 有关列的几个问题 。现在该 值已正确使用,下一个值的计算已得到纠正, ,, 和无符号自动增量值已得到正确处理,并检测到溢出情况。(漏洞 #14219624)ALGORITHM=INPLACEAUTO_INCREMENT_OFFSETFLOATDOUBLEINTEGER

  • InnoDB: 使用 MySQL 5.6在线 DDL功能,向ALTER TABLE表添加主键的语句 InnoDB可以成功,即使主键列包含重复值。(漏洞 #14219515)

  • InnoDB: 此修复可防止在线 DDL操作与在同一表上同时发生的外键操作发生冲突 当在线 DDL 正在进行时,基于外键定义中的 CASCADE或更新或删除语句完成后所需的信息将不可用(漏洞 #14219233)SET NULLROLLBACKALTER TABLE

  • InnoDB: 如果使用语句创建XASHOW ENGINE...STATUS事务,命令可能会崩溃。(漏洞 #14218867)START TRANSACTION READ ONLY

  • InnoDB: 如果只读事务在包含InnoDB临时表的会话中被终止,服务器可能会崩溃。(漏洞 #14213784)

  • InnoDB: 在线DDLINSERT操作失败后进入表 可能会导致错误的断言错误:

    InnoDB: Failing assertion: prebuilt->trx_id == 0 || prebuilt->trx_id <= last_index->trx_id

    (漏洞 #14176821)

  • InnoDB:如果先前活动事务的回滚与临时表的删除发生冲突, 服务器可能会在启动时挂起,在 崩溃恢复期间。通过此修复, 持久统计信息不适用于InnoDB 临时表。(漏洞 #14175080)

  • InnoDB: 配置选项 innodb_max_io_capacity重命名为 innodb_io_capacity_max,以强调它与现有 innodb_io_capacity选项的关系。(漏洞 #14175020)

  • InnoDB: 如果 DDL 遇到错误,添加外键在线 DDL操作可能会错误地分配一些内存。(漏洞 #14156259)

  • InnoDB: 由于在计算索引统计信息时出现竞争条件,服务器可能会因信号 8(被零除错误)而崩溃。(漏洞 #14150372)

  • InnoDB: 当自增列使用aFLOATDOUBLE数据类型时,如果自增值变得非常大(大于最大值unsigned long long),则后续插入可能会失败或导致服务器停止。(缺陷 #14145950,缺陷 #55071)

  • InnoDB:InnoDB从包含 前缀索引 的表中删除,然后删除索引,可能会导致崩溃并出现断言错误。(漏洞 #13807811)

  • InnoDB:表 的NUMBER_PAGES_CREATEDNUMBER_PAGES_WRITTEN列的 INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS 值设置为不正确的值,并且 NUMBER_PAGES_GET根本没有设置该列。(漏洞 #13639187)

  • InnoDB: 针对失败的情况改进了错误消息, UPDATE因为该行包含多个 BLOB 值,每个值都大于 768 字节,导致行的大小超过 页面大小的一半。旧消息具有误导性;它建议使用 BLOB,当每个 BLOB 列的 768 字节前缀是限制错误的原因时:

    Error Code 1118: Row size too large. The maximum row size for the used table
    type, not counting BLOBs, is 8126. You have to change some columns to TEXT or
    BLOBs

    该问题的解决方法是使用 ROW_FORMAT=DYNAMICor ROW_FORMAT=COMPRESSED子句创建表,现在在消息中建议这样做。(缺陷 #13453036,缺陷 #63507)

  • InnoDB: 更新非常大的 BLOB 值(通常为 16MB 或更大)时,服务器可能会崩溃。(漏洞 #13450566)

  • InnoDB:锁定机制 中的问题 可能会导致使用该 HANDLER语句的查询出现严重错误。(缺陷 #11766271,缺陷 #59344)

  • InnoDB:SELECT ... FOR UPDATEUPDATE或其他 SQL 语句InnoDB中使用 <or<=运算符WHERE的行时,受影响范围之后的下一行也可能被锁定。此问题可能会导致预期不会被锁定的行的锁定等待超时。该问题发生在各种隔离级别下,例如 READ COMMITTEDREPEATABLE READ。(漏洞 #11765218)

  • InnoDB: 新的在线 DDLALTER TABLE功能解决了语句导致不必要的表重建 的长期存在的错误 此特定错误适用于更改TIMESTAMP 列的默认值。(缺陷 #11753646,缺陷 #45124)

  • InnoDB:针对涉及外键关系 表ALTER TABLE语句 ,清理了各种不一致的行为,包括表变得不可访问(缺陷 #11744929,缺陷 #5670)InnoDB

  • 分区: 对于使用PARTITION BY HASHor PARTITION BY KEY,当分区修剪机制使用分区键中的列遇到多范围列表或不等式时,它会继续使用下一个分区列并尝试使用它进行修剪,即使前一列不能使用。这导致可能与一个或多个先前分区列匹配的分区被修剪掉,留下仅与分区键的最后一列匹配的分区。

    满足以下两个条件时会触发此问题:

    1. SELECT构成表分区键的列的使用顺序与语句 WHERE子句在 分区键定义中的顺序与列定义中的顺序相同 ;

    2. 分区键最后一列所用的WHERE条件仅由单个值满足,而测试分区键前一列的条件则由一系列值满足。

    此处显示了创建分区表的语句示例和针对此查询发生上述问题的示例:

    CREATE TABLE t1 (
      c1 INT,
      c2 INT,
      PRIMARY KEY(c2, c1)
    ) PARTITION BY KEY()  # Use primary key as partitioning key
      PARTITIONS 2;
    
    SELECT * FROM t1 WHERE c2 = 2 AND c1 <> 2;

    一旦遇到无法在修剪中使用的分区键列,通过确保分区修剪跳过任何剩余的分区键列来解决此问题。(漏洞 #14342883)

  • 分区: 当前从用于排序读取的每个分区读取的行的缓冲区在打开时分配,仅在分区处理程序关闭或销毁时释放。对于具有许多分区和大行的表上的 SELECT 语句,这可能会导致服务器使用过多的内存。

    此问题已通过仅在需要时为分区表的读取分配缓冲区并在不再需要时立即释放它们来解决。作为此修复的一部分,现在分配内存以仅在尚未修剪的分区中读取行(请参阅 分区修剪)。(漏洞 #13025132)

    参考资料:另请参阅:Bug #11764622、Bug #14537277。

  • 复制;Microsoft Windows: 在 64 位 Windows 平台上,大于 4G 的 max_binlog_cache_sizemax_binlog_stmt_cache_size 系统变量值被截断为 4G。这导致 LOAD DATA在尝试加载大于 4G 的文件时失败,即使 max_binlog_cache_size设置的值大于此值。(漏洞 #13961678)

  • 复制: 更新写入用户变量,其值在使用时从未在从站上设置, --replicate-ignore-table可能会导致从站失败。(漏洞 #14597605)

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

  • 复制:在 MySQL 服务器的数据目录中 命名的手动创建的文件 slave_worker_info可能会被误认为是实际的中继日志信息文件。此外,当工人数量(slave_parallel_workers服务器系统变量)减少时,相应的信息文件没有按预期删除。(漏洞 #14578740)

    参考资料:另请参阅:Bug #13804728、Bug #14550905、Bug #14550945。

  • 复制: 大于 0,将中继日志信息存储库类型更改为 relay_log_info_repository=FILE 并 重新 启动从属 mysqld导致后续 语句使从属崩溃。(漏洞 #14550945)slave_parallel_workersTABLESTART SLAVE

    参考资料:另请参阅:Bug #13804728、Bug #14550905、Bug #14578740。

  • Replication: 当多线程slave worker的数量(由设置 slave_parallel_workers服务器系统变量决定)在使用时发生变化 relay_log_info_repository=TABLEmysql.slave_worker_info表没有反映出变化。(漏洞 #14550905)

    参考资料:另请参阅:Bug #13804728、Bug #14550945、Bug #14578740。

  • 复制: 使用COM_BINLOG_DUMP_GTID不正确的数据可能会导致服务器崩溃。(漏洞 #14509140)

  • 复制:在未启用二进制日志记录的情况下 执行该 SQL_THREAD_WAIT_AFTER_GTIDS() 功能可能会导致服务器崩溃。(漏洞 #14457883)

  • 复制: MySQL 复制代码中的一个内部例程从用于存储数据库和工作线程之间映射的散列中删除元素,同时迭代散列。这可能会导致 has 元素的意外重新排序,从而可能导致使用此哈希的例程的结果不正确。(漏洞 #14381701)

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

  • 复制: 二进制日志和中继日志性能模式互斥体的名称被错误地更改为与 MySQL 5.5 名称不同的名称。这些名称已恢复为 MySQL 5.5 中使用的名称。(漏洞 #14366314)

  • 复制: 在使用 的主服务器和从服务器之间设置复制时 master_info_repository=TABLEmysql.slave_master_info表在第一次START SLAVE发布时没有更新。(漏洞 #14298750)

    参考资料:另请参阅:错误 #13858841。

  • 复制:--disable-gtid-unsafe-statements选项导致任何涉及临时表的非事务性 DML 语句被拒绝并出现错误,即使 binlog_format明确设置为 ROW,尽管在这种情况下它们没有写入二进制日志。现在,在使用基于行的日志记录时允许使用此类语句,只要受语句影响的任何非事务表也是临时表即可。(漏洞 #14272627)

  • 复制: 当使用多线程从属时, --replicate-rewrite-db在将数据库分配给从属工作线程时不遵守规则,这可能会导致语句在使用此选项时乱序执行。这可能导致从站与主站不一致。(漏洞 #14232958)

  • 复制: 当服务器运行时mysql_upgradegtid_mode=ON失败, --disable-gtid-unsafe-statements因为 MySQL 系统表是使用 MyISAM. 通过更改mysql_upgrade的默认日志记录行为可以解决此问题 ;现在默认情况下禁用日志记录。( mysql_upgrade采取的操作 取决于服务器版本,因此不应复制到从服务器。)要启用日志记录,您可以 使用该 选项执行mysql_upgrade 。--write-binlog(错误#14221043,错误#13833710)

  • 复制: 许多与 GTID 相关的内部编程对象的初始化和使用无法与 PERFORMANCE_SCHEMA. (漏洞 #14152637)

  • 复制: 多线程从站的调度程序没有考虑到通过外键依赖隐式参与操作的数据库,这可能导致从站暂时失去一致性。为了避免这个问题,调用不同数据库表之间外键关系的主服务器上的复制事件现在被标记为可以按顺序安排它们以避免竞争条件,从而避免不一致。但是,这会对性能产生不利影响。(漏洞 #14092635)

  • 复制: 使用多线程从站时,用于中继日志信息日志的存储库类型并不总是按预期自动用于工作存储库。(漏洞 #13804728)

    参考资料:另请参阅:Bug #14550905、Bug #14550945、Bug #14578740。

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

  • Replication:和 的Master_id列 显示的是slave的服务器ID,而不是master的服务器ID。(漏洞 #12344346)mysql.slave_master_infomysql.slave_relay_log_info

  • 复制: 诸如此类 的语句对于基于语句的日志记录被标记为不安全,尽管事实上此类语句实际上是安全的。在运行大量此类语句的情况下,这可能会导致磁盘空间耗尽,从而记录此类错误警告的数量。为了防止这种情况发生,引入了警告抑制机制。此警告抑制作用如下:每当最近的 50 UPDATE ... WHERE primary_key_column = constant LIMIT 1ER_BINLOG_UNSAFE_STATEMENT 在任意 50 秒内生成警告超过 50 次,则启用警告抑制。激活后,这会导致此类警告不会写入错误日志;相反,对于这种类型的每 50 条警告,都会在错误日志中写入一条注释,说明. 只要最近 50 次此类警告在 50 秒或更短时间内发出,这种情况就会继续;一旦警告数量减少到低于此阈值,警告将再次正常记录。 The last warning was repeated N times in last S seconds

    此问题的修复不会影响向 MySQL 客户端报告这些警告的方式;对于生成警告的每个语句,仍会向客户端发送警告。此修复程序也不对如何确定基于语句的日志记录的任何语句的安全性进行任何更改。(缺陷 #11759333,缺陷 #51638)

    参考资料:另请参阅:Bug #11751521、Bug #42415。

  • ALTER TABLE ... DROP FOREIGN KEY没有命名要删除的外键导致服务器崩溃。现在需要外键名称。(漏洞 #14530380)

  • 表的就地ALTER TABLE操作InnoDB可能会引发试图获取锁的断言。(漏洞 #14516798)

  • old_passwords如果设置为 2(使用sha256_password身份验证插件) , mysql_secure_installation将不起作用 (漏洞 #14506073)

  • 索引条件下推与降序索引范围扫描一起导致性能下降。(漏洞 #14503142)

  • Item_cache_str::save_in_field()如果缓存的值为 ,则取消引用空指针NULL。(漏洞 #14501403)

  • GROUP BY ... WITH ROLLUP 使用运算符比较分组列 的查询IN 导致引发断言。(漏洞 #14500792)

  • 在启用半连接的调试版本中,GROUP BY ... WITH ROLLUP不使用临时表可能会导致服务器崩溃。(漏洞 #14499409)

  • 将连接缓存用于包含IN子查询的查询时引发断言,该子查询预期返回单行但返回多行。(漏洞 #14499331)

  • 当对索引列按降序进行分组和排序时,优化器可能会引发断言。(漏洞 #14498999)

  • 带孔的多边形可能导致空间操作的服务器崩溃。(漏洞 #14497827)

  • 对于复杂的条件,优化器可能会生成不正确的范围构造并返回不正确的查询结果。(漏洞 #14497598)

  • mysql_com.h中, CLIENT_CONNECT_ATTRSCLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA符号被错误地定义为相同的值。(漏洞 #14482472)

  • Threads_running状态变量未正确更新 。(漏洞 #14471011)

  • GROUP_CONCAT()with DISTINCTORDER BYon GEOMETRY值导致服务器崩溃。(漏洞 #14468106)

  • STRONG使用100 个或更多字符 的密码策略和密码,VALIDATE_PASSWORD_STRENGTH() 可能会导致服务器崩溃。(漏洞 #14458293)

  • PASSWORD(NULL)OLD_PASSWORD(NULL)可能导致服务器崩溃。(漏洞 #14458217)

  • 系统 explicit_defaults_for_timestamp 变量不可见(例如,带有 SHOW VARIABLES),因此无法根据其值做出运行时决策。(漏洞 #14409088)

  • 解析外部字段时, 为准备语句的每次执行Item_field::fix_outer_fields()创建新 Item_ref的 s,因此这些必须在运行时 memroot 中分配。解析之前的 memroot 切换 JOIN::having导致它们在语句根中分配,从而为每个准备好的语句执行泄漏内存。(漏洞 #14409015)

  • 一个ALTER TABLE用于 InnoDB尝试添加索引并更改参与该索引的列的可空性的表引发了断言。(漏洞 #14404635)

  • 对于调试构建,如果一个会话使用 DDL 语句来更改InnoDB表,而另一个会话如果具有表的更改前一致快照,则可能会引发断言失败。(漏洞 #14365043)

  • 结果集可能包含额外的行,用于对 使用修饰符和子查询的MyISAM表 进行查询。SQL_BUFFER_RESULT(漏洞 #14348858)

  • mysql--server-public-key选项 已重命名为以反映它引用文件并与相关的服务器端变量命名保持一致。此外,此选项现在仅在使用 OpenSSL(而非 yaSSL)构建 MySQL 时可用,因为 yaSSL 不支持必要的 RSA 加密。(漏洞 #14348721)mysqltest--server-public-key-path

  • RPM 规范文件现在还在新二进制文件上运行测试套件,然后再打包它们。(漏洞 #14318456)

  • 在存储程序内部,对 XML 函数中存储程序变量的引用在存储程序 ExtractValue()首次执行后失败。(漏洞 #14317442)

  • 使用的性能模式默认为表中的阶段和语句列出了纳秒计时器 setup_timers。但是,如果此计时器在给定平台(例如 Windows)上不可用,则阶段和语句的计时将无法工作。现在,如果空闲、阶段和语句计时器可用,则使用首选计时器,但如果不可用,则使用备用计时器。(漏洞 #14298586)

  • ref如果按降序读取索引 ,则优化器将索引条件下推与访问结合使用的某些查询 可能会非常慢。(错误#14287654,错误#14503142)

  • 使用 MaterializeScan 半连接策略和物化子查询执行的查询可能会返回太多行。(漏洞 #14272788)

  • LooseScan 半连接可以从外表返回重复的行。(漏洞 #14271594)

  • Performance Schema 在选择数据库之前和之后为一条语句生成了不同的摘要。(漏洞 #14256311)

  • 性能模式摘要生成代码可能因竞争条件而失败。(漏洞 #14250296)

  • 服务器未使用gcc 4.7 构建。(漏洞 #14238406)

  • 优化器跟踪可能会在尝试打印释放的子查询项时崩溃。(漏洞 #14238404)

  • 启用半连接优化后 WITH CHECK OPTION,视图定义子句中的子查询计算不正确。(漏洞 #14230177)

  • ALTER SERVER, CREATE SERVER, 和 DROP SERVER空服务器名称导致服务器崩溃。(漏洞 #14220942)

  • ALTER TABLEDISCARD TABLESPACEIMPORT TABLESPACE没有获得足够强的元数据锁来防止并发ALTER TABLE语句使用ADDDROP修改表空间。这可能会导致警告或提出断言。(漏洞 #14213236)

  • WEIGHT_STRING()如果给定错误的标志参数,可能会崩溃。(漏洞#14211236)

  • REQUIRE ISSUER语句的子句 GRANT没有为日志记录正确重写并导致服务器崩溃。(漏洞 #14211069)

  • 如果调用socket()失败,Performance Schema 无论如何都会为它创建检测。(漏洞 #14209598)

  • 一些带有HAVING子句的查询带有一个函数,该子句引用 WHERE列表中的一个函数,子查询作为参数导致引发断言。(漏洞 #14209318)

  • 字符串分配可能导致 Valgrind 警告。(漏洞 #14201818)

  • 对于使用范围访问的查询,优化器可以读取未初始化的数据,从而导致 Valgrind 警告。(漏洞 #14200538)

  • mysql_upgrade没有 数据库中的表STATS_PERSISTENT=0表选项 (漏洞 #14195056)InnoDBmysql

  • 在调试版本中,优化器提出了关于MyISAM密钥长度的不必要(过于严格)的断言。(漏洞 #14179461)

  • 连接处理可​​能会尝试清理尚未实例化的临时表,从而导致服务器崩溃。(漏洞 #14168270)

  • 字符串格式日期的不正确内部转换可能会导致服务器崩溃。(漏洞 #14167911)

  • 对于JSON格式的EXPLAIN 语句,派生表处理不当导致服务器崩溃。(漏洞 #14167499)

  • 在调试版本中,比较具有 ucs2_unicode_520_ci排序规则的字符串可能会引发断言。(漏洞 #14161973)

  • 就地ALTER TABLE对具有GEOMETRY列的表不起作用,即使更改不涉及该列。(漏洞 #14140927)

  • 对于不存在的文件,Performance Schema 文件 I/O 检测有时会做额外的工作或受到检测泄漏的影响。(漏洞 #14113704)

  • sort_buffer_size值可能会导致服务器崩溃。(漏洞 #14111180)

  • 在触发器中,对查询执行过程中使用的临时表的引用可能最终指向后续执行中不存在的字段,从而导致服务器崩溃。(漏洞 #14105951)

  • buffer_pool_pages_in_flush对于表中行中的 某些列,可能会错误地报告负值information_schema.innodb_metrics 。(漏洞 #14090287)

  • JSON-format EXPLAIN语句可能会引发断言或导致服务器挂起带有 impossible-WHERE子句和 ORDER BYorGROUP BY 子句中的子查询的语句。(漏洞 #14084642)

  • 半连接的 FirstMatch 策略为某些具有多个内部表的查询生成了不正确的结果。(漏洞 #14081638)

  • 启用物化和半连接后,某些具有 OR 条件的查询可能会产生不正确的结果。(漏洞 #14075016)

  • 就地ALTER TABLE不处理自动分区存储引擎,例如 NDB. (漏洞 #14063233)

  • RELEASE SAVEPOINT没有对 XA 事务状态进行充分检查以防止在事务处于准备状态时释放保存点。(漏洞 #14062726)

  • CREATE SERVERDROP SERVER和的 错误处理不当ALTER SERVER可能引发断言。(漏洞 #14061851)

  • 空间函数的不正确初始化可能会导致服务器在服务器启动后首次调用时崩溃。(漏洞 #14015762)

  • 对于 JSON 格式的EXPLAIN 语句,子查询处理不当可能会引发断言。(漏洞 #13956275)

  • SELECT在使用连接缓冲区的分区表上可能会导致服务器崩溃。(漏洞 #13949549)

  • 按空间函数进行的多边形排序可能会错误地完成并导致服务器崩溃。(漏洞 #13938850)

  • 对于DELETE语句, WHERE仅应访问索引树的子句行检索可以引发断言。(漏洞 #13919180)

  • for 的参数LIMIT必须是整数,但是如果参数是由预准备语句中的占位符给出的,服务器不会拒绝非整数值,例如 '5'. (漏洞 #13868860)

  • 一些参数可能会导致ST_Buffer()崩溃。(漏洞 #13832749,漏洞 #13833019)

  • 当参数列具有空间索引时 ,使用ST_Contains 和函数的查询会产生不正确的结果。Within()(漏洞 #13813064)

  • CHECK TABLE如果表的和 文件中的 键定义不同, REPAIR TABLE则可能会崩溃。现在服务器产生错误。(漏洞 #13555854).frm.MYIMyISAM

  • 优化器对松散索引扫描更可取的情况使用了完整索引扫描。(漏洞 #13464493)

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

  • COUNT(DISTINCT(SELECT 1))如果优化器使用松散索引扫描,则可能会被错误评估。(漏洞 #13444084)

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

  • FEDERATED当基础表在两列上有复合索引并且查询包含 AND列上的条件时,表 查询可能会返回不正确的结果。(漏洞#12876932)

  • 在调试版本中,InnoDB 关于禁止开放范围的断言过于激进。(缺陷 #66513,缺陷 #14547952)

  • 如果服务器主机支持 IPv6,则启动服务器 bind_address=*应该会导致服务器在所有服务器主机 IPv6 和 IPv4 接口上接受 TCP/IP 连接,否则在所有 IPv4 地址上接受 TCP/IP 连接。但服务器有时无法正确检测到不支持 IPv6 时,无法启动。(漏洞 #66303,漏洞 #14483430)

  • 如果结果包含 ,则 带有ALLover a 的 查询UNION可能会返回不正确的 结果。(缺陷 #65902,缺陷 #14329235)UNIONNULL

  • ALTER TABLE使用复制算法使用键前缀 就地错误处理索引。(缺陷 #65865,缺陷 #14304973)

  • ST_Contains()和 函数 在Within()具有 SPATIAL索引的列上使用时产生了不正确的结果。(错误#65348,错误#14096685)

  • 对于某些查询,优化器 index_merge在工作量大于 ref访问量时使用访问方法。(缺陷 #65274,缺陷 #14120360)

  • 如果 SRID 参数是 ,GeomFromWKB()函数不会返回,并且转换结果中不包含非SRID 值。(缺陷 #65094,缺陷 #13998446)NULLNULLNULL

  • 内部临时MyISAM表不必要地注册在受全局互斥锁保护的开放表列表中,导致过度的互斥锁争用。(漏洞 #65077,漏洞 #14000697)

  • 在准备好的语句中,MYSQL_TYPE_DATE 参数在转换为整数时被作为 MYSQL_TYPE_DATETIME值处理,并且转换产生了不正确的结果。(错误#64667,错误#13904869)

  • 对于本应合法的字符串之间的某些操作,返回了Illegal mix of collat​​ion ”错误。(缺陷 #64555,缺陷 #13812875)

  • COUNT(DISTINCT(IF ...))如果优化器使用松散索引扫描,则可能会被错误评估。(缺陷 #64445,缺陷 #13813126)

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

  • --ssl-key 选项的参数未验证是否存在并且是有效密钥。生成的连接使用 SSL,但未使用密钥。(缺陷 #62743,缺陷 #13115401)

  • 使用基于语句的二进制日志记录,访问但不修改表的存储例程对表的锁太强,不必要地阻止也访问这些表的其他语句。(缺陷 #62540,缺陷 #13036505)

  • 包含视图的数据库的mysqlhotcopy失败。(错误#62472、错误#13006947、错误#12992993)

  • LIMIT向包含 GROUP BYand的查询 添加子句ORDER BY 可能会导致优化器选择不正确的索引来处理查询,并返回比所需更多的行。(错误#54599,错误#11762052)

  • 当标准输入是管道时, mysqlbinlog不接受标准输入上的输入。(缺陷 #49336,缺陷 #11757312)

  • 使用 GROUP BY和 的查询出现性能回归COUNT(DISTINCT)。(缺陷 #49111,缺陷 #11757108)

  • mysqldump可以按照这样的顺序转储视图和它们所依赖的表,从而在重新加载转储文件时发生错误。(错误#44939,错误#11753490)