有些事件无法终止。以前,如果审计插件为不可终止事件返回非零状态,服务器将忽略该状态并继续处理该事件。但是,如果审计插件使用
my_message()
函数终止不可终止的事件,则会发生服务器退出。现在服务器使用 正确处理不可终止事件的终止my_message()
。(缺陷号 21458066)
-
不兼容 的更改:
mysql_options()
C API 函数有两个新选项,MYSQL_OPT_MAX_ALLOWED_PACKET
和MYSQL_OPT_NET_BUFFER_LENGTH
,它们设置客户端/服务器通信缓冲区的客户端最大大小,以及 TCP/IP 和套接字通信的缓冲区大小。(设置这些选项类似于设置max_allowed_packet
和net_buffer_length
系统变量。)每个选项名称现在也可以传递给mysql_get_option()
C API 函数以检索其值。有关详细信息,请参阅 mysql_options()和 mysql_get_option()。(未记录的)
mysql_get_parameters()
功能已被删除。尝试使用它的应用程序将出现链接错误,应修改为使用mysql_options()
andmysql_get_option()
代替。一个受影响的应用程序是 DBD::mysql,它是 Perl DBI 的 MySQL 驱动程序。升级到 DBD::mysql 4.033 或更高版本,其中包括对刚刚描述的 C API 更改的修复。(缺陷号 20821550)
参考资料:另请参阅:Bug #20686665。
-
以前,
mysql_thread_end()
每次mysql_thread_init()
调用都需要调用以避免内存泄漏。mysql_thread_init()
C API 内部已经重新实现,以减少必须由以下人员释放的信息量mysql_thread_end()
:对于未启用调试支持的发布/生产版本,
mysql_thread_end()
无需调用。对于调试版本,
mysql_thread_init()
为 DBUG 包分配调试信息(请参阅 DBUG 包)。mysql_thread_end()
每次调用都必须mysql_thread_init()
调用以避免内存泄漏。
(错误#11758368、错误#20621281、错误#21802367)
Microsoft Windows: 添加了对使用 Microsoft Visual Studio 2015 构建的支持。更改包括使用本机(在 VS 2015 中添加)timespec 库(如果存在)、重命名 lfind/lsearch 和 timezone/tzname 以避免重新定义问题、 默认设置为
TMPDIR
不再存在、弃用 以支持 ,并添加了 Wix Toolset 3.10 支持. (缺陷号 21657078)""
P_tmpdir
std::hash_map
std::unordered_map
服务器构建的 Boost 库的最低版本现在是 1.59.0。(错误#77960,错误#21567456)
-
MySQL 发行版现在包含一个
mysqlclient.pc
文件,该文件提供有关供 pkg-config命令使用的 MySQL 配置的信息。这使得 pkg-config可以用作 mysql_config的替代品,以获取编译 MySQL 应用程序所需的编译器标志或链接库等信息。有关详细信息,请参阅 使用 pkg-config 构建 C API 客户端程序。一个新的CMake选项可用于指定安装 文件的目录。默认值为 ,除非 以 结尾 ,在这种情况下首先删除。(错误#76131,错误#20637746)
INSTALL_PKGCONFIGDIR
mysqlclient.pc
INSTALL_LIBDIR/pkgconfig
INSTALL_LIBDIR
/mysql
已完成清理源代码库的工作,包括: 删除不需要的CMake检查;从源文件中删除未使用的宏;重组头文件以减少依赖项的数量并使它们更加模块化,删除没有定义的函数声明,用行业标准库中的等效函数替换本地编写的函数。
重要变更;复制: 在 MySQL 5.7 中,
binlog_max_flush_queue_time
MySQL 5.6 中引入的系统变量不再有任何作用。此变量现已弃用,并已标记为在未来的 MySQL 版本中最终删除。(缺陷号 21347087)mysql_install_db 的 shell 和 Perl 版本 已从 MySQL 发行版中删除。在 MySQL 5.7.5 中实现的mysql_install_db的可执行 C++ 版本 仍然存在,但仍然被弃用(使用mysqld --initialize代替)并将在未来的 MySQL 版本中删除。(漏洞 #21625471)
不再安装 已弃用
_r
的库版本 。libmysqlclient
(缺陷号 21311067)
-
对 的影响进行了两项更改
show_compatibility_56
:-
以前,当
show_compatibility_56=OFF
,从以下INFORMATION_SCHEMA
系统和状态变量表中进行选择时,会返回空结果和弃用警告:INFORMATION_SCHEMA.GLOBAL_VARIABLES INFORMATION_SCHEMA.SESSION_VARIABLES INFORMATION_SCHEMA.GLOBAL_STATUS INFORMATION_SCHEMA.SESSION_STATUS
这给不知道此类选择可能为空的应用程序造成了混淆:空结果和警告不足以表明需要迁移到相应的性能模式系统和状态变量表。
为了解决这个问题,从
INFORMATION_SCHEMA
系统和状态表中进行选择现在会产生错误,以更加明显地表明应用程序正在需要修改的条件下运行,以及问题所在。错误代码是ER_FEATURE_DISABLED_SEE_DOC
。错误消息指示哪个表被禁用以及show_compatibility_56
应查阅文档。 -
以前,当
show_compatibility_56=ON
,从以下 Performance Schema 状态变量表中选择时返回空结果:performance_schema.global_status performance_schema.session_status
这使得将应用程序从
INFORMATION_SCHEMA
状态变量表迁移到相应的性能模式表变得更加困难:从性能模式表中成功选择需要知道服务器来自 MySQL 5.7 和show_compatibility_56=OFF
.为了解决这个问题,从 Performance Schema 状态变量表中选择现在会产生相同的结果,而不管 的值
show_compatibility_56
。因此,只需要知道服务器来自 MySQL 5.7.9 或更高版本。(如果是,请从 Performance Schema 表中选择。否则,请从INFORMATION_SCHEMA
表中选择。)
有关影响
show_compatibility_56
和迁移问题的其他信息,请参阅服务器系统变量和 迁移到性能模式系统和状态变量表。(漏洞 #21606701) -
这些 Performance Schema 表现在是全球可读和可访问的,无需特权
SELECT
:global_variables
、、、 和 。此更改的含义是,不再需要对在. (漏洞 #21251297)session_variables
global_status
session_status
SHOW VARIABLES
SHOW STATUS
show_compatibility_56=OFF
-
show_compatibility_56
启用系统变量后,Last_query_cost
和Last_query_partial_plans
状态变量的报告值不正确 。show_compatibility_56
禁用系统变量后Created_tmp_tables
,Handler_external_lock
、 和Table_open_cache_%
status 变量的报告值不正确 。(错误#20483278、错误#21788549、错误#21788887) 之前,表中的
transaction
instrumentsetup_instruments
默认是禁用的,表中的events_transactions_current
andevents_transactions_history
consumerssetup_consumers
默认是启用的。这种设置是不一致的,并且启用消费者可能会让人觉得交易是默认检测的。现在,消费者也默认被禁用。要监控交易,请启用工具和适用的消费者。(错误#78311,错误#21780891)-
在
show_compatibility_56
禁用系统变量的情况下,如果在没有性能模式支持的情况下编译 MySQLSHOW VARIABLES
,SHOW STATUS
语句将失败。因此,没有 Performance Schema 就无法再进行编译。如果希望在没有特定类型的检测的情况下进行编译,可以使用以下CMake 选项来完成:DISABLE_PSI_COND DISABLE_PSI_FILE DISABLE_PSI_IDLE DISABLE_PSI_MEMORY DISABLE_PSI_METADATA DISABLE_PSI_MUTEX DISABLE_PSI_PS DISABLE_PSI_RWLOCK DISABLE_PSI_SOCKET DISABLE_PSI_SP DISABLE_PSI_STAGE DISABLE_PSI_STATEMENT DISABLE_PSI_STATEMENT_DIGEST DISABLE_PSI_TABLE DISABLE_PSI_THREAD DISABLE_PSI_TRANSACTION
例如,要在没有互斥检测的情况下进行编译,请使用该
-DDISABLE_PSI_MUTEX=1
选项配置 MySQL。(错误#78159,错误#21669500) -
Performance Schema 表被
session_account_connect_attrs
错误地更改为需要SELECT
特权。它不再需要特殊特权。(错误#77702,错误#21436364)参考资料:此问题是 Bug #14569746 的回归。
在
setup_timers
表中,CYCLE
ARM64 平台的计时器现已可用。(错误#77620,错误#21374923)-
Performance Schema 现在包括这些用于监视二进制日志和中继日志缓存文件上的 I/O 的工具:
wait/io/file/sql/binlog_cache wait/io/file/sql/binlog_index_cache wait/io/file/sql/relaylog_cache wait/io/file/sql/relaylog_index_cache
此外,默认值
performance_schema_max_file_classes
已从 50 增加到 80。(Bug #76225,Bug #20675180) -
Performance Schema 表现在
threads
包含一个THREAD_OS_ID
列,指示由底层操作系统定义的线程或任务标识符。例如,列值对应于 Windows 上的 Process Explorer 线程 ID 和gettid()
Linux 上的值。有关详细信息,请参阅 线程表。如果从早期版本升级到此 MySQL 版本,则必须运行mysql_upgrade(并重新启动服务器)以将此更改合并到
performance_schema
数据库中。
-
审计插件 API 已经过广泛修订,以支持将一般事件类型 (
MYSQL_AUDIT_GENERAL_CLASS
) 更精细地分解为更具体的事件。这使审计插件能够更准确地指示它们感兴趣的事件类型,并减少仅用于少数事件类型的插件的开销。API 现在还允许提前终止事件执行。有关详细信息,请参阅 编写审计插件。一般事件类型仍然可用,但已弃用,并将在未来的 MySQL 版本中删除。此外,
security_context
现在还提供插件服务。审计插件可以使用此服务来检查或修改与审计事件关联的线程的安全上下文。请参阅MySQL 插件服务。
对于基于 RPM 的包,用于创建数据目录 (
/var/lib/mysql
) 的权限已从 755 更改为 751。这收紧了数据目录权限,同时仍允许世界访问mysql.sock
该目录中的文件。(缺陷号 21066592)-
yaSSL 已升级到版本 2.3.8。
从旧版本升级修复了与线程池插件一起使用时的连接失败问题。(错误#20774956,错误#21888925)
-
新的
SHUTDOWN
SQL 语句可用。这为以前使用mysqladmin shutdown命令或mysql_shutdown()
C API 函数提供的相同功能提供了 SQL 级接口。请参阅SHUTDOWN 语句。该
mysql_shutdown()
函数和相应的COM_SHUTDOWN
客户端/服务器协议命令已弃用,并将在未来的 MySQL 版本中删除。相反,用于mysql_query()
执行SHUTDOWN
语句。
-
诸如
ST_MPointFromText()
和 之类ST_GeomFromText()
的接受 WKT 格式MultiPoint
值表示的空间函数现在允许值中的各个点用括号括起来。例如,以下两个函数调用都是有效的,而之前的第二个函数调用产生了错误:ST_MPointFromText('MULTIPOINT (1 1, 2 2, 3 3)') ST_MPointFromText('MULTIPOINT ((1 1), (2 2), (3 3))')
此外, 生成 WKT 格式结果的 函数(例如
ST_AsText()
和 )现在显示每个点都带有括号的值。(错误#54065,错误#11761559)ST_AsWKT()
MultiPoint
-
MySQL 发行版中包含的
sys
架构已更新至 1.5.0 版。此版本包括新功能:新的
diagnostics()
存储过程使 DBA 和其他支持人员能够收集诊断信息以调查 MySQL 实例性能。新的metrics
视图和statement_performance_analyzer()
存储过程为过程提供了支持基础diagnostics()
结构。-
以下
sys
模式视图现在为长时间运行的事务提供进度报告:processlist session x$processlist x$session
这些视图的
progress
列显示了支持进度报告的阶段的已完成工作百分比。有关详细信息,请参阅 sys 模式进度报告。 sys
模式对象现在有 一个DEFINER
。'mysql.sys'@'localhost'
(以前DEFINER
是'root'@'localhost'
。)使用保留mysql.sys
帐户可以避免在 DBA 重命名或删除root
帐户时发生的问题。
sys
schema 1.5.0 还包括对几个问题的修复:在某些情况下,架构和存储函数会返回不正确 的
sys
结果ps_is_instrument_default_enabled()
。ps_is_instrument_default_timed()
在早期 MySQL 5.7 版本中添加到 Performance Schema 表 的
ENABLED
和 列导致架构 存储过程不起作用。HISTORY
setup_actors
sys
ps_setup_reset_to_default()
模式中事件计时信息的
sys
处理已更新,以处理 MySQL 5.7.8 中性能模式事件计时列的更改。mysql_upgrade先前检查模式中的确切对象计数值
sys
以确定是否需要升级。如果添加了本地对象,则重新安装会删除这些对象。现在它至少检查预期数量的对象。
如果从早期版本升级到此 MySQL 版本,则必须运行mysql_upgrade以将这些更改合并到
sys
架构中。感谢 Daniël van Eeden、Jesper Wisborg Krogh、Shlomi Noach 和 Morgan Tocker 对本次更新所做的贡献。(错误#78115、错误#21647101、错误#77927、错误#21550271、错误#78720、错误#21966366)
-
不相容的变化;InnoDB: 为了更好地管理重做日志格式更改,第一个重做日志文件 (
ib_logfile0
) 的重做日志标头现在包含一个格式版本标识符和一个文本字符串,用于标识创建重做日志文件的 MySQL 版本。一个新的布尔配置选项
innodb_log_checksums
,取代了该innodb_log_checksum_algorithm
选项。innodb_log_checksums=ON
启用CRC-32C
校验和,使其成为重做日志页面唯一支持的校验和。此补丁还从重做日志标头和检查点页面中删除了未使用的字段。
由于此补丁引入了重做日志格式更改,从 MySQL 5.7.9 及更高版本升级或降级需要干净关闭,并且在某些情况下,需要删除现有的重做日志文件。有关此更改的说明,请参阅 MySQL 5.7中的更改和 降级说明。(错误#21759424、错误#78275、错误#21752674)
-
重要变更;InnoDB:
DYNAMIC
替换COMPACT
为InnoDB
表的隐式默认行格式。一个新的配置选项,innodb_default_row_format
指定默认的InnoDB
行格式。允许DYNAMIC
的值包括(默认值)COMPACT
、 和REDUNDANT
。在此版本之前,行格式仍然是默认行格式,以确保与MySQL 5.1 及更早
COMPACT
版本的旧版本兼容。InnoDB
现在 MySQL 5.1 已经到达其产品生命周期的末尾,较新的DYNAMIC
行格式成为默认格式。有关DYNAMIC
行格式优点的信息,请参阅 动态行格式。新创建的表使用由未明确指定选项或使用选项
innodb_default_row_format
时 定义的行格式 。ROW_FORMAT
ROW_FORMAT=DEFAULT
ROW_FORMAT
如果明确指定 了选项,则现有表会保留其当前行格式 。如果ROW_FORMAT
未明确指定选项或ROW_FORMAT=DEFAULT
使用了选项,则任何重建表的操作也会默默地将表的行格式更改为 定义的格式innodb_default_row_format
。有关详细信息,请参阅 定义表的行格式。 -
重要变更;JSON: 引入了
->
JSON 列路径运算符。 现在支持作为 的同义词 ,其中 是 列,并且 是有效的 JSON 路径。column
->path
JSON_EXTRACT(
column
,path
)column
JSON
path
表达式 with
->
,就像它的等价物 usesJSON_EXTRACT()
instead 一样,可以用来代替列标识符,只要列标识符可以出现在有效的 SQL 语句中。例如,以下CREATE TABLE
andSELECT
语句是有效的:CREATE TABLE t1 ( a JSON, b INT, g INT GENERATED ALWAYS AS (a->"$.id"), h INT GENERATED ALWAYS AS (a->"$.storeid"), INDEX i (g), INDEX j (h) ); SELECT CONCAT(a->"$.fname", ' ', a->"$.lname") AS name, a->"$.id" AS id, a->"$.storeid" AS store FROM t1 WHERE g > 500 ORDER BY a->"$.storeid", a->"$.lname";
列路径表达式可用于在
SELECT
列列表或任何 SQL 语句中的WHERE
,ORDER BY
或GROUP BY
子句中读取的任何列值;此类表达式不能用于设置值。当一条 SQL 语句包含一个或多个使用
->
表示法的表达式时,这些表达式中的每一个都被翻译成一个等效的表达式,该表达式使用该JSON_EXTRACT()
函数来代替。这可以在EXPLAIN
when used on such a statement 的输出中看到。与 一样
JSON_EXTRACT()
,->
运算符返回时就NULL
好像没有找到任何有效路径的匹配值一样。有关
->
和 的更多信息JSON_EXTRACT()
,请参阅 搜索 JSON 值的函数。有关 JSON 路径支持的信息,请参阅 搜索和修改 JSON 值。有关其他信息和示例, 另请参阅索引生成的列以提供 JSON 列索引。 InnoDB: 一个新的
INNODB_METRICS
服务器操作计数器 (innodb_dict_lru_count
) 计算从表缓存 LRU 列表中逐出的表数。感谢 Daniël van Eeden 提供补丁。(缺陷 #21682332,缺陷 #78190)-
InnoDB: 新
innodb_numa_interleave
的只读配置选项允许您启用 NUMA 交错内存策略以分配InnoDB
缓冲池。启用时innodb_numa_interleave
,NUMA 内存策略设置为MPOL_INTERLEAVE
用于 mysqld进程。InnoDB
分配缓冲池 后NUMA
内存策略设置回MPOL_DEFAULT
。此选项仅在支持 NUMA 的 Linux 系统上可用。感谢 Stewart Smith 提供的补丁。(错误#18871046,错误#72811)
JSON: JSON 值更新函数
JSON_APPEND()
、JSON_SET()
、JSON_REPLACE()
和JSON_INSERT()
现在将 SQLNULL
值视为 JSON 空文字,这与JSON_OBJECT()
和JSON_ARRAY()
。(错误#77733,错误#21450922)MySQL 发行版现在包括这些头文件,因为 它们
my_sys.h
依赖于它们 :my_thread_local.h
、、、、 。(缺陷号 21909332)thr_cond.h
thr_mutex.h
thr_rwlock.h
MySQL Server RPM 包现在已过时 MySQL Connector C。安装 MySQL Server 会导致旧
libmysqlclient
的 MySQL Connector C 包被删除,并用当前的libmysqlclient
. (缺陷号 21900800)RPM
.spec
文件已更新,因此从源 RPM 包构建的 MySQL 服务器将包含适当的文件以利用操作系统 NUMA 功能。这引入了对libnuma.so.1
. RPM 和yum 检测到这一点,如果没有安装该库,则拒绝安装。(漏洞 #21775221)该
JSON_APPEND()
函数已重命名为JSON_ARRAY_APPEND()
. (缺陷号 21560934)当
default_storage_engine
或default_tmp_storage_engine
系统变量设置为disabled_storage_engines
系统变量中命名的禁用存储引擎时,服务器现在会生成警告。(漏洞 #21405865)表空间的元数据锁定已得到扩展,因此对于引用多个表空间的 DDL 语句,将在所有使用的表空间上获取元数据锁。(缺陷号 21376265)
单元测试现在使用 Google Mock 1.7 而不是 1.6。(漏洞 #21215389)
添加了对使用 Solaris Studio 5.13 构建的支持。(缺陷号 21185883)
mysql_ssl_rsa_setup现在默认情况下噪音较小。仅当给出
openssl
时才显示命令的 输出--verbose
(漏洞 #21024979)MEMORY
通过缓存计算的哈希值,减少 了存储表的插入开销。(错误#78480,错误#21866029)mysqld --initialize 写入错误日志的初始密码消息已从 a 减少
[Warning]
到 a[Note]
。(错误#78182,错误#21680457)mysqlpump现在支持一个
--version
选项。(错误#77894,错误#21534277)不需要的脚本和测试文件已从
tests
目录中删除,该目录已重命名为testclients
. (错误#77807,错误#21490075)列中的性能模式摘要
DIGEST_TEXT
已...
附加到末尾以指示语句何时超过最大语句大小并被截断。现在也对SQL_TEXT
列中的语句文本值执行此操作。(错误#75861,错误#20519832)mysql_upgrade的 输出现在不那么嘈杂,信息量更大。(错误#59077,错误#11766046)
-
重要变更;创新数据库;分区: 无法升级现有分区表以使用
InnoDB
MySQL 5.7.6 中为表实现的本机分区。此修复程序增加了对mysql_upgrade和 mysqlInnoDB
客户端的支持,以升级在以前版本中创建的分区ha_partition
处理程序,改为使用InnoDB
本机分区。mysql_upgrade现在检查
InnoDB
使用通用处理程序创建的所有表ha_partition
并尝试将它们升级到InnoDB
本机分区。在mysql客户端中,可以使用此版本中实现的语句将 5.7.6 之前的分区
InnoDB
表逐个升级为本机分区 。ALTER TABLE ... UPGRADE PARTITIONING
(错误#20727344,错误#76374)
重要变更;复制: and
START SLAVE
语句STOP SLAVE
不能再用于group_replication_recovery
通道。有关详细信息,请参阅 复制通道。(缺陷号 21680074)重要变更;复制: 当使用单线程从站时,applier 线程的状态现在作为
replication_applier_status_by_worker
表的一部分报告,而不是replication_applier_status_by_coordinator
. 这意味着replication_applier_status_by_coordinator
当使用单线程从站时它现在是空的;应该注意的是,多线程从站的此类报告没有改变,并继续显示在该表中。(缺陷 #74765,缺陷 #20001173)创新数据库;Microsoft Windows: 尝试在 Windows 根驱动器上创建通用表空间数据文件导致错误。(错误#21419888,错误#77676)
创新数据库;Microsoft Windows:
lower_case_table_names=0
在不区分大小写的文件系统上进行 设置 使用错误的字母大小写运行操作。当尝试在 不区分大小写的文件系统上启动服务器时,现在会打印一条错误消息并退出服务器。(缺陷 #20198490,缺陷 #75185)INSERT INTO ... SELECT ... FROM
tbl_name
tbl_name
--lower_case_table_names=0
InnoDB: 撤消日志包含有关虚拟列和虚拟列索引的信息不足,这可能导致在添加或删除虚拟列时服务器退出。因此,
innodb_fast_shutdown=0
在从 MySQL 5.7.8 执行就地升级或降级之前,需要缓慢关闭(使用 )。有关详细信息,请参阅 升级 MySQL。(缺陷 #21869656,缺陷 #78489)InnoDB:
ALTER TABLE
在虚拟列上创建索引 的表重建(缺陷 #21847170,缺陷 #78452)InnoDB:
SELECT ... FOR UPDATE
对具有虚拟生成列的表 的InnoDB
为覆盖二级索引扫描不必要地检索了一个非索引虚拟列。(缺陷号 21827963)-
InnoDB:由于不正确的撤消日志记录大小计算
ROW_FORMAT=DYNAMIC
或 时创建具有大行的表失败ROW_FORMAT=COMPRESSED
相同的操作通过ROW_FORMAT=COMPACT
或ROW_FORMAT=REDUNDANT
。ROW_FORMAT=DYNAMIC
如果禁用,ROW_FORMAT=COMPRESSED
现在允许在 DDL 时违反行长度 。innodb_strict_mode
(错误#21816041,错误#78392) InnoDB: 在索引前缀长度超过最大长度的虚拟生成列上添加索引导致服务器退出。(漏洞 #21812026)
InnoDB: 崩溃恢复后发生内存泄漏。分配的内存
fil_space_read_name_and_filepath()
未释放。(漏洞 #21811321)InnoDB: 更改虚拟生成列的数据类型或计算方法导致错误。(漏洞 #21810004)
InnoDB: 创建空间索引时提出了一个断言。
InnoDB
未能对空间索引列之前的虚拟列进行计数。(缺陷号 21807340)InnoDB: MySQL 5.7.5 中的表空间发现修改包括删除与
MLOG_FILE_CREATE2
重做日志记录相关的代码。结果,重做日志没有包含足够的文件创建信息。(缺陷 #21801423,缺陷 #78363)InnoDB: 重做日志没有提供在并发 DDL 操作期间为索引页写入禁用重做日志记录的指示。因此,外部热备份工具可能会产生损坏的备份。(缺陷 #21796691,缺陷 #78351)
InnoDB: 在调试版本中,恢复在透明页面压缩测试期间断言。双写缓冲区中的撕裂页面导致 LSN 调试检查失败。(缺陷号 21796092)
InnoDB: 在分区表上创建虚拟生成列导致服务器退出。(缺陷 #21790751,缺陷 #78326)
InnoDB:
numactl
在构建包含 NUMA 内存策略支持的 MySQL 版本时,构建主机上 的旧版本(缺陷号 21785074)InnoDB:
SELECT .. FOR UPDATE
对索引虚拟生成列 的(缺陷号 21775459)InnoDB: 表空间标识符 (
space_id
) 被记录两次以用于MLOG_TRUNCATE
重做日志记录。(缺陷号 21744589)InnoDB: 崩溃恢复发出了无效的错误消息,指示
isl
文件无法打开或不正确。(缺陷号 21691438)InnoDB: Monitor 显示了一个信号量等待时间长的互斥体 的
InnoDB
不正确的互斥体创建信息。(错误#21682997,错误#78179)InnoDB:函数 中的错误消息格式已更正
os_file_write_page()
。(错误#21681433,错误#78184)InnoDB: 该
i_s_dict_fill_sys_tablespaces()
函数可以在打印错误消息之前释放与文件名关联的内存。(错误#21680518,错误#78180)InnoDB: 在调试版本中,扫描和应用的重做日志记录现在在
--debug=d,ib_log
传递给 mysqld时使用字符串标识符而不是数字标识符打印。例如,rec MLOG_2BYTES
现在打印而不是rec 2
. (错误#21664268,错误#78148)InnoDB:
InnoDB
减少了页面压缩功能进行 的系统调用(漏洞 #21654695)-
InnoDB:当遇到不完整的记录时, 该
recv_parse_log_rec
函数返回重做日志记录的长度而不是0MLOG_CHECKPOINT
。(错误#21640085,错误#78058)参考资料:此问题是 Bug #17798076 的回归。
InnoDB: 在调试版本中,
MATCH() AGAINST()
子句中的括号不匹配引发了全文解析器断言。(缺陷号 21638907)InnoDB: 添加了调试代码以避免在 Valgrind 测试期间出现双写缓冲区断言。(漏洞 #21631197)
InnoDB: 改进了日志消息,以帮助识别添加回滚段时可能发生的空间不足错误。(缺陷号 21629618)
InnoDB: 在调试版本中,在
innodb_log_checkpoint_now
表重建ALTER TABLE
操作时启用调试选项可能会导致无限循环。(错误#21628087,错误#78056)InnoDB:
UNIV_INLINE
没有为dict_table_has_indexed_v_cols
函数定义。(缺陷 #21628058,缺陷 #78055)InnoDB: 不支持将虚拟列数据类型更改为就地操作。(缺陷号 21617377)
InnoDB: 排序被
ALTER TABLE
更改主键并删除前一个主键的最后一列的语句跳过。(错误#21612714,错误#78020)InnoDB: 在恢复期间,无效
isl
文件被视为丢失重做日志isl
中记录中定义的文件位置打开表空间如果文件无效MLOG_FILE_*
,恢复将不再打开表空间isl
(错误#21577278,错误#77986)InnoDB:删除 了提供旨在减少自适应哈希索引搜索闩锁 (
btr_search_latch
) 争用的超时机制的代码。在 MySQL 5.7.8 中引入自适应哈希索引搜索系统分区后,该代码已过时。(缺陷 #21569876,缺陷 #77957)InnoDB: 该
COMPRESSION
选项在SHOW CREATE TABLE
输出中显示不正确。(缺陷 #21557723,缺陷 #77940)InnoDB: 不
innodb_data_file_path
匹配引发断言,使用对于指定页面大小来说太小的数据文件大小初始化数据库也是如此。(漏洞 #21551464)InnoDB: 添加了检查以防止访问处于不一致状态的全文索引表。(缺陷号 21529012)
InnoDB:
DROP INDEX
导入 在源服务器上操作 更改的表空间时发生架构不匹配错误(缺陷 #21514135,缺陷 #77659)InnoDB: 在前面的列上添加全文索引后在虚拟生成的列上创建索引会引发断言。(缺陷号 21478389)
InnoDB: 对于具有
DYNAMIC
或COMPRESSED
行格式的表,为虚拟列记录了比必要更多的数据。(缺陷号 21477535)InnoDB: 一个
INSERT
操作提出了一个btr_search_enabled
断言。断言代码过于严格。(缺陷号 21457373)InnoDB: 重新加载空表时被逐出的表会导致
AUTO_INCREMENT
值被重置。(缺陷 #21454472,缺陷 #77743)InnoDB:操作 期间崩溃
TRUNCATE TABLE
导致服务器在启动时退出。(漏洞 #21451922)InnoDB:删除在 MySQL 数据目录之外创建 的
.isl
通用表空间时未删除。(错误#21446772,错误#77724)-
InnoDB:
REPEATABLE READ
在事务隔离级别 下发生不一致读在同一行上操作的事务以错误的顺序从事务 ID 列表中删除。(缺陷 #21433768,缺陷 #77699)参考资料:此问题是 Bug #17320977 的回归。
InnoDB: 禁用自适应哈希索引功能后,不必要地获取并释放自适应哈希索引锁存器。(缺陷号 21407023)
InnoDB:对具有在虚拟列上定义的索引的表 的
ALTER TABLE
操作错误地修改了虚拟列的数据。(错误#21376546,错误#77628)InnoDB: 与虚拟列相关的清除操作引发了断言。(缺陷号 21374258)
InnoDB: 在分区表上,在生成的列上创建索引会引发断言。(缺陷号 21372331)
InnoDB: 由于内存已满情况,在线调整缓冲池的大小引发了断言。(错误#21348684,错误#77564)
InnoDB:
ALTER TABLE ... IMPORT TABLESPACE
带有innodb_page_size=4K
并ROW_FORMAT=DYNAMIC
引发断言 的(缺陷 #21341030,缺陷 #77540)InnoDB: 对于空间索引,
InnoDB
在撤消日志记录中不必要地存储了 3072 字节的前缀,而不仅仅是最大边界矩形 (MBR)。对于具有外部存储数据的列,前缀和 MBR 都会被记录。(缺陷 #21340268,缺陷 #77537)InnoDB:
init_ftfuncs()
删除了 无效(缺陷号 21300774)InnoDB: 内存分配完整性检查已添加到 memcached代码中。(缺陷号 21288106)
InnoDB: 不正确的引用计数导致
TrxInInnoDB
构造函数挂起。 在销毁调整引用计数innobase_close_connection()
的对象之前释放事务对象TrxInInnoDB
(缺陷号 21280816)-
InnoDB: 重新引入
SHOW ENGINE INNODB MUTEX
功能的 MySQL 5.7.8 补丁导致性能下降。(缺陷号 21266784)参考资料:另请参阅:Bug #77314、Bug #21238953。
InnoDB: memcached命令
flush_all
引发断言。从断言代码中调用了启动事务的函数。(错误#21239299,错误#75199)InnoDB: 当高优先级事务等待受害者事务退出而受害者事务等待异步回滚完成时,发生关闭挂起。(漏洞 #21143276)
InnoDB: ARM64 上发生数据损坏。设置或取消设置锁定字时,GCC 内置程序未发出正确的围栏。(缺陷 #21102971,缺陷 #76135)
InnoDB: 服务器关闭延迟等待清除线程退出。为避免此问题,减少了调用
trx_purge()
次数,并将trx_purge()
批处理大小减少到 20。(缺陷 #21040050)InnoDB: 在
READ COMMITTED
模式下,REPLACE
对唯一二级索引的操作导致约束冲突。感谢 Alexey Kopytov 提供的补丁。(缺陷 #21025880,缺陷 #76927)InnoDB: 该
IBUF_BITMAP_FREE
位表示叶页中的可用空间多于实际可用空间。(缺陷号 20796566)InnoDB: 在恢复崩溃的数据库之前移动数据目录导致在 MySQL 数据目录之外创建的 file-per-table 表空间的表空间发现失败。(缺陷 #20698468,缺陷 #76308)
InnoDB: 调试
innodb_buf_flush_list_now
设置无法将所有脏页刷新到磁盘。(缺陷号 20582189)InnoDB: 一个
ALTER TABLE ... ADD FULLTEXT INDEX
操作提出了一个断言。线程试图使用在回滚操作完成之前正在回滚的较低优先级事务。(漏洞 #20481175)InnoDB:
ALTER TABLE
在对引用表执行并发 DML 操作期间,在具有级联外键约束的引用表上运行操作会导致引用完整性丢失 。(缺陷号 20367116)-
InnoDB: 服务器无法以
innodb_force_recovery
大于 3 的设置InnoDB
。在应用重做日志之前设置为只读模式。DROP TABLE
现在支持innodb_force_recovery
大于 3 的设置。(缺陷 #19779113) InnoDB: 该
trx_sys_read_pertable_file_format_id()
函数报告了错误的文件格式。(漏洞 #19206671)InnoDB:
mysql_system_tables_fix_for_downgrade.sql
从 MySQL 安装目录中删除了用于在从 MySQL 5.7.6 或更高版本降级时促进系统表更改 的 该脚本不再对所有降级路径有效。有关详细信息,请参阅 降级注释。(错误#78259,错误#21753832)InnoDB: 使用索引条件下推 (ICP) 的表上的虚拟生成列导致断言。(错误#77842、错误#21507796、错误#21478287)
打包; OS X:在 OS X 上安装期间 使用
user=mysql
不允许mysql
安装数据库。为解决此问题,OS X 软件包现在--no-defaults
在创建此数据库时使用该选项。这也意味着my.cnf
系统上有文件不再影响安装。(缺陷号 21364902)分区:
ALTER TABLE
未正确执行针对未分区表 的失败分区相关操作的错误处理分区:
ALTER TABLE
从存储过程执行时,并不总是能正确处理由RANGE
. (错误#77333、错误#16613004、错误#21246891)Replication: group replication applier 通道不
DATABASE
支持slave_parallel_type
; 启动组复制时,会明确检查并正确处理。但是,仍然可以在稍后的某个时间点通过增加slave_parallel_workers
从属 SQL 线程停止时的值来间接更改此值,这会导致应用程序因错误而失败。为解决此问题,slave_parallel_type
forgroup_replication_applier
以确保LOGICAL_CLOCK
无论何时将slave_parallel_workers
大于 0,而不仅仅是在首次启动组复制时将其设置为。(缺陷号 21798804)复制: 这
binlog_error_action=ABORT_SERVER
是 MySQL 5.7.7 及更高版本中的默认设置,用于更多错误情况。该行为已调整为生成核心转储,以提高故障排除的可能性。(缺陷 #21486161,缺陷 #77738)复制: 在运行时,某些
Gtid_set
对象可以使用等于 0(无效)的 Performance Schema 互斥键进行检测,因为在实际未提供互斥键时将其用作有效默认值。这允许在没有有效密钥的情况下创建这些对象,从而导致在使用它们时出现更多问题。(漏洞 #21485997)复制: 使用 运行服务器时
gtid_mode=ON
,DELETE
aMEMORY
未正确写入二进制日志。(漏洞 #21045848)复制:
ER_CANT_USE_AUTO_POSITION_WITH_GTID_MODE_OFF
没有使用正确的格式报告错误。(缺陷号 20545943)-
复制: 当转储线程在转储不活动的二进制日志时被杀死时,此日志中的某些事件可能会被跳过,因此不会被复制。(错误#78337,错误#21816399)
参考资料:另请参阅:Bug #74607、Bug #19975697。
复制: XA 事务可能导致断言条件
XA COMMIT
;发生这种情况是因为内部事务状态没有在XA PREPARE
和XA COMMIT
或XA ROLLBACK
,因为这些操作构成 XA 下的单独事务。此外,XA ROLLBACK
在某些情况下,报表处理不当。(错误#78264,错误#21755890)复制: Group Replication 插件和 Performance Schema 引擎之间的接口使用了一种传递给服务器的内存分配,并且在插件和
performance_schema
表之间传递信息时是潜在的问题来源。此接口的实现已重新设计,以避免在共享数据时执行此类内存分配。(错误#78263,错误#21755699)复制: 工作线程忽略了为每个通道设置的 MTS 子模式,它继续读取和使用为所有从属通道设置的全局标志。当协调器属于一种类型而其工作人员属于另一种类型时,这可能会导致错误。(错误#77763,错误#21464737)
复制: 当复制从站仅被授予特权时,复制从属可能会因为没有足够的特权而失败
REPLICATION SLAVE
。(缺陷 #77732,缺陷 #21455603)-
复制: 状态变量
Slave_open_temp_tables
跟踪复制从站打开的临时表的数量。如果启用了多源复制,它是所有通道的临时表总数。此修复解决了与此变量相关的以下问题:RESET SLAVE FOR CHANNEL
将 的值强制channel
Slave_open_temp_tables
为 0;如果其他一些复制通道打开了临时表,但后来被删除,则该值会变成一个大的负值 ( )。这也会在发出 or 语句时导致虚假或错过警告。1 - 232
STOP SLAVE
CHANGE MASTER TO
-
在这种情况下修改的内部函数
Slave_open_temp_tables
依赖于两个不正确的假设:-
当未启用多线程从属时,变量仅由一个线程更新,这在多源复制的情况下是不正确的。
非原子操作对于单个写入器和多个读取器是安全的,这对于 MySQL 支持的某些平台来说不一定是正确的。
-
(错误#77585,错误#21357008)
-
复制: 警告“@@SESSION.gtid_executed”已弃用,将在未来版本中删除。即使会话变量
gtid_executed
未包含在查询结果中,也会打印出来。此外,结果SELECT @@SESSION.gtid_executed
包含重复警告。这两个问题的发生是因为每当gtid_executed
语句访问 的值时都会打印警告,这种访问是理所当然的,无论给定变量是否实际包含在结果中。为了解决这个问题,我们 通过进行以下更改来使处理与在这种情况下处理
@@SESSION.gtid_executed
also-deprecated 变量的方式一致 :@@GLOBAL.sql_log_bin
gtid_executed
不再包含在performance_schema.session_variables
表中。gtid_executed
仍包含在information_schema.session_variables
表中,但当 时show_compatibility_56 = ON
,在查询 session_variables 表时,或发出SHOW VARIABLES
or 时SHOW SESSION VARIABLES
,即使在LIKE
任一语句中使用匹配子句 时也不会发出警告SHOW
。
警告仍然由诸如
SELECT @@SESSION.gtid_executed
which 直接访问变量值的语句发出。(错误#77574,错误#21354712)参考资料:另请参阅:Bug #75980、Bug #20575529、Bug #76626、Bug #20854952。
复制: 当由具有指定 GTID 的单个语句组成的事务在自动提交模式下失败时,在禁用二进制日志记录时回滚时不会释放其 GTID。(错误#77521,错误#21338147)
-
复制: 从组事件解析器没有正确地将
XA_ROLLBACK
事件注册为事务边界。(错误#77392,错误#21273010)参考资料:另请参阅:Bug #20920851。
-
复制: mysqlbinlog在二进制日志文件的末尾打印了一条
ROLLBACK
语句,当@@GLOBAL.GTID_MODE = ON 时回放失败并出现错误 1782 @@SESSION.GTID_NEXT cannot be set to ANONYMOUS。当二进制日志文件不包含任何与数据相关的事件,或者中继日志文件包含Format_description_log_event
服务器启动时在主服务器上生成的事件时,就会发生这种情况。此问题的修复会导致中继日志在
Format_description_log_event
被BINLOG
语句应用时不执行任何操作,并停止ROLLBACK
从设置gtid_next
到ANONYMOUS
状态gtid_next
尚未由后续事件确定的时间。(错误#76887,错误#20980932) 复制:
SAVEPOINT
并ROLLBACK TO SAVEPOINT
在触发器内导致断言。(错误#76727,错误#20901025)复制: 在
SHOW BINLOG EVENTS
执行语句时,任何并行事务都被阻止。此修复可确保SHOW BINLOG EVENTS
进程现在仅在计算文件结束位置期间获取锁,因此并行事务不会长时间阻塞。(错误#76618,错误#20928790)复制: 如果一个
CREATE VIEW
语句失败,它被错误地写入二进制日志,即使它没有导致创建部分视图。此修复可确保此类语句不会记录在二进制日志中。此外还发现,当一个在主服务器上失败的语句被一个带有预期错误的从服务器接收到时,如果该语句在从服务器上被跳过,例如由于复制过滤器,预期错误将与实际错误进行比较从机上发生的错误。该修复确保如果从站接收到具有预期错误的语句,如果该语句未被过滤,则仅将其与从站上发生的实际错误进行比较。(错误#76493,错误#20797764)复制:在日志轮换期间发生硬件故障后 ,指定的操作
binlog_error_action
并不总是正确执行。(错误#76379,错误#20805298)复制: 当使用 MySQL 5.7.6 及更高版本时
binlog_format=row
,gtid_mode=off
如果CREATE ... SELECT
在执行过程中被杀死,可能会导致不一致的状态,从而破坏复制。原因是在 MySQL 5.7.6 中记录的方式 和步骤CREATE ... SELECT
之间引入了提交 该修复确保 不会在事务中间提交时 。(错误#76320、错误#77098、错误#20742519、错误#21114464)CREATE TABLE
SELECT
CREATE ... SELECT
binlog_format=row
复制: 修改事务的
master_info_repository
或relay_log_info_repository
内部,然后回滚该事务,使存储库处于不可用状态。我们通过防止在事务中对这些存储库进行任何修改来解决此问题。(缺陷 #74950,缺陷 #20074353)复制: 在客户端或从属线程提交后续事务之前,不会考虑 添加到
gtid_executed
using (错误#73838,错误#19579811)SET
gtid_purged
WAIT_FOR_EXECUTED_GTID_SET()
-
复制: 使用
relay_log_info_repository=TABLE
,在mysql.slave_relay_log_info
提交事务或显式执行刷新时更新表,例如在中继日志轮换期间。如果使用任何非事务性表(例如MyISAM
表)的事务跨多个中继日志拆分,则它会在中继日志刷新时部分提交。当 时gtid_mode=ON
,这导致相同的 GTID 用于事务的剩余部分,从而引发ER_GTID_NEXT_TYPE_UNDEFINED_GROUP
错误。在这种情况下,我们通过推迟通常在中继日志轮换时发生的中继日志信息存储库的更新来解决此问题,直到已执行相关事务的提交。
此问题不会影响使用事务存储引擎(例如
InnoDB
. (缺陷 #68525,缺陷 #16418100)参考资料:另请参阅:Bug #21630907、Bug #76974。
-
JSON: 虽然or
JSON
值,但服务器未正确处理这样做的尝试,导致 在调试版本中出现断言 (Linux) 或调用 (Windows)。现在,当您尝试将 JSON 值与这些函数中的任何一个一起使用时,服务器会发出合适的警告 ()。(缺陷号 21828321)GREATEST()
LEAST()
exit()
ER_NOT_SUPPORTED_YET
参考资料:另请参阅:Bug #21383497。
-
JSON:在某些情况下 ,包含引用列的生成列的表会
JSON
损坏,因此使用不同连接对该表进行后续访问会导致服务器失败。(缺陷号 21808680)参考资料:另请参阅:Bug #21824519、Bug #78408。
JSON:
JSON_TYPE()
返回OPAQUE
一些本应标识为BLOB
. (缺陷号 21649073)JSON: 如果将路径参数作为用户定义的变量传递并在结果集行之间更改值,则 JSON 函数可能会返回不正确的值。(漏洞 #21602361)
JSON: 如果多列
UPDATE
语句未能更新JSON
随后在稍后更新中引用的列,则服务器可能会退出。(缺陷号 21547877)JSON: 对于调试版本,不正确的 JSON 值缓存可能会导致引发断言。(漏洞 #21491442)
JSON: 空字符串(不是有效的 JSON 值)通常被解析并作为 JSON 空文字返回,但在某些情况下可能会引发调试构建的断言。(缺陷号 21487833)
JSON: 当视图是外部连接的内部表时, 预期
JSON
产生非NULL
值NULL
(漏洞 #21448719)JSON: 如果
JSON_CONTAINS_PATH()
使用one_or_all
参数调用all
并且路径参数包含通配符,则该函数会找到每个路径的所有匹配项,即使在这种情况下一个匹配项就足够了。(漏洞 #21442775)JSON:
JSON_SET()
如果路径表达式标识非数组值,JSON_REPLACE()
有时会产生不正确的结果。(缺陷号 21442624)JSON: 使用非严格 SQL 模式抑制 JSON 转换错误,或者
INSERT IGNORE
如果插入JSON NOT NULL
列的空值被复制到另一JSON
列,则可能引发断言。(缺陷号 21437989)JSON: 用于深度嵌套的 JSON 输入,
ST_GeomFromGeoJSON()
否则JSON_VALID()
会产生堆栈溢出。(错误#21389101,错误#21377136)JSON: 如果无法解析包含具有大负指数的浮点数的 JSON 字符串,可能会导致服务器退出。(缺陷号 21384048)
JSON: 对于调试构建,
ST_AsGeoJSON()
在内部GROUP BY ... WITH ROLLUP
可以引发断言。(漏洞 #21383497)JSON:
JSON_SEARCH()
如果指定了无效的转义表达式,可能会返回不正确的结果。(缺陷号 21383284)JSON: 对于调试版本,
NULL
第一个参数JSON_SET()
可以引发断言。(漏洞 #21381806)JSON: 对于 form 的表达式 ,其中子查询可以返回 JSON 值,无法处理行结果可能会导致服务器退出。(缺陷 #21376088)
(
subquery
) IN (subquery
)JSON: 未能
JSON_APPEND()
处理合法条件可能导致服务器退出。(缺陷号 21373874)JSON: 某些 JSON 函数在具有路径表达式常量的准备好的语句中使用时可能会返回不正确的结果。(错误#77785,错误#21472872)
RHEL RPM 包的依赖信息不正确。(漏洞 #22218841)
对于索引生成列的仅索引扫描,服务器可以进行随机计算;随机结果不会暴露给用户,但可能会出现 Valgrind 警告,并且当计算涉及不期望此类不正确数据的函数时,服务器可能会退出。(缺陷号 21833760)
对于具有
VIRTUAL
生成列的表,INSERT
具有空值列表的表可能会导致服务器退出。(缺陷号 21807818)调整CMake配置以处理 Clang 3.7 报告的新警告。(缺陷号 21803314)
对于 类型的插件
PROTOCOL_PLUGIN
,执行INSTALL PLUGIN
、UNINSTALL PLUGIN
或SHUTDOWN
可能会导致服务器退出。不再允许此类插件执行这些语句。(缺陷号 21797816)使用在包含生成列的表上定义的物化视图可能会导致服务器退出。(缺陷号 21797776)
对于包含虚拟生成列的分区
InnoDB
表,从表中读取可能会返回该列的随机数据。(缺陷号 21779011)CMake检查 NUMA 可用性可能会导致在不支持 NUMA 的平台上出现编译问题 。(缺陷号 21774859)
优化器没有考虑非功能性表达式,例如
(a AND b) = 1
在寻找索引生成的列来替代(a AND b)
表达式时。现在考虑使用AND
andOR
逻辑运算符的表达式。(缺陷号 21770798)对于调试版本,当优化器尝试克隆某些类型的键以进行范围优化时,会引发断言。(漏洞 #21761867)
对于调试版本,当优化器尝试估计在没有键的情况下处理唯一值的成本时,服务器可能会退出。(漏洞 #21697002)
如果
INSERT
作为准备好的语句执行,则带有子查询的视图可能会失败。(缺陷号 21696206)对于
InnoDB
优化器使用SPATIAL
索引进行全索引扫描的表的查询,结果为空,因为此类索引不支持全扫描。优化器不再将SPATIAL
索引视为完整索引扫描的候选对象。(缺陷号 21663612)对于某些输入,
ST_Intersection()
可能会返回无效的多边形。(缺陷号 21658453)空间函数可以在值可能用于查询的其他地方的上下文中简化几何值,从而产生不正确的结果。(漏洞 #21652012)
如果
ST_ConvexHull()
或ST_SRID()
在视图定义中使用,则生成的定义包含ST_Convex_Hull()
(拼写错误)或SRID()
(弃用)。(漏洞 #21651588)对于调试版本,启用
PAD_CHAR_TO_FULL_LENGTH
SQL 模式可能会SHOW FUNCTION STATUS
引发断言。(漏洞 #21632425)mysqlpump没有退出并显示某些不兼容选项组合的消息。(缺陷号 21628662)
如果优化器尝试基于准备好的语句参数创建临时表,则可能会引发断言。(漏洞 #21625929)
执行带有多个嵌套子查询的准备好的语句可能会引发断言。(漏洞 #21624851)
对于调试版本,子查询优化失败可能会导致由于错误处理不当而引发断言。(漏洞 #21621313)
一些表和索引优化器提示在语句处理的早期丢失,因此查询重写插件无法访问它们。这可能会导致传入语句和语句模式模板之间的不正确匹配。(漏洞 #21619780)
包含组合分组和外部引用的嵌套子查询的查询可能会导致服务器退出。(缺陷号 21619634)
-
NULL
作为第二个或第三个参数 传递给ST_AsGeoJSON()
可能会导致服务器停止响应会话或(在调试版本中)引发断言。向
HANDLER READ
无法转换为正确类型的输入提供可能会导致服务器停止响应会话或(在调试版本中)引发断言。(错误#21616810,错误#21650603) 对于调试版本,
ST_IsValid(NULL)
可以提出断言。(缺陷号 21616647)对于调试版本,在将时间值转换为十进制时,可以针对负零值引发断言。(漏洞 #21616585)
-
ST_AsWKB()
如果给定无效数据,可能会导致服务器退出。(缺陷号 21614368)参考资料:另请参阅:Bug #22131961。
如果在本身是多列索引的一部分的生成列上使用聚合函数,则服务器可能会退出。(漏洞 #21613615)
在列引用解析期间缺少错误检查可能会导致错误消息或(在调试版本中)引发断言。(漏洞 #21613422)
对于调试版本,可以提出断言
Filesort::make_sortorder()
以尝试对Item_ref
对象进行排序。(漏洞 #21611270)对于调试版本,如果键长度或键部分的数量为零,则会针对某些具有半连接并使用具体化策略的查询提出断言。(缺陷号 21566735)
-
在 ARM64 平台上 使用gcc 4.9 或 5.1 编译失败。(漏洞 #21552524)
参考资料:另请参阅:Bug #21845828。
对于调试版本,无效的几何字节字符串可能会导致空间函数引发断言,而不是向调用者返回错误。(缺陷号 21546656)
对于调试版本,无效字符可能会引发过于严格的断言
LOAD DATA
。(漏洞 #21542698)当
InnoDB
尝试更新VIRTUAL
生成的 类型列的二级索引时,服务器可能会退出BLOB
。(缺陷号 21530366)对于为处理
UNION
选择的语句CHAR
或SET
列而创建的临时表,最大列宽可能太长而InnoDB
无法处理。现在,此类列被创建为可变长度列。(缺陷号 21480999)对于配置
MAX_INDEXES
大于 64 的构建,服务器使用临时表的某些查询可能会导致服务器退出。(缺陷号 21466850)添加或删除
VIRTUAL
生成的列可能会导致服务器退出。(缺陷号 21465626)对于使用审计插件 API 的插件,
MYSQL_AUDIT_GLOBAL_VARIABLE_SET
传递给通知函数的事件不包括新变量值。(缺陷号 21457699)如果表名包含特殊字符,则对包含索引生成列的表的查询可能会失败。(漏洞 #21454155)
对于调试版本,一些接受空间参数原始字节数据(例如,指定为十六进制值)的空间函数可能会引发断言,如果此类参数包含有效数据后的额外垃圾。(缺陷号 21397107)
对于调试版本,在子查询执行期间可能会引发不正确的断言。(缺陷号 21383882)
对于调试版本,缺少错误检查
Item_sum_hybrid::fix_fields()
导致引发断言。(缺陷号 21383714)对 的调用
ST_Buffer()
可能会挂起或引发断言。(缺陷号 21372946)如果配置为侦听另一个服务器实例已在使用的 TCP/IP 端口号,服务器可能会以不干净的方式退出。(缺陷号 21368299)
某些子查询作为参数
PROCEDURE ANALYSE()
可能会导致服务器退出。(漏洞 #21350175)在派生表中使用右外连接的查询可能会返回错误的数据。(漏洞 #21350125)
--skip-grant-tables
使用(或使用诸如隐式的选项) 启动服务器--initialize
会--skip-grant-tables
阻止INSTALL PLUGIN
andUNINSTALL PLUGIN
语句工作。(漏洞 #21335821)mysql_ssl_rsa_setup
.rnd
可能会在数据目录中创建不需要的 (该文件实际上是由openssl创建的, mysql_ssl_ras_setup 会调用 它。mysql_ssl_rsa_setup现在会清理该文件。)(漏洞 #21335818)INFORMATION_SCHEMA
由于查询计划不理想和物化不足, 一些查询消耗了过多的内存。(缺陷号 21299665)通过将服务器配置为将错误消息发送到
syslog
或 日志文件,在错误日志设置之前生成的消息将发送到stderr
或stdout
。这些消息现在被缓冲,直到错误日志设置完成,然后记录到正确的目的地。(缺陷号 21296553)在列表的子查询中使用派生表和聚合函数执行准备好的语句
SELECT
可能会导致服务器退出。(缺陷号 21277074)GRANT
即使NO_AUTO_CREATE_USER
启用了 SQL 模式,也为不存在的帐户创建了帐户。(漏洞 #21271571)带有子查询的
NOT IN
查询COUNT(DISTINCT)
可能会返回不正确的结果。(漏洞 #21243772)当开始使用非常旧的数据目录(来自 MySQL 5.0)时,服务器可能会由于无法正确读取旧的授权表而退出。(缺陷号 21216433)
涉及使用临时表更新的生成列的多表更新可能导致服务器退出或引发断言。(缺陷号 21216067)
对于包含 form 表达式的查询 ,半连接和子查询具体化策略的组合可能会导致服务器退出。(漏洞 #21205577)
(
x
IN (subquery
)) IN (subquery2
)如果查询包含外部连接,例如
LEFT JOIN (t1,t2,...)
并且使用提示禁用右侧表上的连接缓冲,但不禁用其他表上的连接缓冲,则会发生服务器退出。(漏洞 #21205282)对于 的游标类型
CURSOR_TYPE_READ_ONLY
,如果数据是数字,则为第一次执行准备好的CALL
staement 检索结果集可能会丢失第一个结果集行;如果数据是字符串,则为调试构建提出断言;调用时导致服务器连接丢失mysql_stmt_fetch()
。(缺陷号 21199582)关闭表时可能会保留悬挂的 blob 指针
InnoDB
,从而导致后续读取无效内存和服务器退出。(漏洞 #21153489)对于某些排序或分组需要临时表的操作,该表可能有零列并引发断言。(漏洞 #21143151)
包含表单表达式的查询 可能导致服务器退出。(漏洞 #21139402)
(
x
IS NULL) IN (subquery
)在服务器 SSL 文件自动生成期间,
ca.pem
短暂地具有不安全的文件权限。(漏洞 #21138119)如果
SELECT ... FOR UPDATE
子查询导致死锁并导致回滚,则可能会由于不正确的错误处理而引发断言。(缺陷号 21096444)选择
INSERT()
以十六进制字符串形式传递输入的函数调用的结果可能会公开比传递给函数更多的信息。(缺陷号 21056907)COUNT()
带有with 的 子查询GROUP BY
可能会产生不正确的结果。(错误#21055139、错误#78029、错误#21615020)视图的可更新属性是在视图创建期间设置的。如果基础表被删除并重新创建为不可更新的表,则原始视图的可更新属性不会相应修改。这可能会导致服务器退出以尝试插入或替换到视图中。(此问题特定于具有多个表/视图的视图,并且不会发生在更新语句中。)(缺陷 #21039264)
-
version_tokens
插件 提供的锁定功能 已重命名为:vtoken_get_read_locks()
、vtoken_get_write_locks()
、vtoken_release_locks()
现在分别命名为version_tokens_lock_shared()
、version_tokens_lock_exclusive()
、 和version_tokens_unlock()
。这些函数也没有任何效果,因为它们在设置它们的语句结束时被隐式解锁。(漏洞 #21034322,漏洞 #21280801)
链接到 yaSSL 并使用 GCC 4.8.2 编译的服务器可能无法正确响应连接尝试,直到启动后几秒钟。(缺陷号 21025377)
升级旧数据目录(MySQL 5.0 或 5.1)时, mysql_upgrade可能无法正确读取
mysql.proc
表。(缺陷号 20968596)对于具有子分区的表,如果可以识别分区但不能识别子分区,则服务器可能会由于分区修剪期间不正确的错误处理而退出。(缺陷号 20909518)
mysql_upgrade在修复阶段可能无法在错误的数据库中查找已检查的表。(缺陷号 20868496)
DELETE
当使用表别名时,可以检查错误数据库的权限。(缺陷号 20777016)mysqldump对生成的列定义使用了不正确的语法。(缺陷号 20769542)
在触发器中,使用访问行中的游标
OLD
或NEW
值可能会导致服务器退出。(缺陷号 20760261)SHOW CREATE USER
返回了意想不到的结果。(缺陷号 20625566)语句执行期间的失败
XA PREPARE
可能导致无效的 XA 事务状态。随后尝试启动另一个 XA 事务导致ER_XAER_OUTSIDE
错误。(缺陷号 20538956)审计日志插件可以审计
audit_log_exclude_accounts
系统变量中命名的帐户。(缺陷号 20408206)如果生成的外键索引被
ALTER TABLE
添加同名新外键的同一语句重命名,则服务器可能退出。(缺陷号 20146455)ALTER TABLE
删除和添加相同FULLTEXT
索引的操作不会作为避免使用表的临时副本的就地(快速)操作执行。(缺陷号 20106837)当函数计算的天数
DATE_FORMAT()
为负数时,服务器可以退出。(漏洞#19985318)ALTER TABLE
由于缺少验证,添加或修改列的操作可能会创建包含无效数据的几何列。(漏洞#19880316)-
如果尝试对以字符串列作为其第一部分的索引进行范围优化,并且用于比较的值被完全截断,则比较将不正确并产生不正确的结果。(漏洞 #19333852)
参考资料:此问题是 Bug #16407965 的回归。
由于对查询中使用的聚合函数的清理不正确,服务器可能会挂起。(漏洞#18979515)
服务器可能会在检查适当的索引以用于某些在
WHERE
子句中使用聚合函数的查询时退出。(漏洞 #18706592)在 Windows 上,该
validate_password
插件可能会导致服务器在字典检查期间退出。(漏洞#18636874)调用存储程序而不用数据库名称对其进行限定可能会导致存储程序编译错误。(漏洞 #18599181)
EXPLAIN
包含GROUP_CONCAT()
可能导致服务器退出的语句。(漏洞 #17865675)返回在上一个查询中找到的行数的函数的值
FOUND_ROWS()
可能会在下一个查询的执行期间发生变化。现在,前一个查询的值FOUND_ROWS()
在下一个查询的执行期间保持不变。(漏洞#17846246)未能检查错误情况可能会导致某些更新或删除导致服务器退出。(漏洞 #17763238)
在 Windows 上,审计日志插件中的堆损坏导致服务器启动失败。(漏洞 #14700102)
如果交换两个列值的
UPDATE
部分,服务器可能会读取不正确的数据并退出。INSERT ... ON DUPLICATE KEY UPDATE
(漏洞 #13901905)对于调试版本,将派生表合并到外部查询块中可能会引发断言。(错误#79502、错误#22305361、错误#21139722)
mysqlpump无法使用 Clang 进行编译。(错误#78637,错误#21924096)
对于调试版本,
DROP TRIGGER
如果触发器是在包含生成列的表上定义的,则语句可以引发断言。(错误#78408,错误#21824519)目录中的一些压力测试文件
mysql-test/suite/innodb_stress
设置了可执行文件模式,尽管它们不是脚本文件。(错误#78403,错误#21822413)使用派生表并包含引用该派生表中的列的集合函数的子查询可能会聚集在错误的查询块中。(缺陷 #78250,缺陷 #21753180)
对于某些输入,
ST_Union()
可能会返回无效的几何集合。(错误#78206,错误#21689998)在非 Windows 系统上,在启动时将
range_alloc_block_size
or 设置query_alloc_block_size
为大于 32 位的值可能会导致服务器退出。这些系统变量(在所有平台上)的最大值现在限制为 2 · 32 − 1,向下舍入到最接近的 1024 的倍数。(错误 #78188,错误 #21682231)-
mysql-test-run.pl现在有一个
--valgrind-clients
选项,可以使所有由.test
文件启动的客户端使用valgrind运行。此选项需要 valgrind 3.9 或更高版本。此外,还修复了多个客户端内存泄漏问题。(错误#78165,错误#21672747)
mysql客户端解析器错误地解释了包含
;
、"
、'
或`
字符 的优化器提示注释。(错误#78114,错误#21646026)-
这些版本令牌问题已解决:
version_tokens_delete()
现在去除其参数中标记名称周围的空格,类似于version_tokens_set()
andversion_tokens_edit()
。传递
NULL
给version_tokens_delete()
导致服务器退出。将带有空令牌名称的参数传递给
version_tokens_set()
或version_tokens_edit()
导致服务器退出。NULL
作为超时值 传递给version_tokens_lock_exclusive()
或version_tokens_lock_shared()
导致服务器退出。
(错误#78111、错误#21645001、错误#21646106、错误#21645944、错误#21646017)
-
从左联接的右侧表(也是派生表)中选择的列
NULL
在子查询中使用时可能会产生不正确的值信息IN
。(错误#77980,错误#21574933)参考资料:此问题是 Bug #14358878 的回归。
-
在 Windows 上,如果 MySQL 服务器作为服务启动,则将禁用记录到错误日志文件。(错误#77977,错误#21574096)
参考资料:此问题是 Bug #21328041 的回归。
在
setup_instruments
Performance Schema 表中,可以将 memory instrument 设置为TIMED='YES'
,尽管 memory 操作从不计时。现在这种尝试被忽略了。可以将内置记忆工具(名称形式为memory/performance_schema/%
)设置为ENABLED='YES'
,但无法禁用内置记忆工具。现在这种尝试被忽略了。(错误#77944,错误#21562212)即使未转储模式, mysqldump和mysqlpump 输出也包括(错误#77926,错误#21549860)
sys
sys
datadir
如果配置文件包含多行, RPM 安装脚本将失败。现在使用最后datadir
一行。(错误#77878,错误#21527467)在性能模式摘要操作期间调用的不必要的
memset()
调用已被删除,这通过减少开销来提高性能。(错误#77863,错误#21528683)更正了安全互斥实施的潜在竞争条件。默认情况下,此实现仅针对调试版本启用。(错误#77862,错误#21522888)
-
和语句的二进制日志记录可以在启用
CREATE USER
时记录密码散列的散列(而不是散列本身) 。log_backward_compatible_user_definitions
语句的二进制日志记录ALTER USER
可能包括原始语句中不存在的属性。由于对这些问题的修复,
log_backward_compatible_user_definitions
已被替换为log_builtin_as_identified_by_password
. 如果启用此变量,则CREATE USER
涉及内置身份验证插件的语句的二进制日志记录会重写语句以包含一个IDENTIFIED BY PASSWORD
子句,并且SET PASSWORD
语句将记录为SET PASSWORD
语句,而不是被重写为ALTER USER
语句。(错误#77860、错误#21516392、错误#20535561) mysqld --initialize产生了关于丢失 SSL 文件的警告,这是不必要的,因为初始化不需要 SSL。(错误#77825,错误#21498544)
在对包含生成列的表进行分区修剪期间,可能会发生 Valgrind 错误。(错误#77782,错误#21469535)
当使用该选项调用 mysqlpump时,它可能会为具有外键和主键但不具有二级索引的表
--defer-table-indexes
生成不正确的语句。CREATE TABLE
(错误#77759,错误#21462732)-
CONVERT_TZ()
如果启用了 GTID 但未启用二进制日志,则 尝试使用以前未使用的时区 可能会产生警告或错误,或者(在调试版本中)引发断言。在调试版本中,尝试将以前未使用的时区与存储程序
CONVERT_TZ()
中的系统变量值一起使用或作为系统变量的值time_zone
可能会引发断言。(错误#77753、错误#21459999、错误#77748、错误#21459795) Linux 上用于service mysql status命令的服务器初始化脚本有时会错误地报告服务器已停止。(错误#77696,错误#21768876)
ALTER TABLE
可以对具有列位置大于 64 的索引虚拟列的表提出断言。(错误 #77656,错误 #21391781)评估虚拟生成的列可能无法评估所有基列并导致无效的内存读取。(错误#77653,错误#21390605)
对于形式为 的语句
CREATE TABLE ... SELECT
,其中表被定义为包含一个DECIMAL UNSIGNED
,行大小的计算不正确,导致表中的值不正确。(错误#77636,错误#21383896)WHERE
包含TRIM(LEADING ..)
和 的谓词TRIM(TRAILING ...)
可能会被错误地优化掉。(错误#77631,错误#21447969)对于等待事件,性能模式
CYCLE
默认使用定时器,但如果不可用则无法回退到不同的定时器CYCLE
。(错误#77577,错误#21374104)语句执行期间的磁盘已满情况
CREATE TABLESPACE
导致服务器退出。(错误#77556,错误#21347001)派生表的权限预检查可能会失败并导致服务器退出。(缺陷 #77525,缺陷 #21338077)
对于空间函数,输入多边形在打开时会自动关闭。但是,开放地理空间联盟指南要求输入多边形已经关闭。未闭合的多边形现在被拒绝为无效而不是被关闭。(错误#77505,错误#21327888)
-
将
VIRTUAL
生成的列添加到表中时,无法确保生成的列表达式计算的数据不会超出该列的范围。这可能会导致返回不一致的数据和意外失败的语句。ALTER TABLE
现在支持WITHOUT VALIDATION
和WITH VALIDATION
子句来控制是否ALTER TABLE
验证VIRTUAL
生成列的数据:使用
WITHOUT VALIDATION
(如果未指定任何子句则为默认值),执行就地操作(如果可能),不检查数据完整性,并且语句完成得更快。但是,如果值超出范围,稍后从表中读取可能会报告该列的警告或错误。使用
WITH VALIDATION
,ALTER TABLE
复制表格。如果发生超出范围或任何其他错误,该语句将失败。因为进行了表拷贝,语句耗时较长。
WITHOUT VALIDATION
并且WITH VALIDATION
只允许与ADD COLUMN
、CHANGE COLUMN
和MODIFY COLUMN
操作一起使用。(错误#77478,错误#21317507) 对于某些字符串函数,由于在创建临时表以保存中间结果时空间计算不正确,因此在子查询中计算时数据被截断。(错误#77473,错误#21317406)
语句摘要不包含有关优化器提示注释的信息,导致带有和不带有提示的语句被聚合。(错误#77414,错误#21286261)
形式为 的谓词,其中是一个列名,是一个程序局部变量,可以在应该返回 true 时返回 false。(错误#77391,错误#21279005)
WHERE ROUND(
X
,Y
) > 0X
Y
ST_SymDifference()
使用多面参数可能会返回不正确的结果。(错误#77372,错误#21263152)在同一 语句中 更新
VARCHAR
和 列可能会产生不正确的结果。当一个 列被分配给一个 列,然后该列被设置为一个不同的值时,该 列的结果包含该列的新值。(错误#77135,错误#21143080)TEXT
UPDATE
VARCHAR
TEXT
VARCHAR
TEXT
VARCHAR
-
HAVING
返回多于 1 行 的子句中的子查询可能会导致服务器退出。除了错误修复之外,
EXPLAIN
现在显示Zero limit
而不是Impossible WHERE
在使用优化查询时显示LIMIT 0
。(错误#76998,错误#21067109) 如果
INFORMATION_SCHEMA
执行表打开操作的查询遇到损坏的表并试图修复它,则可能会发生死锁,从而导致事务中止而没有报告适当的错误。这样的查询现在不尝试表修复。(错误#76912,错误#21021848)mysqladmin -u root -p可能会因分段错误而退出。(错误#76538,错误#20802751)
优化器有时会为派生表(子句中的子查询
FROM
)生成索引。如果在存储程序中执行的语句发生这种情况,则可能会发生内存泄漏。(错误#76349,错误#20728894)如果从表中选择的预期行数介于 0 和 1 之间,则优化器对过滤条件的估计可能会导致执行计划不理想。现在估计至少为 1。(错误 #76314,错误 #20701585)
如果文件是使用
init_file
系统变量指定的, mysqld --initialize 会为文件中的语句产生错误,例如GRANT
影响用户帐户的语句。(错误#75918,错误#20546898)优化器在为运算符优化范围扫描时可能会错误地假定内存不足的情况
OR
,从而导致高估符合条件的行数。(错误#75248,错误#20229614)当其他列指示存在错误时,
events_statements_history
Performance Schema 表的ERRORS
列值可能为 0。(错误#74614,错误#19929832)如果另一个语句中的语句 多次使用相同的列名,则 视图创建
UNION
失败并出现重复列错误 。(错误#74539,错误#19886430)SELECT
UNION
写入慢速查询日志的时间戳值可能不正确。(错误#73974,错误#19646918)
当mysql客户端使用密码过期的账号批量连接服务器时,报错信息没有意义。 在这种情况下, mysql现在报告“请使用 --connect-expired-password 选项或以交互模式调用 mysql ”。(错误#72696,错误#21464621)
对于
UPDATE
带有 的语句 ,优化器可以对用于扫描和更新的键ORDER BY
执行不必要的操作。filesort
(错误#72518,错误#18698556)-
对于具有许多范围条件的查询,优化器会估计范围扫描需要太多内存,然后回退到不太理想的计划,例如全表扫描。
一个新的
range_optimizer_max_mem_size
系统变量现在控制范围优化器的内存消耗限制。值为 0 表示“无限制。” 如果优化器考虑的执行计划使用范围访问方法,但优化器估计此方法所需的内存量将超过限制,则放弃该计划并考虑其他计划。(错误#70247、错误#17413040、错误#17769777) 语句
<element/>
未正确处理 具有 表单的空 XML 元素 。LOAD XML
(漏洞 #67542,漏洞 #16171518)随着打开的
MyISAM
表的数量增加,检查表是否打开的查找变得昂贵,尤其是当表未打开时。table_open_cache
查找性能已得到改进,开销减少特别有利于对具有大和 值的大量表进行选择table_definition_cache
。(错误#49177,错误#11757169)