-
ndb_restore没有正确恢复超过 341 列的表。这是因为用于保存从
.ctl
文件中读取的表元数据的缓冲区大小不足,因此在这种情况下只能从中读取部分表描述符。此问题已通过增加ndb_restore用于文件读取的缓冲区大小来解决。(缺陷号 25182956)参考资料:另请参阅:Bug #25302901。
-
该函数用于生成唯一的表 ID 和表版本,以识别分布在多个 SQL 节点之间的模式操作,依赖于永远不会在两个不同的 mysqld 实例上生成相同数字
rand()
的假设。rand()
后来确定情况并非如此,实际上很可能在所有 SQL 节点上产生相同的随机数。此修复删除了
rand()
用于生成唯一表 ID 或版本的用法,而是将序列与协调器的节点 ID 结合使用。这保证了序列计数器回绕之前的唯一性,这对于此目的应该足够了。当同时或几乎同时重新启动多个 mysqld进程时,或者在多个 SQL 节点上发出相同的or语句时, 可以在日志中观察到这种重复的影响(例如NDB create db: waiting max 119 sec for distribution )。(漏洞 #24926009)
CREATE DATABASE
DROP DATABASE
-
触发即时触发器时,长消息缓冲区耗尽可能会导致行 ID 泄漏;这可能会在以后导致持久的RowId already allocated错误(
NDB
错误 899)。(漏洞 #23723110)参考资料:另请参阅:Bug #19506859、Bug #13927679。
-
当更新外键关系中的父
NDB
表时,更新会按预期级联到子表,但更改不会级联到该子表的子表(即原始父表的孙表)。这可以使用由以下CREATE TABLE
语句生成的表来说明:CREATE TABLE parent( id INT PRIMARY KEY AUTO_INCREMENT, col1 INT UNIQUE, col2 INT ) ENGINE NDB; CREATE TABLE child( ref1 INT UNIQUE, FOREIGN KEY fk1(ref1) REFERENCES parent(col1) ON UPDATE CASCADE ) ENGINE NDB; CREATE TABLE grandchild( ref2 INT, FOREIGN KEY fk2(ref2) REFERENCES child(ref1) ON UPDATE CASCADE ) ENGINE NDB;
表
child
是表的孩子parent
;tablegrandchild
是 table 的子项child
,是 的孙项parent
。在这种情况下,对列col1
的更改parent
级联到ref1
表中child
,但它并不总是依次传播到ref2
表中grandchild
。(缺陷 #83743,缺陷 #25063506)