皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

MySQL 8.0.33发布

MySQL 8.0.33发布

审计日志说明
MySQL企业审计以前使用mysql系统数据库中的表来持久地存储过滤器和用户账户数据。为了增强灵活性,新的audit_log_database服务器系统变量现在允许在服务器启动时指定全局模式命名空间中的其他数据库。mysql系统数据库是表存储的默认设置。(WL #15500)

编译说明
Microsoft Windows:为Visual Studio 2017及更高版本添加了MSVC代码分析支持。这增加了一个新的MSVC_CPPCHECK(默认为OFF)CMake选项,可以启用或禁用对当前目录及其子目录的这种分析。(Bug #34828882)

当用GNU编译器或clang构建MySQL时,对于curl版本大于7.86的情况,将curl的弃用警告降级为-Wno-error。(Bug #35111625)

在macOS上,在链接curl接口时增加了-framework CoreFoundation和-framework SystemConfiguration,以便根据需要与共享系统库链接。(Bug #35104962)

用库接口替换了MY_INCLUDE_SYSTEM_DIRECTORIES宏。(Bug #35018072, Bug #35028089, Bug #35072295)

改进了CMake代码,以支持替代链接器。(Bug #34963568)

从构建系统中删除了废弃的Docs/mysql.info文件。(Bug #34960126)

在strings/和mysys/目录下增加了一个顶级的.clang-tidy文件和相关的.clang.tidy文件。还启用了compdb支持,以便在头文件上使用clang-tidy。(Bug #34917075)

删除了几个未维护或未使用的C++源文件,如uca-dump和uctypedump的功能。(Bug #34898978)

增加了一个CMake编译选项,以便在命令行编译时启用GCC和Clang的彩色编译器输出。要启用该选项,请将 -DFORCE_COLORED_OUTPUT=1 传给 CMake。(Bug #34897192)

在Windows上,如果发现第三方库的相关.dll文件,也会为其安装.pdb文件。(Bug #34863555)

Enterprise Linux 8 和 Enterprise Linux 9 的构建现在使用 GCC 12 而不是 GCC 11。(Bug #34829151)

使用 -static-libgcc -static-libstdc++ 构建时,现在也会按要求用静态库构建捆绑的 protobuf。

感谢Alex Xing的贡献。(Bug #110216, Bug #35123848)

组件说明
INSTALL COMPONENT现在包括SET子句,它可以在安装一个或多个组件时设置组件系统变量的值。这个新子句减少了与其他分配变量值的方式有关的不便和限制。有关使用信息,请参阅INSTALL COMPONENT语句。(WL #10916)

弃用和删除说明
用户定义的校对(参见向字符集添加校对)现在已被废弃。以下任何一种情况都会导致警告被写入日志:

在SQL语句中,任何出现COLLATE和用户定义的排序名称的情况都会导致警告。

将用户定义的拼写名称作为collation_server、collation_database或collation_connection的值。

你应该期待在未来的MySQL版本中删除对用户定义的排序的支持。(WL #14277)

MySQL企业版注意事项
MySQL企业版现在提供基于组件的数据屏蔽和去标识能力,而不是基于MySQL 8.0.13中引入的插件库。组件实现提供了管理字典的专用权限,并扩展了特定类型的列表,以包括:

加拿大社会保险号码

英国国家保险号

国际银行账户号码

全球唯一识别码(UUID)

一个改进的基于表的字典注册表取代了插件使用的基于文件的字典。关于组件和插件实现之间的差异的总结,请参见数据掩码组件与数据掩码插件。现有的插件用户应在安装新的MySQL企业数据屏蔽和去识别组件之前卸载服务器端插件并放弃其可加载功能。(Bug #33851601, WL #12641)

性能模式说明
本版本中增加了性能模式服务器遥测跟踪服务。该接口为插件和组件提供了检索与SQL语句寿命相关的通知的方法。

关于这个接口的更多信息,请参见MySQL源代码文档中的服务器遥测跟踪服务部分。

增加了以下内容:

状态变量Telemetry_traces_supported。是否支持服务器遥测跟踪。(布尔值)

TELEMETRY_ACTIVE列被添加到线程表中。表示该线程是否有一个活跃的遥测会话连接。

(WL #15059)

增加或改变的功能
重要变化:对于捆绑了OpenSSL库的平台,用于MySQL服务器的链接OpenSSL库已经更新到1.1.1t版本。在OpenSSL 1.1.1t版本中修复的问题在https://www.openssl.org/news/cl111.txt。(Bug #35092429)

InnoDB:InnoDB现在支持并行索引构建,这提高了索引构建性能。特别是,现在多线程加载排序的索引条目到B树中。以前,这个动作是由一个单线程执行的。(WL #14772)

复制:作为改变MySQL产品中使用的旧术语的持续工作的一部分,在与MySQL复制有关的错误消息中,术语 “主”、”从 “和 “MTS “已分别被 “源”、”复制 “和 “MTA “取代。这包括与复制有关的 messages_to_clients.txt 和 messages_to_error_log.txt 中列出的所有错误信息;本任务不对其他情况下使用的信息进行这种替换。

参见MySQL 8.0错误信息参考,以了解更多信息。(Bug #108422, Bug #34594819, WL #14191)

复制:mysqlbinlog –start-position现在接受最大为18446744073709551615的值,除非还使用了–read-from-remote-server或–read-from-remote-source选项,在这种情况下最大为4294967295。(Bug #77818, Bug #21498994)

包含 curl 而不是链接到系统 curl 库的二进制包已经升级为使用 curl 7.88.1。(BUG #34828111)

使用带有DEFAULT(col_name)的生成列来指定一个命名列的默认值是不允许的,现在会发出错误信息。(Bug #34463652, Bug #34369580)

错误修正
NDB集群:在重复执行并发模式操作时,从NDB字典中打开一个表,偶尔会发生临时错误,但不会重试。 (Bug #34843889)

NDB集群:在迭代过程中,有序索引扫描在每个并发扫描的有序索引片段中保留一个游标位置。由于提交DML事务的结果,有序索引片段被修改和平衡,这可能需要扫描游标在树内被移动。当运行时配置了查询线程(AutomaticThreadConfig设置为1),多个线程可以访问相同的索引片段树结构,并且多个线程的扫描可以在相同的结构中拥有他们的游标。

目前的问题是由于在提交DML操作时移动扫描光标的逻辑中假设所有扫描光标都属于拥有索引片段的LDM线程,这不允许这种片段可能属于查询线程。(Bug #33379702)

参考文献:另见:Bug #32257063.

分区:对分区表的一些IN()查询并不总是正确处理。(Bug #34801284)

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

分区:使用INDEX_MERGE优化器提示的查询不是在所有情况下都能正确处理。(Bug #34797257)

复制:无法恢复其XIDs包含空字节的XA事务。(Bug #34918985)

复制:当binlog_order_commits设置为1时,对于任何两个事务和提交阶段的任何子步骤,首先被写入二进制日志的事务并不总是先执行子步骤,如预期。(Bug #34703698)

复制:二进制日志恢复过程没有报告所有可能的错误状态。(Bug #33658850)

复制:在CHANGE REPLICATION SOURCE TO SOURCE_CONNECTION_AUTO_FAILOVER=1之后,故障转移在日志中产生了一些误导性的警告,暗示有问题,而实际上条件是这种故障转移的预期条件。这些日志信息已被相应更新。(Bug #32135376)

复制:当一个事务失败时,作为一个副作用,与复制数据存储库有关的不相干的错误信息被写入日志。现在,在这种情况下,我们会抑制这种错误信息,因为它们与失败的事务或其原因的问题没有直接关系。(Bug #19820134)

复制:将binlog_order_commits设置为OFF可能导致在下一个二进制日志文件的Previous_gtids事件中错过GTID。

我们感谢Yewei Xu和腾讯团队的贡献。(Bug #109485, Bug #34930969)

复制:纠正了ER_RPL_REPLICA_ERROR_RUNNING_QUERY的错误信息文本中建议的SQL语句。

我们感谢Dan McCombs的贡献。(Bug #109154, Bug #34822612)

复制:散列扫描建立一个变化的散列,扫描目标表或索引,并对当前条目应用任何匹配的变化。在构建阶段,它只使用之前的图像,而跳过任何之后的图像。在某些情况下会出现问题,因为生成的列是为(跳过的)后的图像计算的,导致复制错误。这个问题通过不再计算生成列来解决,因为在仅寻求的调用中,如哈希扫描,不再计算生成列。

我们感谢dc huang的贡献。(Bug #107366, Bug #34198907)

复制:在某些罕见的情况下,有可能为一个会话设置gtid_mode=OFF,而另一个会话在WAIT_FOR_EXECUTED_GTID_SET()被这个第二会话中的用户发出后,仍在等待第一个会话的下一个GTID设置。这可能导致第二个会话无限期地等待该函数的返回。(Bug #99921, Bug #31505993)

组复制:并行访问性能模式replication_group_communication_information和replication_group_member_stats表有时会导致后续的组复制操作挂起。(Bug #34870181)

组复制:在某些情况下,组复制二级节点在清除中继日志时意外地关闭。(Bug #34397106)

组复制:当关闭组复制插件时,相关事件被报告到错误日志的顺序有时会导致混淆。为了消除任何疑虑,我们现在确保插件group_replication报告:插件’group_replication’已被停止。实际上是与关闭有关的最后一条日志信息,只有在所有其他与关闭插件有关的事件都被记录后才会被写入。 (Bug #109345, Bug #34887491)

Microsoft Windows:authentication_fido_client插件在认证过程中,如果无法在Windows客户端主机上找到FIDO设备,则停止响应。(Bug #34918044)

在某些情况下,CONVERT(utf8mb3_column USING UTF16)被拒绝,错误是无法将字符串’\x–…’从二进制转换成utf16。(Bug #35129361)

当在一个字符串列上连接两个表,并且其中一个表的列有一个额外的谓词,将其与一个时间性的文字进行比较时,恒定传播在某些情况下会错误地导致连接条件被修改,从而在比较字符串时使用时间性的语义而不是字符串。这导致从连接中返回不正确的结果。(Bug #35115909)

在准备好的语句中调用mysql_reset_connection()C API函数后返回的错误信息没有正确识别函数名称。(Bug #35107280)

修正了之前对窗口化函数问题的修复中的退步。

我们感谢Dmitry Lenev的贡献。(Bug #35061924)

参考文献:这个问题是一个退步的问题:Bug #34572136。

当替换变换中的子查询时,显示一个给定的查询块是否包含任何子查询的内部标志(PROP_SUBQUERY)在之后没有更新。(Bug #35060365)

当客户端使用认证插件时,将字符集设置为不允许的客户端字符集(ucs2、utf16、utf16le或utf32)可能导致意外行为。(Bug #35054579)

为了解决这个问题,我们现在在EXPLAIN ANALYZE和EXPLAIN FORMAT=TREE的输出中对数字进行了格式化,使得0.001-999999.5范围内的数字被打印为十进制数字,而超出这个范围的数字则使用工程符号打印(例如:1.23e+9, 934e-6)。此外,不再打印尾部的零,小于1e-12的数字被打印为0。

这有助于确保一致的精度,无论数字的值如何,并提高可读性,同时产生最小的四舍五入错误。(Bug #34990948)

NTILE()函数并不是在所有情况下都能正确工作。(Bug #34986665)

视图上的一些连接没有正确执行。(Bug #34985359)

当子查询包括重复的谓词时,将相关的标量子查询转换为派生表会导致InnoDB表的错误结果。这里显示了一个可能受此问题影响的查询的例子:

SELECT * FROM t1 WHERE ( SELECT t2.a FROM t2 WHERE t2.a = t1.a AND t2.a = t1.a ) > 0;

更多 MySQL :: MySQL 8.0 Release Notes :: Changes in MySQL 8.0.33 (2023-04-18, General Availability)