mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 19:41:47 +01:00
automerge
This commit is contained in:
commit
823826a7cb
4 changed files with 93 additions and 91 deletions
|
@ -2252,43 +2252,4 @@ h+0 d + 0 e g + 0
|
||||||
1 1 3 0
|
1 1 3 0
|
||||||
1 1 4 0
|
1 1 4 0
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
|
||||||
# BUG#40827 - Killing insert-select to MyISAM can cause table corruption
|
|
||||||
#
|
|
||||||
CREATE TABLE `t1` (
|
|
||||||
`id` BIGINT(20) ,
|
|
||||||
`id1` BIGINT(20) AUTO_INCREMENT,
|
|
||||||
KEY(id1), KEY(id)
|
|
||||||
) ENGINE=MyISAM;
|
|
||||||
CREATE TABLE `t2` (
|
|
||||||
`id` BIGINT(20) ,
|
|
||||||
`id1` BIGINT(20) AUTO_INCREMENT,
|
|
||||||
KEY (id1), KEY(id)
|
|
||||||
) ENGINE=MyISAM;
|
|
||||||
INSERT INTO t2 (id) VALUES (123);
|
|
||||||
INSERT INTO t2 (id) SELECT id FROM t2;
|
|
||||||
INSERT INTO t2 (id) SELECT id FROM t2;
|
|
||||||
INSERT INTO t2 (id) SELECT id FROM t2;
|
|
||||||
INSERT INTO t2 (id) SELECT id FROM t2;
|
|
||||||
INSERT INTO t2 (id) SELECT id FROM t2;
|
|
||||||
INSERT INTO t2 (id) SELECT id FROM t2;
|
|
||||||
INSERT INTO t2 (id) SELECT id FROM t2;
|
|
||||||
INSERT INTO t2 (id) SELECT id FROM t2;
|
|
||||||
INSERT INTO t2 (id) SELECT id FROM t2;
|
|
||||||
INSERT INTO t2 (id) SELECT id FROM t2;
|
|
||||||
# Switch to insert Connection
|
|
||||||
SET SESSION debug='+d,wait_in_enable_indexes';
|
|
||||||
# Send insert data
|
|
||||||
INSERT INTO t1(id) SELECT id FROM t2;
|
|
||||||
# Switch to default Connection
|
|
||||||
# Wait for insert data to reach the debug point
|
|
||||||
SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST
|
|
||||||
WHERE STATE = 'wait_in_enable_indexes' AND
|
|
||||||
INFO = "INSERT INTO t1(id) SELECT id FROM t2"
|
|
||||||
INTO @thread_id;
|
|
||||||
KILL QUERY @thread_id;
|
|
||||||
CHECK TABLE t1;
|
|
||||||
Table Op Msg_type Msg_text
|
|
||||||
test.t1 check status OK
|
|
||||||
DROP TABLE t1,t2;
|
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
|
39
mysql-test/r/myisam_debug.result
Normal file
39
mysql-test/r/myisam_debug.result
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
#
|
||||||
|
# BUG#40827 - Killing insert-select to MyISAM can cause table corruption
|
||||||
|
#
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`id` BIGINT(20) ,
|
||||||
|
`id1` BIGINT(20) AUTO_INCREMENT,
|
||||||
|
KEY(id1), KEY(id)
|
||||||
|
) ENGINE=MyISAM;
|
||||||
|
CREATE TABLE `t2` (
|
||||||
|
`id` BIGINT(20) ,
|
||||||
|
`id1` BIGINT(20) AUTO_INCREMENT,
|
||||||
|
KEY (id1), KEY(id)
|
||||||
|
) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 (id) VALUES (123);
|
||||||
|
INSERT INTO t2 (id) SELECT id FROM t2;
|
||||||
|
INSERT INTO t2 (id) SELECT id FROM t2;
|
||||||
|
INSERT INTO t2 (id) SELECT id FROM t2;
|
||||||
|
INSERT INTO t2 (id) SELECT id FROM t2;
|
||||||
|
INSERT INTO t2 (id) SELECT id FROM t2;
|
||||||
|
INSERT INTO t2 (id) SELECT id FROM t2;
|
||||||
|
INSERT INTO t2 (id) SELECT id FROM t2;
|
||||||
|
INSERT INTO t2 (id) SELECT id FROM t2;
|
||||||
|
INSERT INTO t2 (id) SELECT id FROM t2;
|
||||||
|
INSERT INTO t2 (id) SELECT id FROM t2;
|
||||||
|
# Switch to insert Connection
|
||||||
|
SET SESSION debug='+d,wait_in_enable_indexes';
|
||||||
|
# Send insert data
|
||||||
|
INSERT INTO t1(id) SELECT id FROM t2;
|
||||||
|
# Switch to default Connection
|
||||||
|
# Wait for insert data to reach the debug point
|
||||||
|
SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||||
|
WHERE STATE = 'wait_in_enable_indexes' AND
|
||||||
|
INFO = "INSERT INTO t1(id) SELECT id FROM t2"
|
||||||
|
INTO @thread_id;
|
||||||
|
KILL QUERY @thread_id;
|
||||||
|
CHECK TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
DROP TABLE t1,t2;
|
|
@ -1503,57 +1503,5 @@ SELECT h+0, d + 0, e, g + 0 FROM t1;
|
||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo #
|
|
||||||
--echo # BUG#40827 - Killing insert-select to MyISAM can cause table corruption
|
|
||||||
--echo #
|
|
||||||
|
|
||||||
CONNECT (insertConn, localhost, root,,);
|
|
||||||
|
|
||||||
CREATE TABLE `t1` (
|
|
||||||
`id` BIGINT(20) ,
|
|
||||||
`id1` BIGINT(20) AUTO_INCREMENT,
|
|
||||||
KEY(id1), KEY(id)
|
|
||||||
) ENGINE=MyISAM;
|
|
||||||
|
|
||||||
CREATE TABLE `t2` (
|
|
||||||
`id` BIGINT(20) ,
|
|
||||||
`id1` BIGINT(20) AUTO_INCREMENT,
|
|
||||||
KEY (id1), KEY(id)
|
|
||||||
) ENGINE=MyISAM;
|
|
||||||
|
|
||||||
INSERT INTO t2 (id) VALUES (123);
|
|
||||||
|
|
||||||
let $i = 10;
|
|
||||||
while ($i)
|
|
||||||
{
|
|
||||||
INSERT INTO t2 (id) SELECT id FROM t2;
|
|
||||||
dec $i;
|
|
||||||
}
|
|
||||||
|
|
||||||
--echo # Switch to insert Connection
|
|
||||||
CONNECTION insertConn;
|
|
||||||
SET SESSION debug='+d,wait_in_enable_indexes';
|
|
||||||
--echo # Send insert data
|
|
||||||
SEND INSERT INTO t1(id) SELECT id FROM t2;
|
|
||||||
|
|
||||||
--echo # Switch to default Connection
|
|
||||||
CONNECTION default;
|
|
||||||
--echo # Wait for insert data to reach the debug point
|
|
||||||
|
|
||||||
let $wait_condition=
|
|
||||||
SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST
|
|
||||||
WHERE STATE = "wait_in_enable_indexes" AND
|
|
||||||
INFO = "INSERT INTO t1(id) SELECT id FROM t2";
|
|
||||||
--source include/wait_condition.inc
|
|
||||||
|
|
||||||
SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST
|
|
||||||
WHERE STATE = 'wait_in_enable_indexes' AND
|
|
||||||
INFO = "INSERT INTO t1(id) SELECT id FROM t2"
|
|
||||||
INTO @thread_id;
|
|
||||||
|
|
||||||
KILL QUERY @thread_id;
|
|
||||||
CHECK TABLE t1;
|
|
||||||
DROP TABLE t1,t2;
|
|
||||||
DISCONNECT insertConn;
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
|
||||||
|
|
54
mysql-test/t/myisam_debug.test
Normal file
54
mysql-test/t/myisam_debug.test
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
--source include/have_debug.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # BUG#40827 - Killing insert-select to MyISAM can cause table corruption
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CONNECT (insertConn, localhost, root,,);
|
||||||
|
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`id` BIGINT(20) ,
|
||||||
|
`id1` BIGINT(20) AUTO_INCREMENT,
|
||||||
|
KEY(id1), KEY(id)
|
||||||
|
) ENGINE=MyISAM;
|
||||||
|
|
||||||
|
CREATE TABLE `t2` (
|
||||||
|
`id` BIGINT(20) ,
|
||||||
|
`id1` BIGINT(20) AUTO_INCREMENT,
|
||||||
|
KEY (id1), KEY(id)
|
||||||
|
) ENGINE=MyISAM;
|
||||||
|
|
||||||
|
INSERT INTO t2 (id) VALUES (123);
|
||||||
|
|
||||||
|
let $i = 10;
|
||||||
|
while ($i)
|
||||||
|
{
|
||||||
|
INSERT INTO t2 (id) SELECT id FROM t2;
|
||||||
|
dec $i;
|
||||||
|
}
|
||||||
|
|
||||||
|
--echo # Switch to insert Connection
|
||||||
|
CONNECTION insertConn;
|
||||||
|
SET SESSION debug='+d,wait_in_enable_indexes';
|
||||||
|
--echo # Send insert data
|
||||||
|
SEND INSERT INTO t1(id) SELECT id FROM t2;
|
||||||
|
|
||||||
|
--echo # Switch to default Connection
|
||||||
|
CONNECTION default;
|
||||||
|
--echo # Wait for insert data to reach the debug point
|
||||||
|
|
||||||
|
let $wait_condition=
|
||||||
|
SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||||
|
WHERE STATE = "wait_in_enable_indexes" AND
|
||||||
|
INFO = "INSERT INTO t1(id) SELECT id FROM t2";
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||||
|
WHERE STATE = 'wait_in_enable_indexes' AND
|
||||||
|
INFO = "INSERT INTO t1(id) SELECT id FROM t2"
|
||||||
|
INTO @thread_id;
|
||||||
|
|
||||||
|
KILL QUERY @thread_id;
|
||||||
|
CHECK TABLE t1;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
DISCONNECT insertConn;
|
Loading…
Add table
Reference in a new issue