Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
24 changed files
with
637 additions
and
356 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,213 @@ | ||
# | ||
# MDEV-11415 AVOID INTERMEDIATE COMMIT WHILE DOING | ||
# ALTER TABLE...ALGORITHM=COPY | ||
# | ||
CREATE TABLE t(a SERIAL, b INT, c INT, d INT) ENGINE=InnoDB; | ||
CREATE TABLE t1(a INT, b TEXT, c TEXT, | ||
FULLTEXT(b), FULLTEXT(c(3)), FULLTEXT(b,c)) ENGINE=InnoDB; | ||
BEGIN; | ||
COMMIT; | ||
SELECT COUNT(*) FROM t; | ||
COUNT(*) | ||
999 | ||
UPDATE t SET b=a%7, c=a%11, d=a%13; | ||
INSERT INTO t1 VALUES(1, 'This is a first b column', 'This is a first c column'); | ||
INSERT INTO t1 VALUES(2, 'This is a second b column', 'This is a second c column'); | ||
INSERT INTO t1(a) VALUES(3); | ||
INSERT INTO t1 VALUES(4, 'This is a third b column', 'This is a third c column'); | ||
DELETE FROM t1 WHERE a = 2; | ||
SELECT * FROM t1 WHERE MATCH(b) AGAINST ('first'); | ||
a b c | ||
1 This is a first b column This is a first c column | ||
SELECT * FROM t1 WHERE MATCH(c) AGAINST ('first'); | ||
a b c | ||
1 This is a first b column This is a first c column | ||
SELECT * FROM t1 WHERE MATCH(b,c) AGAINST ('column'); | ||
a b c | ||
1 This is a first b column This is a first c column | ||
4 This is a third b column This is a third c column | ||
SHOW CREATE TABLE t1; | ||
Table Create Table | ||
t1 CREATE TABLE `t1` ( | ||
`a` int(11) DEFAULT NULL, | ||
`b` text DEFAULT NULL, | ||
`c` text DEFAULT NULL, | ||
FULLTEXT KEY `b` (`b`), | ||
FULLTEXT KEY `c` (`c`), | ||
FULLTEXT KEY `b_2` (`b`,`c`) | ||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | ||
ALTER TABLE t1 FORCE, ALGORITHM=COPY; | ||
SET DEBUG_DBUG='+d,crash_commit_before'; | ||
ALTER TABLE t ADD INDEX(b,c,d,a),ADD INDEX(b,c,a,d),ADD INDEX(b,a,c,d),ADD INDEX(b,a,d,c), | ||
ADD INDEX(b,d,a,c),ADD INDEX(b,d,c,a),ADD INDEX(a,b,c,d),ADD INDEX(a,b,d,c), | ||
ADD INDEX(a,c,b,d),ADD INDEX(a,c,d,b),ADD INDEX(a,d,b,c),ADD INDEX(a,d,c,b), | ||
ADD INDEX(c,a,b,d),ADD INDEX(c,a,d,b),ADD INDEX(c,b,a,d),ADD INDEX(c,b,d,a), | ||
ADD INDEX(c,d,a,b),ADD INDEX(c,d,b,a),ADD INDEX(d,a,b,c),ADD INDEX(d,a,c,b), | ||
ADD INDEX(d,b,a,c),ADD INDEX(d,b,c,a),ADD INDEX(d,c,a,b),ADD INDEX(d,c,b,a), | ||
ADD INDEX(a,b,c), ADD INDEX(a,c,b), ADD INDEX(a,c,d), ADD INDEX(a,d,c), | ||
ADD INDEX(a,b,d), ADD INDEX(a,d,b), ADD INDEX(b,c,d), ADD INDEX(b,d,c), | ||
ALGORITHM=COPY; | ||
ERROR HY000: Lost connection to MySQL server during query | ||
#sql-temporary.frm | ||
#sql-temporary.ibd | ||
FTS_INDEX_1.ibd | ||
FTS_INDEX_2.ibd | ||
FTS_INDEX_3.ibd | ||
FTS_INDEX_4.ibd | ||
FTS_INDEX_5.ibd | ||
FTS_INDEX_6.ibd | ||
FTS_INDEX_1.ibd | ||
FTS_INDEX_2.ibd | ||
FTS_INDEX_3.ibd | ||
FTS_INDEX_4.ibd | ||
FTS_INDEX_5.ibd | ||
FTS_INDEX_6.ibd | ||
FTS_INDEX_1.ibd | ||
FTS_INDEX_2.ibd | ||
FTS_INDEX_3.ibd | ||
FTS_INDEX_4.ibd | ||
FTS_INDEX_5.ibd | ||
FTS_INDEX_6.ibd | ||
FTSBEING_DELETED.ibd | ||
FTSBEING_DELETED_CACHE.ibd | ||
FTSCONFIG.ibd | ||
FTSDELETED.ibd | ||
FTSDELETED_CACHE.ibd | ||
t.frm | ||
t.ibd | ||
t1.frm | ||
t1.ibd | ||
SHOW CREATE TABLE t; | ||
Table Create Table | ||
t CREATE TABLE `t` ( | ||
`a` bigint(20) unsigned NOT NULL AUTO_INCREMENT, | ||
`b` int(11) DEFAULT NULL, | ||
`c` int(11) DEFAULT NULL, | ||
`d` int(11) DEFAULT NULL, | ||
UNIQUE KEY `a` (`a`) | ||
) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=latin1 | ||
SELECT COUNT(*) FROM t; | ||
COUNT(*) | ||
999 | ||
CHECK TABLE t; | ||
Table Op Msg_type Msg_text | ||
test.t check status OK | ||
SELECT * FROM t1 WHERE MATCH(b) AGAINST ('first'); | ||
a b c | ||
1 This is a first b column This is a first c column | ||
SELECT * FROM t1 WHERE MATCH(c) AGAINST ('first'); | ||
a b c | ||
1 This is a first b column This is a first c column | ||
SELECT * FROM t1 WHERE MATCH(b,c) AGAINST ('column'); | ||
a b c | ||
1 This is a first b column This is a first c column | ||
4 This is a third b column This is a third c column | ||
SHOW CREATE TABLE t1; | ||
Table Create Table | ||
t1 CREATE TABLE `t1` ( | ||
`a` int(11) DEFAULT NULL, | ||
`b` text DEFAULT NULL, | ||
`c` text DEFAULT NULL, | ||
FULLTEXT KEY `b` (`b`), | ||
FULLTEXT KEY `c` (`c`), | ||
FULLTEXT KEY `b_2` (`b`,`c`) | ||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | ||
CHECK TABLE t1; | ||
Table Op Msg_type Msg_text | ||
test.t1 check status OK | ||
#sql-temporary.frm | ||
#sql-temporary.ibd | ||
FTS_INDEX_1.ibd | ||
FTS_INDEX_2.ibd | ||
FTS_INDEX_3.ibd | ||
FTS_INDEX_4.ibd | ||
FTS_INDEX_5.ibd | ||
FTS_INDEX_6.ibd | ||
FTS_INDEX_1.ibd | ||
FTS_INDEX_2.ibd | ||
FTS_INDEX_3.ibd | ||
FTS_INDEX_4.ibd | ||
FTS_INDEX_5.ibd | ||
FTS_INDEX_6.ibd | ||
FTS_INDEX_1.ibd | ||
FTS_INDEX_2.ibd | ||
FTS_INDEX_3.ibd | ||
FTS_INDEX_4.ibd | ||
FTS_INDEX_5.ibd | ||
FTS_INDEX_6.ibd | ||
FTSBEING_DELETED.ibd | ||
FTSBEING_DELETED_CACHE.ibd | ||
FTSCONFIG.ibd | ||
FTSDELETED.ibd | ||
FTSDELETED_CACHE.ibd | ||
t.frm | ||
t.ibd | ||
t1.frm | ||
t1.ibd | ||
SHOW CREATE TABLE t; | ||
Table Create Table | ||
t CREATE TABLE `t` ( | ||
`a` bigint(20) unsigned NOT NULL AUTO_INCREMENT, | ||
`b` int(11) DEFAULT NULL, | ||
`c` int(11) DEFAULT NULL, | ||
`d` int(11) DEFAULT NULL, | ||
UNIQUE KEY `a` (`a`) | ||
) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=latin1 | ||
SELECT COUNT(*) FROM t; | ||
COUNT(*) | ||
999 | ||
CHECK TABLE t; | ||
Table Op Msg_type Msg_text | ||
test.t check status OK | ||
SELECT * FROM t1 WHERE MATCH(b) AGAINST ('first'); | ||
a b c | ||
1 This is a first b column This is a first c column | ||
SELECT * FROM t1 WHERE MATCH(c) AGAINST ('first'); | ||
a b c | ||
1 This is a first b column This is a first c column | ||
SELECT * FROM t1 WHERE MATCH(b,c) AGAINST ('column'); | ||
a b c | ||
1 This is a first b column This is a first c column | ||
4 This is a third b column This is a third c column | ||
SHOW CREATE TABLE t1; | ||
Table Create Table | ||
t1 CREATE TABLE `t1` ( | ||
`a` int(11) DEFAULT NULL, | ||
`b` text DEFAULT NULL, | ||
`c` text DEFAULT NULL, | ||
FULLTEXT KEY `b` (`b`), | ||
FULLTEXT KEY `c` (`c`), | ||
FULLTEXT KEY `b_2` (`b`,`c`) | ||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | ||
CHECK TABLE t1; | ||
Table Op Msg_type Msg_text | ||
test.t1 check status OK | ||
#sql-temporary.frm | ||
FTS_INDEX_1.ibd | ||
FTS_INDEX_2.ibd | ||
FTS_INDEX_3.ibd | ||
FTS_INDEX_4.ibd | ||
FTS_INDEX_5.ibd | ||
FTS_INDEX_6.ibd | ||
FTS_INDEX_1.ibd | ||
FTS_INDEX_2.ibd | ||
FTS_INDEX_3.ibd | ||
FTS_INDEX_4.ibd | ||
FTS_INDEX_5.ibd | ||
FTS_INDEX_6.ibd | ||
FTS_INDEX_1.ibd | ||
FTS_INDEX_2.ibd | ||
FTS_INDEX_3.ibd | ||
FTS_INDEX_4.ibd | ||
FTS_INDEX_5.ibd | ||
FTS_INDEX_6.ibd | ||
FTSBEING_DELETED.ibd | ||
FTSBEING_DELETED_CACHE.ibd | ||
FTSCONFIG.ibd | ||
FTSDELETED.ibd | ||
FTSDELETED_CACHE.ibd | ||
t.frm | ||
t.ibd | ||
t1.frm | ||
t1.ibd | ||
DROP TABLE t1,t; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
--source include/have_innodb.inc | ||
--source include/have_debug.inc | ||
--source include/have_debug_sync.inc | ||
--source include/not_embedded.inc | ||
|
||
--echo # | ||
--echo # MDEV-11415 AVOID INTERMEDIATE COMMIT WHILE DOING | ||
--echo # ALTER TABLE...ALGORITHM=COPY | ||
--echo # | ||
|
||
CREATE TABLE t(a SERIAL, b INT, c INT, d INT) ENGINE=InnoDB; | ||
CREATE TABLE t1(a INT, b TEXT, c TEXT, | ||
FULLTEXT(b), FULLTEXT(c(3)), FULLTEXT(b,c)) ENGINE=InnoDB; | ||
|
||
let $c = 999; | ||
BEGIN; | ||
--disable_query_log | ||
while ($c) { | ||
INSERT INTO t() VALUES(); | ||
dec $c; | ||
} | ||
--enable_query_log | ||
COMMIT; | ||
|
||
SELECT COUNT(*) FROM t; | ||
# try to make the to-be-created secondary index keys randomly distributed | ||
UPDATE t SET b=a%7, c=a%11, d=a%13; | ||
|
||
INSERT INTO t1 VALUES(1, 'This is a first b column', 'This is a first c column'); | ||
INSERT INTO t1 VALUES(2, 'This is a second b column', 'This is a second c column'); | ||
INSERT INTO t1(a) VALUES(3); | ||
INSERT INTO t1 VALUES(4, 'This is a third b column', 'This is a third c column'); | ||
DELETE FROM t1 WHERE a = 2; | ||
SELECT * FROM t1 WHERE MATCH(b) AGAINST ('first'); | ||
SELECT * FROM t1 WHERE MATCH(c) AGAINST ('first'); | ||
SELECT * FROM t1 WHERE MATCH(b,c) AGAINST ('column'); | ||
SHOW CREATE TABLE t1; | ||
ALTER TABLE t1 FORCE, ALGORITHM=COPY; | ||
|
||
# crash right after the last write_row(), before the first commit of ALTER TABLE | ||
--source include/expect_crash.inc | ||
|
||
SET DEBUG_DBUG='+d,crash_commit_before'; | ||
--error 2013 | ||
# create 32 secondary indexes | ||
ALTER TABLE t ADD INDEX(b,c,d,a),ADD INDEX(b,c,a,d),ADD INDEX(b,a,c,d),ADD INDEX(b,a,d,c), | ||
ADD INDEX(b,d,a,c),ADD INDEX(b,d,c,a),ADD INDEX(a,b,c,d),ADD INDEX(a,b,d,c), | ||
ADD INDEX(a,c,b,d),ADD INDEX(a,c,d,b),ADD INDEX(a,d,b,c),ADD INDEX(a,d,c,b), | ||
ADD INDEX(c,a,b,d),ADD INDEX(c,a,d,b),ADD INDEX(c,b,a,d),ADD INDEX(c,b,d,a), | ||
ADD INDEX(c,d,a,b),ADD INDEX(c,d,b,a),ADD INDEX(d,a,b,c),ADD INDEX(d,a,c,b), | ||
ADD INDEX(d,b,a,c),ADD INDEX(d,b,c,a),ADD INDEX(d,c,a,b),ADD INDEX(d,c,b,a), | ||
ADD INDEX(a,b,c), ADD INDEX(a,c,b), ADD INDEX(a,c,d), ADD INDEX(a,d,c), | ||
ADD INDEX(a,b,d), ADD INDEX(a,d,b), ADD INDEX(b,c,d), ADD INDEX(b,d,c), | ||
ALGORITHM=COPY; | ||
|
||
--let $restart_parameters= --innodb-force-recovery=3 | ||
--source include/start_mysqld.inc | ||
let $datadir=`select @@datadir`; | ||
--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/ /FTS_[0-9a-f]*_[0-9a-f]*/FTS/ | ||
--list_files $datadir/test | ||
SHOW CREATE TABLE t; | ||
SELECT COUNT(*) FROM t; | ||
CHECK TABLE t; | ||
SELECT * FROM t1 WHERE MATCH(b) AGAINST ('first'); | ||
SELECT * FROM t1 WHERE MATCH(c) AGAINST ('first'); | ||
SELECT * FROM t1 WHERE MATCH(b,c) AGAINST ('column'); | ||
SHOW CREATE TABLE t1; | ||
CHECK TABLE t1; | ||
|
||
--let $restart_parameters= --innodb-read-only | ||
--source include/restart_mysqld.inc | ||
--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/ /FTS_[0-9a-f]*_[0-9a-f]*/FTS/ | ||
|
||
--list_files $datadir/test | ||
SHOW CREATE TABLE t; | ||
SELECT COUNT(*) FROM t; | ||
CHECK TABLE t; | ||
SELECT * FROM t1 WHERE MATCH(b) AGAINST ('first'); | ||
SELECT * FROM t1 WHERE MATCH(c) AGAINST ('first'); | ||
SELECT * FROM t1 WHERE MATCH(b,c) AGAINST ('column'); | ||
SHOW CREATE TABLE t1; | ||
CHECK TABLE t1; | ||
|
||
--let $restart_parameters= | ||
--source include/restart_mysqld.inc | ||
--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/ /FTS_[0-9a-f]*_[0-9a-f]*/FTS/ | ||
--list_files $datadir/test | ||
DROP TABLE t1,t; | ||
|
||
# Work around missing crash recovery at the SQL layer. | ||
--remove_files_wildcard $datadir/test #sql-*.frm |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.