MySQL 8.0版本说明/ MySQL 8.0.18的更改(19-10-14,通用可用性)

MySQL 8.0.18的更改(19-10-14,通用可用性)

有关升级、降级、平台支持等的一般信息,请访问https://dev.10bet靠谱mysql.com/doc/relnotes/mysql/8.0/en/

账户管理笔记

编译的笔记

  • 不兼容的更改:my_ulonglongMySQL源代码中不再使用type。任何使用此类型的第三方代码都应该使用uint64_tC类型。此外,也有可能printf ()如果用于打印,格式字符串将需要调整my_ulonglong变量。(错误# 29453827)

  • 对于构建MySQL 8.0, Protobuf的最低要求版本现在是3.0而不是2.5。(错误# 30141272)

  • 用于服务器构建的Boost库的最低版本现在是1.70.0。(错误# 29639344)

  • 一个DBUG_TRACE宏可用于协助编写调试代码。它很方便地取代了一对进入/离开宏。例如,与其这样写:

    void foo() {DBUG_ENTER("foo");酒吧();DBUG_VOID_RETURN;}

    取代它可写:

    void foo() {DBUG_TRACE;酒吧();}

    (错误# 29589102)

配置说明

  • CMake现在可以使用fastcov如果有的话。fastcov是速度比lcovgcov.这需要GCC和gcov版本9或更高。(错误# 30011512)

  • DISABLE_SHAREDCMake选项未使用,已被删除。(Bug #29971049, Bug #96027)

  • CMake用于查找Protobuf可执行文件的代码现在可以在将这些文件拆分为多个包的平台上工作。(错误# 29953773)

  • ADD_GDB_INDEXCMake选项确定是否启用生成.gdb_index节,这使得在调试器中加载它们更快。该选项默认是禁用的。如果链接器不是lld或GNU黄金使用。(Bug #29925009, Bug #95857)

  • INSTALL_LAYOUTCMake选项时,SLES而且赢得选项值未被使用,已被删除。(Bug #29871520, Bug #95654)

  • max_prepared_stmt_count系统变量最大值从100万(1,048,576)增加到400万(4,194,304)。默认值保持为16,382。

  • MySQL 8.0不再支持使用wolfSSL构建。现在所有MySQL构建都使用OpenSSL。

  • MySQL不再使用RE2库。库不再与源代码发行版和WITH_RE2CMake选择是过时了。

连接管理笔记

  • MySQL现在对压缩的使用提供了更多的控制,以最小化通过连接发送到服务器的字节数。以前,给定的连接不是未压缩就是使用zlib压缩算法。现在,也可以使用zstd算法(zstd 1.3),并选择压缩级别zstd连接。允许的压缩算法可以在服务器端配置,也可以在连接发起端配置,以便客户机程序和参与主/从复制或组复制的服务器连接。有关更多信息,请参见连接压缩控制

    的连接压缩zstd算法要求服务器使用zstd库的支持。新WITH_ZSTDCMake选项指示是使用绑定还是使用系统zstd图书馆。

    遗留的压缩控制参数,例如——压缩客户端选项,已被弃用,并将在未来的MySQL版本中删除。

    感谢Facebook的贡献,这是我们的部分工作的基础。

弃用和删除说明

  • 的使用MYSQL_PWD环境变量来指定MySQL密码被认为是不安全的,因为它的值可能对其他系统用户可见。MYSQL_PWD现在已弃用,并将在未来的MySQL版本中删除。

密匙环的笔记

  • MySQL企业版现在包含一个keyring_hashicorp该插件使用HashiCorp Vault作为后端密钥环存储。有关更多信息,请参见MySQL密匙环

日志记录笔记

  • 对服务器启动期间的日志缓冲进行了调整,以减少错误日志中输出的出现延迟。(错误# 30019632)

优化器的笔记

  • 在迭代器执行器中,涉及第一次匹配拆分跳转操作的查询被错误处理。现在它们被改写为杂草。(错误# 30220791)

  • 在MySQL中,散列连接已经被实现为一种执行内部等连接的方式。例如,像这样的查询可以以以下版本开始的散列连接方式执行:

    SELECT * FROM t1 JOIN t2 ON t1。c1 = t2 . c1;

    使用等连接的多表连接也可以利用这种优化。

    哈希连接执行时不需要索引。在大多数情况下,散列连接比以前用于无索引的等连接的块嵌套循环算法更有效。

    默认情况下,从这个版本开始,只要连接至少包含一个等连接条件,并且不能对连接条件应用索引,就使用散列连接。(当索引只应用于单表谓词时,仍然可以使用散列连接。)的方法可以覆盖此首选项hash_join优化器开关,或使用NO_HASH_JOIN优化器提示。此外,您可以通过设置来控制散列连接使用的内存量join_buffer_size.内存需求超过这个数量的连接在磁盘上执行;磁盘上的哈希连接使用多个磁盘文件,如果超过此数量,则可能不可执行open_files_limit

    如果任何一对连接表的连接条件在使用的所有连接条件中不包括至少一个等连接条件,则不能使用散列连接。一个散列连接用于笛卡尔积—即,一个完全不指定连接条件的连接。

    的输出中,您可以查看是否使用了哈希连接来优化查询解释格式=树解释分析

    此外,使用散列连接的内部连接现在也可以利用批处理密钥访问(BKA)。外部连接仍然分配整个连接缓冲区。

    有关更多信息,请参见散列连接优化

  • 添加解释分析中查询的基于迭代器的计时、成本和其他信息格式。该语句产生的输出类似于解释,但提供了关于优化器估计如何与实际执行相匹配的附加信息。

  • MySQL现在执行强制类型转换注入到查询中,以避免某些数据类型不匹配;也就是说,优化器现在在参数的数据类型与期望的数据类型不匹配的表达式和条件内部的项树中添加强制转换操作。这使得执行的查询等同于与SQL标准兼容的查询,同时保持与MySQL以前版本的向后兼容性。

    这样的隐式强制转换现在通过将两个参数强制转换为在时态类型和数值类型之间执行每当使用任何标准数值比较操作符比较它们时。他们现在也进行了这样的比较日期时间价值观和DATETIME值,在这种情况下,参数被强制转换为DATETIME

    例如,这样的查询SELECT * FROM t1 JOIN t2 ON t1。int_col= t2。date_col重写并执行为SELECT * FROM t1 JOIN t2 ON CAST(t1;int_col=浇铸(t2。date_col双),SELECT * FROM t1 JOIN t2 ON t1。time_col= t2。date_col是改变了SELECT * FROM t1 JOIN t2 ON CAST(t1;time_col作为DATETIME) = CAST(t2。date_colDATETIME)之前执行。

    的输出可以看到何时将强制转换注入到给定查询中解释分析解释格式= JSON,或解释格式=树解释也可以用,但在这种情况下还需要发吗显示警告之后。

    预计此更改不会导致查询结果或性能的任何差异。

包装的笔记

  • component_test_page_track_component.so测试插件已移动到以及包。(错误# 30199634)

  • 二进制包包括旋度而不是连接到系统旋度图书馆已升级使用旋度7.65.3.(错误# 30015512)

可插入身份验证

安全记录

空间数据的支持

sys模式笔记

  • sys.schema_unused_indexes视图现在过滤掉唯一索引。感谢Gillian Gunson的贡献。(Bug #24798995, Bug #83257)

  • sys.ps_is_consumer_enabled ()函数现在产生错误而不是返回如果参数是未知的非消费者的名字。(错误# 24760317)

  • 在此之前,sys模式源在独立的Git存储库中维护。sys模式源代码现在包含在MySQL源代码发行版中,并在其中进行维护脚本/ sys_schema).由于此更改的结果,简化维护sys方法命名的文件中语句的可接受格式init_file系统变量已扩充。关于该变量的详细描述请参见服务器系统变量

    sys.version视图已弃用,将在未来的MySQL版本中删除。应调整受影响的应用程序以使用替代方案。例如,使用(版本)函数检索MySQL服务器版本。

测试套件的笔记

  • MySQL测试已更新为使用最新版本的googletest。(错误# 30079649)

X插件笔记

  • X协议没有正确地显示为同一查询发出的大量警告消息。(错误# 30055869)

  • NO_BACKSLASH_ESCAPES启用SQL模式,X Plugin错误地将集合报告为表。(错误# 28208285)

增加或更改的功能

  • 当服务器运行时——初始化,没有理由加载非早期的插件。服务器现在记录一个警告并忽略任何警告——plugin-load——plugin-load-add选择了——初始化.(错误# 29622406)

  • 的诊断消息的数量INFORMATION_SCHEMA减少了服务器启动时的升级。(Bug #29440725, Bug #94559)

  • 在MySQL 8.0之前,撤销试图撤销未知特权时产生错误。在MySQL 8.0中,如果一个帐户是在安装注册该特权的组件或插件时授予的动态帐户,则该帐户可以拥有当前服务器不知道的特权。如果该组件或插件随后被卸载,则该特权将被取消注册,尽管拥有该特权的帐户仍然拥有该特权。撤销这样的特权与撤销实际上无效的特权无法区分,因此撤销不再对试图撤销未知特权产生错误。然而,要表示该特权目前未知,撤销现在产生一个警告。(错误# 29395197)

  • innodb_idle_flush_pct变量允许在空闲期间对页面刷新设置限制,这有助于延长固态存储设备的寿命。看到限制空闲期间的缓冲区刷新

    感谢Facebook的贡献。(Bug #27147088, Bug #88566)

  • mysqld调用的——帮助选项将不再中止secure_file_priv论点不存在。(错误# 26336130)

  • 对于组通信连接,group Replication现在支持TLSv1.3协议,MySQL Server从8.0.16开始支持该协议。要使用TLSv1.3协议,MySQL Server必须使用OpenSSL 1.1.1或更高版本编译。有关为组复制配置加密连接的信息,请参见使用安全套接字层(SSL)保护组通信连接

  • 有一个新选项OFFLINE_MODE可用于group_replication_exit_state_action系统变量,该变量指定当服务器实例无意中离开组时(例如在遇到应用程序错误后),或在多数丢失的情况下,或当组的另一个成员由于怀疑超时而驱逐它时,Group Replication的行为。

    OFFLINE_MODE组复制通过设置system变量offline_mode.成员处于脱机模式时,已连接的客户端用户将在其下一次请求时断开连接,并且不再接受连接,具有CONNECTION_ADMIN超级特权。“组复制”还可以设置系统变量super_read_only,因此客户端无法进行任何更新,即使它们已连接到超级特权。

    OFFLINE_MODE退出操作阻止像默认值这样的更新READ_ONLYexit动作可以,但也可以防止过时的读取(具有指定权限的客户端用户的读取除外),并允许代理工具(如MySQL Router)识别服务器不可用并重定向客户端连接。它还保持实例运行,以便管理员可以尝试在不关闭MySQL的情况下解决问题,这与现有的替代方案不同ABORT_SERVER退出操作,该操作将关闭实例。

  • 默认情况下,MySQL复制(包括组复制)不执行权限检查,当已经被另一个服务器接受的事务应用到复制从服务器或组成员上时。从MySQL 8.0.18中,您可以创建具有适当权限的用户帐户,以应用通常在通道上复制的事务,并将其指定为PRIVILEGE_CHECKS_USER复制应用程序的帐户。然后,MySQL根据用户帐户的特权检查每个事务,以验证您已经为该通道授权了操作。管理员还可以安全地使用该帐户来应用或重新应用事务mysqlbinlog输出,例如从通道上的复制错误中恢复。的使用PRIVILEGE_CHECKS_USERAccount可以保护复制区域通道不受未经授权或意外使用特权或不需要的操作的影响。

    你同意REPLICATION_APPLIER权限,以使用户帐户显示为PRIVILEGE_CHECKS_USER对于复制应用程序线程,以及执行内部使用BINLOG所使用的语句mysqlbinlog.设置用户帐户后,使用格兰特语句授予额外的特权,以使用户帐户能够进行您希望应用程序线程执行的数据库更改,例如更新服务器上保存的特定表。这些相同的特权使管理员能够在需要在复制区域通道上手动执行任何事务时使用该帐户。如果尝试了未授予适当权限的意外操作,则该操作将被禁止,复制应用程序线程将停止并出现错误。

  • 已将内部消息服务添加到组复制中。MySQL模块可以使用group Replication的现有组通信连接,使用该服务将带有标识标记的通用消息发送给所有组成员。

  • relay_log_info_file系统变量和——master-info-file选项现在已弃用,并将在未来的MySQL版本中删除。它们用于指定中继日志信息日志和主信息日志的名称relay_log_info_repository =文件而且master_info_repository =文件已设置,但这些设置已弃用。用于中继日志信息日志和主信息日志的文件已经被崩溃安全从表所取代,这是MySQL 8.0中的默认设置。

  • slave_rows_search_algorithmssystem变量现在已弃用,将在未来的MySQL版本中删除。此变量用于控制在为基于行的日志记录和复制准备成批行时如何搜索匹配的行。默认设置INDEX_SCAN, HASH_SCAN已经被发现是最优的性能,在所有场景下都能正确工作。

  • 并将在未来的MySQL版本中删除。的log_bin_use_v1_row_eventssystem变量现在已弃用,将在未来的MySQL版本中删除。当设置为,变量makemysqld使用版本1的二进制日志行事件写入二进制日志,而不是MySQL 5.6默认的版本2的二进制日志行事件。(默认为)。使用版本1的二进制日志行事件可以使用运行MySQL Server 5.5及更早版本的从机进行基于行的复制,它不能使用版本2的二进制日志行事件。

  • WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS ()函数现在已弃用,并且WAIT_FOR_EXECUTED_GTID_SET ()应该使用函数。这两个函数都要等待,直到所有指定的事务都已应用,或者直到可选超时已过。然而,WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS ()应用到特定的复制区域通道,并且只有在事务应用到该通道上之后才停止,因为应用程序必须为该通道运行。相比之下,WAIT_FOR_EXECUTED_GTID_SET ()在服务器上应用了指定的事务之后停止,而不管它们是如何应用的(在任何复制区域通道上或从任何用户客户端),也不管是否有任何复制区域通道正在运行。WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS ()如果预期的事务到达不同的复制区域通道或来自用户客户机(例如在故障转移或手动恢复情况下),并且没有设置超时,则可能无限期挂起。

  • Protobuf库现在是动态链接的。它们的默认位置是/usr/lib64/mysql/private/rpm,/usr/lib/mysql/private/德布斯,/lib/private/对焦油构建。一个新的INSTALL_PRIV_LIBDIRCMake变量控制位置。

错误修复

  • NDB集群:使用推入条件处理的查询在包含命令条款。(错误# 29595346)

    参考文献:这个问题是:Bug #28672214的回归。

  • NDB集群:NDB传输层将消息的大小限制为32768字节;发送缓冲区对消息大小设置了附加的(更严格的)限制。每当将消息追加到发送缓冲区时,将执行页面检查,以确保消息符合可用空间;如果没有,则使用新页面。当前的问题是由于没有执行检查以确保该消息能够装入空页面;当消息的大小超过空页时,这将导致缓冲区覆盖和在内存中覆盖下一页。对于数据节点,发送缓冲区支持的最大消息(thr_send_page)为32756字节;对于API和管理节点,这个最大值是32752字节。(在单个数据节点内发送的信号不受这些限制,因为在这种情况下没有使用发送或传输缓冲区)。现在,当使用新页面时,将根据新页面中可用的消息大小检查消息的大小。

    作为解决刚才描述的问题的工作的一部分,有三个新的转储为了方便相关测试和调试,增加了命令:转储103003CmvmiRelayDumpStateOrd)发送一个转储命令使用另一个节点;转储103004CmvmiDummySignal),转储103005CmvmiSendDummySignal)可用于发送长信息。(错误# 29024275)

  • NDB集群:解释格式=树没有提供适当的条件和联接推下到NDBCLUSTER存储引擎。问题包括:

    • 未显示推入条件。

    • 未显示推入连接的根。

    • 推入连接的子操作不包含对其父操作的任何引用。

  • InnoDB:内部函数(btr_push_update_extern_fields ())用于获取新添加的外部存储字段,并在悲观更新期间更新它们,或者当不再需要返回到记录的前一个版本时。新添加的外部存储字段由不同的函数更新。此外,用于确定外部存储字段数量的方法也得到了修正。(错误# 30342846)

  • InnoDB:一个下降撤消表空间撤销表空间上缺少数据文件的操作导致段错误。(错误# 30155290)

  • InnoDB:内部错误trx_rseg_add_rollback_segments函数修正。(Bug #30114226, Bug #96372)

  • InnoDB:修改了竞争感知事务调度(CATS)代码中的有问题的断言代码。(错误# 30086559)

  • InnoDB:类的调用中传递给派生类的参数ib:致命的而且ib: fatal_or_error构造函数可能被忽略,导致无效的错误消息。此外,如果出现致命错误,则ib: fatal_or_error析构函数可能在打印消息之前导致服务器退出。(错误# 30071930)

  • InnoDB:在表的引用计数达到零之前,有可能从表缓存中删除已损坏的表。(Bug #30065947, Bug #96224)

  • InnoDB:内部的代码路径row_update_inplace_for_intrinsic ()函数没有包含必需的小事务(mtr)提交,导致调试断言失败。(错误# 30065518)

  • InnoDB:内部fsp_srv_undo_tablespace_fixup ()函数没有取an撤销:ddl_mutex锁定,这在某些情况下可能导致断言失败。(Bug #30029433, Bug #30461911, Bug #97356)

  • InnoDB:检查rename_tablespace_name ()函数表明如果old_shard - > get_space_by_id (space_id)没有找到表空间ID,它将返回而不调用old_shard - > mutex_release ().(错误# 30027771)

  • InnoDB:一个表空间罚球在升级过程中,错误地将其名称确定为全文索引表的表空间,且未注册到数据字典,导致升级操作失败。处理步骤(错误# 29992589)

  • InnoDB:ibuf_merge_or_delete_for_page ()函数负责在更改缓冲区中合并和删除页面,它不再被undo表空间和临时表空间调用。更改缓冲区不包含这些表空间类型的条目。(Bug #29960394, Bug #95989)

  • InnoDB:缓冲池大小变量的一些组合(——innodb-buffer-pool-instances——innodb-buffer-pool-size,——innodb-buffer-pool-chunk-size)会导致块大小为0、1或不是页面大小的倍数的值,等等,这会在创建缓冲池和调整大小时造成错误。(错误# 29951982)

  • InnoDB:当一个undo表空间被截断时,当重新启动服务器后前滚克隆操作时,服务器退出导致以下错误:[ERROR] [MY-011825] [InnoDB] [FATAL] Clone File Roll Forward: Invalid File State: 0。(错误# 29949917)

  • InnoDB:一个ALTER TABLE……丢弃表空间操作导致挂起状态。(Bug #29942556, Bug #30324703)

  • InnoDB:在归档线程失败后,克隆操作失败,出现以下错误:ERROR 3862 (HY000): Clone Donor ERROR: 1317:查询执行被中断。(错误# 29930839)

  • InnoDB:与克隆相关的回归导致索引和非索引更新操作的性能略有下降。(错误# 29925409)

  • InnoDB:InnoDB现在忽略启动时发生的表空间发现扫描期间的隐藏目录和文件。隐藏目录和文件包括Windows上以“。”开头的目录和文件,以及通过属性标识的隐藏目录和系统目录和文件。(Bug #29900671, Bug #95071, Bug #30068072)

  • InnoDB:为了改进死锁检测,检测数据锁之间死锁周期的任务从事务线程转移到专用的后台线程。(错误# 29882690)

  • InnoDB:更新mysql.gtid_executed表在mysqld初始化导致以下警告打印到错误日志:[Warning] [MY-010015] [Repl] Gtid表未准备好使用。表的mysql。Gtid_executed '无法打开.更新和相关的警告不再发生。(错误# 29871809)

  • InnoDB:最新检测到死锁部分InnoDB标准监视器输出(也由显示引擎innodb状态)被扩展为包含关于参与死锁周期的事务的附加信息。(错误# 29871641)

  • InnoDB:在检查用于存储SDI的缓冲区的大小时,使用了一个不正确的参数来比较序列化字典信息(SDI)输入和输出值。(Bug #29871525, Bug #95606)

  • InnoDB:在克隆操作期间,当将具有相同名称的undo表空间文件从提供者的不同目录复制到收件人的同一目录时,撤消表空间文件将被覆盖。如果遇到重复的撤消表空间名称,克隆操作将报告错误。将数据克隆到收件人时,undo表空间文件将克隆到innodb_undo_directory变量。因为这些文件被克隆到同一个目录,所以不允许重复的undo表空间文件名。(错误# 29837617)

  • InnoDB:从一个重做日志文件大小小、事务量大的MySQL服务器实例进行克隆时,克隆操作会产生大量的重做日志文件。大量的重做日志文件有时会导致启动挂起或断言。否则,不清理过多的重做日志文件就允许启动。(错误# 29837490)

  • InnoDB:在恢复过程中,将重做日志应用到加密表时发生的丢失表错误可以被忽略,允许继续启动。在这种情况下应该停止启动。(Bug #29820184, Bug #95183)

  • InnoDB:在启动时将错误的重做日志文件大小打印到服务器错误日志中。(错误# 29818711)

  • InnoDB:防止重用锁对象的限制(lock_t当等待记录锁请求存在时,删除锁队列中的Structs)。(错误# 29814308)

  • InnoDB:在将长分区表名转换为文件名时,保存文件名的缓冲区没有足够的空间,导致断言失败。(错误# 29813582)

  • InnoDB:一些事务锁结构字段(硫氧还蛋白- >锁)没有得到适当的互斥锁保护。(错误# 29809137)

  • InnoDB:恢复期间的空撤销段更新引发断言。(错误# 29802703)

  • InnoDB:如果收件人数据包含具有全文索引的表,则试图在收件人上删除数据时克隆操作失败。(错误# 29796507)

  • InnoDB:当一个文件表表空间被丢弃后,当旧表被重命名并创建一个同名的新表时,会报告一个错误。该错误是由于文件路径信息陈旧造成的。(错误# 29793800)

  • InnoDB:当服务器处于磁盘满状态时,试图以只读模式打开文件的测试用例导致了调试断言失败。删除断言以允许服务器重试打开文件,并在多次尝试后失败时报告错误。(Bug #29692250, Bug #95128)

  • InnoDB:过程中构造的外键相关表重命名表操作包含旧表名。(错误# 29686796)

  • InnoDB:服务器为数据长度非零的列传递NULL值。(错误# 29654465)

  • InnoDB:将分区表从MySQL 8.0.13实例(或更早版本)导入到MySQL 8.0.14、8.0.15或8.0.16实例失败表空间是失踪定义的源和目标实例的错误lower_case_table_names = 1.由于文件名大小写不匹配,无法找到导入操作使用的表空间文件和元数据文件。(Bug #29627690, Bug #94850)

    这个问题是Bug #26925260的回归。

  • InnoDB:读集(表::read_set)没有为处理程序方法调用正确设置QUICK_SKIP_SCAN_SELECT: get_next (),导致断言失败。(错误# 29602393)

  • InnoDB:排他备份锁现在用于在主键旋转期间阻止表空间截断操作。以前,在undo表空间名称上使用元数据锁来同步操作。此补丁还解决了主键旋转和删除undo表空间操作之间可能发生的死锁问题。(Bug #29549938, Bug #30461225, Bug #97352)

  • InnoDB:操作时使用了不必要的下一个键锁选择……(分享|更新)查询的在哪里指定范围的条件,导致锁定的行太多。这个问题最常见的情况已经得到了解决,因此只有与搜索范围相交的行和间隙才会被锁定。(错误# 29508068)

  • InnoDB:在第一个位置添加虚拟列和正常列会导致断言失败。(错误# 29501324)

  • InnoDB:关闭过程没有等待InnoDB等待后台线程从MySQL事务列表中删除事务,这可能导致关闭暂停。现在进行检查以确保这一点InnoDB后台线程已正常退出。此外,还添加了一个中间关闭状态,以改进关闭时机InnoDB掌握线程。(错误# 29417503)

  • InnoDB:在TempTable存储引擎操作期间发生了内存泄漏,原因是未能释放分配的最后一块内存,该内存块由TempTable保存在线程本地存储中,直到线程退出。(错误# 29300927)

  • InnoDB:吞吐量在负载较重的情况下停滞innodb_io_capacity_max设置、单个页面清理器线程和多个缓冲池实例。(错误# 29029294)

  • InnoDB:一个长时间运行的ALTER TABLE……添加索引使用并发插入的操作导致信号量等待。感谢Satya Bodapati的补丁。(错误# 29008298)

  • InnoDB:INFORMATION_SCHEMA。INNODB_COLUMNS从MySQL 5.7升级到MySQL 8.0后,表没有显示分区表列。对于在MySQL 8.0版本上创建的分区表,INFORMATION_SCHEMA。INNODB_COLUMNS只显示第一个表分区的列。(Bug #28869903, Bug #93033)

  • InnoDB:内部rtr_page_split_and_insert ()函数被递归调用。对该函数的内部调用释放了一个对象,该对象仍被对同一函数的外部调用所使用,从而导致断言失败。(错误# 28569379)

  • InnoDB:在特定情况下,设置innodb_limit_optimistic_insert_debug变量2在应该报告错误时引发调试断言。(Bug #28552330, Bug #92187)

  • InnoDB:当事务试图将一个记录锁升级到下一个键锁时,就可能出现死锁。(Bug #23755664, Bug #82127)

  • InnoDB:INFORMATION_SCHEMA。INNODB_METRICSlock_deadlocks计数器没有计算所有死锁。感谢Laurynas Biveinis的贡献。(Bug #21278148, Bug #77399)

  • InnoDB:读取操作期间报告的错误没有识别被读取的文件的名称。(Bug #21120885, Bug #76020)

  • 复制:如果group_replication_set_communication_protocol ()函数用于设置一些组成员不支持的通信协议版本,协议更改过程没有正确停止。这个问题现在已经解决了。(错误# 30209596)

  • 复制:如果Group Replication使用的TCP连接由于长时间的网络错误而超时,则组通信引擎(XCom)不能重新建立其本地连接,需要在实例上重新启动Group Replication(参见Bug #25656508)。以前,在这种情况下试图停止组复制会导致XCom挂起,从而阻止重新启动。这个问题现在已经修复,因此XCom可以正确终止,并且可以重新启动Group Replication以重新建立本地连接。(错误# 30132500)

    参考文献:参见Bug #22158368。

  • 复制:ANSI_QUOTESSQL模式已启用,组复制在检查MySQL服务器的克隆插件是否存在以执行远程克隆操作进行分布式恢复时返回错误。这个问题现在已经解决了。(错误# 30099796)

  • 复制:的值default_table_encryptionsystem变量在复制组的所有成员上必须相同,且不能在组复制运行期间更改。组复制不允许更改系统变量的值集全球语句被使用,但如果设置保存声明使用。(Bug #30031228, Bug #96158)

  • 复制:如果group_replication_local_address如果更改了某个成员的设置,然后该成员重新加入群组,则群组通信系统(GCS)在某些位置保留了旧本地地址的副本。现在只要需要,就会获取组复制本地地址,而不是缓存。(错误# 29910699)

  • 复制:当Group Replication使用远程克隆操作向加入成员提供事务时,如果在操作期间停止了加入成员,则不会完全关闭。(错误# 29902389)

  • 复制:的会话值default_table_encryption复制系统变量,以便复制从端为数据库和表空间保留正确的加密设置。对于复制区域通道table_encryption_privilege_check系统变量设置为,TABLE_ENCRYPTION_ADMIN特权需要应用事件的会话值default_table_encryption是改变。如果没有在复制从服务器上授予此特权,在某些情况下复制会停止并出现错误,因为事件所需的加密设置实际上与从服务器自己的默认加密设置相同,因此操作应该是有效的。当一条与从库加密设置不同的语句不应该工作时,它也有可能成功。行为现在已得到纠正,因此没有TABLE_ENCRYPTION_ADMIN特权被允许应用与它自己的默认加密设置相匹配的事件,并且不被要求不必要地设置加密设置,但是如果事件需要不同的加密设置,仍然需要进行适当的特权检查。(错误# 29818605)

  • 复制:的指定的秒为单位的超时group_replication_unreachable_majority_timeout系统变量每两秒才检查一次。现在每秒钟检查一次超时,以尊重奇数值。(错误# 29762005)

  • 复制:在MySQL 8.0.14中为组复制引入的输入通道使用共享内存队列,而不是TCP套接字,用于组复制的组通信系统(GCS)组件和本地组通信引擎(XCom)实例之间的通信。在SELinux安装上无法建立此输入通道,这意味着升级到MySQL 8.0.14或更高版本的成员无法重新加入组。当启动组复制时,XCom实例临时从临时端口范围打开一个端口,以允许GCS为输入通道建立连接,但是在SELinux上mysqld进程没有连接到此端口的权限。一个解决方案是修改SELinux策略,以允许MySQL连接到任何端口,但这降低了安全性。从MySQL 8.0.18开始,这个问题已经修复。XCom和GCS不再使用临时端口为输入通道建立连接,而是使用配置的Group Replication通信端口group_replication_local_address系统变量,它必须被SELinux允许(参见常见问题).(Bug #29742219, Bug #30087757)

  • 复制:可能会发生涉及三个线程的死锁开始的奴隶当SQL线程还在被停止的过程中,就会发出一条语句来启动从线程上的SQL线程,同时请求从线程的状态。现在,通过在SQL线程停止时提前释放一个锁,这个问题已经得到了解决。(Bug #29697588, Bug #95115)

  • 复制:组复制拒绝“通用名”值使用通配符的服务器证书。现在使用了正确的比较方法。(Bug #29683275, Bug #95068)

  • 复制:之后,组复制的组通信系统(GCS)可以从一个成员传递消息停止GROUP_REPLICATION已经发了,成员去了离线状态,导致错误。GCS现在在传递消息之前验证它属于一个组。(错误# 29620900)

  • 复制:的锁定问题WAIT_FOR_EXECUTED_GTID_SET ()函数可能导致服务器在某些情况下挂起。这个问题现在已经得到了纠正。(错误# 29550513)

  • 复制:的值可能会发生死锁binlog_encryption系统变量被更改开始的奴隶语句正在执行。(错误# 29515210)

  • 复制:复制从端的心跳间隔,由MASTER_HEARTBEAT_PERIOD选择的改变主语句,可以以毫秒为单位指定分辨率。以前,主服务器的二进制日志转储线程使用秒为粒度来计算是否应该将心跳信号发送到从服务器,这会在多个跳过事件的情况下导致心跳活动过多。为了消除这个问题,现在主服务器和从服务器的所有与心跳相关的计算都使用纳秒粒度进行,以提高精确度。感谢Facebook的贡献。(Bug #29363787, Bug #94356)

  • 复制:创建带有函数索引的表会在表上创建一个隐藏生成的列,但是这个列并不总是出现在表中的相同位置,这意味着以后向表中添加一列(或多个列)可能会使隐藏列处于不同的位置,这与在单个CREATE table语句中已经具有额外列的相同表相比。例如,两个表之间的差异可能很明显t1而且t2,t1由两个语句创建并修改CREATE TABLE t (a INT, INDEX ((a+1)))而且增加列b的INT值,t2创建使用CREATE TABLE t2 (a INT, b INT, INDEX (a+1)),即使创建表1而且创建表t2产生相同的结果(除了表的名称)。

    所描述的表的内部定义可能会导致刚才描述的问题Table_map_log_events在二进制中,对数是不同的。这意味着,如果这样的表是使用创建表紧随其后的是ALTER TABLE在主节点上,然后使用, mysqldump, slave版本的表将使用单个创建表语句,然后行事件的后续复制将失败,并由于类型不匹配而出现错误。

    通过强制所有隐藏生成的列始终位于列列表的末尾,并按列名排序多个生成的列,这个问题得到了解决。如果向表中添加了新的函数索引部分,则根据此规则插入新的隐藏列。此外,如果用户创建的新列不是生成的列,则该列总是在第一个隐藏列之前添加。

    请注意

    受此更改影响的表的结构不会在升级过程中自动更改;这必须通过执行显式地完成ALTER TABLE

    (错误# 29317684)

  • 复制:如果一个重置的主人语句在执行过程中被停止,之后的写操作将无法使用二进制日志。(错误# 29125121)

  • 复制:一些执行临时或次要组复制任务的线程,例如延迟的插件初始化线程,在性能模式中不可见线程表格(Bug #28930537, Bug #93212)

  • 复制:当成员因错误离开组时,Group Replication过程的实现已经跨组件进行了标准化,以确保成员执行完全相同的操作并发出相同的错误消息,而不管离开组的原始原因是什么。(Bug #28866495, Bug #93027)

  • 复制:在使用gtid的多线程从服务器上MASTER_AUTO_POSITION设置为,在意外停止后,从服务器将尝试中继日志恢复,如果中继日志丢失,则恢复失败,从而阻止复制启动。然而,这一步是不必要的,因为GTID自动定位可以用来恢复任何丢失的事务。在恢复情况下,从服务器现在首先检查是否MASTER_AUTO_POSITION被设置为,如果是,则省略计算应该跳过或不跳过的事务的步骤,这样就不需要旧的中继日志,恢复也可以在没有它们的情况下进行。(Bug #28830834, Bug #92882)

  • XA提交语句,语句执行中涉及的插件的调用顺序是不确定的,这可能导致复制问题。感谢Dennis Gao提供的修复。(Bug #31082237, Bug #99051)

  • keyring_aws插件不包含在Commercial Docker RPM包中。(错误# 30199423)

  • 当从SQL脚本生成C源代码时,一些utf8编码的字符会跨行分割。感谢przemyssaaw skibi夫斯基的补丁。(Bug #30152555, Bug #96449)

  • 数组中的保留字被列为无保留字INFORMATION_SCHEMA。关键字表格(Bug #30134275, Bug #96416)

  • 一些语句包含||生成了一个解析错误PIPES_AS_CONCAT启用SQL模式。(Bug #30131161, Bug #96405)

    参考文献:这个问题是:Bug #29305022的回归。

  • 加载数据语句错误地忽略了NO_AUTO_VALUE_ON_ZEROSQL模式,如果条款。(错误# 30126375)

  • ,自动升级失败,服务器退出thread_pool插件被启用。(错误# 30121742)

  • 在确定是否为每次执行重新计算物化派生表时,使用父查询块的不可缓存性,而不是表上的重物化标志(目前仅适用于JSON_TABLE ()).这可能会导致不必要的重新物化,特别是在对未合并的视图进行查询时,会导致性能下降。(错误# 30110851)

  • 与一个忽略条款,加载数据是否应该跳过产生检查违反约束并继续处理以下行,但由于出现错误而停止。(Bug #30084966, Bug #96296)

  • sql_require_primary_key启用后,克隆插件初始化失败,因为它创建了两个动态性能模式表,不支持索引或主键。的影响sql_require_primary_key现在仅限于可以参与复制的存储引擎(目前除性能架构外的所有存储引擎)(Bug #30083300, Bug #96281)

  • macOS上的Protobuf编译失败。(Bug #30079536, Bug #96263)

  • 对于自动升级,audit_log插件没有重新加载,导致在遗留模式下启动审计。(错误# 30068110)

  • 为了删除重复的行,除草优化需要为每一行提供一个惟一标识符,该标识符由存储引擎通过调用提供处理程序::位置(),但是这个函数并不总是在正确的时间调用,或者有时在不需要的时候调用。关于如何以及何时进行此类调用的问题是优化中许多bug的根源。这个修复转移了调用的责任处理程序::位置()迭代器的默认实现通常可以自己充分处理此任务。(错误# 30060691)

    参考文献:参见Bug #29693294, Bug #30049217, Bug #30153695。

  • 的错误处理可能导致服务器退出COM_PROCESS_INFO命令。(错误# 30032302)

  • 当已弃用的系统变量被赋值时,通常会产生警告,但当在服务器启动期间处理持久化的系统变量时,则不会出现警告。(错误# 30030648)

  • bind_address设置为包含多个地址的值,设置host_cache_size = 0在客户端连接时导致服务器退出。(错误# 30018958)

  • 在Windows上,忍者构建类型的Protobuf编译失败。(错误# 30018894)

  • 显示PROCESSLIST输出可以包括已经完成且不再进行处理的语句。(错误# 29999818)

  • 一个, mysqldump错误消息缓冲区太小,可能导致消息截断。(Bug #29999782, Bug #96074)

  • 最后使用自动递增值代替下一个要用到的在升级过程中,当从MySQL 5.7导入表到MySQL 8.0时,自动增量值被缓存,这导致升级后从表缓存中读取的任何表都有错误的自动增量值。(错误# 29996434)

  • 在执行使用常量折叠的预处理语句时,可以为回滚注册一个没有分配在MEMROOT,而是在堆栈上,因此不再在范围内。(错误# 29990693)

    参考文献:参见:Bug #29939331。

  • 一个警告补零被弃用是为了创建表……作为而且创建表……就像对象创建的表的语句一年列。这可能会让人困惑,因为补零属性只能隐式添加到一年列。为了避免混淆,对于这样的语句不再引发警告。(错误# 29961060)

  • 使用位运算符的查询,如in在哪里text_col< (int_colint_col),int_col= 1,未能按预期返回任何行。(错误# 29957969)

  • 优化器提示中的畸形资源组名称可能导致意外的服务器行为。(错误# 29955732)

  • 解释,当使用格式=树在美国,没有显示出与美国相同的成本= JSON格式.特别是在使用的时候格式=树,计算时考虑了成本eval_cost对于连接,但对于基表不是这样。(错误# 29953579)

  • 对于Solaris,mysqld.cc包含一个原型memcntl ()现在已经不需要了。原型已经被移除。(Bug #29953495, Bug #95971)

  • 对于Solaris,-DWITH_SSL =系统在使用GCC编译时无法工作。(Bug #29953460, Bug #95970)

  • MySQL构建配置为-DWITHOUT_SERVER = 1失败了。(Bug #29948728, Bug #95740)

  • 内部方法Field_tiny:包()没有总是按照预期执行边界检查。(错误# 29948029)

    参考文献:参见Bug #31591391。

  • 插件卸载处理不当可能导致服务器退出。(错误# 29941948)

  • 内部MEM_ROOT类没有正确处理所有内存不足错误。(错误# 29940846)

  • JSON_SCHEMA_VALIDATION_REPORT ()没有区分不根据JSON模式进行验证的JSON文档和嵌套太深的JSON文档,这在某些情况下会导致错误行为。(错误# 29940833)

  • 的使用< = >运算符对于涉及非常大的常量的比较可能产生不正确的结果。(Bug #29939331, Bug #95908)

  • keyring_aws插件中,一些有效的区域值keyring_aws_region系统变量被拒绝。(错误# 29933758)

  • 对于调试构建,可以在期间引发断言联盟类的组合数据类型时的查询几何列和Select * from (Select null).(Bug #29916900, Bug #95827)

  • 类定义的列二进制字符集,显示创建表可以生成创建表执行时产生语法错误的语句。(Bug #29909573, Bug #95801)

  • 添加了数据字典api,用于在使用特定存储引擎的模式中获取表名,以及在存储引擎创建和隐藏的模式中获取表名。前者是新开发银行要求的,后者是国家要求的删除数据库操作。(Bug #29906844, Bug #95792)

  • , mysqldump运行时内存泄漏——order-by-primary选择。(错误# 29906736)

  • 对于涉及函数索引的查询,解释格式=树打印隐藏的列名,而不是索引表达式。(错误# 29904996)

  • 为调试构建,创建表……忽略选择……当由于失败而跳过要插入的最后一行时,语句没有正确地清理表状态检查约束。这可能导致下一个使用该表的语句提出断言。(错误# 29903865)

  • MySQL没有正确处理递归公共表表达式(CTE)的执行,因为该CTE的递归查询的终止条件具有谓词使用另一个递归CTE。(错误# 29899614)

  • 对于分区位于不同表空间文件中的表,序列化字典信息(SDI)的反序列化失败。(错误# 29898965)

  • 使用LDAP认证插件进行认证时,如果用户DN部分为空且配置了组映射,认证会分配错误的用户DN并跳过用户搜索。(错误# 29897624)

  • 没有名称定义的约束在某些情况下可能导致服务器退出。(错误# 29892876)

  • 由于缺少NDB表空间,从MySQL 5.7升级到MySQL 8.0失败。(Bug #29889869, Bug #30113440)

  • mysqlpump在MySQL 5.7以上的服务器上运行时产生错误。(错误# 29889253)

  • 下载Boost后,CMake用于确定下载文件大小的配置逻辑不正确,可能在成功下载操作后删除该文件。(错误# 29881279)

  • 由于无符号整数类型强制转换而导致的可能的整数溢出可能会由于任意大小的内存分配而导致以后的缓冲区溢出。(错误# 29878914)

  • 当客户端字符集不是latin1的字符串表示形式小数latin1到客户端字符集。这种转换是不必要的,因为所有支持的客户端字符集都以相同的方式编码数字latin1,因此不再执行。(错误# 29875672)

  • vio_description ()在非调试版本中调用了调试函数。(错误# 29871361)

  • 在MySQL 8.0.3中修复了以前的一个问题,改变了一个测试表达式是否超过常量日期值可以从允许除全局变量外的任何表达式缓存到全面拒绝所有函数,而不管它们是否超过常量,这极大地影响了相关查询的性能,在这些查询中,优化器需要执行将字符串转换为日期价值。这项测验已恢复到原来的形式。(错误# 29871018)

    这个问题是一个Bug #85471, Bug #28576018的回归。

  • INFORMATION_SCHEMA可以从存储引擎获取动态表统计信息,但这对分区表不起作用。(Bug #29870919, Bug #95641)

  • 重新尝试失败的访问控制语句可能允许另一个线程在元数据锁定被释放和重新获取的窗口期间获得访问控制缓存上的锁,从而导致死锁。在重试操作期间,锁现在不会被释放。(Bug #29870899, Bug #95612)

  • 如果没有适当权限的用户试图启用offline_mode系统变量。(错误# 29849046)

  • Fedora打包配置放置调试信息mysql_config_editor装错包裹了。(错误# 29841342)

  • 在MeCab插件初始化过程中尝试使用一个释放对象导致了段错误。(错误# 29832534)

  • 用来为随机密码生成熵的函数有时不能提供太多的熵。(错误# 29808492)

  • super_read_only启用后,服务器可以进行处理删除表空间不当。(错误# 29802833)

  • 服务器没有正确处理包含实体化半连接的左连接查询。(错误# 29800741)

  • 对于使用RPM包安装的MySQL,如果使用LDAP身份验证插件对客户端帐户进行身份验证,则测试服务器连通性的初始化脚本会出现错误。(错误# 29786782)

  • 存储引擎初始化过程中不恰当的锁定可能导致服务器退出。(错误# 29782379)

  • 在支持gtid的服务器上,并发执行减少用户而访问视图的预处理语句可能会死锁。(错误# 29772622)

  • 当执行解释格式= JSON在表单的查询上选择不存在的地方derived_table),false_condition涉及到反连接转换,子查询被删除了,但它自己的子查询被上移,而不是随它一起被删除。(错误# 29759277)

    参考文献:参见Bug #30017509。

  • 表空间加密操作中断,导致数据字典和存储引擎元数据不一致,导致后续尝试访问表空间时断言失败。(错误# 29756808)

  • 同时执行事件调度程序和删除事件可能导致锁获取挂起,直到锁等待超时。(Bug #29742901, Bug #95223)

  • 检查当列从表达式获取默认值时,约束不会强制执行。(Bug #29706689, Bug #95192)

  • 在没有临时表的同一个表上执行两个排序时,两个排序都试图使用相同的缓冲区,导致读取越界。当同一查询同时使用两者时,可能会发生这种情况截然不同的而且命令.(错误# 29699759)

  • 在执行涉及已排序表的清除时,排序不是通过行id完成的。(错误# 29693294)

  • 在选择调试编译时,VS2019会产生编译错误/子国旗。现在/ Z7而不是使用。(Bug #29691691, Bug #95125)

  • 在源代码发行版中,这些更改是与DBUG包相关的,以清理旧的和未维护的代码dbug目录:

    • 移动dbug.ccmysys目录,删除了dbug图书馆。

    • 删除未使用的函数dbug.cc

    • 删除了DBUG_LEAVE宏;不再需要。

    • 裹着身体的DBUG_LOG宏观的如果_db_enabled_ (),以避免格式化可能不会打印的字符串。

    • 删除了dbug目录中。

    (Bug #29680868, Bug #95082)

  • 在分配引用项数组时,没有考虑到任何窗口函数的计数。因此,当拆分具有窗口函数的表达式时,存储新项引用所需的额外空间没有得到适当分配。(错误# 29672621)

  • 设置用户变量的排序规则在所有情况下都不能正常工作。(错误# 29665165)

  • 的处理在哪里条款显示语句的执行不一致。(错误# 29664758)

  • 中指定了用于删除和添加约束的If子句ALTER TABLE说明他们被处决的顺序不对。(错误# 29652464)

  • 解释现在显示结果何时按行ID排序。(错误# 29634196)

  • 在下列情况下不再执行不必要的物化:

    • 当在联接结束时执行排序时,例如用于分组,且排序不使用行id。

    • 当物化一个不能多次读取的派生表时。

    (错误# 29634179)

  • 演员(参数浮动)什么时候没有返回预期的超出范围的错误参数太小了,不能代表浮动价值。(错误# 29621333)

  • 内部转换浮动值有时出现在错误的时间,这可能导致结果过于精确。考虑如下所示创建和填充的表:

    创建表t(f FLOAT);INSERT INTO t VALUES (2.3);

    在修复之前,查询SELECT f, IF(f > 0, f, 0) FROM t返回的表(2.3, 2.299999952316284)而不是(2.3, 2.3)像预期的那样。(错误# 29621062)

  • log0meb.cc未能使用某些构建选项进行编译。(错误# 29616525)

  • 客户端库可以在从服务器获取结果集元数据时解引用空指针。(Bug #29597896, Bug #30689251)

  • 在计算日期和间隔值时,间隔值检查可能会出现运行时错误。(错误# 29587536)

  • 在启用了Undefined Behavior santizer的构建中,使用-9223372036854775808进行乘法运算可能会产生警告和错误的结果。(错误# 29581610)

  • 在启动期间,服务器试图将不应该记录的操作写入二进制日志。(Bug #29557747, Bug #94835)

  • 陈述的形式创建视图v1作为SELECT * FROM表格(在哪里常数(选择常数)是未知的)引出了一个断言。(错误# 29525304)

    这个问题是Bug #25466100的回归。

  • 在EL6上,如果启用FIPS的OpenSSL库不可用,尝试启用FIPS模式可能会导致服务器故障。(错误# 29519794)

  • 设置PERSIST_ONLY可以用来持久化一些系统变量设置保存不能(由于变量设置发生的方式)。如果在中找到这样一个变量mysqld-auto.cnf在启动时,服务器发出警告并忽略该设置。(错误# 29511118)

  • 在某些情况下,服务器没有正确聚合部分撤销和模式级特权。(错误# 29484519)

  • 为调试构建,枚举定义的列默认的子句提出了一个断言。(错误# 29480711)

  • 如果没有选择开发组件,MySQL安装程序不会安装OpenSSL DLL依赖项。(Bug #29423421, Bug #94168, Bug #30199579, Bug #96573)

  • 读未提交隔离级别,在大负载下发生分割故障memcached客户。外部存储由一个事务更新的列被另一个事务读取为具有NULL值和非零数据长度。(Bug #29396364, Bug #93961)

  • 在具有IPv6地址解析功能的系统上,在连接时创建IPv6套接字失败会导致内存泄漏。(Bug #29374606, Bug #94384)

  • 在复制场景下,如果多个客户端同时执行XA提交XA回滚语句如果使用相同的XID值,则可能发生复制不一致。(Bug #29293279, Bug #94130)

  • 参数的TIMESTAMPADD ()函数可以对准备好的语句进行反转。(错误# 29268394)

  • 默认角色选择创建用户语句没有写入二进制日志。(Bug #28948915, Bug #93252)

  • 使用无效的memcached插件变量设置从命令行启动服务器会导致服务器退出。(错误# 28575863)

  • 条款加载数据没有工作设定几何不空列。(Bug #28460369, Bug #91893)

  • 在Windows 8及更高版本中keyring_aws插件无法与Amazon KMS服务器通信。(错误# 28377961)

  • INFORMATION_SCHEMA表和显示列当视图上的查询有多个查询块与联盟操作符。(Bug #28278220, Bug #91486)

  • 在Debian,长InnoDB启动时的恢复时间可能导致系统服务启动失败。默认的systemd服务超时现在被禁用(与RHEL一致),以防止这种情况发生。(Bug #28246585, Bug #91423)

  • thread_pool启用插件,sys.processlist而且sys.session视图显示线程名,而不是实际的用户名。(Bug #25906021, Bug #85976)

  • delete_latencysys.schema_index_statistics视图不正确地引用了SUM_TIMER_INSERT的“性能架构”列table_io_waits_summary_by_index_usage表而不是SUM_TIMER_DELETE列。(错误# 25521928)

  • 的输出中sys.diagnostics ()过程,延迟列的user_summary_by_file_io_type视图被错误地显示为原始皮秒,而不是格式化的值。(错误# 25287996)

  • MySQL企业加密功能可能对非DH密钥应用DH (Diffie-Hellman)方法,导致不可预知的结果或服务器退出。(错误# 22839007)

  • 的密码屏蔽未完成显示PROCESSLIST和一些INFORMATION_SCHEMA和性能模式表。(错误# 20712046)

  • 如果启用了严格的SQL模式,则STR_TO_DATE ()函数没有正确地处理只有时间部分的值。感谢Daniel Black的贡献。(Bug #18090591, Bug #71386)

  • 一个查询使用最大的()在哪里子句在某些情况下可能无法返回预期的行或引发虚假错误。(Bug #96012, Bug #29963278)

  • 显式地设置sort_buffer_size达到最大值或接近该值会导致某些查询失败,出现内存不足错误。(Bug #95969, Bug #29952775)

    参考文献:参见Bug #22594514。

  • 晚些时候筛选,如果查找键至少包含一个索引,则避免索引查找,不为向后索引扫描执行,但为向前索引扫描执行。(Bug #95967, Bug #29954680)

  • 使用函数,例如IFNULL ()ABS ()在函数索引中导致了这个错误值超出函数索引的范围…当一个无符号用作此类函数实参的列包含的值超过了相应的有符号整数类型的值。(Bug #95881, Bug #29934661)

  • 的解析过程IFNULL ()函数不同于所有其他函数的派生函数情况下操作,包括合并(),这导致为某些数值表达式生成不正确的长度信息。(Bug #94614, Bug #29463760)

  • 查询使用UNION ALL……限制1计算的行数过多,如所示Handler_read_key而且Handler_read_next.(Bug #79340, Bug #22292995)

    参考文献:参见Bug #79040, Bug #22158368, Bug #92994, Bug #28866942。

  • -DWITH_EXAMPLE_STORAGE_ENGINE = 1CMake选项被忽略了,但不应该被忽略。如果-DWITH_EXAMPLE_STORAGE_ENGINE = 0是给定的,例子存储引擎是作为插件构建的。(Bug #70859, Bug #17772560, Bug #30133062)

    参考文献:参见Bug #18324650。