# set a DEBUG_SYNC after open table and before verifying is done
# Test that one can read from the table but not write, test that one can both
# read and write to the partition
# Verify that one must close the other instances of the table before the rename
# takes place (i.e. no need for LOCK_open)
# Test that it is not possible to drop, create, truncate either the tables or
# partition
# Test that it waits for ongoing transactions
if($no_keys)
{
evalCREATETABLEt
(aINT,
bVARCHAR(55))
ENGINE=$engine;
evalCREATETABLEtp
(aINT,
bVARCHAR(55))
ENGINE=$engine
PARTITIONBYRANGE(a)
(PARTITIONp0VALUESLESSTHAN(100),
PARTITIONp1VALUESLESSTHANMAXVALUE);
evalCREATETABLEtsp
(aINT,
bVARCHAR(55))
ENGINE=$engine
PARTITIONBYRANGE(a)
SUBPARTITIONBYHASH(a)
(PARTITIONp0VALUESLESSTHAN(100)
(SUBPARTITIONsp0,
SUBPARTITIONsp1),
PARTITIONp1VALUESLESSTHANMAXVALUE
(SUBPARTITIONsp2,
SUBPARTITIONsp3));
}
if(!$no_keys)
{
evalCREATETABLEt
(aINT,
bVARCHAR(55),
PRIMARYKEY(a))
ENGINE=$engine;
evalCREATETABLEtp
(aINT,
bVARCHAR(55),
PRIMARYKEY(a))
ENGINE=$engine
PARTITIONBYRANGE(a)
(PARTITIONp0VALUESLESSTHAN(100),
PARTITIONp1VALUESLESSTHANMAXVALUE);
evalCREATETABLEtsp
(aINT,
bVARCHAR(55),
PRIMARYKEY(a))
ENGINE=$engine
PARTITIONBYRANGE(a)
SUBPARTITIONBYHASH(a)
(PARTITIONp0VALUESLESSTHAN(100)
(SUBPARTITIONsp0,
SUBPARTITIONsp1),
PARTITIONp1VALUESLESSTHANMAXVALUE
(SUBPARTITIONsp2,
SUBPARTITIONsp3));
}
INSERTINTOtVALUES(1,"First value"),(3,"Three"),(5,"Five"),(99,"End of values");
INSERTINTOtpVALUES(2,"First value"),(10,"Ten"),(50,"Fifty"),(200,"Two hundred, end of values"),(61,"Sixty one"),(62,"Sixty two"),(63,"Sixty three"),(64,"Sixty four"),(161,"161"),(162,"162"),(163,"163"),(164,"164");
INSERTINTOtspVALUES(2,"First value"),(10,"Ten"),(50,"Fifty"),(200,"Two hundred, end of values"),(61,"Sixty one"),(62,"Sixty two"),(63,"Sixty three"),(64,"Sixty four"),(161,"161"),(162,"162"),(163,"163"),(164,"164");
--sorted_result
SELECT*FROMt;
--sorted_result
SELECT*FROMtp;
--echo# Start by testing read/write locking
SETAUTOCOMMIT=1;
connect(con1,localhost,root,,);
--echo# con1
SETDEBUG_SYNC='swap_partition_after_compare_tables SIGNAL swap_in_progress WAIT_FOR goto_verification';
SETDEBUG_SYNC='swap_partition_first_row_read SIGNAL swap_in_progress WAIT_FOR goto_wait';
SETDEBUG_SYNC='swap_partition_after_wait SIGNAL swap_in_progress WAIT_FOR goto_rename';
SETDEBUG_SYNC='swap_partition_before_rename SIGNAL swap_in_progress WAIT_FOR test_done';
sendALTERTABLEtpEXCHANGEPARTITIONp0WITHTABLEt;
connectiondefault;
--echo# con default
SETDEBUG_SYNC='now WAIT_FOR swap_in_progress';
--echo# select from t and select/update/delete/insert from tp should work
SELECT*FROMtWHEREa=99;
SELECT*FROMtpWHEREa=61;
--echo# any write (update/delete/insert) into t or tp should fail
SETSESSIONlock_wait_timeout=1;
if(!$no_update)
{
--errorER_LOCK_WAIT_TIMEOUT
UPDATEtpSETa=53,b=concat("Fifty three, was ",b)WHEREa=63;
}
--errorER_LOCK_WAIT_TIMEOUT
INSERTINTOtpVALUES(63,"Sixty three, new"),(59,"To be deleted");
if(!$no_delete)
{
--errorER_LOCK_WAIT_TIMEOUT
DELETEFROMtpWHEREa=59;
}
if(!$no_update)
{
--errorER_LOCK_WAIT_TIMEOUT
UPDATEtSETa=53,b="Fifty three, was three"WHEREa=3;
}
--errorER_LOCK_WAIT_TIMEOUT
INSERTINTOtVALUES(63,"Sixty three, new"),(59,"To be deleted");
if(!$no_delete)
{
--errorER_LOCK_WAIT_TIMEOUT
DELETEFROMtWHEREa=3;
}
--errorER_LOCK_WAIT_TIMEOUT
evalALTERTABLEtENGINE=$engine;
--errorER_LOCK_WAIT_TIMEOUT
evalALTERTABLEtpENGINE=$engine;
SHOWCREATETABLEt;
SHOWCREATETABLEtp;
SETDEBUG_SYNC='now SIGNAL goto_verification';
SETDEBUG_SYNC='now WAIT_FOR swap_in_progress';
--echo# select from t and select/update/delete/insert from tp should work
SELECT*FROMtWHEREa=99;
SELECT*FROMtpWHEREa=61;
if(!$no_update)
{
--errorER_LOCK_WAIT_TIMEOUT
UPDATEtpSETa=43,b=concat("Fifty three, was ",b)WHEREa=63;
}
--errorER_LOCK_WAIT_TIMEOUT
INSERTINTOtpVALUES(63,"Sixty three, new 2"),(59,"To be deleted");
if(!$no_delete)
{
--errorER_LOCK_WAIT_TIMEOUT
DELETEFROMtpWHEREa=59;
}
--echo# any write (update/delete/insert) into t should fail
if(!$no_update)
{
--errorER_LOCK_WAIT_TIMEOUT
UPDATEtSETa=53,b="Fifty three, was three"WHEREa=3;
}
--errorER_LOCK_WAIT_TIMEOUT
INSERTINTOtVALUES(63,"Sixty three, new"),(59,"To be deleted");
if(!$no_delete)
{
--errorER_LOCK_WAIT_TIMEOUT
DELETEFROMtWHEREa=3;
}
--errorER_LOCK_WAIT_TIMEOUT
evalALTERTABLEtENGINE=$engine;
--errorER_LOCK_WAIT_TIMEOUT
evalALTERTABLEtpENGINE=$engine;
SHOWCREATETABLEt;
SHOWCREATETABLEtp;
SETDEBUG_SYNC='now SIGNAL goto_wait';
SETDEBUG_SYNC='now WAIT_FOR swap_in_progress';
--echo# Both tables should now be under exclusive lock, even SHOW should fail
--errorER_LOCK_WAIT_TIMEOUT
SELECT*FROMtWHEREa=99;
--errorER_LOCK_WAIT_TIMEOUT
SELECT*FROMtpWHEREa=61;
if(!$no_update)
{
--errorER_LOCK_WAIT_TIMEOUT
UPDATEtpSETa=53,b=concat("Fifty three, was ",b)WHEREa=63;
}
--errorER_LOCK_WAIT_TIMEOUT
INSERTINTOtpVALUES(63,"Sixty three, new 2"),(59,"To be deleted");
if(!$no_delete)
{
--errorER_LOCK_WAIT_TIMEOUT
DELETEFROMtpWHEREa=59;
}
if(!$no_update)
{
--errorER_LOCK_WAIT_TIMEOUT
UPDATEtSETa=53,b="Fifty three, was three"WHEREa=3;
}
--errorER_LOCK_WAIT_TIMEOUT
INSERTINTOtVALUES(63,"Sixty three, new"),(59,"To be deleted");
if(!$no_delete)
{
--errorER_LOCK_WAIT_TIMEOUT
DELETEFROMtWHEREa=3;
}
--errorER_LOCK_WAIT_TIMEOUT
SHOWCREATETABLEt;
--errorER_LOCK_WAIT_TIMEOUT
SHOWCREATETABLEtp;
--errorER_LOCK_WAIT_TIMEOUT
evalALTERTABLEtENGINE=$engine;
--errorER_LOCK_WAIT_TIMEOUT
evalALTERTABLEtpENGINE=$engine;
SETDEBUG_SYNC='now SIGNAL goto_rename';
SETDEBUG_SYNC='now WAIT_FOR swap_in_progress';
--echo# Both tables should now be under exclusive lock
--errorER_LOCK_WAIT_TIMEOUT
SELECT*FROMtWHEREa=99;
--errorER_LOCK_WAIT_TIMEOUT
SELECT*FROMtpWHEREa=61;
if(!$no_update)
{
--errorER_LOCK_WAIT_TIMEOUT
UPDATEtpSETa=53,b=concat("Fifty three, was ",b)WHEREa=63;
}
--errorER_LOCK_WAIT_TIMEOUT
INSERTINTOtpVALUES(63,"Sixty three, new 2"),(59,"To be deleted");
if(!$no_delete)
{
--errorER_LOCK_WAIT_TIMEOUT
DELETEFROMtpWHEREa=59;
}
if(!$no_update)
{
--errorER_LOCK_WAIT_TIMEOUT
UPDATEtSETa=53,b="Fifty three, was three"WHEREa=3;
}
--errorER_LOCK_WAIT_TIMEOUT
INSERTINTOtVALUES(63,"Sixty three, new"),(59,"To be deleted");
if(!$no_delete)
{
--errorER_LOCK_WAIT_TIMEOUT
DELETEFROMtWHEREa=3;
}
--errorER_LOCK_WAIT_TIMEOUT
evalALTERTABLEtENGINE=$engine;
--errorER_LOCK_WAIT_TIMEOUT
evalALTERTABLEtpENGINE=$engine;
--errorER_LOCK_WAIT_TIMEOUT
SHOWCREATETABLEt;
--errorER_LOCK_WAIT_TIMEOUT
SHOWCREATETABLEtp;
SETDEBUG_SYNC='now SIGNAL test_done';
connectioncon1;
--echo# con1
--reap
connectiondefault;
--echo# con default
--echo# Tables should now be as normal
SHOWCREATETABLEt;
SHOWCREATETABLEtp;
SELECT*FROMtpWHEREa=99;
SELECT*FROMtWHEREa=61;
if(!$no_update)
{
UPDATEtSETa=53,b="Fifty three, was sixty three"WHEREa=63;
}
INSERTINTOtVALUES(63,"Sixty three, new"),(59,"To be deleted");
if(!$no_delete)
{
DELETEFROMtWHEREa=59;
}
if(!$no_update)
{
UPDATEtpSETa=53,b="Fifty three, was three"WHEREa=3;
}
INSERTINTOtpVALUES(63,"Sixty three, new"),(59,"To be deleted");
call mtr.add_suppression("Attempting backtrace. You can use the following information to find out");
call mtr.add_suppression('InnoDB: The log sequence numbers [0-9]+ and [0-9]+ in ibdata files do not match the log sequence number [0-9]+ in the ib_logfiles!');
SET SESSION debug_dbug="+d,exchange_partition_abort_1";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before crash
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Lost connection to MySQL server during query
# State after crash (before recovery)
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
# State after crash recovery
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_abort_1";
SET SESSION debug_dbug="+d,exchange_partition_abort_2";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before crash
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Lost connection to MySQL server during query
# State after crash (before recovery)
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
# State after crash recovery
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_abort_2";
SET SESSION debug_dbug="+d,exchange_partition_abort_3";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before crash
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Lost connection to MySQL server during query
# State after crash (before recovery)
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
# State after crash recovery
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_abort_3";
SET SESSION debug_dbug="+d,exchange_partition_abort_4";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before crash
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Lost connection to MySQL server during query
# State after crash (before recovery)
#sqlx-nnnn_nnnn.MYD
#sqlx-nnnn_nnnn.MYI
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.frm
# State after crash recovery
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_abort_4";
SET SESSION debug_dbug="+d,exchange_partition_abort_5";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before crash
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Lost connection to MySQL server during query
# State after crash (before recovery)
#sqlx-nnnn_nnnn.MYD
#sqlx-nnnn_nnnn.MYI
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.frm
# State after crash recovery
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_abort_5";
SET SESSION debug_dbug="+d,exchange_partition_abort_6";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before crash
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Lost connection to MySQL server during query
# State after crash (before recovery)
#sqlx-nnnn_nnnn.MYD
#sqlx-nnnn_nnnn.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
# State after crash recovery
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_abort_6";
SET SESSION debug_dbug="+d,exchange_partition_abort_7";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before crash
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Lost connection to MySQL server during query
# State after crash (before recovery)
#sqlx-nnnn_nnnn.MYD
#sqlx-nnnn_nnnn.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
# State after crash recovery
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_abort_7";
SET SESSION debug_dbug="+d,exchange_partition_abort_8";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before crash
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Lost connection to MySQL server during query
# State after crash (before recovery)
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
# State after crash recovery
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_abort_8";
SET SESSION debug_dbug="+d,exchange_partition_abort_9";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before crash
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Lost connection to MySQL server during query
# State after crash (before recovery)
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
# State after crash recovery
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
1 Original from partition p0
2 Original from partition p0
3 Original from partition p0
4 Original from partition p0
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_abort_9";
SET SESSION debug_dbug="+d,exchange_partition_fail_1";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Error in DDL log
# State after failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_fail_1";
SET SESSION debug_dbug="+d,exchange_partition_fail_2";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Error in DDL log
# State after failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_fail_2";
SET SESSION debug_dbug="+d,exchange_partition_fail_3";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Error on rename of './test/t2' to './test/#sqlx-nnnn_nnnn' (errno: 0 "Internal error/check (Not system error)")
# State after failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_fail_3";
SET SESSION debug_dbug="+d,exchange_partition_fail_4";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Error in DDL log
# State after failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_fail_4";
SET SESSION debug_dbug="+d,exchange_partition_fail_5";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Error on rename of './test/t1#P#p0' to './test/t2' (errno: 0 "Internal error/check (Not system error)")
# State after failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_fail_5";
SET SESSION debug_dbug="+d,exchange_partition_fail_6";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Error in DDL log
# State after failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_fail_6";
SET SESSION debug_dbug="+d,exchange_partition_fail_7";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Error on rename of './test/#sqlx-nnnn_nnnn' to './test/t1#P#p0' (errno: 0 "Internal error/check (Not system error)")
# State after failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_fail_7";
SET SESSION debug_dbug="+d,exchange_partition_fail_8";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Error in DDL log
# State after failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_fail_8";
SET SESSION debug_dbug="+d,exchange_partition_fail_9";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");
# State before failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
1 Original from partition p0
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
2 Original from partition p0
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
3 Original from partition p0
4 Original from partition p0
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
ERROR HY000: Error in DDL log
# State after failure
t1#P#p0.MYD
t1#P#p0.MYI
t1#P#p1.MYD
t1#P#p1.MYI
t1.frm
t1.par
t2.MYD
t2.MYI
t2.frm
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
SELECT * FROM t1;
a b
11 Original from partition p1
12 Original from partition p1
13 Original from partition p1
14 Original from partition p1
21 Original from partition p1
22 Original from partition p1
23 Original from partition p1
24 Original from partition p1
5 Original from table t2
6 Original from table t2
7 Original from table t2
8 Original from table t2
DROP TABLE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` varchar(64) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
a b
1 Original from partition p0
2 Original from partition p0
3 Original from partition p0
4 Original from partition p0
DROP TABLE t2;
SET SESSION debug_dbug="-d,exchange_partition_fail_9";
SET @s= CONCAT('ALTER TABLE ',@part_tab,' EXCHANGE PARTITION ',@part,' WITH TABLE ',@table);
PREPARE test_stmt1 FROM @s;
EXECUTE test_stmt1;
SELECT * FROM t_10;
a b
2 Two
4 Four
6 Six
8 Eight
SELECT * FROM tp;
a b
1 One
112 Hundred twelve
114 Hundred fourteen
116 Hundred sixteen
118 Hundred eightteen
12 twelve
122 Hundred twenty-two
124 Hundred twenty-four
126 Hundred twenty-six
128 Hundred twenty-eight
14 Fourteen
16 Sixteen
162 Hundred sixty-two
164 Hundred sixty-four
166 Hundred sixty-six
168 Hundred sixty-eight
18 Eightteen
182 Hundred eighty-two
184 Hundred eighty-four
186 Hundred eighty-six
188 Hundred eighty-eight
3 Three
5 Five
9 Nine
DEALLOCATE PREPARE test_stmt1;
SET @part_tab= 'tp';
SET @s= CONCAT('ALTER TABLE ',@part_tab,' EXCHANGE PARTITION ? WITH TABLE ?');
PREPARE test_stmt2 FROM @s;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? WITH TABLE ?' at line 1
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME TABLE_ROWS
parta 4
partB 4
Partc 4
CREATE TABLE TableB LIKE TableA;
ALTER TABLE TableB REMOVE PARTITIONING;
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
SELECT * FROM TableA;
a
1
12
2
3
6
7
8
9
SHOW CREATE TABLE TableA;
Table Create Table
TableA CREATE TABLE `TableA` (
`a` int(11) DEFAULT NULL
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (a)
(PARTITION parta ENGINE = ARCHIVE,
PARTITION partB ENGINE = ARCHIVE,
PARTITION Partc ENGINE = ARCHIVE) */
SELECT * FROM TableB;
a
10
11
4
5
SHOW CREATE TABLE TableB;
Table Create Table
TableB CREATE TABLE `TableB` (
`a` int(11) DEFAULT NULL
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
SELECT PARTITION_NAME, IF(TABLE_ROWS, 'YES', 'NO') AS HAVE_TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME HAVE_TABLE_ROWS
parta NO
partB YES
Partc YES
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
INSERT INTO TableB VALUES (11);
ALTER TABLE TableA EXCHANGE PARTITION Partc WITH TABLE TableB;
ERROR HY000: Found a row that does not match the partition
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME TABLE_ROWS
parta 4
partB 4
Partc 4
CREATE TABLE TableB LIKE TableA;
ALTER TABLE TableB REMOVE PARTITIONING;
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
SELECT * FROM TableA;
a
1
12
2
3
6
7
8
9
SHOW CREATE TABLE TableA;
Table Create Table
TableA CREATE TABLE `TableA` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (a)
(PARTITION parta ENGINE = InnoDB,
PARTITION partB ENGINE = InnoDB,
PARTITION Partc ENGINE = InnoDB) */
SELECT * FROM TableB;
a
10
11
4
5
SHOW CREATE TABLE TableB;
Table Create Table
TableB CREATE TABLE `TableB` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SELECT PARTITION_NAME, IF(TABLE_ROWS, 'YES', 'NO') AS HAVE_TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME HAVE_TABLE_ROWS
parta NO
partB YES
Partc YES
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
INSERT INTO TableB VALUES (11);
ALTER TABLE TableA EXCHANGE PARTITION Partc WITH TABLE TableB;
ERROR HY000: Found a row that does not match the partition
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME TABLE_ROWS
parta 4
partB 4
Partc 4
CREATE TABLE TableB LIKE TableA;
ALTER TABLE TableB REMOVE PARTITIONING;
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
SELECT * FROM TableA;
a
1
12
2
3
6
7
8
9
SHOW CREATE TABLE TableA;
Table Create Table
TableA CREATE TABLE `TableA` (
`a` int(11) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (a)
(PARTITION parta ENGINE = MEMORY,
PARTITION partB ENGINE = MEMORY,
PARTITION Partc ENGINE = MEMORY) */
SELECT * FROM TableB;
a
10
11
4
5
SHOW CREATE TABLE TableB;
Table Create Table
TableB CREATE TABLE `TableB` (
`a` int(11) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=latin1
SELECT PARTITION_NAME, IF(TABLE_ROWS, 'YES', 'NO') AS HAVE_TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME HAVE_TABLE_ROWS
parta NO
partB YES
Partc YES
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
INSERT INTO TableB VALUES (11);
ALTER TABLE TableA EXCHANGE PARTITION Partc WITH TABLE TableB;
ERROR HY000: Found a row that does not match the partition
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME TABLE_ROWS
parta 4
partB 4
Partc 4
CREATE TABLE TableB LIKE TableA;
ALTER TABLE TableB REMOVE PARTITIONING;
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
SELECT * FROM TableA;
a
1
12
2
3
6
7
8
9
SHOW CREATE TABLE TableA;
Table Create Table
TableA CREATE TABLE `TableA` (
`a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (a)
(PARTITION parta ENGINE = MyISAM,
PARTITION partB ENGINE = MyISAM,
PARTITION Partc ENGINE = MyISAM) */
SELECT * FROM TableB;
a
10
11
4
5
SHOW CREATE TABLE TableB;
Table Create Table
TableB CREATE TABLE `TableB` (
`a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT PARTITION_NAME, IF(TABLE_ROWS, 'YES', 'NO') AS HAVE_TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME HAVE_TABLE_ROWS
parta NO
partB YES
Partc YES
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
INSERT INTO TableB VALUES (11);
ALTER TABLE TableA EXCHANGE PARTITION Partc WITH TABLE TableB;
ERROR HY000: Found a row that does not match the partition
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME TABLE_ROWS
parta 4
partB 4
Partc 4
CREATE TABLE TableB LIKE TableA;
ALTER TABLE TableB REMOVE PARTITIONING;
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
SELECT * FROM TableA;
a
1
12
2
3
6
7
8
9
SHOW CREATE TABLE TableA;
Table Create Table
TableA CREATE TABLE `tablea` (
`a` int(11) DEFAULT NULL
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (a)
(PARTITION parta ENGINE = ARCHIVE,
PARTITION partB ENGINE = ARCHIVE,
PARTITION Partc ENGINE = ARCHIVE) */
SELECT * FROM TableB;
a
10
11
4
5
SHOW CREATE TABLE TableB;
Table Create Table
TableB CREATE TABLE `tableb` (
`a` int(11) DEFAULT NULL
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
SELECT PARTITION_NAME, IF(TABLE_ROWS, 'YES', 'NO') AS HAVE_TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME HAVE_TABLE_ROWS
parta NO
partB YES
Partc YES
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
INSERT INTO TableB VALUES (11);
ALTER TABLE TableA EXCHANGE PARTITION Partc WITH TABLE TableB;
ERROR HY000: Found a row that does not match the partition
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME TABLE_ROWS
parta 4
partB 4
Partc 4
CREATE TABLE TableB LIKE TableA;
ALTER TABLE TableB REMOVE PARTITIONING;
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
SELECT * FROM TableA;
a
1
12
2
3
6
7
8
9
SHOW CREATE TABLE TableA;
Table Create Table
TableA CREATE TABLE `tablea` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (a)
(PARTITION parta ENGINE = InnoDB,
PARTITION partB ENGINE = InnoDB,
PARTITION Partc ENGINE = InnoDB) */
SELECT * FROM TableB;
a
10
11
4
5
SHOW CREATE TABLE TableB;
Table Create Table
TableB CREATE TABLE `tableb` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SELECT PARTITION_NAME, IF(TABLE_ROWS, 'YES', 'NO') AS HAVE_TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME HAVE_TABLE_ROWS
parta NO
partB YES
Partc YES
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
INSERT INTO TableB VALUES (11);
ALTER TABLE TableA EXCHANGE PARTITION Partc WITH TABLE TableB;
ERROR HY000: Found a row that does not match the partition
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME TABLE_ROWS
parta 4
partB 4
Partc 4
CREATE TABLE TableB LIKE TableA;
ALTER TABLE TableB REMOVE PARTITIONING;
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
SELECT * FROM TableA;
a
1
12
2
3
6
7
8
9
SHOW CREATE TABLE TableA;
Table Create Table
TableA CREATE TABLE `tablea` (
`a` int(11) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (a)
(PARTITION parta ENGINE = MEMORY,
PARTITION partB ENGINE = MEMORY,
PARTITION Partc ENGINE = MEMORY) */
SELECT * FROM TableB;
a
10
11
4
5
SHOW CREATE TABLE TableB;
Table Create Table
TableB CREATE TABLE `tableb` (
`a` int(11) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=latin1
SELECT PARTITION_NAME, IF(TABLE_ROWS, 'YES', 'NO') AS HAVE_TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME HAVE_TABLE_ROWS
parta NO
partB YES
Partc YES
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
INSERT INTO TableB VALUES (11);
ALTER TABLE TableA EXCHANGE PARTITION Partc WITH TABLE TableB;
ERROR HY000: Found a row that does not match the partition
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME TABLE_ROWS
parta 4
partB 4
Partc 4
CREATE TABLE TableB LIKE TableA;
ALTER TABLE TableB REMOVE PARTITIONING;
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
SELECT * FROM TableA;
a
1
12
2
3
6
7
8
9
SHOW CREATE TABLE TableA;
Table Create Table
TableA CREATE TABLE `tablea` (
`a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (a)
(PARTITION parta ENGINE = MyISAM,
PARTITION partB ENGINE = MyISAM,
PARTITION Partc ENGINE = MyISAM) */
SELECT * FROM TableB;
a
10
11
4
5
SHOW CREATE TABLE TableB;
Table Create Table
TableB CREATE TABLE `tableb` (
`a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT PARTITION_NAME, IF(TABLE_ROWS, 'YES', 'NO') AS HAVE_TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME HAVE_TABLE_ROWS
parta NO
partB YES
Partc YES
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
INSERT INTO TableB VALUES (11);
ALTER TABLE TableA EXCHANGE PARTITION Partc WITH TABLE TableB;
ERROR HY000: Found a row that does not match the partition
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME TABLE_ROWS
parta 4
partB 4
Partc 4
CREATE TABLE TableB LIKE TableA;
ALTER TABLE TableB REMOVE PARTITIONING;
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
SELECT * FROM TableA;
a
1
12
2
3
6
7
8
9
SHOW CREATE TABLE TableA;
Table Create Table
TableA CREATE TABLE `TableA` (
`a` int(11) DEFAULT NULL
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (a)
(PARTITION parta ENGINE = ARCHIVE,
PARTITION partB ENGINE = ARCHIVE,
PARTITION Partc ENGINE = ARCHIVE) */
SELECT * FROM TableB;
a
10
11
4
5
SHOW CREATE TABLE TableB;
Table Create Table
TableB CREATE TABLE `TableB` (
`a` int(11) DEFAULT NULL
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
SELECT PARTITION_NAME, IF(TABLE_ROWS, 'YES', 'NO') AS HAVE_TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME HAVE_TABLE_ROWS
parta NO
partB YES
Partc YES
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
INSERT INTO TableB VALUES (11);
ALTER TABLE TableA EXCHANGE PARTITION Partc WITH TABLE TableB;
ERROR HY000: Found a row that does not match the partition
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME TABLE_ROWS
parta 4
partB 4
Partc 4
CREATE TABLE TableB LIKE TableA;
ALTER TABLE TableB REMOVE PARTITIONING;
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
SELECT * FROM TableA;
a
1
12
2
3
6
7
8
9
SHOW CREATE TABLE TableA;
Table Create Table
TableA CREATE TABLE `TableA` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (a)
(PARTITION parta ENGINE = InnoDB,
PARTITION partB ENGINE = InnoDB,
PARTITION Partc ENGINE = InnoDB) */
SELECT * FROM TableB;
a
10
11
4
5
SHOW CREATE TABLE TableB;
Table Create Table
TableB CREATE TABLE `TableB` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SELECT PARTITION_NAME, IF(TABLE_ROWS, 'YES', 'NO') AS HAVE_TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME HAVE_TABLE_ROWS
parta NO
partB YES
Partc YES
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
INSERT INTO TableB VALUES (11);
ALTER TABLE TableA EXCHANGE PARTITION Partc WITH TABLE TableB;
ERROR HY000: Found a row that does not match the partition
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME TABLE_ROWS
parta 4
partB 4
Partc 4
CREATE TABLE TableB LIKE TableA;
ALTER TABLE TableB REMOVE PARTITIONING;
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
SELECT * FROM TableA;
a
1
12
2
3
6
7
8
9
SHOW CREATE TABLE TableA;
Table Create Table
TableA CREATE TABLE `TableA` (
`a` int(11) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (a)
(PARTITION parta ENGINE = MEMORY,
PARTITION partB ENGINE = MEMORY,
PARTITION Partc ENGINE = MEMORY) */
SELECT * FROM TableB;
a
10
11
4
5
SHOW CREATE TABLE TableB;
Table Create Table
TableB CREATE TABLE `TableB` (
`a` int(11) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=latin1
SELECT PARTITION_NAME, IF(TABLE_ROWS, 'YES', 'NO') AS HAVE_TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME HAVE_TABLE_ROWS
parta NO
partB YES
Partc YES
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
INSERT INTO TableB VALUES (11);
ALTER TABLE TableA EXCHANGE PARTITION Partc WITH TABLE TableB;
ERROR HY000: Found a row that does not match the partition
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME TABLE_ROWS
parta 4
partB 4
Partc 4
CREATE TABLE TableB LIKE TableA;
ALTER TABLE TableB REMOVE PARTITIONING;
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
SELECT * FROM TableA;
a
1
12
2
3
6
7
8
9
SHOW CREATE TABLE TableA;
Table Create Table
TableA CREATE TABLE `TableA` (
`a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (a)
(PARTITION parta ENGINE = MyISAM,
PARTITION partB ENGINE = MyISAM,
PARTITION Partc ENGINE = MyISAM) */
SELECT * FROM TableB;
a
10
11
4
5
SHOW CREATE TABLE TableB;
Table Create Table
TableB CREATE TABLE `TableB` (
`a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT PARTITION_NAME, IF(TABLE_ROWS, 'YES', 'NO') AS HAVE_TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA ='MySQL_Test_DB' AND TABLE_NAME = 'TableA';
PARTITION_NAME HAVE_TABLE_ROWS
parta NO
partB YES
Partc YES
ALTER TABLE TableA EXCHANGE PARTITION parta WITH TABLE TableB;
INSERT INTO TableB VALUES (11);
ALTER TABLE TableA EXCHANGE PARTITION Partc WITH TABLE TableB;
ERROR HY000: Found a row that does not match the partition
# Don't test this under valgrind, memory leaks will occur
--sourceinclude/not_valgrind.inc
# Crash tests don't work with embedded
--sourceinclude/not_embedded.inc
--disable_warnings
DROPTABLEIFEXISTSt1;
--enable_warnings
--let$DATADIR=`SELECT @@datadir;`
--echo#
--echo# WL#4445: EXCHANGE PARTITION WITH TABLE
--echo# Verify ddl_log in case of crashing.
callmtr.add_suppression("Attempting backtrace. You can use the following information to find out");
callmtr.add_suppression('InnoDB: The log sequence numbers [0-9]+ and [0-9]+ in ibdata files do not match the log sequence number [0-9]+ in the ib_logfiles!');
let$insert_statement=INSERTINTOt1VALUES(1,"Original from partition p0"),(2,"Original from partition p0"),(3,"Original from partition p0"),(4,"Original from partition p0"),(11,"Original from partition p1"),(12,"Original from partition p1"),(13,"Original from partition p1"),(14,"Original from partition p1"),(21,"Original from partition p1"),(22,"Original from partition p1"),(23,"Original from partition p1"),(24,"Original from partition p1");
let$insert_statement2=INSERTINTOt2VALUES(5,"Original from table t2"),(6,"Original from table t2"),(7,"Original from table t2"),(8,"Original from table t2");