10bet网址
MySQL 5.6版本说明
相关的文档10bet官方网站 下载发行说明

MySQL 5.6版本说明MySQL 5.6.3的变化(2011-10-03,里程碑6)

MySQL 5.6.3的变化(2011-10-03,里程碑6)

请注意

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

并行事件执行(多线程从机)

  • 复制:MySQL复制现在支持多线程从机在不同数据库之间并行执行从机的复制事件,当满足某些条件时,这可以显著提高应用程序的吞吐量。最优的情况是每个数据库对数据进行分区,并且给定数据库内的更新以与主数据库上相同的相对顺序发生。但是,不需要在不同的数据库之间协调事务。

    slave_parallel_workers服务器系统变量(在此版本中添加)设置并行执行复制事件的从工作线程数。当启用并行执行时,从SQL线程充当从工作线程的协调器,事务在每个数据库的基础上分布。这意味着从服务器上的工作线程可以处理给定数据库上的连续事务,而无需等待其他数据库的更新完成。

    由于不同数据库上的事务在从服务器上发生的顺序可能与在主服务器上发生的顺序不同,因此检查最近执行的事务并不能保证来自主服务器的所有先前事务都已在从服务器上执行。当使用多线程从服务器时,这对日志记录和恢复有影响。有关在从机上使用多线程时如何解释二进制日志记录信息的信息,请参见SHOW SLAVE STATUS语句

优化器的笔记

  • 以下是对查询优化器的改进:

    • 解释语句现在提供的执行计划信息删除插入取代,更新语句。在此之前,解释提供的资料只供选择语句。

    • 类中的子查询,优化器可以更有效地处理子句(即派生表):

      • 中的子查询的实体化子句将被延迟,直到查询执行期间需要它们的内容时才执行,这样可以提高性能。物化的延迟甚至可以使优化器完全避免它。类中的子查询结果连接的查询子句到另一个表:如果优化器首先处理另一个表,并且发现它没有返回任何行,则不需要进一步执行连接,优化器根本不需要实现子查询。

        类中的子查询条款被具体化了解释选择语句。这导致了部分选择执行,即使目的解释是获取查询计划信息,而不是执行查询。这种物化不再发生,所以解释对于此类查询更快。

      • 在查询执行期间,优化器可以向派生表添加索引,以加快从中检索行的速度。

      有关更多信息,请参见优化派生表

    • 现在可以使用批量键访问(BKA)连接算法,它同时使用对连接表的索引访问和连接缓冲区。BKA算法支持内部连接和外部连接操作,包括嵌套的外部连接。BKA的好处包括由于更高效的表扫描而提高的连接性能。

      属性中添加了两个标志optimizer_switch系统变量(block_nested_loop而且batched_key_access).这些标志控制优化器如何使用块嵌套循环和批处理键访问连接算法。在此之前,optimizer_join_cache_level采用系统变量进行联接缓冲区控制;此变量已被删除。

      有关更多信息,请参见块嵌套循环和批处理键访问连接

    • 优化器现在具有跟踪功能。这将有助于优化器开发人员,以及针对优化器提交bug并希望提供更多有助于解决bug的信息的用户。接口由一组optimizer_trace_xxx系统变量和INFORMATION_SCHEMA。OPTIMIZER_TRACE表,但可能会更改。详细信息请参见MySQL内部:跟踪优化器

    (Bug #44802, Bug #11753371, Bug #14295, Bug #11745379, Bug #27975, Bug #11746677)

性能架构说明

  • 性能模式增加了以下内容:

    • 性能模式现在使用阶段和语句。阶段是语句执行过程中的步骤,例如解析语句、打开表或执行filesort操作。阶段对应于显示的线程状态显示PROCESSLIST或者在INFORMATION_SCHEMA。PROCESSLIST表格阶段在状态值改变时开始和结束。

      在事件层次结构中,等待事件嵌套在阶段事件中,阶段事件嵌套在语句事件中。要在等待事件表中反映此嵌套,例如events_waits_current,NESTING_EVENT_ID列现在可以是非表示EVENT_ID嵌套事件的事件的值,以及NESTING_EVENT_TYPE指示嵌套事件类型的新列。

      setup_instruments表现在包含名称以阶段而且声明.与这些仪器相对应的是setup_timer表现在包含的行的名字的值阶段而且声明指示阶段和语句事件计时的单位。它们的默认单位是纳秒

      这些新表存储了阶段和语句事件:

      setup_consumers表现在包含消费者值,其名称与这些表名称相对应。这些消费者可用于筛选阶段和语句事件的集合。

      还有提供聚合阶段和语句信息的汇总表。

      应用程序开发人员可以使用语句插装来详细查看应用程序生成的语句,以及服务器如何执行这些语句。Stage instrumentation可用于关注语句的特定部分。这些信息可能有助于改变应用程序对数据库发出查询的方式,最小化应用程序在服务器上的占用空间,以及提高应用程序性能和可伸缩性。

      有关更多信息,请参见性能架构阶段事件表阶段汇总表性能模式声明事件表,报表汇总表

    • Performance Schema现在提供有关到服务器的连接的统计信息。当客户端连接时,它使用特定的用户名从特定的主机进行连接。性能模式跟踪每个帐户(用户名+主机名)的连接,并分别跟踪每个用户名和每个主机名,使用这些表:

      • 账户:每个客户端帐户的连接统计信息

      • 主机:每个客户端主机名的连接数统计

      • 用户:每个客户端用户名的连接数统计

      还有一些汇总表提供聚合的连接信息。

      为每个应用程序定义一个专用帐户是一种良好的安全实践,这样应用程序就可以只执行其操作期间所需的操作。这还有助于监控,因为应用程序开发人员在针对给定数据库服务器部署多个应用程序时,可以使用连接表中的信息查看每个应用程序的负载统计信息。

      有关更多信息,请参见性能架构连接表

    • 在此之前,setup_objects表只能用于通过包含指定要检测的对象。没有办法显式禁用对象插装,例如为除特定数据库中的表外的所有表配置插装。现在,setup_objects表包含一个启用列,指示是否检测匹配对象。此特性改进了setup_objects表可用性,因为它允许排除模式。

      中的表的默认内容现在包含一个行,该行禁止对表进行插装mysql数据库,这是对以前默认对象插装的更改。选择此更改的前提是,终端用户希望检测应用程序对象,而不是内部服务器表。由于I/O和锁定,更改减少了默认的性能模式开销mysql表没有被检测。

      类中的表禁用插装的行INFORMATION_SCHEMA而且performance_schema数据库。这不是行为上的改变,因为这些表之前没有插装,但是这些行显式地显示了完整的对象插装默认值。

    • 性能模式现在使用套接字。这样就可以监视与服务器之间的网络通信。收集的信息包括网络活动,如套接字实例、套接字操作以及传输和接收的字节数。

      setup_instruments表现在包含名称以等待/ io /套接字.还有一个闲置当套接字等待来自客户端的下一个请求时,用于空闲事件的工具。与后一种仪器相对应的是setup_timer表现在包含具有的名字的价值闲置空闲事件定时的单位。默认单位为微秒

      这些新表包含套接字信息:

      • socket_instances:到MySQL服务器的活动连接的实时快照

      • socket_summary_by_instance类生成的定时器和字节计数统计信息的聚合/ *等待io /插座所有套接字I/O操作的工具,每个套接字实例

      • socket_summary_by_event_name类生成的定时器和字节计数统计信息的聚合/ *等待io /插座用于所有插座I/O操作的仪器,每个插座仪器

      应用程序开发人员,特别是开发基于web的应用程序的开发人员,可以使用套接字表中的信息来评估由应用程序生成的查询直接导致的网络通信量。这在开发用于大规模实现的应用程序时特别有用。

      有关更多信息,请参见socket_instances表,Socket汇总表

    这些变化的结果是打开表线程状态已删除。的打开表State保留,可以代替使用。(见一般线程状态.)

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

安全记录

  • 属性创建的临时表创建临时表语句时,特权模型已更改。

    在此之前,创建临时表属性创建临时表创建临时表声明。但是,临时表上的其他操作,例如插入更新,或选择,对于包含临时表的数据库或同名的非临时表的操作,需要额外的特权。

    为了将临时表和非临时表的特权分开,针对这种情况的一种常见解决方法是创建一个专用于使用临时表的数据库。然后,对于该数据库,用户可以被授予创建临时表特权,以及该用户所做的临时表操作所需的任何其他特权。

    现在,创建临时表Privilege允许用户使用创建临时表和以前一样。但是,在会话创建临时表之后,服务器不再对表执行进一步的权限检查。正在创建的会话可以对表执行任何操作,例如删除表插入更新,或选择

    此更改的一个含义是,即使当前用户没有创建临时表的权限,会话也可以操作其临时表。属性,假设当前用户没有创建临时表特权,但能够执行定义者-context存储过程,该存储过程以具有权限的用户执行创建临时表这样就创建了一个临时表。在过程执行时,会话使用定义用户的特权。过程返回后,有效的权限恢复到当前用户的权限,该用户仍然可以看到临时表并对其执行任何操作。(Bug #27480, Bug #11746602)

  • 语句日志记录已被修改,以下语句的密码不会以纯文本形式出现:

    创建用户…由…授予……由…设置密码…

    对于一般查询日志、慢速查询日志和二进制日志,这些语句中的密码将被重写,以不逐字显示在语句文本中。重写不适用于其他语句。

    方法启动服务器,可以抑制常规查询日志的密码重写——log-raw选择。此选项可能用于诊断目的,以查看服务器接收到的语句的确切文本,但出于安全原因,不建议用于生产使用。

    您将注意到的一个变化是,无法解析的语句(例如,由于语法错误)不再被写入常规查询日志,因为无法知道它们是无密码的。需要记录所有语句(包括有错误的语句)的用例应该使用——log-raw选项,请记住,这也绕过了密码编写。

添加或更改的功能

  • 不兼容的更改:在审计插件接口中event_class成员已从mysql_event_general结构和通知函数的调用序列已更改。最初,第二个参数是指向事件结构的指针。函数现在将此信息作为两个参数接收:事件类号和指向事件的指针。与这些变化相对应,MYSQL_AUDIT_INTERFACE_VERSION增加到0 x0300

    plugin_audit.h头文件和NULL_AUDIT的示例插件插件/ audit_null目录根据这些更改进行了修改。看到编写审计插件

  • 重要的变化;复制:重置的奴隶语句已扩展为所有关键字。除了删除master.inforelay-log.info,以及所有中继日志文件,重置从机全部还清除在执行后在内存中保存的所有连接信息重置的奴隶.(Bug #11809016, Bug #11763210)

  • 性能;InnoDB:关闭时,MySQL可以记录缓存在数据库中的页面InnoDB缓冲池,然后重新启动时重新加载这些相同的页面。这种技术可以帮助在重新启动后快速达到一致的吞吐量,而不会花费很长时间热身时期。这种预加载功能使用了紧凑的保存格式和后台I/O来最小化MySQL服务器的开销。通过配置选项启用基本转储/恢复功能innodb_buffer_pool_dump_at_shutdown而且innodb_buffer_pool_load_at_startup.相关配置选项如innodb_buffer_pool_dump_now而且innodb_buffer_pool_load_now为高级用户提供了额外的灵活性,可以为不同的工作负载配置MySQL服务器。看到保存和恢复缓冲池状态获取详细信息。(Bug #11765816, Bug #58819)

  • 性能;InnoDB:innodb_file_per_table启用时,每个InnoDB表在其自己的表空间文件(.ibd文件)。随着表内数据的增长,.ibd文件扩展,这是一个I/O操作,可能会为繁忙的系统带来瓶颈InnoDB表。为InnoDB存储在系统表空间时,扩展操作发生的频率较低,因为空间被释放删除截断一个表中的操作可以被另一个表重用。

    MySQL 5.6提高了扩展的并发性InnoDB表空间文件(.ibd文件),所以倍数.ibd文件可以同时扩展,而不会阻塞其他线程执行的读或写操作。(Bug #11763692, Bug #56433)

  • 性能;InnoDB:可以提高工作效率InnoDB通过指定配置选项的校验和特性innodb_checksum_algorithm = crc32,它会打开一个更快的校验和算法。此选项替代innodb_checksums选择。使用旧的校验和算法写入的数据(选项值innodb)完全向上兼容;使用新的校验和算法修改的表空间(选项值crc32)不能降级到不支持的MySQL早期版本innodb_checksum_algorithm选择。(Bug #11757757, Bug #49852)

  • 性能;InnoDB:检测的代码死锁InnoDB交易已修改为使用固定大小的工作区域而不是递归算法。结果,产生的检测操作更快。您不需要做任何事情就可以利用这个增强功能。

    在旧的和新的检测机制下,您可能会遇到搜索得太深错误,该错误不是真正的死锁,但要求您以与死锁相同的方式重新尝试事务。

  • 性能;InnoDB:InnoDB线程调度代码经过了增强,可以更好地处理超过16个线程。在可能的地方,使用原子指令。您可以通过设置配置选项来控制该特性innodb_thread_concurrency为非零值,并调整的值innodb_adaptive_max_sleep_delay.看到为InnoDB配置线程并发获取详细信息。

  • 性能;InnoDB:工作继续减少冲洗操作从InnoDB主线程,在page_cleaner线程。的最新更改缓冲池冲洗算法可以提高某些I/ o约束工作负载的性能,特别是在具有多个缓冲池实例的配置中。控件的设置来控制此功能innodb_lru_scan_depth而且innodb_flush_neighbors配置选项。要找到最佳设置,请使用自适应哈希索引Doublewrite缓冲打开和关闭。看到配置冲缓冲池欲知详情。

  • 性能;InnoDB:该特性可选地移动InnoDBundo日志走出系统表空间分成一个或多个单独的表空间.undo日志的I/O模式使这些新的表空间很适合移动到SSD存储,同时将系统表空间保留在硬盘存储上。该特性由配置选项控制innodb_undo_directoryinnodb_undo_tablespaces,innodb_undo_logs(前身为innodb_rollback_segments).用户不能删除为保存而创建的单独表空间InnoDB撤销日志或个人在这些表空间中。

    这样配置的MySQL实例是不向下兼容的;旧版本的MySQL不能访问驻留在自己的表空间中的undo日志。

    详细信息请参见撤消表空间

  • InnoDB:InnoDB现在在创建二级索引时允许并发读取。(错误# 11853126)

    参考:参见Bug #11751388, Bug #11784056, Bug #11815600。

  • InnoDB:InnoDB重做日志文件的最大合并大小从4GB增加到512GB。方法指定较大的值innodb_log_file_size选择。

    没有特殊的升级过程或文件格式来利用这种增强。中已经保留了记录额外大小信息的字节InnoDB系统表空间.但是,如果您开发与InnoDB逻辑序列号(LSN)值时,更改代码以使用有保证的64位变量来存储和比较LSN值,而不是32位变量。(Bug #11765780, Bug #58779)

  • InnoDB:InnoDB现在可以使用排序规则ID大于255的字符集创建表。例如InnoDB表现在可以创建,其中以前359的排序规则ID超出了InnoDB

    Mysql >显示排序像'ucs2_vn_ci'+------------+---------+-----+---------+----------+---------+ | 排序|字符集|默认Id | | |编译Sortlen  | +------------+---------+-----+---------+----------+---------+ | ucs2_vn_ci | ucs2 | 359 | | | 8  | +------------+---------+-----+---------+----------+---------+ 1行集(0.00秒)mysql > CREATE TABLE two_byte_collation (c1 char(1)字符集UCS2核对UCS2_VN_CI) - >引擎= INNODB;查询OK, 0行受影响(0.16秒)

    这个功能打开了InnoDB用于一系列用户定义字符集的表。MySQL预定义字符集以前被限制为255个字符,现在这个限制被取消了。看到选择排序规则ID获取更多信息。

  • 复制:的错误消息中添加了时间戳Last_IO_Error而且Last_SQL_Error的输出的列显示奴隶状态.现在这些时间戳显示在各自的列中,列名为Last_IO_Error_Timestamp而且Last_SQL_Error_Timestamp,分别。(Bug #11765599, Bug #58584)

    参考:参见Bug #43535, Bug #11752361。

  • 复制:开始提交,回滚语句现在与语句一起缓存,而不是在缓存刷新到二进制日志时写入。此更改不会影响DDL语句(被写入语句缓存,然后立即刷新)或Incident事件(与Rotate事件一起,仍然直接写入二进制日志)。

    参考:参见Bug #57275, Bug #11764443。

  • 微软的Windows操作系统:Windows安装程序现在在MySQL菜单中创建一个名为MySQL命令行客户端- Unicode.此项调用mysql客户端,其属性设置为使用Unicode通过控制台与MySQL服务器通信。它通过了——default-character-set = utf8选项mysql并将字体设置为明星控制台Unicode-compatible字体。看到Windows上的Unicode支持

  • 解释扩展时,已对显示的转换后的查询进行了更改显示警告.每一个选择now部分前面有theid的值。解释输出一行。这样就更容易看到这些行与转换后的查询的各个部分之间的对应关系。例如,这个查询:

    解释扩展select 36 from dual

    结果:

    /* select#1 */ select 36 from dual

    这个问题:

    (SELECT b FROM u UNION SELECT c FROM v)

    结果:

    (/* select#2 */ select b from u union /* select#3 */ select c from v);

    (错误# 13035597)

  • 取消了几个内存分配调用,从而提高了性能。(错误# 12552221)

  • CMakeLinux上的配置支持现在提供一个布尔值ENABLE_GCOV选项,用于控制是否包含对gcov.(错误# 12549572)

  • 在此之前,二进制日志和中继日志的性能模式工具使用了以下工具:

    等待/ io /文件/ sql / binlog等待io /文件/ sql / binlog_index等待/同步/互斥锁/ sql / MYSQL_BIN_LOG:: LOCK_index等待/同步/电导率/ sql / MYSQL_BIN_LOG:: update_cond

    现在,用于中继日志的仪器使用这些仪器,这使得区分二进制日志和中继日志事件成为可能:

    等待/ io /文件/ sql / relaylog等待io /文件/ sql / relaylog_index等待/同步/互斥锁/ sql / MYSQL_RELAY_LOG:: LOCK_index等待/同步/电导率/ sql / MYSQL_RELAY_LOG:: update_cond

    (Bug #59658, Bug #11766528)

  • 一个新的服务器选项,——plugin-load-add,补充了——plugin-load选择。——plugin-load-add将一个或多个插件添加到启动时要加载的插件集。参数格式与for相同——plugin-load——plugin-load-add可以用来避免指定一个大的插件集作为单一的长而笨重——plugin-load论点。

    ——plugin-load-add能在没有的情况下给予吗——plugin-load,但任何实例——plugin-load-add出现在前面——plugin-load.没有影响是因为——plugin-load重置要加载的插件集。

    的输出Mysqld——verbose——帮助在那有一个价值plugin-load不再印刷。(Bug #59026, Bug #11766001)

  • 当使用——auto-generate-sql选项,mysqlslap属性指定的模式——建立图表选项,该选项可能是用户未预料到的。mysqlslap现在有一个——非放选项,用于防止在测试运行期间创建的任何模式被删除。(Bug #58090, Bug #11765157)

  • 服务器现在通过Ssl_server_not_before而且Ssl_server_not_after状态变量。这两个变量都有ANSI时间格式的值(例如,Sep 12 16:22:06 2013 GMT),或者对于非ssl连接为空。(Bug #57648, Bug #11764778)

  • 在此之前,临时使用创建临时表使用默认存储引擎,除非定义包含显式的引擎选择。的值为默认引擎default_storage_engine系统变量)。从MySQL 5.5.5开始,默认存储引擎就从非事务性的MyISAM引擎到事务InnoDB引擎,临时表引起了事务处理的开销。

    允许使用默认存储引擎临时表的设置独立于默认引擎的永久表,服务器现在支持default_tmp_storage_engine系统变量。例如,创建临时表默认为非事务性表,使用——default_tmp_storage_engine = MyISAM.的存储引擎临时表仍然可以在单独的基础上指定引擎表定义中的选项。(Bug #49232, Bug #11757216)

  • 以前,对于链接到OpenSSL的MySQL二进制文件,如果SSL密钥文件提供给MySQL服务器或MySQL客户端程序(使用——ssl密钥选项)被密码短语保护,程序将提示用户输入密码短语。现在,与yaSSL链接的MySQL二进制文件也是如此。(Bug #44559, Bug #11753167)

  • mysql客户端程序现在有一个——二进制模式选项,在处理时提供帮助mysqlbinlog输出可能包含值。默认情况下,mysql翻译\ r \ n在语句字符串中\ n和解释\ 0作为语句结束符。——二进制模式禁用两个特性。它还会禁用所有mysql命令除外字符集而且分隔符在非交互模式下(用于管道输入mysql或使用命令)。(Bug #33048, Bug #11747577)

  • 链接到OpenSSL(而不是yaSSL)的MySQL二进制文件现在支持SSL连接的证书撤销列表:

    • MySQL服务器支持ssl_crl而且ssl_crlpath系统变量,指示包含此类文件的撤销列表文件或目录。

    • MySQL客户端程序支持SSL识别——ssl-crl而且——ssl-crlpath用于指定包含此类文件的撤销列表文件或目录的选项。

    • 将master更改为语句MASTER_SSL_CRL而且MASTER_SSL_CRLPATH选项,用于指定从服务器连接到主服务器时要使用的撤销列表信息。的mysql.slave_master_infoFile还有两行用来存储这些选项的值。的显示奴隶状态语句还有两列用于显示这些选项的值。

      mysql_options ()C API函数MYSQL_OPT_SSL_CRL而且MYSQL_OPT_SSL_CRLPATH选项,用于指定客户端连接到主服务器时使用的撤销列表信息。此外,mysql_options ()现在也支持MYSQL_OPT_SSL_CAMYSQL_OPT_SSL_CAPATHMYSQL_OPT_SSL_CERTMYSQL_OPT_SSL_CIPHER,MYSQL_OPT_SSL_KEY选项,用于指定其他SSL参数。

    (Bug #31224, Bug #11747191)

  • mysqld现在有一个——ignore-db-dir选项,该选项告诉服务器为了显示数据库语句或INFORMATION_SCHEMA表。例如,如果MySQL配置将数据目录定位在Unix上文件系统的根目录,系统可能会创建一个发现了+服务器应该忽略的目录。使用以下命令启动服务器——ignore-db-dir = +发现丢失导致该名称未被列为数据库。

    若要指定多个名称,请多次使用此选项,每个名称一次。用空值指定选项(即as——ignore-db-dir =)重置目录列表为空列表。

    在服务器启动时给出的此选项的实例用于设置ignore_db_dirs系统变量。

    命名的目录之外——ignore-db-dir,名称以句点开头的目录将被忽略。(Bug #22615, Bug #11746029)

  • 客户端程序现在显示更多关于SSL错误的信息,以帮助诊断和调试连接问题。(Bug #21287, Bug #11745920)

  • 有些插件的操作是这样的,它们应该在服务器启动时加载,而不是在运行时加载或卸载。插件API现在支持以这种方式标记插件。的st_mysql_plugin结构现在有一个旗帜成员,它可以设置为适用标志的或。的PLUGIN_OPT_NO_INSTALL标志表示该插件不能在运行时使用安装插件声明。方法加载的插件必须在服务器启动时加载——plugin-load选择。的PLUGIN_OPT_NO_UNINSTALL标志表示该插件不能在运行时使用卸载插件声明。

    新成员改变了接口,所以插件的接口版本,MYSQL_PLUGIN_INTERFACE_VERSION,已从0 x01020 x0103.需要访问新成员的插件必须重新编译以使用version0 x0103或更高版本。

  • 一个新的实用工具,mysql_plugin,允许MySQL管理员管理MySQL服务器加载哪些插件。属性提供了一种替代方法——plugin-load选项,或在服务器启动时使用安装插件而且卸载插件语句。看到mysql_plugin -配置MySQL服务器插件

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

  • 无证的——所有选择perror已被删除。同时,perror不再显示BDB错误码的消息。

  • MySQL现在支持操作IPv6网络地址和验证IPv4和IPv6地址:

    IS_IPV4 ()更严格INET_ATON ()因此,对于需要对无效值执行强检查的应用程序来说,它可能是有用的。另外,使用INET6_ATON ()将IPv4地址转换为内部形式,并检查是否存在结果(表示无效的地址)。INET6_ATON ()强度和IS_IPV4 ()检查IPv4地址。

  • max_allowed_packet控件发送的参数值的最大大小现在由系统变量控制mysql_stmt_send_long_data ()C语言API函数。

  • NULL_AUDIT的示例插件插件/ audit_null目录中已更新事件的实例MYSQL_AUDIT_CONNECTION_CLASS事件类。看到编写审计插件

错误修复

  • 安全修复:修复了一个安全漏洞。(错误# 59533)

  • 不兼容的更改:对于套接字I/O,当使用套接字超时时,针对服务器使用超时警报的情况进行的优化可能会导致放缓。

    此问题的修复将导致以下更改:

    • 以前,超时应用于整个包级别的发送或接收操作。现在,超时在更细的级别上应用于单个I/O操作,例如发送给定数据包的10个字节。

    • 大于的包的处理max_allowed_packet已经改变了。以前,如果应用程序发送的数据包大于允许的最大大小,或者如果服务器未能分配足够大的缓冲区来容纳数据包,服务器将一直读取数据包,直到结束,然后跳过它并返回一个ER_NET_PACKET_TOO_LARGE错误。现在,如果服务器无法处理如此大的数据包,它将断开会话。

    • 的默认值MYSQL_OPT_CONNECT_TIMEOUT选项mysql_options ()不再是20秒。现在默认是没有超时(无限),与其他平台相同。

    • 在POSIX系统上构建和运行MySQL现在需要支持poll ()而且O_NONBLOCK.这些应该可以在任何现代POSIX系统上使用。

    (Bug #54790, Bug #36225, Bug #11762221, Bug #51244, Bug #11758972)

  • 不兼容的更改:mysql_affected_rows ()C API函数返回3(而不是2)插入……关于重复密钥更新语句中存在重复的键值。

    现在,如果将行插入为新行,则每行受影响的行值为1,如果更新现有行,则为2,如果将现有行设置为当前值,则为0。如果您指定CLIENT_FOUND_ROWS旗帜mysql_real_connect ()当连接到mysqld,如果将现有行设置为当前值,则受影响的行值为1(而不是0)。(Bug #46675, Bug #11754979)

  • 不兼容的更改:修改了与日期相关的断言的处理。此更改的结果是,当传递参数时,几个函数变得更加严格日期()函数值作为参数,并拒绝日期部分为零的不完整日期。受影响的功能有:CONVERT_TZ ()DATE_ADD ()DATE_SUB ()DAYOFYEAR ()LAST_DAY ()TIMESTAMPDIFF ()TO_DAYS ()TO_SECONDS ()周()工作日()WEEKOFYEAR ()YEARWEEK ()

    后来确定更严格的处理是不必要的LAST_DAY (),它在MySQL 5.6.5中被恢复为允许零日部分。

    参考:参见Bug #13458237。

  • 性能;InnoDB:上的操作的性能得到了改进VARCHAR (N)InnoDB表,N声明为大值,但表中的实际字符串值很短。(错误# 12835650)

  • 性能;InnoDB:这个机制InnoDB用来检测MySQL服务器是否空闲被做得更准确,以避免由于冲洗通常在没有其他活动发生时发生的操作。属性的挂起读请求时,该机制认为服务器不是空闲的InnoDB缓冲池。(Bug #11766123, Bug #59163)

  • InnoDB;复制:试图更新先前设置为的列,是指InnoDB表中没有主键导致从表上的复制失败找不到记录表格

    请注意

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

    (Bug #11766865, Bug #60091)

    参考:参见Bug #16566658。

  • InnoDB:DATA_LENGTH中的列。INFORMATION_SCHEMA。表表现在正确报告表空间的磁盘大小InnoDB压缩表。(错误# 12770537)

  • InnoDB:一个失败的创建索引操作InnoDB表可能导致分配了一些内存但没有释放。属性创建的表可能会受到此内存泄漏的影响ROW_FORMAT =动态ROW_FORMAT =压缩设置。(错误# 12699505)

  • InnoDB:通过配置设置innodb_file_per_table = 1而且innodb_file_format =梭鱼例如,插入大于页面大小一半的列值,并将该列包含在二级索引中,可能会在更新该列值时导致崩溃。(错误# 12637786)

  • InnoDB:的基础表InnoDB持久统计特性被重命名并移动到mysql数据库。innodb.table_stats成为mysql.innodb_table_stats,innodb.index_stats成为mysql.innodb_index_stats.(错误# 12604399)

  • InnoDB:服务器可能会停止InnoDB将15分钟或更长时间的非常重的I/O负载解释为服务器挂起的指示。此更改修复了度量多长时间的逻辑InnoDB线程正在等待,这在以前可能会产生误报。(Bug #11877216, Bug #11755413, Bug #47183)

  • InnoDB:通过设置lower_case_table_names = 2,插入到InnoDB外键约束覆盖的表可能在服务器重新启动后失效。(Bug #11831040, Bug #60196, Bug #60909)

  • InnoDB:如果MySQL服务器在创建后立即崩溃InnoDB表,重新启动后试图访问表可能会导致另一次崩溃。如果服务器在之后停止,则可能发生此问题InnoDB为表创建主索引,但是在索引定义记录到MySQL元数据之前。(Bug #11766824, Bug #60042)

  • InnoDB:如果服务器在XA事务准备就绪但尚未提交时崩溃,则事务可能在重新启动后仍保留在系统中,并导致随后的关机挂起。(Bug #11766513, Bug #59641)

  • InnoDB:MySQL服务器可能挂起创建表优化表,或ALTER TABLE类的表复制或其他DDL操作InnoDB表,如果这些操作是由多个会话同时执行的。错误报告如下:

    InnoDB: Error: semaphore wait已经持续了600秒

    (Bug #11760042, Bug #52409)

  • InnoDB:通过设置lower_case_table_names = 2,插入到InnoDB外键约束覆盖的表可能在服务器重新启动后失效。这与Bug #11831040 / Bug #60196 / Bug #60909中的外键错误类似,但根源不同,发生在OS X上。

  • 分区:内部get_partition_set ()功能上没有考虑到某个关键规格的可能在某些情况下。(错误# 12380149)

  • 分区:在执行按行排序的检索索引合并时,分区处理程序使用分配给表的内存,而不是分配给查询的内存,导致直到关闭表才释放表对象内存。(Bug #11766249, Bug #59316)

  • 分区:试图使用修改表…交换分区与没有分区的表的(不存在的)分区交换视图会导致服务器崩溃。(Bug #11766232, Bug #60039)

  • 分区:分区表的自动递增列即使没有被写入也会被检查。在调试版本中,这可能导致服务器崩溃。(Bug #11765667, Bug #58655)

  • 分区:UNIX_TIMESTAMP ()为了划分剪枝的目的,函数没有被视为单调函数。(Bug #11746819, Bug #28928)

  • 分区:的性能不佳的先前修复的问题插入重复的密钥更新有多个分区的表上的语句导致从特定索引读取一行的处理程序函数无法存储最后使用的分区的ID。这导致一些语句失败找不到记录错误。(Bug #59297, Bug #11766232)

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

  • 复制:线程清理中的错误可能导致复制主服务器崩溃。(错误# 12578441)

  • 复制:当使用基于行的复制和属性提升或降级时(请参阅复制具有不同数据类型的列),内部分配用于转换的内存后来柱子没有被释放。(错误# 12558519)

  • 复制:在重新创建丢失的主信息存储库时,可能会发生内存泄漏,因为在重新创建存储库时,重新创建了用于引用存储库的新I/O缓存,但之前的缓存从未删除。(错误# 12557307)

  • 复制:当用户线程和SQL线程都试图在安全设置其值之前读取相同的内存时,可能会在两者之间发生竞争条件。这个问题现在已经更正。

    此外,与创建和追加日志事件相关的内部函数在存储数据时使用函数本地的内存,当函数返回时释放内存。的输出作为此问题修复的一部分显示奴隶状态已被修改,使其不再在随附的状态消息中引用文件或文件名,而是包含其中一条消息在重放LOAD DATA INFILE之前制作临时文件(追加)在重放LOAD DATA INFILE之前制作临时文件(创建).(错误# 12416611)

  • 复制:的名称Ssl_verify_server_cert中的列。mysql.slave_master_infoTable被拼错为Ssl_verify_servert_cert.(Bug #12407446, Bug #60988)

  • 复制:mysqlbinlog使用——base64-output = decode-row而且——起始位置=pos, (pos是二进制日志中超过格式描述日志事件的一个点),会生成如下所示类型的虚假错误:

    malformed binlog:不包含任何Format_description_log_event…

    但是,由于不打印格式描述日志事件并没有什么不安全的,因此已经为这种情况删除了错误。(错误# 12354268)

  • 复制:一个失败的创建用户语句被错误地写入二进制日志。(Bug #11827392, Bug #60082)

  • 复制:类所使用的存储引擎不再可以更改mysql.slave_master_info而且mysql.slave_relay_log_info表。这意味着,要使复制具有崩溃安全性,必须确保在开始复制之前这两个表都使用事务性存储引擎。

    有关更多信息,请参见中继日志和复制元数据存储库,记录副本状态到表的选项.(Bug #11765887, Bug #58897)

  • 复制:即使事务没有更新任何非事务性表,也会将事务写入二进制日志。(Bug #11763471, Bug #56184)

    参考:参见Bug #11763126, Bug #55789。

  • 复制:mysqlbinlog使用——生选项在MySQL服务器5.0.3及更早版本的二进制日志中无法正常工作。(Bug #11763265, Bug #55956)

  • 复制:在从服务器上重试事务可能会向非事务表插入额外的数据。(Bug #11763126, Bug #55789)

    参考:参见Bug #11763471, Bug #56184。

  • 复制:几个复制错误消息的文本中出现了印刷错误。(这个词位置被拼错为postion(Bug #11762616, Bug #55229)

  • 复制:从SQL线程中的临时死锁可能导致不必要的试图获得锁时发现死锁;尝试重新启动事务要在slave上登录的错误消息。

    在这种情况下,只记录一个警告,除非slave_transaction_retries对于给定事务,此类警告的数量已超过。(Bug #11748510, Bug #36524)

  • 复制:当从机请求主机上不存在的二进制日志文件时,从机继续请求该文件。这导致slave的错误日志被低级错误淹没EE_FILENOTFOUND来自主机的错误(错误代码29)。(Bug #11745939, Bug #21437)

  • 复制:如果一个加载数据使用基于语句的复制特性的语句复制a子句中,名称-值对使用方法(项目::print ()),主要用于生成语句的输出,例如解释扩展,并且不能依赖它来返回有效的SQL。在某些情况下,这可能会导致从服务器崩溃。

    为了解决这个问题,服务器现在以用户提供的原始形式命名每个值,并使用该形式进行创建加载数据用于基于语句复制的语句。(Bug #60580, Bug #11902767)

    参考资料:参见Bug #34283, Bug #11752526, Bug #43746。

  • 复制:错误1590 (ER_SLAVE_INCIDENT)导致奴隶停止,甚至当它开始——slave-skip-errors = 1590.(Bug #59889, Bug #11768580, Bug #11799671)

  • 复制:使用——服务器id选项mysqlbinlog可以导致格式描述日志事件从二进制日志中过滤,留下mysqlbinlog无法读取日志的剩余部分。现在这样的事件总是被读取,而不考虑这个选项的值。

    为了解决这个问题,mysqlbinlog现在也读取旋转日志事件而不考虑的值——服务器id.(Bug #59530, Bug #11766427)

  • 复制:一个失败的删除数据库语句会破坏基于语句的复制。(Bug #58381, Bug #11765416)

  • 复制:处理损坏的表映射事件可能导致服务器崩溃。如果事件将不同的表映射到相同的标识符,这种情况尤其可能发生,例如Bug #56226。

    现在,在应用表映射事件之前,服务器将检查表是否已经使用不同的设置进行了映射,如果是,将引发一个错误并停止从SQL线程。如果它已经映射了相同的设置,或者如果该表被过滤规则设置为忽略,则行为没有变化:事件将被跳过,id也不会被检查。(Bug #44360, Bug #11753004)

    参考:参见Bug #56226, Bug #11763509。

  • OS X:编译在OS X 10.7 (Lion)上失败,并出现警告:函数'pthread_init'的隐式声明(错误# 12779790)

  • 微软的Windows操作系统:添加对Windows身份验证的支持libmysqlclient引入了对系统Secur32库的链接依赖。Microsoft Visual c++链接信息现在自动拉入这个库。(错误# 12612143)

  • 微软的Windows操作系统:在Windows操作系统中,如果没有可用的DNS服务器,服务器拒绝客户端连接。(错误# 12325375)

  • 微软的Windows操作系统:在Windows上,authentication_string专栏最近增加了mysql.user表导致配置向导失败。(Bug #59038, Bug #11766011)

  • 性能模式导致了瓶颈LOCK_open.(错误# 12993572)

  • mysqld_safe忽略任何值plugin_dir中指定的my.cnf文件。(错误# 12925024)

  • 元数据锁定子系统增加了太多的开销INFORMATION_SCHEMA仅通过打开处理的查询.frm.TRG文件和必须扫描许多表。例如,从information_schema中选择count(*)。触发器是影响。(错误# 12828477)

  • 的结果任何带有嵌套连接的子查询可能缺少行。(错误# 12795555)

  • 禁用剖析或未编译,set_thd_proc_info ()不必要的文件名长度检查。(错误# 12756017)

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

  • 在启用维护者模式的情况下编译服务器失败海湾合作委员会4.6或更高。(错误# 12727287)

  • 对于准备好的报表,使用好吧如果准备由于被杀死而失败,可以发送给客户端。(错误# 12661349)

  • 修正了一些Valgrind警告:

    (Bug #12634989, Bug #59851, Bug #11766684)

  • 对于调试版本,如果类型为,则字段类型检查将引发断言MYSQL_TYPE_NULL.(错误# 12620084)

  • 如果启用了索引条件下推,则可能由于无效的范围结束值而导致崩溃。(错误# 12601961)

  • 空字符串的选项解析代码泄漏内存。(错误# 12589928)

  • 服务器可能无法释放分配的内存时插入延迟在启用二进制日志记录时使用。(错误# 12538873)

  • 一个DBUG_ASSERTBug #11792200在提出断言时过于激进。(错误# 12537160)

    参考:参见Bug #11792200。

  • 在某些情况下,内存分配给Query_tables_list: sroutines ()没有得到适当的释放。(错误# 12429877)

  • 在修复了Bug #11889186之后,MAKEDATE ()年份部分大于9999的参数会引发断言。(错误# 12403504)

    此问题是对Bug #11889186的回归。

  • 由于缺失,可能会引发断言值检入Item_func_round: fix_length_and_dec ().(错误# 12392636)

  • 分配给新的。var_name在触发器中,var_name有一个文本类型,没有正确处理并产生不正确的结果。(错误# 12362125)

  • 如果索引条件下推代码下推包含子查询的索引条件,则可能引发断言。(错误# 12355958)

  • XA提交如果发现必须回滚当前XA事务,则可能无法清理错误状态。因此,下一个XA事务在检查是否正确清除前一个事务时可以引发断言。(错误# 12352846)

  • 如果将二进制日志用作事务协调器日志,则可以在两阶段提交期间引发断言。(错误# 12346411)

  • InnoDB可以将临时索引信息添加到INFORMATION_SCHEMA,这可能会引发一个断言。(错误# 12340873)

  • mysql_list_fields ()为视图的字符列返回了不正确的字符集信息。(错误# 12337762)

  • 过于严格的断言可能导致服务器崩溃。(错误# 12321461)

  • mysql_upgrade没有正确升级authentication_string的列mysql.user表格(错误# 11936829)

  • 优化器有时会选择前向索引扫描,然后执行文件排序来反转顺序,而不是按反向顺序扫描索引。(错误# 11882131)

  • 类的多表更新会产生不适当的错误消息InnoDB具有集群主键的表将通过多个别名更新表,并执行更新,可能物理地移动至少其中一个别名中的行。现在错误信息是:主键/分区键更新是不允许的,因为表被同时更新为'tbl_name1和"tbl_name2(错误# 11882110)

    参考:参见Bug #11764529。

  • 启用索引条件下推后,使用的查询STRAIGHT_JOIN数据包括值可能返回不正确的结果。(错误# 11873324)

  • InnoDB调用一些zlib没有正确初始化的函数。(错误# 11849231)

  • 大数字的除法可能导致堆栈损坏。(错误# 11792200)

  • 修正了产生InnoDB错误日志中的消息,解锁行在记录上找不到3模式锁.子查询和类的组合可能会出现这种情况更新条款读未提交隔离级别。该修复还通过包含引起此类消息的原始SQL语句来改进此类消息的可调试性。(Bug #11766322, Bug #59410)

  • 启用Valgrind后,InnoDB信号量等待超时过低,可能会过期。(错误# 11765460)

  • 检查表而且修理表未能找到问题合并底层表缺失或存储引擎错误的表。只报告了第一个底层表的问题。(错误# 11754210)

  • (5分区2)而且(5.0 div 2)产生不同的结果(2和3),因为后一个表达式的结果在转换为整数之前没有被截断。这与MySQL 5.0和5.1中的行为不同。现在两个表达式都得到2。(Bug #61676, Bug #12711164)

  • 如果禁用分区支持,则服务器编译失败。(Bug #61625, Bug #12694147)

  • Alter table {modify | change}…第一个如果表的旧版本和新版本在列数据类型方面具有完全相同的结构,那么除了重命名列之外什么都不做。结果,列名到列数据的映射是错误的。同样的事情发生在删除表列添加一列语句旨在生成与旧版本结构完全相同的表的新版本。(Bug #61493, Bug #12652385)

  • 元数据锁定的错误处理用读锁刷新表对于需要预锁的语句会导致两个问题:

    • 作为事务的一部分,执行任何需要预锁的数据更改语句(也就是说,涉及存储的函数或触发器)都会在一定程度上降低事务中所有后续语句的速度。定期涉及这些语句的事务的性能随着时间的推移逐渐降低。

    • 作为事务的一部分,任何需要预锁的数据更改语句的执行都会阻止并发用读锁刷新表从事务进行到事务结束,而不是特定语句的结束。

    (Bug #61401, Bug #12641342)

  • MySQL 5.5.11中引入的一个问题导致非常旧的(MySQL 4.0)客户端无法连接到服务器。(Bug #61222, Bug #12563279)

  • 的小数部分每秒查询次数值可能会在MySQL状态输出中不正确地显示(例如,在的输出中mysqladmin状态或者是mysql状态命令)。(Bug #61205, Bug #12565712)

  • mysql-log-rotate脚本被更新,因为它引用了已弃用的MySQL选项。(Bug #61038, Bug #12546842)

  • 使用如果不存在则创建事件对于已存在且已启用的事件,将导致该事件的多个实例运行。(Bug #61005, Bug #12546938)

  • 如果语句以不匹配的引号结束,服务器接受该语句,并将初始引号后面的内容解释为文本字符串。(Bug #60993, Bug #12546960)

  • 加载数据错误地解析了在文件系统中上升超过三层的相对数据文件路径名,导致无法找到该文件。(Bug #60987, Bug #12403662)

  • 固定移位计数大于类型宽度编译警告。(Bug #60908, Bug #12402772)

    参考:参见Bug #12561303。

  • 的表I/Otable_io_waits_summary_by_index_usage性能模式表被统计为不使用索引更新而且删除语句,即使在使用索引时也是如此。(Bug #60905, Bug #12370950)

  • 中删除了内部客户端宏引用client_plugin.h头文件。这个引用使得文件不可用。(Bug #60746, Bug #12325444)

  • 比较DATETIME存储的程序变量和现在()导致非法混合排序错误character_set_connection设置为use utf8.(Bug #60625, Bug #11926811)

  • 从包含定义的视图中进行选择子句失败,发生错误:

    1356:查看…'references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

    (Bug #60295, Bug #11829681)

  • 创建表语法允许指定存储{默认内存磁盘| |}选择。但是,此值未写入.frm文件,以便后续创建表…就像因为该表不包括这一选项。

    同时,ALTER TABLE错误地销毁了表空间。(Bug #60111, Bug #11766883, Bug #34047, Bug #11747789)

  • mysql_load_plugin ()C API函数没有清除之前的错误。(Bug #60075, Bug #11766854)

  • 对于某些存储过程的重复调用,服务器消耗的内存直到连接终止才释放。(Bug #60025, Bug #11848763)

  • 服务器允许max_allowed_packet被设定为低于net_buffer_length,这说不通,因为max_allowed_packet上限开启了吗net_buffer_length值。现在出现一个警告,值保持不变。(Bug #59959, Bug #11766769)

  • 服务器没有检查XA语句的某些无效无序序列,这些序列引发了断言。(Bug #59936, Bug #11766752, Bug #12348348)

  • 索引条件下推代码访问未初始化的变量。(Bug #59843, Bug #11766678)

  • 对于未知用户,本地密码插件错误地报告没有指定密码,即使它已经指定了。(Bug #59792, Bug #11766641)

  • 选择不同的中的确定性存储函数在哪里子句可能产生不正确的结果。(Bug #59736, Bug #11766594)

  • 设置optimizer_join_cache_level到3或更大的值会引发某些查询的断言。(Bug #59651, Bug #11766522)

  • 以前,保存字节计数的性能模式表列为长整型数字无符号.这些被改成了长整型数字(签署)。这样可以更容易地执行计算列之间差异的计算。(Bug #59631, Bug #11766504)

  • 的缺少变量初始化Item_func_set_user_var对象可以引发断言。(Bug #59527, Bug #11766424)

  • 对于某些查询,优化器对同一个索引执行了多次范围分析。(Bug #59415, Bug #11766327)

  • 随着从GNU autotools到CMake用于配置MySQL的USE_SYMDIR预处理器符号被省略。这会导致符号链接失败(描述在使用符号链接).(Bug #59408, Bug #11766320)

  • 一个不正确的max_length一年值可以用于临时结果表联盟,导致错误的结果。(Bug #59343, Bug #11766270)

  • Item_func_in: fix_length_and_dec (),未初始化值的Valgrind警告被更正。(Bug #59270, Bug #11766212)

  • 属性的无效路径名参数——defaults-extra-fileMySQL程序的选项导致程序崩溃。(Bug #59234, Bug #11766184)

  • Item_func_month: val_str (), Valgrind的一个为时已晚的警告修正了价值检查。(Bug #59166, Bug #11766126)

  • 项目::get_date,一个Valgrind的失踪警告修正了价值检查。(Bug #59164, Bug #11766124)

  • extract_date_time (),一个Valgrind警告丢失的字符串结束检查被纠正。(Bug #59151, Bug #11766112)

  • 属性中列出了一些表,但性能模式没有对它们进行检测setup_objects表格(Bug #59150, Bug #11766111)

  • 在字符串上下文中,MIN ()而且MAX ()函数没有考虑到a的无符号长整型数字无符号论点。(Bug #59132, Bug #11766094)

  • Item_func: val_decimal,一个Valgrind的失踪警告修正了价值检查。(Bug #59125, Bug #11766087)

  • 圆的()计算时,未初始化内存的Valgrind警告被更正。(Bug #58937, Bug #11765923)

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

  • 优化器在OR-ing两个条件时创建的范围可能不正确,导致不正确的查询结果。(Bug #58834, Bug #11765831)

  • 修正了因将索引值与未初始化字段进行比较而引起的Valgrind警告。(Bug #58705, Bug #11765713)

  • 作为优化的副作用条件和真正的条件还是假的, MySQL对于某些子查询忘记了条件所使用的列需要读取,这在调试版本中引发了断言。(Bug #58690, Bug #11765699)

  • 创建触发器而且下降触发可以更改存储的例程的预锁定列表,但是例程缓存没有检测到这样的更改,导致例程执行时带有不准确的锁定列表。(Bug #58674, Bug #11765684)

  • Item_func_str_to_date: val_str,对未初始化变量的Valgrind警告被更正。(Bug #58154, Bug #11765216)

  • 的代码过程分析()有一个缺失DBUG_RETURN语句,这可能会导致调试版本中的服务器崩溃。(Bug #58140, Bug #11765202)

  • 加载数据错误可能会泄漏I/O缓存内存。(Bug #58072, Bug #11765141)

  • 加载数据,多字节字符序列可以被推到一个太小而无法容纳它们的堆栈上。(Bug #58069, Bug #11765139)

  • 嵌入式服务器崩溃时Argc = 0.(Bug #57931, Bug #12561297)

  • 可以在Item_func_int_val: fix_num_length_and_dec ()由于几何函数溢出。(Bug #57900, Bug #11764994)

  • 如果语句试图在激活元数据锁时升级元数据锁,则会引发断言刷新表tbl_list带读锁声明。现在,如果语句试图在这种情况下升级元数据锁,服务器将返回ER_TABLE_NOT_LOCKED_FOR_WRITE发送给客户端的错误。(Bug #57649, Bug #11764779)

  • 当不需要有序访问时,优化器有时会从存储引擎请求有序访问。(Bug #57601, Bug #11764737)

  • 嵌入客户端在发出错误消息时中止,而不是发出错误消息三通命令(\ Tfile_name),而包含该文件的目录不存在。这是因为调用了错误的错误处理程序。(Bug #57491, Bug #11764633)

  • 改变事件可以更改事件状态。(Bug #57156, Bug #11764334)

  • 对于与a的外部连接不是在子查询中的在哪里子句的空左操作数不是在返回的处理方式与字面不同操作数。(Bug #56881, Bug #11764086)

  • 线程在等待表元数据国家不可见performance_schema。线程显示配置文件.(Bug #56475, Bug #11763728)

  • 使用准备好的语句,服务器可以尝试在关闭表之后发送结果集元数据。(Bug #56115, Bug #11763413)

  • 与一个会话的优化器结构相关联的表对象可以在传递给另一个会话后关闭,从而提前结束第二个会话的表或索引扫描。(Bug #56080, Bug #11763382)

  • 在某些情况下,显示警告当前一个语句失败时返回一个空结果。(Bug #55847, Bug #11763166)

  • 已处理的条件(错误或警告)可以在语句的末尾显示为未处理。(Bug #55843, Bug #11763162)

    参考:此问题是Bug #23032的回归。

  • 在调试版本中,Field_new_decimal: store_value ()缓冲区溢出。(Bug #55436, Bug #11762799)

  • 对于一个InnoDB表中,删除和添加单个索引ALTER TABLE语句可能失败。(Bug #54927, Bug #11762345)

  • 对于使用SSL连接的客户端,使用Ssl_cipher_list状态变量为空,没有显示可能的密码类型。(Bug #52596, Bug #11760210)

  • mysql客户端有时不能正确地关闭由用户终止的会话控制+ C.(Bug #52515, Bug #11760134)

  • 创建表…就像对于一个MyISAM的表定义数据目录索引目录表选项失败,而不是创建一个表,其中省略了这些选项的文档。(Bug #52354, Bug #11759990)

  • 在某些角落的空间操作可能会导致服务器崩溃:多边形与零点线;带有动人线条的多边形。(Bug #51979, Bug #11759650, Bug #47429, Bug #11755628)

  • 试图批准执行改变日常不存在的存储过程的特权返回成功而不是错误。(Bug #51401, Bug #11759114)

  • lower_case_table_names = 2,由数据库名称限定的对象的解析可能失败。(Bug #50924, Bug #11758687)

  • 创建表没有一个引擎选项在解析而不是执行时确定默认引擎。如果语句是在存储的程序中执行的,并且默认引擎在此期间已被更改,则会导致错误的结果。(Bug #50614, Bug #11758414)

  • 在Linux上,mysql客户端构建使用捆绑libedit没有阅读~ / .editrc.(Bug #49967, Bug #11757855)

  • 对于一些语句,比如描述显示,包含太多列的视图会产生错误。(Bug #49437, Bug #11757397)

  • 优化器有时处理不正确子句,用于不具有命令条款。(Bug #48916, Bug #11756928)

  • 过程分析()可能会泄漏内存属性一起使用时可能返回不正确的结果限制条款。(Bug #48137, Bug #11756242)

  • 在使用数据库名称限定的名称加载存储例程和删除该数据库之间的竞争条件会导致虚假的错误消息:表mysql。Proc丢失、损坏或包含坏数据(Bug #47870, Bug #11756013)

  • 当用于升级表时,mysqlcheck(和mysql_upgrade,它调用mysqlcheck)没有升级一些需要修复表的表。特别是升级失败InnoDB需要修复的表,使它们处于未升级状态。这是因为:

    • Mysqlcheck——check-upgrade——自动修复检查与当前版本MySQL不兼容的表。它通过发出检查表…为升级陈述和检查结果。

    • 对于任何被发现不兼容的表,mysqlcheck问题一个修理表声明。但这对于存储引擎,如InnoDB不支持修复操作。因此,表格保持不变。

    为了解决这个问题,对检查表…为升级而且mysqlcheck.因为mysql_upgrade调用mysqlcheck,这些变化也解决了问题mysql_upgrade

    • 检查表…为升级如果表需要修复,但其存储引擎不支持,则返回不同的错误修理表

      前一:

      需要升级表。请做“维修表”tbl_name’”或转储/重载来修复它!

      现在:

      需要重建表。请执行“ALTER TABLE”tbl_name' FORCE '或转储/重载来修复它!
    • mysqlcheck识别新的错误并发出修改表…力声明。的选择ALTER TABLE被认出却什么也没做;现在它被实现并充当重新构建表的Alter操作。

    (Bug #47205, Bug #11755431)

  • 在某些平台上,第zzz行yyy列的值:xxx不正确产生的错误加载数据的值可能不正确打鼾声.(Bug #46895, Bug #11755168)

  • 使用RPM包重新创建的升级测验数据库,当DBA删除它时,它是不希望的。(Bug #45415, Bug #11753896)

  • 在MySQL 5.1及以上版本中,如果一个表的触发器使用了5.0支持的语法而不是5.1支持的语法,那么这个表就不可用了。现在,表被标记为有损坏的触发器。这些应该被手动删除并重新创建。(Bug #45235, Bug #11753738)

  • 在安装期间试图安装不存在的文件已被纠正。(Bug #43247, Bug #11752142)

  • 一些状态变量在达到最大32位值后滚到零。它们已被更改为64位值。(Bug #42698, Bug #11751727)

  • 显示事件并不总是显示来自正确数据库的事件。(Bug #41907, Bug #11751148)

  • 对于具有多个查询的查询eq_ref连接时,优化器花费了过多的时间来开发执行计划。(Bug #41740, Bug #11751026, Bug #58225, Bug #11765274)

  • 在嵌入式服务器的FreeBSD 64位版本上,不阻止异常传播到嵌入式应用程序中。(Bug #38965, Bug #11749418)

  • 截然不同的CONCAT (col_name,……)参数为时返回不正确的结果CONCAT ()是声明了整数数据类型的列,其显示宽度小于列中的值。(例如,如果一个INT (1)列包含1111(Bug #4082)