mirror of
https://github.com/MariaDB/server.git
synced 2025-09-02 09:41:40 +03:00
second merge from main, with adaptions
This commit is contained in:
@@ -3,12 +3,6 @@ main.plugin_load @solaris # Bug#42144
|
||||
binlog.binlog_tmp_table* # Bug#45578: Test binlog_tmp_table fails ramdonly on PB2: Unknown table 't2'
|
||||
main.ctype_gbk_binlog @solaris # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists
|
||||
rpl.rpl_row_create_table* # Bug#45576: rpl_row_create_table fails on PB2
|
||||
rpl.rpl_extraColmaster_myisam* @windows # Bug#46013: rpl_extraColmaster_myisam fails on pb2
|
||||
rpl.rpl_stm_reset_slave* @windows # Bug#46014: rpl_stm_reset_slave crashes the server sporadically in pb2
|
||||
rpl.rpl_extraCol_myisam* # Bug#40796
|
||||
rpl.rpl_extraColmaster_innodb* # Bug#40796
|
||||
rpl.rpl_extraCol_innodb* # Bug#40796
|
||||
rpl_ndb.rpl_ndb_log # Bug#38998
|
||||
rpl.rpl_innodb_bug28430* @solaris # Bug#46029
|
||||
rpl.rpl_row_basic_3innodb* # Bug#45243
|
||||
rpl.rpl_truncate_3innodb* @windows # Bug#46030
|
||||
rpl.rpl_get_master_version_and_clock* # Bug#46931 2009-08-26 alik rpl.rpl_get_master_version_and_clock fails on hpux11.31
|
||||
|
710
mysql-test/extra/rpl_tests/rpl_mixing_engines.test
Normal file
710
mysql-test/extra/rpl_tests/rpl_mixing_engines.test
Normal file
@@ -0,0 +1,710 @@
|
||||
###################################################################################
|
||||
# This test checks if transactions that mixes transactional and non-transactional
|
||||
# tables are correctly handled in statement mode. In an nutshell, we have what
|
||||
# follows:
|
||||
#
|
||||
# 1) "B T T C" generates in binlog the "B T T C" entries.
|
||||
#
|
||||
# 2) "B T T R" generates in binlog an "empty" entry.
|
||||
#
|
||||
# 3) "B T N C" generates in binlog the "B T N C" entries.
|
||||
#
|
||||
# 4) "B T N R" generates in binlog the "B T N R" entries.
|
||||
#
|
||||
# 5) "T" generates in binlog the "B T C" entry.
|
||||
#
|
||||
# 6) "N" generates in binlog the "N" entry.
|
||||
#
|
||||
# 7) "M" generates in binglog the "B M C" entries.
|
||||
#
|
||||
# 8) "B N N T C" generates in binglog the "N N B T C" entries.
|
||||
#
|
||||
# 9) "B N N T R" generates in binlog the "N N B T R" entries.
|
||||
#
|
||||
# 10) "B N N C" generates in binglog the "N N" entries.
|
||||
#
|
||||
# 11) "B N N R" generates in binlog the "N N" entries.
|
||||
#
|
||||
# 12) "B M T C" generates in the binlog the "B M T C" entries.
|
||||
#
|
||||
# 13) "B M T R" generates in the binlog the "B M T R" entries.
|
||||
###################################################################################
|
||||
|
||||
--echo ###################################################################################
|
||||
--echo # CONFIGURATION
|
||||
--echo ###################################################################################
|
||||
connection master;
|
||||
|
||||
SET SQL_LOG_BIN=0;
|
||||
CREATE TABLE nt_1 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE nt_2 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE nt_3 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE nt_4 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE tt_1 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
CREATE TABLE tt_2 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
CREATE TABLE tt_3 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
CREATE TABLE tt_4 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
SET SQL_LOG_BIN=1;
|
||||
|
||||
connection slave;
|
||||
|
||||
SET SQL_LOG_BIN=0;
|
||||
CREATE TABLE nt_1 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE nt_2 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE nt_3 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE nt_4 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE tt_1 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
CREATE TABLE tt_2 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
CREATE TABLE tt_3 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
CREATE TABLE tt_4 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
SET SQL_LOG_BIN=1;
|
||||
|
||||
connection master;
|
||||
|
||||
DELIMITER |;
|
||||
|
||||
CREATE FUNCTION f1 () RETURNS VARCHAR(64)
|
||||
BEGIN
|
||||
RETURN "Testing...";
|
||||
END|
|
||||
|
||||
CREATE FUNCTION f2 () RETURNS VARCHAR(64)
|
||||
BEGIN
|
||||
RETURN f1();
|
||||
END|
|
||||
|
||||
CREATE PROCEDURE pc_i_tt_3 (IN x INT, IN y VARCHAR(64))
|
||||
BEGIN
|
||||
INSERT INTO tt_3 VALUES (y,x,x);
|
||||
END|
|
||||
|
||||
CREATE TRIGGER tr_i_tt_3_to_nt_3 BEFORE INSERT ON tt_3 FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO nt_3 VALUES (NEW.a, NEW.b, NEW.c);
|
||||
END|
|
||||
|
||||
CREATE TRIGGER tr_i_nt_4_to_tt_4 BEFORE INSERT ON nt_4 FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO tt_4 VALUES (NEW.a, NEW.b, NEW.c);
|
||||
END|
|
||||
|
||||
DELIMITER ;|
|
||||
|
||||
--echo ###################################################################################
|
||||
--echo # MIXING TRANSACTIONAL and NON-TRANSACTIONAL TABLES
|
||||
--echo ###################################################################################
|
||||
connection master;
|
||||
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #1) "B T T C" generates in binlog the "B T T C" entries.
|
||||
--echo #
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text 4", 4, "new text 4");
|
||||
INSERT INTO tt_2 VALUES ("new text 4", 4, "new text 4");
|
||||
COMMIT;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #1.e) "B T T C" with error in T generates in binlog the "B T T C" entries.
|
||||
--echo #
|
||||
INSERT INTO tt_1 VALUES ("new text -2", -2, "new text -2");
|
||||
BEGIN;
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1"), ("new text -2", -2, "new text -2");
|
||||
INSERT INTO tt_2 VALUES ("new text -3", -3, "new text -3");
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO tt_2 VALUES ("new text -5", -5, "new text -5");
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO tt_2 VALUES ("new text -4", -4, "new text -4"), ("new text -5", -5, "new text -5");
|
||||
COMMIT;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #2) "B T T R" generates in binlog an "empty" entry.
|
||||
--echo #
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text 5", 5, "new text 5");
|
||||
INSERT INTO tt_2 VALUES ("new text 5", 5, "new text 5");
|
||||
ROLLBACK;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #2.e) "B T T R" with error in T generates in binlog an "empty" entry.
|
||||
--echo #
|
||||
INSERT INTO tt_1 VALUES ("new text -7", -7, "new text -7");
|
||||
BEGIN;
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO tt_1 VALUES ("new text -6", -6, "new text -6"), ("new text -7", -7, "new text -7");
|
||||
INSERT INTO tt_2 VALUES ("new text -8", -8, "new text -8");
|
||||
ROLLBACK;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO tt_2 VALUES ("new text -10", -10, "new text -10");
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO tt_2 VALUES ("new text -9", -9, "new text -9"), ("new text -10", -10, "new text -10");
|
||||
ROLLBACK;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #3) "B T N C" generates in binlog the "B T N C" entries.
|
||||
--echo #
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text 6", 6, "new text 6");
|
||||
INSERT INTO nt_1 VALUES ("new text 6", 6, "new text 6");
|
||||
COMMIT;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #3.e) "B T N C" with error in either T or N generates in binlog the "B T N C" entries.
|
||||
--echo #
|
||||
INSERT INTO tt_1 VALUES ("new text -12", -12, "new text -12");
|
||||
BEGIN;
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO tt_1 VALUES ("new text -11", -11, "new text -11"), ("new text -12", -12, "new text -12");
|
||||
INSERT INTO nt_1 VALUES ("new text -13", -13, "new text -13");
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text -14", -14, "new text -14");
|
||||
INSERT INTO nt_1 VALUES ("new text -16", -16, "new text -16");
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO nt_1 VALUES ("new text -15", -15, "new text -15"), ("new text -16", -16, "new text -16");
|
||||
COMMIT;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #4) "B T N R" generates in binlog the "B T N R" entries.
|
||||
--echo #
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text 7", 7, "new text 7");
|
||||
INSERT INTO nt_1 VALUES ("new text 7", 7, "new text 7");
|
||||
ROLLBACK;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #4.e) "B T N R" with error in either T or N generates in binlog the "B T N R" entries.
|
||||
--echo #
|
||||
INSERT INTO tt_1 VALUES ("new text -17", -17, "new text -17");
|
||||
BEGIN;
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO tt_1 VALUES ("new text -16", -16, "new text -16"), ("new text -17", -17, "new text -17");
|
||||
INSERT INTO nt_1 VALUES ("new text -18", -18, "new text -18");
|
||||
ROLLBACK;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text -19", -19, "new text -19");
|
||||
INSERT INTO nt_1 VALUES ("new text -21", -21, "new text -21");
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO nt_1 VALUES ("new text -20", -20, "new text -20"), ("new text -21", -21, "new text -21");
|
||||
ROLLBACK;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #5) "T" generates in binlog the "B T C" entry.
|
||||
--echo #
|
||||
INSERT INTO tt_1 VALUES ("new text 8", 8, "new text 8");
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #5.e) "T" with error in T generates in binlog an "empty" entry.
|
||||
--echo #
|
||||
INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1");
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1"), ("new text -22", -22, "new text -22");
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO tt_1 VALUES ("new text -23", -23, "new text -23"), ("new text -1", -1, "new text -1");
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #6) "N" generates in binlog the "N" entry.
|
||||
--echo #
|
||||
INSERT INTO nt_1 VALUES ("new text 9", 9, "new text 9");
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #6.e) "N" with error in N generates in binlog an empty entry if the error
|
||||
--echo # happens in the first tuple. Otherwise, generates the "N" entry and
|
||||
--echo # the error is appended.
|
||||
--echo #
|
||||
INSERT INTO nt_1 VALUES ("new text -1", -1, "new text -1");
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO nt_1 VALUES ("new text -1", -1, "new text -1");
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO nt_1 VALUES ("new text -24", -24, "new text -24"), ("new text -1", -1, "new text -1");
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #7) "M" generates in binglog the "B M C" entries.
|
||||
--echo #
|
||||
|
||||
DELETE FROM nt_1;
|
||||
|
||||
INSERT INTO nt_1 SELECT * FROM tt_1;
|
||||
|
||||
DELETE FROM tt_1;
|
||||
|
||||
INSERT INTO tt_1 SELECT * FROM nt_1;
|
||||
|
||||
INSERT INTO tt_3 VALUES ("new text 000", 000, '');
|
||||
|
||||
INSERT INTO tt_3 VALUES("new text 100", 100, f1());
|
||||
|
||||
INSERT INTO nt_4 VALUES("new text 100", 100, f1());
|
||||
|
||||
INSERT INTO tt_3 VALUES("new text 200", 200, f2());
|
||||
|
||||
INSERT INTO nt_4 VALUES ("new text 300", 300, '');
|
||||
|
||||
INSERT INTO nt_4 VALUES ("new text 400", 400, f1());
|
||||
|
||||
INSERT INTO nt_4 VALUES ("new text 500", 500, f2());
|
||||
|
||||
CALL pc_i_tt_3(600, "Testing...");
|
||||
|
||||
UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 1", nt_4.a= "new text 1", tt_3.a= "new text 1", tt_4.a= "new text 1" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
|
||||
UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 2", tt_4.a= "new text 2", nt_3.a= "new text 2", nt_4.a = "new text 2" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
|
||||
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 3", nt_3.a= "new text 3", nt_4.a= "new text 3", tt_4.a = "new text 3" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
|
||||
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 4", nt_3.a= "new text 4", nt_4.a= "new text 4", tt_4.a = "new text 4" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #7.e) "M" with error in M generates in binglog the "B M R" entries.
|
||||
--echo #
|
||||
|
||||
INSERT INTO nt_3 VALUES ("new text -26", -26, '');
|
||||
SELECT * FROM tt_3;
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO tt_3 VALUES ("new text -25", -25, ''), ("new text -26", -26, '');
|
||||
SELECT * FROM tt_3;
|
||||
|
||||
INSERT INTO tt_4 VALUES ("new text -26", -26, '');
|
||||
SELECT * FROM nt_4;
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO nt_4 VALUES ("new text -25", -25, ''), ("new text -26", -26, '');
|
||||
SELECT * FROM nt_4;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #8) "B N N T C" generates in binglog the "N N B T C" entries.
|
||||
--echo #
|
||||
BEGIN;
|
||||
INSERT INTO nt_1 VALUES ("new text 10", 10, "new text 10");
|
||||
INSERT INTO nt_2 VALUES ("new text 10", 10, "new text 10");
|
||||
INSERT INTO tt_1 VALUES ("new text 10", 10, "new text 10");
|
||||
COMMIT;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo #
|
||||
--echo #8.e) "B N N T R" See 6.e and 9.e.
|
||||
--echo #
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #9) "B N N T R" generates in binlog the "N N B T R" entries.
|
||||
--echo #
|
||||
BEGIN;
|
||||
INSERT INTO nt_1 VALUES ("new text 11", 11, "new text 11");
|
||||
INSERT INTO nt_2 VALUES ("new text 11", 11, "new text 11");
|
||||
INSERT INTO tt_1 VALUES ("new text 11", 11, "new text 11");
|
||||
ROLLBACK;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #9.e) "B N N T R" with error in N generates in binlog the "N N B T R" entries.
|
||||
--echo #
|
||||
BEGIN;
|
||||
INSERT INTO nt_1 VALUES ("new text -25", -25, "new text -25");
|
||||
INSERT INTO nt_2 VALUES ("new text -25", -25, "new text -25");
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO nt_2 VALUES ("new text -26", -26, "new text -26"), ("new text -25", -25, "new text -25");
|
||||
INSERT INTO tt_1 VALUES ("new text -27", -27, "new text -27");
|
||||
ROLLBACK;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #10) "B N N C" generates in binglog the "N N" entries.
|
||||
--echo #
|
||||
BEGIN;
|
||||
INSERT INTO nt_1 VALUES ("new text 12", 12, "new text 12");
|
||||
INSERT INTO nt_2 VALUES ("new text 12", 12, "new text 12");
|
||||
COMMIT;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo #
|
||||
--echo #10.e) "B N N C" See 6.e and 9.e.
|
||||
--echo #
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #11) "B N N R" generates in binlog the "N N" entries.
|
||||
--echo #
|
||||
BEGIN;
|
||||
INSERT INTO nt_1 VALUES ("new text 13", 13, "new text 13");
|
||||
INSERT INTO nt_2 VALUES ("new text 13", 13, "new text 13");
|
||||
ROLLBACK;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo #
|
||||
--echo #11.e) "B N N R" See 6.e and 9.e.
|
||||
--echo #
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #12) "B M T C" generates in the binlog the "B M T C" entries.
|
||||
--echo #
|
||||
DELETE FROM nt_1;
|
||||
BEGIN;
|
||||
INSERT INTO nt_1 SELECT * FROM tt_1;
|
||||
INSERT INTO tt_2 VALUES ("new text 14", 14, "new text 14");
|
||||
COMMIT;
|
||||
|
||||
DELETE FROM tt_1;
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 SELECT * FROM nt_1;
|
||||
INSERT INTO tt_2 VALUES ("new text 15", 15, "new text 15");
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO tt_3 VALUES ("new text 700", 700, '');
|
||||
INSERT INTO tt_1 VALUES ("new text 800", 800, '');
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO tt_3 VALUES("new text 900", 900, f1());
|
||||
INSERT INTO tt_1 VALUES ("new text 1000", 1000, '');
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO tt_3 VALUES(1100, 1100, f2());
|
||||
INSERT INTO tt_1 VALUES ("new text 1200", 1200, '');
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO nt_4 VALUES ("new text 1300", 1300, '');
|
||||
INSERT INTO tt_1 VALUES ("new text 1400", 1400, '');
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO nt_4 VALUES("new text 1500", 1500, f1());
|
||||
INSERT INTO tt_1 VALUES ("new text 1600", 1600, '');
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO nt_4 VALUES("new text 1700", 1700, f2());
|
||||
INSERT INTO tt_1 VALUES ("new text 1800", 1800, '');
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
CALL pc_i_tt_3(1900, "Testing...");
|
||||
INSERT INTO tt_1 VALUES ("new text 2000", 2000, '');
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 5", nt_4.a= "new text 5", tt_3.a= "new text 5", tt_4.a= "new text 5" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 2100", 2100, '');
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 6", tt_4.a= "new text 6", nt_3.a= "new text 6", nt_4.a = "new text 6" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 2200", 2200, '');
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 7", nt_3.a= "new text 7", nt_4.a= "new text 7", tt_4.a = "new text 7" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 2300", 2300, '');
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 8", nt_3.a= "new text 8", nt_4.a= "new text 8", tt_4.a = "new text 8" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 2400", 2400, '');
|
||||
COMMIT;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #12.e) "B M T C" with error in M generates in the binlog the "B M T C" entries.
|
||||
--echo #
|
||||
|
||||
--echo # There is a bug in the slave that needs to be fixed before enabling
|
||||
--echo # this part of the test. A bug report will be filed referencing this
|
||||
--echo # test case.
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO nt_3 VALUES ("new text -28", -28, '');
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO tt_3 VALUES ("new text -27", -27, ''), ("new text -28", -28, '');
|
||||
INSERT INTO tt_1 VALUES ("new text -27", -27, '');
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO tt_4 VALUES ("new text -28", -28, '');
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO nt_4 VALUES ("new text -27", -27, ''), ("new text -28", -28, '');
|
||||
INSERT INTO tt_1 VALUES ("new text -28", -28, '');
|
||||
COMMIT;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #13) "B M T R" generates in the binlog the "B M T R" entries
|
||||
--echo #
|
||||
|
||||
DELETE FROM nt_1;
|
||||
BEGIN;
|
||||
INSERT INTO nt_1 SELECT * FROM tt_1;
|
||||
INSERT INTO tt_2 VALUES ("new text 17", 17, "new text 17");
|
||||
ROLLBACK;
|
||||
|
||||
DELETE FROM tt_1;
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 SELECT * FROM nt_1;
|
||||
INSERT INTO tt_2 VALUES ("new text 18", 18, "new text 18");
|
||||
ROLLBACK;
|
||||
INSERT INTO tt_1 SELECT * FROM nt_1;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO tt_3 VALUES ("new text 2500", 2500, '');
|
||||
INSERT INTO tt_1 VALUES ("new text 2600", 2600, '');
|
||||
ROLLBACK;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO tt_3 VALUES("new text 2700", 2700, f1());
|
||||
INSERT INTO tt_1 VALUES ("new text 2800", 2800, '');
|
||||
ROLLBACK;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO tt_3 VALUES(2900, 2900, f2());
|
||||
INSERT INTO tt_1 VALUES ("new text 3000", 3000, '');
|
||||
ROLLBACK;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO nt_4 VALUES ("new text 3100", 3100, '');
|
||||
INSERT INTO tt_1 VALUES ("new text 3200", 3200, '');
|
||||
ROLLBACK;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO nt_4 VALUES("new text 3300", 3300, f1());
|
||||
INSERT INTO tt_1 VALUES ("new text 3400", 3400, '');
|
||||
ROLLBACK;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO nt_4 VALUES("new text 3500", 3500, f2());
|
||||
INSERT INTO tt_1 VALUES ("new text 3600", 3600, '');
|
||||
ROLLBACK;
|
||||
|
||||
BEGIN;
|
||||
CALL pc_i_tt_3(3700, "Testing...");
|
||||
INSERT INTO tt_1 VALUES ("new text 3700", 3700, '');
|
||||
ROLLBACK;
|
||||
|
||||
BEGIN;
|
||||
UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 9", nt_4.a= "new text 9", tt_3.a= "new text 9", tt_4.a= "new text 9" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 3800", 3800, '');
|
||||
ROLLBACK;
|
||||
|
||||
BEGIN;
|
||||
UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 10", tt_4.a= "new text 10", nt_3.a= "new text 10", nt_4.a = "new text 10" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 3900", 3900, '');
|
||||
ROLLBACK;
|
||||
|
||||
BEGIN;
|
||||
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 11", nt_3.a= "new text 11", nt_4.a= "new text 11", tt_4.a = "new text 11" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 4000", 4000, '');
|
||||
ROLLBACK;
|
||||
|
||||
BEGIN;
|
||||
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 12", nt_3.a= "new text 12", nt_4.a= "new text 12", tt_4.a = "new text 12" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 4100", 4100, '');
|
||||
ROLLBACK;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--echo #
|
||||
--echo #13.e) "B M T R" with error in M generates in the binlog the "B M T R" entries.
|
||||
--echo #
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO nt_3 VALUES ("new text -30", -30, '');
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO tt_3 VALUES ("new text -29", -29, ''), ("new text -30", -30, '');
|
||||
INSERT INTO tt_1 VALUES ("new text -30", -30, '');
|
||||
ROLLBACK;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO tt_4 VALUES ("new text -30", -30, '');
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO nt_4 VALUES ("new text -29", -29, ''), ("new text -30", -30, '');
|
||||
INSERT INTO tt_1 VALUES ("new text -31", -31, '');
|
||||
ROLLBACK;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
connection master;
|
||||
sync_slave_with_master;
|
||||
|
||||
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-master.sql
|
||||
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-slave.sql
|
||||
--diff_files $MYSQLTEST_VARDIR/tmp/test-master.sql $MYSQLTEST_VARDIR/tmp/test-slave.sql
|
||||
|
||||
--echo ###################################################################################
|
||||
--echo # CLEAN
|
||||
--echo ###################################################################################
|
||||
|
||||
connection master;
|
||||
DROP TABLE tt_1;
|
||||
DROP TABLE tt_2;
|
||||
DROP TABLE tt_3;
|
||||
DROP TABLE tt_4;
|
||||
DROP TABLE nt_1;
|
||||
DROP TABLE nt_2;
|
||||
DROP TABLE nt_3;
|
||||
DROP TABLE nt_4;
|
||||
DROP PROCEDURE pc_i_tt_3;
|
||||
DROP FUNCTION f1;
|
||||
DROP FUNCTION f2;
|
||||
|
||||
sync_slave_with_master;
|
@@ -725,9 +725,9 @@ call p_verify_status_increment(4, 4, 4, 4);
|
||||
alter table t3 add column (b int);
|
||||
call p_verify_status_increment(2, 0, 2, 0);
|
||||
alter table t3 rename t4;
|
||||
call p_verify_status_increment(1, 0, 1, 0);
|
||||
call p_verify_status_increment(2, 2, 2, 2);
|
||||
rename table t4 to t3;
|
||||
call p_verify_status_increment(1, 0, 1, 0);
|
||||
call p_verify_status_increment(2, 2, 2, 2);
|
||||
truncate table t3;
|
||||
call p_verify_status_increment(4, 4, 4, 4);
|
||||
create view v1 as select * from t2;
|
||||
|
@@ -162,6 +162,8 @@ INSERT INTO global_suppressions VALUES
|
||||
("Slave: Unknown column 'c7' in 't15' Error_code: 1054"),
|
||||
("Slave: Can't DROP 'c7'.* 1091"),
|
||||
("Slave: Key column 'c6'.* 1072"),
|
||||
("Slave I/O: The slave I/O thread stops because a fatal error is encountered when it try to get the value of SERVER_ID variable from master."),
|
||||
(".SELECT UNIX_TIMESTAMP... failed on master, do not trust column Seconds_Behind_Master of SHOW SLAVE STATUS"),
|
||||
|
||||
/* Test case for Bug#31590 in order_by.test produces the following error */
|
||||
("Out of sort memory; increase server sort buffer size"),
|
||||
|
69
mysql-test/include/partition_date_range.inc
Normal file
69
mysql-test/include/partition_date_range.inc
Normal file
@@ -0,0 +1,69 @@
|
||||
# Created for verifying bug#20577.
|
||||
# expects TABLE t1 (... , a DATE, ...)
|
||||
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a < '1001-01-01';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a <= '1001-01-01';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a >= '1001-01-01';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a > '1001-01-01';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a = '1001-01-01';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a < '1001-00-00';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a <= '1001-00-00';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a >= '1001-00-00';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a > '1001-00-00';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a = '1001-00-00';
|
||||
--echo # Disabling warnings for the invalid date
|
||||
--disable_warnings
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a < '1999-02-31';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a <= '1999-02-31';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a >= '1999-02-31';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a > '1999-02-31';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a = '1999-02-31';
|
||||
--enable_warnings
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
|
||||
--sorted_result
|
||||
SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
|
||||
if ($explain_partitions)
|
||||
{
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-01-01';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-01-01';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-01-01';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-01-01';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-01-01';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-00-00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-00-00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-00-00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-00-00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-00-00';
|
||||
--echo # Disabling warnings for the invalid date
|
||||
--disable_warnings
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1999-02-31';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1999-02-31';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1999-02-31';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1999-02-31';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1999-02-31';
|
||||
--enable_warnings
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
|
||||
}
|
35
mysql-test/include/rpl_loaddata_charset.inc
Normal file
35
mysql-test/include/rpl_loaddata_charset.inc
Normal file
@@ -0,0 +1,35 @@
|
||||
connection master;
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
||||
--enable_warnings
|
||||
|
||||
CREATE DATABASE mysqltest CHARSET UTF8;
|
||||
USE mysqltest;
|
||||
CREATE TABLE t (cl varchar(100)) CHARSET UTF8;
|
||||
|
||||
if (!$LOAD_LOCAL)
|
||||
{
|
||||
LOAD DATA INFILE '../../std_data/loaddata_utf8.dat' INTO TABLE t
|
||||
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
|
||||
}
|
||||
if ($LOAD_LOCAL)
|
||||
{
|
||||
LOAD DATA LOCAL INFILE './std_data/loaddata_utf8.dat' INTO TABLE t
|
||||
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
|
||||
}
|
||||
|
||||
save_master_pos;
|
||||
echo ----------content on master----------;
|
||||
SELECT hex(cl) FROM t;
|
||||
|
||||
connection slave;
|
||||
sync_with_master;
|
||||
echo ----------content on slave----------;
|
||||
USE mysqltest;
|
||||
SELECT hex(cl) FROM t;
|
||||
|
||||
connection master;
|
||||
DROP DATABASE mysqltest;
|
||||
save_master_pos;
|
||||
connection slave;
|
||||
sync_with_master;
|
@@ -28,9 +28,7 @@ test.t1.bool N Y 1 1 0 0 1.0000 NULL ENUM('N','Y') NOT NULL
|
||||
test.t1.d 2002-03-03 2002-03-05 10 10 0 0 10.0000 NULL ENUM('2002-03-03','2002-03-04','2002-03-05') NOT NULL
|
||||
drop table t1,t2;
|
||||
EXPLAIN SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE();
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> system NULL NULL NULL NULL 1
|
||||
2 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
||||
create table t1 (a int not null);
|
||||
create table t2 select * from t1 where 0=1 procedure analyse();
|
||||
show create table t2;
|
||||
@@ -153,4 +151,9 @@ select f3 from t1 procedure analyse(1, 1);
|
||||
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
|
||||
test.t1.f3 5.99999 9.55555 7 7 0 0 7.77777 1.77778 FLOAT(6,5) NOT NULL
|
||||
drop table t1;
|
||||
CREATE TABLE t1(a INT,b INT,c INT,d INT,e INT,f INT,g INT,h INT,i INT,j INT,k INT);
|
||||
INSERT INTO t1 VALUES ();
|
||||
SELECT * FROM (SELECT * FROM t1) d PROCEDURE ANALYSE();
|
||||
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
||||
DROP TABLE t1;
|
||||
End of 4.1 tests
|
||||
|
@@ -462,3 +462,17 @@ select last_insert_id();
|
||||
last_insert_id()
|
||||
3
|
||||
drop table t1;
|
||||
#
|
||||
# Bug#46616: Assertion `!table->auto_increment_field_not_null' on view
|
||||
# manipulations
|
||||
#
|
||||
CREATE TABLE t1 ( a INT );
|
||||
INSERT INTO t1 VALUES (1), (1);
|
||||
CREATE TABLE t2 ( a INT AUTO_INCREMENT KEY );
|
||||
CREATE TABLE IF NOT EXISTS t2 AS SELECT a FROM t1;
|
||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||
UPDATE t2 SET a = 2;
|
||||
SELECT a FROM t2;
|
||||
a
|
||||
2
|
||||
DROP TABLE t1, t2;
|
||||
|
@@ -841,17 +841,17 @@ call p_verify_status_increment(2, 0, 2, 0);
|
||||
SUCCESS
|
||||
|
||||
alter table t3 rename t4;
|
||||
call p_verify_status_increment(1, 0, 1, 0);
|
||||
call p_verify_status_increment(2, 2, 2, 2);
|
||||
SUCCESS
|
||||
|
||||
rename table t4 to t3;
|
||||
call p_verify_status_increment(1, 0, 1, 0);
|
||||
call p_verify_status_increment(2, 2, 2, 2);
|
||||
SUCCESS
|
||||
|
||||
truncate table t3;
|
||||
call p_verify_status_increment(4, 4, 4, 4);
|
||||
ERROR
|
||||
Expected commit increment: 4 actual: 2
|
||||
SUCCESS
|
||||
|
||||
create view v1 as select * from t2;
|
||||
call p_verify_status_increment(1, 0, 1, 0);
|
||||
SUCCESS
|
||||
|
2
mysql-test/r/disabled_partition.require
Normal file
2
mysql-test/r/disabled_partition.require
Normal file
@@ -0,0 +1,2 @@
|
||||
Variable_name Value
|
||||
have_partitioning DISABLED
|
@@ -2502,3 +2502,15 @@ a MAX(b)
|
||||
2 1
|
||||
DROP TABLE t;
|
||||
End of 5.0 tests
|
||||
#
|
||||
# Bug #46607: Assertion failed: (cond_type == Item::FUNC_ITEM) results in
|
||||
# server crash
|
||||
#
|
||||
CREATE TABLE t (a INT, b INT, INDEX (a,b));
|
||||
INSERT INTO t VALUES (2,0), (2,0), (2,1), (2,1);
|
||||
INSERT INTO t SELECT * FROM t;
|
||||
SELECT a, MAX(b) FROM t WHERE b GROUP BY a;
|
||||
a MAX(b)
|
||||
2 1
|
||||
DROP TABLE t;
|
||||
End of 5.1 tests
|
||||
|
@@ -741,3 +741,19 @@ USE information_schema;
|
||||
HANDLER COLUMNS OPEN;
|
||||
ERROR HY000: Incorrect usage of HANDLER OPEN and information_schema
|
||||
USE test;
|
||||
#
|
||||
# BUG #46456: HANDLER OPEN + TRUNCATE + DROP (temporary) TABLE, crash
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT 1 AS f1;
|
||||
HANDLER t1 OPEN;
|
||||
TRUNCATE t1;
|
||||
HANDLER t1 READ FIRST;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
DROP TABLE t1;
|
||||
CREATE TEMPORARY TABLE t1 AS SELECT 1 AS f1;
|
||||
HANDLER t1 OPEN;
|
||||
TRUNCATE t1;
|
||||
HANDLER t1 READ FIRST;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
|
@@ -1,3 +1,5 @@
|
||||
SET @odl_sync_frm = @@global.sync_frm;
|
||||
SET @@global.sync_frm = OFF;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1( a INT, b INT );
|
||||
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4);
|
||||
@@ -17,3 +19,4 @@ ALTER TABLE t1 ADD COLUMN a INT;
|
||||
# 2.2.1. normal mode
|
||||
# 2.2.2. PS mode
|
||||
DROP TABLE t1;
|
||||
SET @@global.sync_frm = @odl_sync_frm;
|
||||
|
@@ -1,3 +1,5 @@
|
||||
SET @odl_sync_frm = @@global.sync_frm;
|
||||
SET @@global.sync_frm = OFF;
|
||||
DROP TABLE IF EXISTS t1,t2,t3;
|
||||
CREATE TABLE t1 (
|
||||
a int(11) unsigned default NULL,
|
||||
@@ -15,3 +17,4 @@ CREATE TABLE t3 SELECT * FROM t1;
|
||||
# normal mode
|
||||
# PS mode
|
||||
DROP TABLE t1, t2, t3;
|
||||
SET @@global.sync_frm = @odl_sync_frm;
|
||||
|
@@ -2207,4 +2207,16 @@ ERROR HY000: Table storage engine for 'm1' doesn't have this option
|
||||
DROP TABLE m1,t1,t2,t3,t4,t5,t6,t7;
|
||||
SELECT 1 FROM m1;
|
||||
ERROR 42S02: Table 'test.m1' doesn't exist
|
||||
#
|
||||
# Bug #46614: Assertion in show_create_trigger()
|
||||
#
|
||||
CREATE TABLE t1(a int);
|
||||
CREATE TABLE t2(a int);
|
||||
CREATE TABLE t3(a int) ENGINE = MERGE UNION(t1, t2);
|
||||
CREATE TRIGGER tr1 AFTER INSERT ON t3 FOR EACH ROW CALL foo();
|
||||
SHOW CREATE TRIGGER tr1;
|
||||
Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation
|
||||
tr1 CREATE DEFINER=`root`@`localhost` TRIGGER tr1 AFTER INSERT ON t3 FOR EACH ROW CALL foo() latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
DROP TRIGGER tr1;
|
||||
DROP TABLE t1, t2, t3;
|
||||
End of 5.1 tests
|
||||
|
@@ -215,7 +215,7 @@ COMMIT/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
TRUNCATE TABLE t1
|
||||
BEGIN
|
||||
/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
@@ -223,6 +223,22 @@ SET TIMESTAMP=1000000000/*!*/;
|
||||
TRUNCATE TABLE t1
|
||||
/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Xid = #
|
||||
COMMIT/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
BEGIN
|
||||
/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
TRUNCATE TABLE t1
|
||||
/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Xid = #
|
||||
COMMIT/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
BEGIN
|
||||
@@ -331,9 +347,17 @@ COMMIT/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
BEGIN
|
||||
/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
TRUNCATE TABLE t1
|
||||
/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Xid = #
|
||||
COMMIT/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
TRUNCATE TABLE t2
|
||||
@@ -449,9 +473,17 @@ ROLLBACK
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
BEGIN
|
||||
/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
TRUNCATE TABLE t1
|
||||
/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Xid = #
|
||||
COMMIT/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
TRUNCATE TABLE t2
|
||||
|
@@ -1,3 +1,48 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
FLUSH TABLES;
|
||||
SELECT * FROM t1;
|
||||
ERROR 42000: Unknown table engine 'partition'
|
||||
TRUNCATE TABLE t1;
|
||||
ERROR 42000: Unknown table engine 'partition'
|
||||
ANALYZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze Error Unknown table engine 'partition'
|
||||
test.t1 analyze error Corrupt
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check Error Unknown table engine 'partition'
|
||||
test.t1 check error Corrupt
|
||||
OPTIMIZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize Error Unknown table engine 'partition'
|
||||
test.t1 optimize error Corrupt
|
||||
REPAIR TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair Error Unknown table engine 'partition'
|
||||
test.t1 repair error Corrupt
|
||||
ALTER TABLE t1 REPAIR PARTITION ALL;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair Error Unknown table engine 'partition'
|
||||
test.t1 repair error Corrupt
|
||||
ALTER TABLE t1 CHECK PARTITION ALL;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check Error Unknown table engine 'partition'
|
||||
test.t1 check error Corrupt
|
||||
ALTER TABLE t1 OPTIMIZE PARTITION ALL;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize Error Unknown table engine 'partition'
|
||||
test.t1 optimize error Corrupt
|
||||
ALTER TABLE t1 ANALYZE PARTITION ALL;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze Error Unknown table engine 'partition'
|
||||
test.t1 analyze error Corrupt
|
||||
ALTER TABLE t1 REBUILD PARTITION ALL;
|
||||
ERROR 42000: Unknown table engine 'partition'
|
||||
ALTER TABLE t1 ENGINE Memory;
|
||||
ERROR 42000: Unknown table engine 'partition'
|
||||
ALTER TABLE t1 ADD (new INT);
|
||||
ERROR 42000: Unknown table engine 'partition'
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
firstname VARCHAR(25) NOT NULL,
|
||||
lastname VARCHAR(25) NOT NULL,
|
||||
|
@@ -1,4 +1,55 @@
|
||||
drop table if exists t1, t2;
|
||||
CREATE TABLE t1 (
|
||||
a int NOT NULL,
|
||||
b int NOT NULL);
|
||||
CREATE TABLE t2 (
|
||||
a int NOT NULL,
|
||||
b int NOT NULL,
|
||||
INDEX(b)
|
||||
)
|
||||
PARTITION BY HASH(a) PARTITIONS 2;
|
||||
INSERT INTO t1 VALUES (399, 22);
|
||||
INSERT INTO t2 VALUES (1, 22), (1, 42);
|
||||
INSERT INTO t2 SELECT 1, 399 FROM t2, t1
|
||||
WHERE t1.b = t2.b;
|
||||
DROP TABLE t1, t2;
|
||||
CREATE TABLE t1 (
|
||||
a timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
b varchar(10),
|
||||
PRIMARY KEY (a)
|
||||
)
|
||||
PARTITION BY RANGE (to_days(a)) (
|
||||
PARTITION p1 VALUES LESS THAN (733407),
|
||||
PARTITION pmax VALUES LESS THAN MAXVALUE
|
||||
);
|
||||
INSERT INTO t1 VALUES ('2007-07-30 17:35:48', 'p1');
|
||||
INSERT INTO t1 VALUES ('2009-07-14 17:35:55', 'pmax');
|
||||
INSERT INTO t1 VALUES ('2009-09-21 17:31:42', 'pmax');
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
2007-07-30 17:35:48 p1
|
||||
2009-07-14 17:35:55 pmax
|
||||
2009-09-21 17:31:42 pmax
|
||||
ALTER TABLE t1 REORGANIZE PARTITION pmax INTO (
|
||||
PARTITION p3 VALUES LESS THAN (733969),
|
||||
PARTITION pmax VALUES LESS THAN MAXVALUE);
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
2007-07-30 17:35:48 p1
|
||||
2009-07-14 17:35:55 pmax
|
||||
2009-09-21 17:31:42 pmax
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`b` varchar(10) DEFAULT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
/*!50100 PARTITION BY RANGE (to_days(a))
|
||||
(PARTITION p1 VALUES LESS THAN (733407) ENGINE = MyISAM,
|
||||
PARTITION p3 VALUES LESS THAN (733969) ENGINE = MyISAM,
|
||||
PARTITION pmax VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT, FOREIGN KEY (a) REFERENCES t0 (a))
|
||||
ENGINE=MyISAM
|
||||
PARTITION BY HASH (a);
|
||||
|
93
mysql-test/r/partition_disabled.result
Normal file
93
mysql-test/r/partition_disabled.result
Normal file
@@ -0,0 +1,93 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
FLUSH TABLES;
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
TRUNCATE TABLE t1;
|
||||
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
ANALYZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
test.t1 analyze error Corrupt
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
test.t1 check error Corrupt
|
||||
OPTIMIZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
test.t1 optimize error Corrupt
|
||||
REPAIR TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
test.t1 repair error Corrupt
|
||||
ALTER TABLE t1 REPAIR PARTITION ALL;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
test.t1 repair error Corrupt
|
||||
ALTER TABLE t1 CHECK PARTITION ALL;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
test.t1 check error Corrupt
|
||||
ALTER TABLE t1 OPTIMIZE PARTITION ALL;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
test.t1 optimize error Corrupt
|
||||
ALTER TABLE t1 ANALYZE PARTITION ALL;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
test.t1 analyze error Corrupt
|
||||
ALTER TABLE t1 REBUILD PARTITION ALL;
|
||||
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
ALTER TABLE t1 ENGINE Memory;
|
||||
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
ALTER TABLE t1 ADD (new INT);
|
||||
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
firstname VARCHAR(25) NOT NULL,
|
||||
lastname VARCHAR(25) NOT NULL,
|
||||
username VARCHAR(16) NOT NULL,
|
||||
email VARCHAR(35),
|
||||
joined DATE NOT NULL
|
||||
)
|
||||
PARTITION BY KEY(joined)
|
||||
PARTITIONS 6;
|
||||
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
ALTER TABLE t1 PARTITION BY KEY(joined) PARTITIONS 2;
|
||||
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
drop table t1;
|
||||
ERROR 42S02: Unknown table 't1'
|
||||
CREATE TABLE t1 (
|
||||
firstname VARCHAR(25) NOT NULL,
|
||||
lastname VARCHAR(25) NOT NULL,
|
||||
username VARCHAR(16) NOT NULL,
|
||||
email VARCHAR(35),
|
||||
joined DATE NOT NULL
|
||||
)
|
||||
PARTITION BY RANGE( YEAR(joined) ) (
|
||||
PARTITION p0 VALUES LESS THAN (1960),
|
||||
PARTITION p1 VALUES LESS THAN (1970),
|
||||
PARTITION p2 VALUES LESS THAN (1980),
|
||||
PARTITION p3 VALUES LESS THAN (1990),
|
||||
PARTITION p4 VALUES LESS THAN MAXVALUE
|
||||
);
|
||||
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
drop table t1;
|
||||
ERROR 42S02: Unknown table 't1'
|
||||
CREATE TABLE t1 (id INT, purchased DATE)
|
||||
PARTITION BY RANGE( YEAR(purchased) )
|
||||
SUBPARTITION BY HASH( TO_DAYS(purchased) )
|
||||
SUBPARTITIONS 2 (
|
||||
PARTITION p0 VALUES LESS THAN (1990),
|
||||
PARTITION p1 VALUES LESS THAN (2000),
|
||||
PARTITION p2 VALUES LESS THAN MAXVALUE
|
||||
);
|
||||
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||
drop table t1;
|
||||
ERROR 42S02: Unknown table 't1'
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin);
|
||||
insert into t1 values (''),(' '),('a'),('a '),('a ');
|
||||
explain partitions select * from t1 where a='a ' OR a='a';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 5 Using where
|
||||
drop table t1;
|
File diff suppressed because it is too large
Load Diff
@@ -745,7 +745,7 @@ a
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE a >= '2004-07-01' AND a <= '2004-09-30';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p407,p408,p409 ALL NULL NULL NULL NULL 9 Using where
|
||||
1 SIMPLE t1 p3xx,p407,p408,p409 ALL NULL NULL NULL NULL 18 Using where
|
||||
SELECT * from t1
|
||||
WHERE (a >= '2004-07-01' AND a <= '2004-09-30') OR
|
||||
(a >= '2005-07-01' AND a <= '2005-09-30');
|
||||
@@ -772,7 +772,7 @@ EXPLAIN PARTITIONS SELECT * from t1
|
||||
WHERE (a >= '2004-07-01' AND a <= '2004-09-30') OR
|
||||
(a >= '2005-07-01' AND a <= '2005-09-30');
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p407,p408,p409,p507,p508,p509 ALL NULL NULL NULL NULL 18 Using where
|
||||
1 SIMPLE t1 p3xx,p407,p408,p409,p507,p508,p509 ALL NULL NULL NULL NULL 27 Using where
|
||||
DROP TABLE t1;
|
||||
create table t1 (a int);
|
||||
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
|
@@ -75,7 +75,7 @@ SELECT 1 FROM (SELECT 1 as a) b WHERE 1 IN (SELECT (SELECT a));
|
||||
select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
|
||||
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
||||
SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
|
||||
ERROR HY000: Incorrect parameters to procedure 'ANALYSE'
|
||||
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
||||
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
|
||||
ERROR 42S22: Unknown column 'a' in 'field list'
|
||||
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NOT NULL;
|
||||
@@ -4383,6 +4383,34 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY C ALL NULL NULL NULL NULL 20 100.00 Using where
|
||||
DROP TABLE C;
|
||||
# End of test for bug#45061.
|
||||
#
|
||||
# Bug #46749: Segfault in add_key_fields() with outer subquery level
|
||||
# field references
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
a int,
|
||||
b int,
|
||||
UNIQUE (a), KEY (b)
|
||||
);
|
||||
INSERT INTO t1 VALUES (1,1), (2,1);
|
||||
CREATE TABLE st1 like t1;
|
||||
INSERT INTO st1 VALUES (1,1), (2,1);
|
||||
CREATE TABLE st2 like t1;
|
||||
INSERT INTO st2 VALUES (1,1), (2,1);
|
||||
EXPLAIN
|
||||
SELECT MAX(b), (SELECT COUNT(*) FROM st1,st2 WHERE st2.b <= t1.b)
|
||||
FROM t1
|
||||
WHERE a = 230;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
2 DEPENDENT SUBQUERY st1 index NULL a 5 NULL 2 Using index
|
||||
2 DEPENDENT SUBQUERY st2 index b b 5 NULL 2 Using where; Using index; Using join buffer
|
||||
SELECT MAX(b), (SELECT COUNT(*) FROM st1,st2 WHERE st2.b <= t1.b)
|
||||
FROM t1
|
||||
WHERE a = 230;
|
||||
MAX(b) (SELECT COUNT(*) FROM st1,st2 WHERE st2.b <= t1.b)
|
||||
NULL 0
|
||||
DROP TABLE t1, st1, st2;
|
||||
End of 5.0 tests.
|
||||
CREATE TABLE t1 (a INT, b INT);
|
||||
INSERT INTO t1 VALUES (2,22),(1,11),(2,22);
|
||||
|
@@ -1495,9 +1495,9 @@ CREATE TABLE t1 (a int DEFAULT NULL, b int DEFAULT NULL);
|
||||
INSERT INTO t1 VALUES (3,30), (1,10), (2,10);
|
||||
SELECT a+CAST(1 AS decimal(65,30)) AS aa, SUM(b) FROM t1 GROUP BY aa;
|
||||
aa SUM(b)
|
||||
2.000000000000000000000000000000 10
|
||||
3.000000000000000000000000000000 10
|
||||
4.000000000000000000000000000000 30
|
||||
2.00000000000000000000000000000 10
|
||||
3.00000000000000000000000000000 10
|
||||
4.00000000000000000000000000000 30
|
||||
SELECT a+CAST(1 AS decimal(65,31)) AS aa, SUM(b) FROM t1 GROUP BY aa;
|
||||
ERROR 42000: Too big scale 31 specified for column '1'. Maximum is 30.
|
||||
DROP TABLE t1;
|
||||
@@ -1521,13 +1521,13 @@ f1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 SELECT 123451234512345123451234512345123451234512345.678906789067890678906789067890678906789067890 AS f1;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'f1' at row 1
|
||||
Note 1265 Data truncated for column 'f1' at row 1
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
f1 decimal(65,30) NO 0.000000000000000000000000000000
|
||||
f1 decimal(65,20) NO 0.00000000000000000000
|
||||
SELECT f1 FROM t1;
|
||||
f1
|
||||
99999999999999999999999999999999999.999999999999999999999999999999
|
||||
123451234512345123451234512345123451234512345.67890678906789067891
|
||||
DROP TABLE t1;
|
||||
select (1.20396873 * 0.89550000 * 0.68000000 * 1.08721696 * 0.99500000 *
|
||||
1.01500000 * 1.01500000 * 0.99500000);
|
||||
@@ -1595,7 +1595,7 @@ Warnings:
|
||||
Note 1265 Data truncated for column 'my_col' at row 1
|
||||
DESCRIBE t1;
|
||||
Field Type Null Key Default Extra
|
||||
my_col decimal(65,30) NO 0.000000000000000000000000000000
|
||||
my_col decimal(32,30) NO 0.000000000000000000000000000000
|
||||
SELECT my_col FROM t1;
|
||||
my_col
|
||||
1.123456789123456789123456789123
|
||||
@@ -1625,8 +1625,212 @@ Warnings:
|
||||
Note 1265 Data truncated for column 'my_col' at row 1
|
||||
DESCRIBE t1;
|
||||
Field Type Null Key Default Extra
|
||||
my_col decimal(65,30) YES NULL
|
||||
my_col decimal(30,30) YES NULL
|
||||
SELECT my_col FROM t1;
|
||||
my_col
|
||||
0.012345687012345687012345687012
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#45261: Crash, stored procedure + decimal
|
||||
#
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 81 */ 100000000000000000000000000000000000000000000000000000000000000000000000000000001
|
||||
AS c1;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'c1' at row 1
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(65,0) NO 0
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
99999999999999999999999999999999999999999999999999999999999999999
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 81 */ 100000000000000000000000000000000000000000000000000000000000000000000000000000001.
|
||||
AS c1;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'c1' at row 1
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(65,0) NO 0
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
99999999999999999999999999999999999999999999999999999999999999999
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 81 */ 100000000000000000000000000000000000000000000000000000000000000000000000000000001.1 /* 1 */
|
||||
AS c1;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'c1' at row 1
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(65,0) NO 0
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
99999999999999999999999999999999999999999999999999999999999999999
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 82 */ 1000000000000000000000000000000000000000000000000000000000000000000000000000000001
|
||||
AS c1;
|
||||
Warnings:
|
||||
Error 1292 Truncated incorrect DECIMAL value: ''
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(65,0) NO 0
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
99999999999999999999999999999999999999999999999999999999999999999
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 40 */ 1000000000000000000000000000000000000001.1000000000000000000000000000000000000001 /* 40 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(65,25) NO 0.0000000000000000000000000
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
1000000000000000000000000000000000000001.1000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 1 */ 1.10000000000000000000000000000000000000000000000000000000000000000000000000000001 /* 80 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(31,30) NO 0.000000000000000000000000000000
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
1.100000000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 1 */ 1.100000000000000000000000000000000000000000000000000000000000000000000000000000001 /* 81 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(31,30) NO 0.000000000000000000000000000000
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
1.100000000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 SELECT
|
||||
.100000000000000000000000000000000000000000000000000000000000000000000000000000001 /* 81 */
|
||||
AS c1;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c1' at row 1
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(30,30) NO 0.000000000000000000000000000000
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
0.100000000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 45 */ 123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345 /* 45 */
|
||||
AS c1;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c1' at row 1
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(65,20) NO 0.00000000000000000000
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
123456789012345678901234567890123456789012345.12345678901234567890
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 65 */ 12345678901234567890123456789012345678901234567890123456789012345.1 /* 1 */
|
||||
AS c1;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c1' at row 1
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(65,0) NO 0
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
12345678901234567890123456789012345678901234567890123456789012345
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 66 */ 123456789012345678901234567890123456789012345678901234567890123456.1 /* 1 */
|
||||
AS c1;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'c1' at row 1
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(65,0) NO 0
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
99999999999999999999999999999999999999999999999999999999999999999
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 SELECT
|
||||
.123456789012345678901234567890123456789012345678901234567890123456 /* 66 */
|
||||
AS c1;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c1' at row 1
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(30,30) NO 0.000000000000000000000000000000
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
0.123456789012345678901234567890
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT 123.1234567890123456789012345678901 /* 31 */ AS c1;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c1' at row 1
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(33,30) NO 0.000000000000000000000000000000
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
123.123456789012345678901234567890
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 SELECT 1.1 + CAST(1 AS DECIMAL(65,30)) AS c1;
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(65,29) NO 0.00000000000000000000000000000
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
2.10000000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test that the integer and decimal parts are properly calculated.
|
||||
#
|
||||
CREATE TABLE t1 (a DECIMAL(30,30));
|
||||
INSERT INTO t1 VALUES (0.1),(0.2),(0.3);
|
||||
CREATE TABLE t2 SELECT MIN(a + 0.0000000000000000000000000000001) AS c1 FROM t1;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c1' at row 3
|
||||
DESC t2;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(32,30) YES NULL
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a DECIMAL(30,30));
|
||||
INSERT INTO t1 VALUES (0.1),(0.2),(0.3);
|
||||
CREATE TABLE t2 SELECT IFNULL(a + 0.0000000000000000000000000000001, NULL) AS c1 FROM t1;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c1' at row 1
|
||||
Note 1265 Data truncated for column 'c1' at row 2
|
||||
Note 1265 Data truncated for column 'c1' at row 3
|
||||
DESC t2;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(32,30) YES NULL
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a DECIMAL(30,30));
|
||||
INSERT INTO t1 VALUES (0.1),(0.2),(0.3);
|
||||
CREATE TABLE t2 SELECT CASE a WHEN 0.1 THEN 0.0000000000000000000000000000000000000000000000000000000000000000001 END AS c1 FROM t1;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c1' at row 1
|
||||
DESC t2;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(31,30) YES NULL
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Test that variables get maximum precision.
|
||||
#
|
||||
SET @decimal= 1.1;
|
||||
CREATE TABLE t1 SELECT @decimal AS c1;
|
||||
DESC t1;
|
||||
Field Type Null Key Default Extra
|
||||
c1 decimal(65,30) YES NULL
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
1.100000000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
|
@@ -3718,117 +3718,6 @@ DROP TABLE t1;
|
||||
|
||||
# -- End of test case for Bug#40825
|
||||
|
||||
#
|
||||
# Bug #45806 crash when replacing into a view with a join!
|
||||
#
|
||||
CREATE TABLE t1(a INT UNIQUE);
|
||||
CREATE VIEW v1 AS SELECT t1.a FROM t1, t1 AS a;
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
REPLACE INTO v1(a) SELECT 1 FROM t1,t1 AS c;
|
||||
SELECT * FROM v1;
|
||||
a
|
||||
1
|
||||
2
|
||||
1
|
||||
2
|
||||
REPLACE INTO v1(a) SELECT 3 FROM t1,t1 AS c;
|
||||
SELECT * FROM v1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
DELETE FROM t1 WHERE a=3;
|
||||
INSERT INTO v1(a) SELECT 1 FROM t1,t1 AS c
|
||||
ON DUPLICATE KEY UPDATE `v1`.`a`= 1;
|
||||
SELECT * FROM v1;
|
||||
a
|
||||
1
|
||||
2
|
||||
1
|
||||
2
|
||||
CREATE VIEW v2 AS SELECT t1.a FROM t1, v1 AS a;
|
||||
REPLACE INTO v2(a) SELECT 1 FROM t1,t1 AS c;
|
||||
SELECT * FROM v2;
|
||||
a
|
||||
1
|
||||
2
|
||||
1
|
||||
2
|
||||
1
|
||||
2
|
||||
1
|
||||
2
|
||||
REPLACE INTO v2(a) SELECT 3 FROM t1,t1 AS c;
|
||||
SELECT * FROM v2;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
INSERT INTO v2(a) SELECT 1 FROM t1,t1 AS c
|
||||
ON DUPLICATE KEY UPDATE `v2`.`a`= 1;
|
||||
SELECT * FROM v2;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
DROP VIEW v1;
|
||||
DROP VIEW v2;
|
||||
DROP TABLE t1;
|
||||
# -- End of test case for Bug#45806
|
||||
# -----------------------------------------------------------------
|
||||
# -- End of 5.0 tests.
|
||||
# -----------------------------------------------------------------
|
||||
|
3
mysql-test/std_data/loaddata_utf8.dat
Normal file
3
mysql-test/std_data/loaddata_utf8.dat
Normal file
@@ -0,0 +1,3 @@
|
||||
一二三
|
||||
四五六
|
||||
七八九
|
BIN
mysql-test/std_data/parts/t1.frm
Normal file
BIN
mysql-test/std_data/parts/t1.frm
Normal file
Binary file not shown.
@@ -379,7 +379,9 @@ master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE table t2
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
@@ -838,8 +840,10 @@ UPDATE t4,t3 SET t4.a=t3.a + bug27417(1) /* top level non-ta table */;
|
||||
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Intvar # # INSERT_ID=6
|
||||
master-bin.000001 # Query # # use `test`; UPDATE t4,t3 SET t4.a=t3.a + bug27417(1) /* top level non-ta table */
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
select count(*) from t1 /* must be 4 */;
|
||||
count(*)
|
||||
4
|
||||
|
@@ -17,5 +17,5 @@ master-bin.000001 # Query # # create database `drop-temp+table-test`
|
||||
master-bin.000001 # Query # # use `drop-temp+table-test`; create temporary table shortn1 (a int)
|
||||
master-bin.000001 # Query # # use `drop-temp+table-test`; create temporary table `table:name` (a int)
|
||||
master-bin.000001 # Query # # use `drop-temp+table-test`; create temporary table shortn2 (a int)
|
||||
master-bin.000001 # Query # # use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `drop-temp+table-test`.`shortn2`,`drop-temp+table-test`.`table:name`,`drop-temp+table-test`.`shortn1`
|
||||
master-bin.000001 # Query # # use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `shortn2`,`table:name`,`shortn1`
|
||||
drop database `drop-temp+table-test`;
|
||||
|
@@ -258,7 +258,7 @@ master-bin.000001 # Query # # use `test`; create table t0 (n int)
|
||||
master-bin.000001 # Query # # use `test`; insert t0 select * from t1
|
||||
master-bin.000001 # Query # # use `test`; insert into t0 select GET_LOCK("lock1",null)
|
||||
master-bin.000001 # Query # # use `test`; create table t2 (n int) engine=innodb
|
||||
master-bin.000001 # Query # # use `test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `test`.`t1`,`test`.`ti`
|
||||
master-bin.000001 # Query # # use `test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `t1`,`ti`
|
||||
do release_lock("lock1");
|
||||
drop table t0,t2;
|
||||
set autocommit=0;
|
||||
@@ -346,7 +346,9 @@ master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (3,3)
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS t2
|
||||
master-bin.000001 # Query # # use `test`; CREATE TABLE t2 (a int, b int, primary key (a)) engine=innodb
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (4,4)
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE table t2
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (5,5)
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE t2
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (6,6)
|
||||
@@ -545,8 +547,10 @@ UPDATE t4,t3 SET t4.a=t3.a + bug27417(1) /* top level non-ta table */;
|
||||
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Intvar # # INSERT_ID=6
|
||||
master-bin.000001 # Query # # use `test`; UPDATE t4,t3 SET t4.a=t3.a + bug27417(1) /* top level non-ta table */
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
/* the output must denote there is the query */;
|
||||
select count(*) from t1 /* must be 4 */;
|
||||
count(*)
|
||||
@@ -782,8 +786,10 @@ UPDATE t4,t3 SET t4.a=t3.a + bug27417(1) /* top level non-ta table */;
|
||||
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Intvar # # INSERT_ID=6
|
||||
master-bin.000001 # Query # # use `test`; UPDATE t4,t3 SET t4.a=t3.a + bug27417(1) /* top level non-ta table */
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
select count(*) from t1 /* must be 4 */;
|
||||
count(*)
|
||||
4
|
||||
|
@@ -101,6 +101,8 @@ master-bin.000001 # Query # # use `test`; UPDATE t SET f = 'dark blue 1' WHERE f
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t VALUES (6 + (1 * 10),"brown")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO n VALUES (now(),"brown")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
source include/diff_master_slave.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
########################################################################
|
||||
# Cleanup
|
||||
########################################################################
|
||||
|
33
mysql-test/suite/rpl/r/rpl_create_if_not_exists.result
Normal file
33
mysql-test/suite/rpl/r/rpl_create_if_not_exists.result
Normal file
@@ -0,0 +1,33 @@
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
||||
CREATE DATABASE IF NOT EXISTS mysqltest;
|
||||
USE mysqltest;
|
||||
CREATE TABLE IF NOT EXISTS t(c1 int);
|
||||
CREATE TABLE IF NOT EXISTS t1 LIKE t;
|
||||
CREATE TABLE IF NOT EXISTS t2 SELECT * FROM t;
|
||||
CREATE EVENT IF NOT EXISTS e
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
|
||||
DO SELECT now();
|
||||
DROP DATABASE mysqltest;
|
||||
CREATE DATABASE IF NOT EXISTS mysqltest;
|
||||
USE mysqltest;
|
||||
CREATE TABLE IF NOT EXISTS t(c1 int);
|
||||
CREATE TABLE IF NOT EXISTS t1 LIKE t;
|
||||
CREATE TABLE IF NOT EXISTS t2 SELECT * FROM t;
|
||||
CREATE EVENT IF NOT EXISTS e
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
|
||||
DO SELECT now();
|
||||
SHOW TABLES in mysqltest;
|
||||
Tables_in_mysqltest
|
||||
t
|
||||
t1
|
||||
t2
|
||||
SHOW EVENTS in mysqltest;
|
||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||
mysqltest e root@localhost SYSTEM ONE TIME # NULL NULL NULL NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
@@ -0,0 +1,22 @@
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp(c1 int);
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp(c1 int);
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp1 LIKE tmp;
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp1 LIKE tmp;
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp2 SELECT * FROM tmp;
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp2 SELECT * FROM tmp;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # DROP DATABASE IF EXISTS mysqltest
|
||||
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp(c1 int)
|
||||
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp(c1 int)
|
||||
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp1 LIKE tmp
|
||||
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp1 LIKE tmp
|
||||
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp2 SELECT * FROM tmp
|
||||
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp2 SELECT * FROM tmp
|
@@ -43,7 +43,7 @@ master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS db_bug_13684.t
|
||||
master-bin.000001 # Query # # DROP DATABASE IF EXISTS db_bug_13684
|
||||
master-bin.000001 # Query # # CREATE DATABASE db_bug_13684
|
||||
master-bin.000001 # Query # # use `test`; CREATE TABLE db_bug_13684.t (a int)
|
||||
master-bin.000001 # Query # # use `test`; CREATE EVENT db_bug_13684.e
|
||||
master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` EVENT db_bug_13684.e
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
|
||||
DO
|
||||
UPDATE db_bug_13684.t SET a = a + 1
|
||||
@@ -75,7 +75,7 @@ master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS db_bug_13684.t
|
||||
master-bin.000001 # Query # # DROP DATABASE IF EXISTS db_bug_13684
|
||||
master-bin.000001 # Query # # CREATE DATABASE db_bug_13684
|
||||
master-bin.000001 # Query # # use `test`; CREATE TABLE db_bug_13684.t (a int)
|
||||
master-bin.000001 # Query # # use `test`; CREATE EVENT db_bug_13684.e
|
||||
master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` EVENT db_bug_13684.e
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
|
||||
DO
|
||||
UPDATE db_bug_13684.t SET a = a + 1
|
||||
|
@@ -5,6 +5,7 @@ reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
create database if not exists mysqltest;
|
||||
use mysqltest;
|
||||
create temporary table mysqltest.t1 (n int)ENGINE=MyISAM;
|
||||
create temporary table mysqltest.t2 (n int)ENGINE=MyISAM;
|
||||
show status like 'Slave_open_temp_tables';
|
||||
|
@@ -191,5 +191,63 @@ select * from t28953;
|
||||
END;|
|
||||
ALTER EVENT event1 RENAME TO event2;
|
||||
DROP EVENT event2;
|
||||
CREATE TABLE test.t1(details CHAR(30));
|
||||
CREATE EVENT /*!50000 event44331_1 */
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_1 fired - no definer');
|
||||
CREATE DEFINER=CURRENT_USER /*!50000 EVENT event44331_2 */
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_2 fired - DEFINER=CURRENT_USER');
|
||||
CREATE DEFINER=CURRENT_USER() EVENT event44331_3
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_3 fired - DEFINER=CURRENT_USER() function');
|
||||
CREATE /*!50000 DEFINER='user44331' */ EVENT event44331_4
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_4 fired - DEFINER=user1');
|
||||
Warnings:
|
||||
Note 1449 The user specified as a definer ('user44331'@'%') does not exist
|
||||
#on master
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_1';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_1 root@localhost
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_2';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_2 root@localhost
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_3';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_3 root@localhost
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_4';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_4 user44331@%
|
||||
#on slave
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_1';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_1 root@localhost
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_2';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_2 root@localhost
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_3';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_3 root@localhost
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_4';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_4 user44331@%
|
||||
SET @@global.event_scheduler= @old_event_scheduler;
|
||||
DROP TABLE t28953;
|
||||
DROP TABLE t1;
|
||||
DROP EVENT event44331_1;
|
||||
DROP EVENT event44331_2;
|
||||
DROP EVENT event44331_3;
|
||||
DROP EVENT event44331_4;
|
||||
|
@@ -690,7 +690,7 @@ test_rpl e1 root@localhost SYSTEM RECURRING NULL 1 # # NULL ENABLED 1 latin1 lat
|
||||
USE test_rpl;
|
||||
SHOW EVENTS;
|
||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||
test_rpl e1 @ SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
test_rpl e1 root@localhost SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
==========MASTER==========
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
@@ -963,7 +963,9 @@ master-bin.000001 # Xid 1 # #
|
||||
master-bin.000001 # Query 1 # BEGIN
|
||||
master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1')
|
||||
master-bin.000001 # Xid 1 # #
|
||||
master-bin.000001 # Query 1 # BEGIN
|
||||
master-bin.000001 # Query 1 # use `test_rpl`; TRUNCATE t1
|
||||
master-bin.000001 # Xid 1 # #
|
||||
master-bin.000001 # Query 1 # BEGIN
|
||||
master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
|
||||
master-bin.000001 # Xid 1 # #
|
||||
@@ -1076,7 +1078,7 @@ master-bin.000001 # Query 1 # use `test_rpl`; GRANT EVENT ON *.* TO 'root'@'loca
|
||||
master-bin.000001 # Query 1 # BEGIN
|
||||
master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1')
|
||||
master-bin.000001 # Xid 1 # #
|
||||
master-bin.000001 # Query 1 # use `test_rpl`; CREATE EVENT e1 ON SCHEDULE EVERY '1' SECOND COMMENT 'e_second_comment' DO DELETE FROM t1
|
||||
master-bin.000001 # Query 1 # use `test_rpl`; CREATE DEFINER=`root`@`localhost` EVENT e1 ON SCHEDULE EVERY '1' SECOND COMMENT 'e_second_comment' DO DELETE FROM t1
|
||||
master-bin.000001 # Query 1 # use `test_rpl`; ALTER EVENT e1 RENAME TO e2
|
||||
master-bin.000001 # Query 1 # use `test_rpl`; DROP EVENT e2
|
||||
master-bin.000001 # Query 1 # BEGIN
|
||||
|
@@ -35,3 +35,44 @@ C3BF
|
||||
D0AA
|
||||
D0AA
|
||||
drop table t1;
|
||||
-------------test bug#45516------------------
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
||||
CREATE DATABASE mysqltest CHARSET UTF8;
|
||||
USE mysqltest;
|
||||
CREATE TABLE t (cl varchar(100)) CHARSET UTF8;
|
||||
LOAD DATA LOCAL INFILE './std_data/loaddata_utf8.dat' INTO TABLE t
|
||||
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
|
||||
----------content on master----------
|
||||
SELECT hex(cl) FROM t;
|
||||
hex(cl)
|
||||
E4B880E4BA8CE4B889
|
||||
E59B9BE4BA94E585AD
|
||||
E4B883E585ABE4B99D
|
||||
----------content on slave----------
|
||||
USE mysqltest;
|
||||
SELECT hex(cl) FROM t;
|
||||
hex(cl)
|
||||
E4B880E4BA8CE4B889
|
||||
E59B9BE4BA94E585AD
|
||||
E4B883E585ABE4B99D
|
||||
DROP DATABASE mysqltest;
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
||||
CREATE DATABASE mysqltest CHARSET UTF8;
|
||||
USE mysqltest;
|
||||
CREATE TABLE t (cl varchar(100)) CHARSET UTF8;
|
||||
LOAD DATA INFILE '../../std_data/loaddata_utf8.dat' INTO TABLE t
|
||||
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
|
||||
----------content on master----------
|
||||
SELECT hex(cl) FROM t;
|
||||
hex(cl)
|
||||
E4B880E4BA8CE4B889
|
||||
E59B9BE4BA94E585AD
|
||||
E4B883E585ABE4B99D
|
||||
----------content on slave----------
|
||||
USE mysqltest;
|
||||
SELECT hex(cl) FROM t;
|
||||
hex(cl)
|
||||
E4B880E4BA8CE4B889
|
||||
E59B9BE4BA94E585AD
|
||||
E4B883E585ABE4B99D
|
||||
DROP DATABASE mysqltest;
|
||||
|
@@ -90,5 +90,132 @@ a b
|
||||
2 row 2
|
||||
3 row 3
|
||||
0
|
||||
set sql_log_bin= 0;
|
||||
drop database rewrite;
|
||||
set sql_log_bin= 1;
|
||||
set sql_log_bin= 0;
|
||||
drop table t1;
|
||||
set sql_log_bin= 1;
|
||||
|
||||
****
|
||||
**** Bug #46861 Auto-closing of temporary tables broken by replicate-rewrite-db
|
||||
****
|
||||
|
||||
****
|
||||
**** Preparing the environment
|
||||
****
|
||||
SET sql_log_bin= 0;
|
||||
CREATE DATABASE database_master_temp_01;
|
||||
CREATE DATABASE database_master_temp_02;
|
||||
CREATE DATABASE database_master_temp_03;
|
||||
SET sql_log_bin= 1;
|
||||
SET sql_log_bin= 0;
|
||||
CREATE DATABASE database_slave_temp_01;
|
||||
CREATE DATABASE database_slave_temp_02;
|
||||
CREATE DATABASE database_slave_temp_03;
|
||||
SET sql_log_bin= 1;
|
||||
|
||||
****
|
||||
**** Creating temporary tables on different databases with different connections
|
||||
****
|
||||
**** con_temp_01 --> creates
|
||||
**** t_01_01_temp on database_master_temp_01
|
||||
****
|
||||
**** con_temp_02 --> creates
|
||||
**** t_01_01_temp on database_master_temp_01
|
||||
**** t_02_01_temp, t_02_02_temp on database_master_temp_02
|
||||
****
|
||||
**** con_temp_02 --> creates
|
||||
**** t_01_01_temp on database_master_temp_01
|
||||
**** t_02_01_temp, t_02_02_temp on database_master_temp_02
|
||||
**** t_03_01_temp, t_03_02_temp, t_03_03_temp on database_master_temp_03
|
||||
****
|
||||
|
||||
con_temp_01
|
||||
|
||||
USE database_master_temp_01;
|
||||
CREATE TEMPORARY TABLE t_01_01_temp(a int);
|
||||
INSERT INTO t_01_01_temp VALUES(1);
|
||||
|
||||
con_temp_02
|
||||
|
||||
USE database_master_temp_01;
|
||||
CREATE TEMPORARY TABLE t_01_01_temp(a int);
|
||||
INSERT INTO t_01_01_temp VALUES(1);
|
||||
USE database_master_temp_02;
|
||||
CREATE TEMPORARY TABLE t_02_01_temp(a int);
|
||||
INSERT INTO t_02_01_temp VALUES(1);
|
||||
CREATE TEMPORARY TABLE t_02_02_temp(a int);
|
||||
INSERT INTO t_02_02_temp VALUES(1);
|
||||
|
||||
con_temp_03
|
||||
|
||||
USE database_master_temp_01;
|
||||
CREATE TEMPORARY TABLE t_01_01_temp(a int);
|
||||
INSERT INTO t_01_01_temp VALUES(1);
|
||||
USE database_master_temp_02;
|
||||
CREATE TEMPORARY TABLE t_02_01_temp(a int);
|
||||
INSERT INTO t_02_01_temp VALUES(1);
|
||||
CREATE TEMPORARY TABLE t_02_02_temp(a int);
|
||||
INSERT INTO t_02_02_temp VALUES(1);
|
||||
USE database_master_temp_03;
|
||||
CREATE TEMPORARY TABLE t_03_01_temp(a int);
|
||||
INSERT INTO t_03_01_temp VALUES(1);
|
||||
CREATE TEMPORARY TABLE t_03_02_temp(a int);
|
||||
INSERT INTO t_03_02_temp VALUES(1);
|
||||
CREATE TEMPORARY TABLE t_03_03_temp(a int);
|
||||
INSERT INTO t_03_03_temp VALUES(1);
|
||||
|
||||
**** Dropping the connections
|
||||
**** We want to SHOW BINLOG EVENTS, to know what was logged. But there is no
|
||||
**** guarantee that logging of the terminated con1 has been done yet.a To be
|
||||
**** sure that logging has been done, we use a user lock.
|
||||
|
||||
show status like 'Slave_open_temp_tables';
|
||||
Variable_name Value
|
||||
Slave_open_temp_tables 10
|
||||
select get_lock("con_01",10);
|
||||
get_lock("con_01",10)
|
||||
1
|
||||
select get_lock("con_01",10);
|
||||
get_lock("con_01",10)
|
||||
1
|
||||
select get_lock("con_02",10);
|
||||
get_lock("con_02",10)
|
||||
1
|
||||
select get_lock("con_02",10);
|
||||
get_lock("con_02",10)
|
||||
1
|
||||
select get_lock("con_03",10);
|
||||
get_lock("con_03",10)
|
||||
1
|
||||
select get_lock("con_03",10);
|
||||
get_lock("con_03",10)
|
||||
1
|
||||
|
||||
**** Checking the binary log and temporary tables
|
||||
|
||||
show status like 'Slave_open_temp_tables';
|
||||
Variable_name Value
|
||||
Slave_open_temp_tables 0
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `database_master_temp_01`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `t_01_01_temp`
|
||||
master-bin.000001 # Query # # use `database_master_temp_02`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `t_02_02_temp`,`t_02_01_temp`
|
||||
master-bin.000001 # Query # # use `database_master_temp_01`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `t_01_01_temp`
|
||||
master-bin.000001 # Query # # use `database_master_temp_03`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `t_03_03_temp`,`t_03_02_temp`,`t_03_01_temp`
|
||||
master-bin.000001 # Query # # use `database_master_temp_02`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `t_02_02_temp`,`t_02_01_temp`
|
||||
master-bin.000001 # Query # # use `database_master_temp_01`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `t_01_01_temp`
|
||||
****
|
||||
**** Cleaning up the test case
|
||||
****
|
||||
SET sql_log_bin= 0;
|
||||
DROP DATABASE database_master_temp_01;
|
||||
DROP DATABASE database_master_temp_02;
|
||||
DROP DATABASE database_master_temp_03;
|
||||
SET sql_log_bin= 1;
|
||||
SET sql_log_bin= 0;
|
||||
DROP DATABASE database_slave_temp_01;
|
||||
DROP DATABASE database_slave_temp_02;
|
||||
DROP DATABASE database_slave_temp_03;
|
||||
SET sql_log_bin= 1;
|
||||
|
870
mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result
Normal file
870
mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result
Normal file
@@ -0,0 +1,870 @@
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
###################################################################################
|
||||
# CONFIGURATION
|
||||
###################################################################################
|
||||
SET SQL_LOG_BIN=0;
|
||||
CREATE TABLE nt_1 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE nt_2 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE nt_3 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE nt_4 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE tt_1 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
CREATE TABLE tt_2 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
CREATE TABLE tt_3 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
CREATE TABLE tt_4 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
SET SQL_LOG_BIN=1;
|
||||
SET SQL_LOG_BIN=0;
|
||||
CREATE TABLE nt_1 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE nt_2 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE nt_3 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE nt_4 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
||||
CREATE TABLE tt_1 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
CREATE TABLE tt_2 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
CREATE TABLE tt_3 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
CREATE TABLE tt_4 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
||||
SET SQL_LOG_BIN=1;
|
||||
CREATE FUNCTION f1 () RETURNS VARCHAR(64)
|
||||
BEGIN
|
||||
RETURN "Testing...";
|
||||
END|
|
||||
CREATE FUNCTION f2 () RETURNS VARCHAR(64)
|
||||
BEGIN
|
||||
RETURN f1();
|
||||
END|
|
||||
CREATE PROCEDURE pc_i_tt_3 (IN x INT, IN y VARCHAR(64))
|
||||
BEGIN
|
||||
INSERT INTO tt_3 VALUES (y,x,x);
|
||||
END|
|
||||
CREATE TRIGGER tr_i_tt_3_to_nt_3 BEFORE INSERT ON tt_3 FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO nt_3 VALUES (NEW.a, NEW.b, NEW.c);
|
||||
END|
|
||||
CREATE TRIGGER tr_i_nt_4_to_tt_4 BEFORE INSERT ON nt_4 FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO tt_4 VALUES (NEW.a, NEW.b, NEW.c);
|
||||
END|
|
||||
###################################################################################
|
||||
# MIXING TRANSACTIONAL and NON-TRANSACTIONAL TABLES
|
||||
###################################################################################
|
||||
#
|
||||
#1) "B T T C" generates in binlog the "B T T C" entries.
|
||||
#
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text 4", 4, "new text 4");
|
||||
INSERT INTO tt_2 VALUES ("new text 4", 4, "new text 4");
|
||||
COMMIT;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 4", 4, "new text 4")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 4", 4, "new text 4")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#1.e) "B T T C" with error in T generates in binlog the "B T T C" entries.
|
||||
#
|
||||
INSERT INTO tt_1 VALUES ("new text -2", -2, "new text -2");
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1"), ("new text -2", -2, "new text -2");
|
||||
ERROR 23000: Duplicate entry '-2' for key 'PRIMARY'
|
||||
INSERT INTO tt_2 VALUES ("new text -3", -3, "new text -3");
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
INSERT INTO tt_2 VALUES ("new text -5", -5, "new text -5");
|
||||
INSERT INTO tt_2 VALUES ("new text -4", -4, "new text -4"), ("new text -5", -5, "new text -5");
|
||||
ERROR 23000: Duplicate entry '-5' for key 'PRIMARY'
|
||||
COMMIT;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -2", -2, "new text -2")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text -3", -3, "new text -3")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text -5", -5, "new text -5")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#2) "B T T R" generates in binlog an "empty" entry.
|
||||
#
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text 5", 5, "new text 5");
|
||||
INSERT INTO tt_2 VALUES ("new text 5", 5, "new text 5");
|
||||
ROLLBACK;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#2.e) "B T T R" with error in T generates in binlog an "empty" entry.
|
||||
#
|
||||
INSERT INTO tt_1 VALUES ("new text -7", -7, "new text -7");
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text -6", -6, "new text -6"), ("new text -7", -7, "new text -7");
|
||||
ERROR 23000: Duplicate entry '-7' for key 'PRIMARY'
|
||||
INSERT INTO tt_2 VALUES ("new text -8", -8, "new text -8");
|
||||
ROLLBACK;
|
||||
BEGIN;
|
||||
INSERT INTO tt_2 VALUES ("new text -10", -10, "new text -10");
|
||||
INSERT INTO tt_2 VALUES ("new text -9", -9, "new text -9"), ("new text -10", -10, "new text -10");
|
||||
ERROR 23000: Duplicate entry '-10' for key 'PRIMARY'
|
||||
ROLLBACK;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -7", -7, "new text -7")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#3) "B T N C" generates in binlog the "B T N C" entries.
|
||||
#
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text 6", 6, "new text 6");
|
||||
INSERT INTO nt_1 VALUES ("new text 6", 6, "new text 6");
|
||||
COMMIT;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 6", 6, "new text 6")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 6", 6, "new text 6")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#3.e) "B T N C" with error in either T or N generates in binlog the "B T N C" entries.
|
||||
#
|
||||
INSERT INTO tt_1 VALUES ("new text -12", -12, "new text -12");
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text -11", -11, "new text -11"), ("new text -12", -12, "new text -12");
|
||||
ERROR 23000: Duplicate entry '-12' for key 'PRIMARY'
|
||||
INSERT INTO nt_1 VALUES ("new text -13", -13, "new text -13");
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text -14", -14, "new text -14");
|
||||
INSERT INTO nt_1 VALUES ("new text -16", -16, "new text -16");
|
||||
INSERT INTO nt_1 VALUES ("new text -15", -15, "new text -15"), ("new text -16", -16, "new text -16");
|
||||
ERROR 23000: Duplicate entry '-16' for key 'PRIMARY'
|
||||
COMMIT;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -12", -12, "new text -12")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -13", -13, "new text -13")
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -14", -14, "new text -14")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -16", -16, "new text -16")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -15", -15, "new text -15"), ("new text -16", -16, "new text -16")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#4) "B T N R" generates in binlog the "B T N R" entries.
|
||||
#
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text 7", 7, "new text 7");
|
||||
INSERT INTO nt_1 VALUES ("new text 7", 7, "new text 7");
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 7", 7, "new text 7")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 7", 7, "new text 7")
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#4.e) "B T N R" with error in either T or N generates in binlog the "B T N R" entries.
|
||||
#
|
||||
INSERT INTO tt_1 VALUES ("new text -17", -17, "new text -17");
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text -16", -16, "new text -16"), ("new text -17", -17, "new text -17");
|
||||
ERROR 23000: Duplicate entry '-17' for key 'PRIMARY'
|
||||
INSERT INTO nt_1 VALUES ("new text -18", -18, "new text -18");
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 VALUES ("new text -19", -19, "new text -19");
|
||||
INSERT INTO nt_1 VALUES ("new text -21", -21, "new text -21");
|
||||
INSERT INTO nt_1 VALUES ("new text -20", -20, "new text -20"), ("new text -21", -21, "new text -21");
|
||||
ERROR 23000: Duplicate entry '-21' for key 'PRIMARY'
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -17", -17, "new text -17")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -18", -18, "new text -18")
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -19", -19, "new text -19")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -21", -21, "new text -21")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -20", -20, "new text -20"), ("new text -21", -21, "new text -21")
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#5) "T" generates in binlog the "B T C" entry.
|
||||
#
|
||||
INSERT INTO tt_1 VALUES ("new text 8", 8, "new text 8");
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 8", 8, "new text 8")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#5.e) "T" with error in T generates in binlog an "empty" entry.
|
||||
#
|
||||
INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1");
|
||||
INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1"), ("new text -22", -22, "new text -22");
|
||||
ERROR 23000: Duplicate entry '-1' for key 'PRIMARY'
|
||||
INSERT INTO tt_1 VALUES ("new text -23", -23, "new text -23"), ("new text -1", -1, "new text -1");
|
||||
ERROR 23000: Duplicate entry '-1' for key 'PRIMARY'
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#6) "N" generates in binlog the "N" entry.
|
||||
#
|
||||
INSERT INTO nt_1 VALUES ("new text 9", 9, "new text 9");
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 9", 9, "new text 9")
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#6.e) "N" with error in N generates in binlog an empty entry if the error
|
||||
# happens in the first tuple. Otherwise, generates the "N" entry and
|
||||
# the error is appended.
|
||||
#
|
||||
INSERT INTO nt_1 VALUES ("new text -1", -1, "new text -1");
|
||||
INSERT INTO nt_1 VALUES ("new text -1", -1, "new text -1");
|
||||
ERROR 23000: Duplicate entry '-1' for key 'PRIMARY'
|
||||
INSERT INTO nt_1 VALUES ("new text -24", -24, "new text -24"), ("new text -1", -1, "new text -1");
|
||||
ERROR 23000: Duplicate entry '-1' for key 'PRIMARY'
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -1", -1, "new text -1")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -24", -24, "new text -24"), ("new text -1", -1, "new text -1")
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#7) "M" generates in binglog the "B M C" entries.
|
||||
#
|
||||
DELETE FROM nt_1;
|
||||
INSERT INTO nt_1 SELECT * FROM tt_1;
|
||||
DELETE FROM tt_1;
|
||||
INSERT INTO tt_1 SELECT * FROM nt_1;
|
||||
INSERT INTO tt_3 VALUES ("new text 000", 000, '');
|
||||
INSERT INTO tt_3 VALUES("new text 100", 100, f1());
|
||||
INSERT INTO nt_4 VALUES("new text 100", 100, f1());
|
||||
INSERT INTO tt_3 VALUES("new text 200", 200, f2());
|
||||
INSERT INTO nt_4 VALUES ("new text 300", 300, '');
|
||||
INSERT INTO nt_4 VALUES ("new text 400", 400, f1());
|
||||
INSERT INTO nt_4 VALUES ("new text 500", 500, f2());
|
||||
CALL pc_i_tt_3(600, "Testing...");
|
||||
UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 1", nt_4.a= "new text 1", tt_3.a= "new text 1", tt_4.a= "new text 1" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 2", tt_4.a= "new text 2", nt_3.a= "new text 2", nt_4.a = "new text 2" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 3", nt_3.a= "new text 3", nt_4.a= "new text 3", tt_4.a = "new text 3" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 4", nt_3.a= "new text 4", nt_4.a= "new text 4", tt_4.a = "new text 4" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; DELETE FROM nt_1
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 SELECT * FROM tt_1
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; DELETE FROM tt_1
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 SELECT * FROM nt_1
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text 000", 000, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES("new text 100", 100, f1())
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES("new text 100", 100, f1())
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES("new text 200", 200, f2())
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text 300", 300, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text 400", 400, f1())
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text 500", 500, f2())
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',600), NAME_CONST('x',600))
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 1", nt_4.a= "new text 1", tt_3.a= "new text 1", tt_4.a= "new text 1" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 2", tt_4.a= "new text 2", nt_3.a= "new text 2", nt_4.a = "new text 2" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 3", nt_3.a= "new text 3", nt_4.a= "new text 3", tt_4.a = "new text 3" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 4", nt_3.a= "new text 4", nt_4.a= "new text 4", tt_4.a = "new text 4" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#7.e) "M" with error in M generates in binglog the "B M R" entries.
|
||||
#
|
||||
INSERT INTO nt_3 VALUES ("new text -26", -26, '');
|
||||
SELECT * FROM tt_3;
|
||||
a b c
|
||||
new text 000 0
|
||||
new text 4 100 Testing...
|
||||
new text 200 200 Testing...
|
||||
Testing... 600 600
|
||||
INSERT INTO tt_3 VALUES ("new text -25", -25, ''), ("new text -26", -26, '');
|
||||
ERROR 23000: Duplicate entry '-26' for key 'PRIMARY'
|
||||
SELECT * FROM tt_3;
|
||||
a b c
|
||||
new text 000 0
|
||||
new text 4 100 Testing...
|
||||
new text 200 200 Testing...
|
||||
Testing... 600 600
|
||||
INSERT INTO tt_4 VALUES ("new text -26", -26, '');
|
||||
SELECT * FROM nt_4;
|
||||
a b c
|
||||
new text 4 100 Testing...
|
||||
new text 300 300
|
||||
new text 400 400 Testing...
|
||||
new text 500 500 Testing...
|
||||
INSERT INTO nt_4 VALUES ("new text -25", -25, ''), ("new text -26", -26, '');
|
||||
ERROR 23000: Duplicate entry '-26' for key 'PRIMARY'
|
||||
SELECT * FROM nt_4;
|
||||
a b c
|
||||
new text 4 100 Testing...
|
||||
new text 300 300
|
||||
new text 400 400 Testing...
|
||||
new text 500 500 Testing...
|
||||
new text -25 -25
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_3 VALUES ("new text -26", -26, '')
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text -25", -25, ''), ("new text -26", -26, '')
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_4 VALUES ("new text -26", -26, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text -25", -25, ''), ("new text -26", -26, '')
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#8) "B N N T C" generates in binglog the "N N B T C" entries.
|
||||
#
|
||||
BEGIN;
|
||||
INSERT INTO nt_1 VALUES ("new text 10", 10, "new text 10");
|
||||
INSERT INTO nt_2 VALUES ("new text 10", 10, "new text 10");
|
||||
INSERT INTO tt_1 VALUES ("new text 10", 10, "new text 10");
|
||||
COMMIT;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 10", 10, "new text 10")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text 10", 10, "new text 10")
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 10", 10, "new text 10")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#8.e) "B N N T R" See 6.e and 9.e.
|
||||
#
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#9) "B N N T R" generates in binlog the "N N B T R" entries.
|
||||
#
|
||||
BEGIN;
|
||||
INSERT INTO nt_1 VALUES ("new text 11", 11, "new text 11");
|
||||
INSERT INTO nt_2 VALUES ("new text 11", 11, "new text 11");
|
||||
INSERT INTO tt_1 VALUES ("new text 11", 11, "new text 11");
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 11", 11, "new text 11")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text 11", 11, "new text 11")
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 11", 11, "new text 11")
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#9.e) "B N N T R" with error in N generates in binlog the "N N B T R" entries.
|
||||
#
|
||||
BEGIN;
|
||||
INSERT INTO nt_1 VALUES ("new text -25", -25, "new text -25");
|
||||
INSERT INTO nt_2 VALUES ("new text -25", -25, "new text -25");
|
||||
INSERT INTO nt_2 VALUES ("new text -26", -26, "new text -26"), ("new text -25", -25, "new text -25");
|
||||
ERROR 23000: Duplicate entry '-25' for key 'PRIMARY'
|
||||
INSERT INTO tt_1 VALUES ("new text -27", -27, "new text -27");
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -25", -25, "new text -25")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text -25", -25, "new text -25")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text -26", -26, "new text -26"), ("new text -25", -25, "new text -25")
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -27", -27, "new text -27")
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#10) "B N N C" generates in binglog the "N N" entries.
|
||||
#
|
||||
BEGIN;
|
||||
INSERT INTO nt_1 VALUES ("new text 12", 12, "new text 12");
|
||||
INSERT INTO nt_2 VALUES ("new text 12", 12, "new text 12");
|
||||
COMMIT;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 12", 12, "new text 12")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text 12", 12, "new text 12")
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#10.e) "B N N C" See 6.e and 9.e.
|
||||
#
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#11) "B N N R" generates in binlog the "N N" entries.
|
||||
#
|
||||
BEGIN;
|
||||
INSERT INTO nt_1 VALUES ("new text 13", 13, "new text 13");
|
||||
INSERT INTO nt_2 VALUES ("new text 13", 13, "new text 13");
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 13", 13, "new text 13")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text 13", 13, "new text 13")
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#11.e) "B N N R" See 6.e and 9.e.
|
||||
#
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#12) "B M T C" generates in the binlog the "B M T C" entries.
|
||||
#
|
||||
DELETE FROM nt_1;
|
||||
BEGIN;
|
||||
INSERT INTO nt_1 SELECT * FROM tt_1;
|
||||
INSERT INTO tt_2 VALUES ("new text 14", 14, "new text 14");
|
||||
COMMIT;
|
||||
DELETE FROM tt_1;
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 SELECT * FROM nt_1;
|
||||
INSERT INTO tt_2 VALUES ("new text 15", 15, "new text 15");
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
INSERT INTO tt_3 VALUES ("new text 700", 700, '');
|
||||
INSERT INTO tt_1 VALUES ("new text 800", 800, '');
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
INSERT INTO tt_3 VALUES("new text 900", 900, f1());
|
||||
INSERT INTO tt_1 VALUES ("new text 1000", 1000, '');
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
INSERT INTO tt_3 VALUES(1100, 1100, f2());
|
||||
INSERT INTO tt_1 VALUES ("new text 1200", 1200, '');
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
INSERT INTO nt_4 VALUES ("new text 1300", 1300, '');
|
||||
INSERT INTO tt_1 VALUES ("new text 1400", 1400, '');
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
INSERT INTO nt_4 VALUES("new text 1500", 1500, f1());
|
||||
INSERT INTO tt_1 VALUES ("new text 1600", 1600, '');
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
INSERT INTO nt_4 VALUES("new text 1700", 1700, f2());
|
||||
INSERT INTO tt_1 VALUES ("new text 1800", 1800, '');
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
CALL pc_i_tt_3(1900, "Testing...");
|
||||
INSERT INTO tt_1 VALUES ("new text 2000", 2000, '');
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 5", nt_4.a= "new text 5", tt_3.a= "new text 5", tt_4.a= "new text 5" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 2100", 2100, '');
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 6", tt_4.a= "new text 6", nt_3.a= "new text 6", nt_4.a = "new text 6" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 2200", 2200, '');
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 7", nt_3.a= "new text 7", nt_4.a= "new text 7", tt_4.a = "new text 7" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 2300", 2300, '');
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 8", nt_3.a= "new text 8", nt_4.a= "new text 8", tt_4.a = "new text 8" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 2400", 2400, '');
|
||||
COMMIT;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; DELETE FROM nt_1
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 SELECT * FROM tt_1
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 14", 14, "new text 14")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; DELETE FROM tt_1
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 SELECT * FROM nt_1
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 15", 15, "new text 15")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text 700", 700, '')
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 800", 800, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES("new text 900", 900, f1())
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 1000", 1000, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES(1100, 1100, f2())
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 1200", 1200, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text 1300", 1300, '')
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 1400", 1400, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES("new text 1500", 1500, f1())
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 1600", 1600, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES("new text 1700", 1700, f2())
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 1800", 1800, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',1900), NAME_CONST('x',1900))
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2000", 2000, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 5", nt_4.a= "new text 5", tt_3.a= "new text 5", tt_4.a= "new text 5" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2100", 2100, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 6", tt_4.a= "new text 6", nt_3.a= "new text 6", nt_4.a = "new text 6" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2200", 2200, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 7", nt_3.a= "new text 7", nt_4.a= "new text 7", tt_4.a = "new text 7" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2300", 2300, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 8", nt_3.a= "new text 8", nt_4.a= "new text 8", tt_4.a = "new text 8" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2400", 2400, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#12.e) "B M T C" with error in M generates in the binlog the "B M T C" entries.
|
||||
#
|
||||
# There is a bug in the slave that needs to be fixed before enabling
|
||||
# this part of the test. A bug report will be filed referencing this
|
||||
# test case.
|
||||
BEGIN;
|
||||
INSERT INTO nt_3 VALUES ("new text -28", -28, '');
|
||||
INSERT INTO tt_3 VALUES ("new text -27", -27, ''), ("new text -28", -28, '');
|
||||
ERROR 23000: Duplicate entry '-28' for key 'PRIMARY'
|
||||
INSERT INTO tt_1 VALUES ("new text -27", -27, '');
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
INSERT INTO tt_4 VALUES ("new text -28", -28, '');
|
||||
INSERT INTO nt_4 VALUES ("new text -27", -27, ''), ("new text -28", -28, '');
|
||||
ERROR 23000: Duplicate entry '-28' for key 'PRIMARY'
|
||||
INSERT INTO tt_1 VALUES ("new text -28", -28, '');
|
||||
COMMIT;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_3 VALUES ("new text -28", -28, '')
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text -27", -27, ''), ("new text -28", -28, '')
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -27", -27, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_4 VALUES ("new text -28", -28, '')
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text -27", -27, ''), ("new text -28", -28, '')
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -28", -28, '')
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#13) "B M T R" generates in the binlog the "B M T R" entries
|
||||
#
|
||||
DELETE FROM nt_1;
|
||||
BEGIN;
|
||||
INSERT INTO nt_1 SELECT * FROM tt_1;
|
||||
INSERT INTO tt_2 VALUES ("new text 17", 17, "new text 17");
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
DELETE FROM tt_1;
|
||||
BEGIN;
|
||||
INSERT INTO tt_1 SELECT * FROM nt_1;
|
||||
INSERT INTO tt_2 VALUES ("new text 18", 18, "new text 18");
|
||||
ROLLBACK;
|
||||
INSERT INTO tt_1 SELECT * FROM nt_1;
|
||||
BEGIN;
|
||||
INSERT INTO tt_3 VALUES ("new text 2500", 2500, '');
|
||||
INSERT INTO tt_1 VALUES ("new text 2600", 2600, '');
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
BEGIN;
|
||||
INSERT INTO tt_3 VALUES("new text 2700", 2700, f1());
|
||||
INSERT INTO tt_1 VALUES ("new text 2800", 2800, '');
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
BEGIN;
|
||||
INSERT INTO tt_3 VALUES(2900, 2900, f2());
|
||||
INSERT INTO tt_1 VALUES ("new text 3000", 3000, '');
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
BEGIN;
|
||||
INSERT INTO nt_4 VALUES ("new text 3100", 3100, '');
|
||||
INSERT INTO tt_1 VALUES ("new text 3200", 3200, '');
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
BEGIN;
|
||||
INSERT INTO nt_4 VALUES("new text 3300", 3300, f1());
|
||||
INSERT INTO tt_1 VALUES ("new text 3400", 3400, '');
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
BEGIN;
|
||||
INSERT INTO nt_4 VALUES("new text 3500", 3500, f2());
|
||||
INSERT INTO tt_1 VALUES ("new text 3600", 3600, '');
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
BEGIN;
|
||||
CALL pc_i_tt_3(3700, "Testing...");
|
||||
INSERT INTO tt_1 VALUES ("new text 3700", 3700, '');
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
BEGIN;
|
||||
UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 9", nt_4.a= "new text 9", tt_3.a= "new text 9", tt_4.a= "new text 9" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 3800", 3800, '');
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
BEGIN;
|
||||
UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 10", tt_4.a= "new text 10", nt_3.a= "new text 10", nt_4.a = "new text 10" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 3900", 3900, '');
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
BEGIN;
|
||||
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 11", nt_3.a= "new text 11", nt_4.a= "new text 11", tt_4.a = "new text 11" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 4000", 4000, '');
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
BEGIN;
|
||||
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 12", nt_3.a= "new text 12", nt_4.a= "new text 12", tt_4.a = "new text 12" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
||||
INSERT INTO tt_1 VALUES ("new text 4100", 4100, '');
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; DELETE FROM nt_1
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 SELECT * FROM tt_1
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 17", 17, "new text 17")
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; DELETE FROM tt_1
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 SELECT * FROM nt_1
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text 2500", 2500, '')
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2600", 2600, '')
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES("new text 2700", 2700, f1())
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2800", 2800, '')
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES(2900, 2900, f2())
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3000", 3000, '')
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text 3100", 3100, '')
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3200", 3200, '')
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES("new text 3300", 3300, f1())
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3400", 3400, '')
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES("new text 3500", 3500, f2())
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3600", 3600, '')
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',3700), NAME_CONST('x',3700))
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3700", 3700, '')
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 9", nt_4.a= "new text 9", tt_3.a= "new text 9", tt_4.a= "new text 9" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3800", 3800, '')
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 10", tt_4.a= "new text 10", nt_3.a= "new text 10", nt_4.a = "new text 10" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3900", 3900, '')
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 11", nt_3.a= "new text 11", nt_4.a= "new text 11", tt_4.a = "new text 11" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 4000", 4000, '')
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 12", nt_3.a= "new text 12", nt_4.a= "new text 12", tt_4.a = "new text 12" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 4100", 4100, '')
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
#13.e) "B M T R" with error in M generates in the binlog the "B M T R" entries.
|
||||
#
|
||||
BEGIN;
|
||||
INSERT INTO nt_3 VALUES ("new text -30", -30, '');
|
||||
INSERT INTO tt_3 VALUES ("new text -29", -29, ''), ("new text -30", -30, '');
|
||||
ERROR 23000: Duplicate entry '-30' for key 'PRIMARY'
|
||||
INSERT INTO tt_1 VALUES ("new text -30", -30, '');
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
BEGIN;
|
||||
INSERT INTO tt_4 VALUES ("new text -30", -30, '');
|
||||
INSERT INTO nt_4 VALUES ("new text -29", -29, ''), ("new text -30", -30, '');
|
||||
ERROR 23000: Duplicate entry '-30' for key 'PRIMARY'
|
||||
INSERT INTO tt_1 VALUES ("new text -31", -31, '');
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_3 VALUES ("new text -30", -30, '')
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text -29", -29, ''), ("new text -30", -30, '')
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -30", -30, '')
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_4 VALUES ("new text -30", -30, '')
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text -29", -29, ''), ("new text -30", -30, '')
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -31", -31, '')
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
###################################################################################
|
||||
# CLEAN
|
||||
###################################################################################
|
||||
DROP TABLE tt_1;
|
||||
DROP TABLE tt_2;
|
||||
DROP TABLE tt_3;
|
||||
DROP TABLE tt_4;
|
||||
DROP TABLE nt_1;
|
||||
DROP TABLE nt_2;
|
||||
DROP TABLE nt_3;
|
||||
DROP TABLE nt_4;
|
||||
DROP PROCEDURE pc_i_tt_3;
|
||||
DROP FUNCTION f1;
|
||||
DROP FUNCTION f2;
|
@@ -125,14 +125,13 @@ while ($type)
|
||||
connection master;
|
||||
sync_slave_with_master;
|
||||
|
||||
# Re-enable this after fixing BUG#46130
|
||||
#connection master;
|
||||
#let $diff_statement= SELECT * FROM t order by i;
|
||||
#source include/diff_master_slave.inc;
|
||||
connection master;
|
||||
let $diff_statement= SELECT * FROM t order by i;
|
||||
source include/diff_master_slave.inc;
|
||||
|
||||
#connection master;
|
||||
#let $diff_statement= SELECT * FROM n order by d, f;
|
||||
#source include/diff_master_slave.inc;
|
||||
connection master;
|
||||
let $diff_statement= SELECT * FROM n order by d, f;
|
||||
source include/diff_master_slave.inc;
|
||||
|
||||
--echo ########################################################################
|
||||
--echo # Cleanup
|
||||
|
70
mysql-test/suite/rpl/t/rpl_create_if_not_exists.test
Normal file
70
mysql-test/suite/rpl/t/rpl_create_if_not_exists.test
Normal file
@@ -0,0 +1,70 @@
|
||||
# BUG#45574:
|
||||
# SP: CREATE DATABASE|TABLE IF NOT EXISTS not binlogged if routine exists.
|
||||
#
|
||||
# There is an inconsistency with DROP DATABASE|TABLE|EVENT IF EXISTS and
|
||||
# CREATE DATABASE|TABLE|EVENT IF NOT EXISTS. DROP IF EXISTS statements are
|
||||
# binlogged even if either the DB, TABLE or EVENT does not exist. In
|
||||
# contrast, Only the CREATE EVENT IF NOT EXISTS is binlogged when the EVENT
|
||||
# exists.
|
||||
#
|
||||
# This problem caused some of the tests to fail randomly on PB or PB2.
|
||||
#
|
||||
# Description:
|
||||
# Fixed this bug by adding calls to write_bin_log in:
|
||||
# mysql_create_db
|
||||
# mysql_create_table_no_lock
|
||||
# mysql_create_like_table
|
||||
# create_table_from_items
|
||||
#
|
||||
# Test is implemented as follows:
|
||||
# i) test each "CREATE IF NOT EXISTS" (DDL), found in MySQL 5.1 manual
|
||||
# exclude CREATE TEMPORARY TABLE, on existent objects;
|
||||
#
|
||||
# Note:
|
||||
# rpl_create_tmp_table_if_not_exists.test tests CREATE TEMPORARY TABLE cases.
|
||||
#
|
||||
# References:
|
||||
# http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-data-definition.html
|
||||
#
|
||||
|
||||
source include/master-slave.inc;
|
||||
disable_warnings;
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS mysqltest;
|
||||
USE mysqltest;
|
||||
CREATE TABLE IF NOT EXISTS t(c1 int);
|
||||
CREATE TABLE IF NOT EXISTS t1 LIKE t;
|
||||
CREATE TABLE IF NOT EXISTS t2 SELECT * FROM t;
|
||||
CREATE EVENT IF NOT EXISTS e
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
|
||||
DO SELECT now();
|
||||
sync_slave_with_master;
|
||||
|
||||
connection slave;
|
||||
#DROP database from slave.
|
||||
#The database and all tables can be recreated in slave
|
||||
#if binlog of the second CREATE command is recorded and sent from master to slave.
|
||||
DROP DATABASE mysqltest;
|
||||
|
||||
connection master;
|
||||
CREATE DATABASE IF NOT EXISTS mysqltest;
|
||||
USE mysqltest;
|
||||
CREATE TABLE IF NOT EXISTS t(c1 int);
|
||||
CREATE TABLE IF NOT EXISTS t1 LIKE t;
|
||||
CREATE TABLE IF NOT EXISTS t2 SELECT * FROM t;
|
||||
CREATE EVENT IF NOT EXISTS e
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
|
||||
DO SELECT now();
|
||||
sync_slave_with_master;
|
||||
|
||||
connection slave;
|
||||
SHOW TABLES in mysqltest;
|
||||
#Execution time changes in each run. So we disregard it by calling replace_column.
|
||||
replace_column 6 #;
|
||||
SHOW EVENTS in mysqltest;
|
||||
|
||||
|
||||
connection master;
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
||||
source include/master-slave-end.inc;
|
@@ -0,0 +1,41 @@
|
||||
# BUG#45574:
|
||||
# SP: CREATE DATABASE|TABLE IF NOT EXISTS not binlogged if routine exists.
|
||||
#
|
||||
# There is an inconsistency with DROP DATABASE|TABLE|EVENT IF EXISTS and
|
||||
# CREATE DATABASE|TABLE|EVENT IF NOT EXISTS. DROP IF EXISTS statements are
|
||||
# binlogged even if either the DB, TABLE or EVENT does not exist. In
|
||||
# contrast, Only the CREATE EVENT IF NOT EXISTS is binlogged when the EVENT
|
||||
# exists.
|
||||
#
|
||||
# This problem caused some of the tests to fail randomly on PB or PB2.
|
||||
#
|
||||
# Test is implemented as follows:
|
||||
#
|
||||
# i) test each "CREATE TEMPORARY TABLE IF EXISTS" (DDL), found in MySQL
|
||||
# 5.1 manual, on existent objects;
|
||||
# ii) show binlog events;
|
||||
#
|
||||
# Note:
|
||||
# rpl_create_if_not_exists.test tests other cases.
|
||||
#
|
||||
# References:
|
||||
# http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-data-definition.html
|
||||
#
|
||||
|
||||
source include/master-slave.inc;
|
||||
#CREATE TEMPORARY TABLE statements are not binlogged in row mode,
|
||||
#So it must be test by itself.
|
||||
source include/have_binlog_format_mixed_or_statement.inc;
|
||||
disable_warnings;
|
||||
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
||||
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp(c1 int);
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp(c1 int);
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp1 LIKE tmp;
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp1 LIKE tmp;
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp2 SELECT * FROM tmp;
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp2 SELECT * FROM tmp;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
source include/master-slave-end.inc;
|
@@ -12,21 +12,23 @@ source include/have_binlog_format_mixed_or_statement.inc;
|
||||
create database if not exists mysqltest;
|
||||
--enable_warnings
|
||||
|
||||
connect (con_temp,127.0.0.1,root,,test,$MASTER_MYPORT,);
|
||||
|
||||
connection con_temp;
|
||||
use mysqltest;
|
||||
create temporary table mysqltest.t1 (n int)ENGINE=MyISAM;
|
||||
create temporary table mysqltest.t2 (n int)ENGINE=MyISAM;
|
||||
|
||||
disconnect con_temp;
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
connection master;
|
||||
disconnect master;
|
||||
|
||||
connection master1;
|
||||
# Wait until drop of temp tables appears in binlog
|
||||
let $wait_binlog_event= DROP;
|
||||
source include/wait_for_binlog_event.inc;
|
||||
|
||||
sync_slave_with_master;
|
||||
|
||||
connection slave;
|
||||
show status like 'Slave_open_temp_tables';
|
||||
# Cleanup
|
||||
connection default;
|
||||
connection master;
|
||||
drop database mysqltest;
|
||||
sync_slave_with_master;
|
||||
|
||||
|
@@ -46,12 +46,62 @@ connection master;
|
||||
|
||||
DROP EVENT event2;
|
||||
|
||||
sync_slave_with_master;
|
||||
#
|
||||
# BUG#44331
|
||||
# This test verifies if the definer is consistent between master and slave,
|
||||
# when the event is created without the DEFINER clause set explicitly or the
|
||||
# DEFINER is set to CURRENT_USER
|
||||
#
|
||||
CREATE TABLE test.t1(details CHAR(30));
|
||||
|
||||
# Doing cleanup of the table referred to in the event to guarantee
|
||||
# that there is no bad timing cauing it to try to access the table.
|
||||
CREATE EVENT /*!50000 event44331_1 */
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_1 fired - no definer');
|
||||
|
||||
CREATE DEFINER=CURRENT_USER /*!50000 EVENT event44331_2 */
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_2 fired - DEFINER=CURRENT_USER');
|
||||
|
||||
CREATE DEFINER=CURRENT_USER() EVENT event44331_3
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_3 fired - DEFINER=CURRENT_USER() function');
|
||||
|
||||
CREATE /*!50000 DEFINER='user44331' */ EVENT event44331_4
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_4 fired - DEFINER=user1');
|
||||
|
||||
--echo #on master
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_1';
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_2';
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_3';
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_4';
|
||||
|
||||
sync_slave_with_master;
|
||||
connection slave;
|
||||
--echo #on slave
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_1';
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_2';
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_3';
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_4';
|
||||
|
||||
connection master;
|
||||
SET @@global.event_scheduler= @old_event_scheduler;
|
||||
DROP TABLE t28953;
|
||||
DROP TABLE t1;
|
||||
DROP EVENT event44331_1;
|
||||
DROP EVENT event44331_2;
|
||||
DROP EVENT event44331_3;
|
||||
DROP EVENT event44331_4;
|
||||
sync_slave_with_master;
|
||||
|
@@ -31,3 +31,20 @@ select hex(a) from t1;
|
||||
connection master;
|
||||
drop table t1;
|
||||
sync_slave_with_master;
|
||||
|
||||
#
|
||||
# Bug#45516
|
||||
# When slave SQL thread executing LOAD DATA command, the
|
||||
# thd->variables.collation_database was not set properly to the default
|
||||
# database charset
|
||||
#
|
||||
|
||||
echo -------------test bug#45516------------------;
|
||||
|
||||
# LOAD DATA INFILE
|
||||
let $LOAD_LOCAL=1;
|
||||
source include/rpl_loaddata_charset.inc;
|
||||
|
||||
# LOAD DATA LOCAL INFILE
|
||||
let $LOAD_LOCAL=0;
|
||||
source include/rpl_loaddata_charset.inc;
|
||||
|
@@ -1 +1 @@
|
||||
"--replicate-rewrite-db=test->rewrite" "--replicate-rewrite-db=mysqltest1->test"
|
||||
"--replicate-rewrite-db=test->rewrite" "--replicate-rewrite-db=mysqltest1->test" "--replicate-rewrite-db=database_master_temp_01->database_slave_temp_01" "--replicate-rewrite-db=database_master_temp_02->database_slave_temp_02" "--replicate-rewrite-db=database_master_temp_03->database_slave_temp_03"
|
||||
|
@@ -76,9 +76,164 @@ connection slave;
|
||||
# The empty line last comes from the end line field in the file
|
||||
select * from rewrite.t1;
|
||||
|
||||
set sql_log_bin= 0;
|
||||
drop database rewrite;
|
||||
set sql_log_bin= 1;
|
||||
|
||||
connection master;
|
||||
set sql_log_bin= 0;
|
||||
drop table t1;
|
||||
set sql_log_bin= 1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
--echo
|
||||
--echo ****
|
||||
--echo **** Bug #46861 Auto-closing of temporary tables broken by replicate-rewrite-db
|
||||
--echo ****
|
||||
--echo
|
||||
|
||||
--echo ****
|
||||
--echo **** Preparing the environment
|
||||
--echo ****
|
||||
connection master;
|
||||
|
||||
connect (con_temp_03,127.0.0.1,root,,test,$MASTER_MYPORT,);
|
||||
connect (con_temp_02,127.0.0.1,root,,test,$MASTER_MYPORT,);
|
||||
connect (con_temp_01,127.0.0.1,root,,test,$MASTER_MYPORT,);
|
||||
|
||||
connection master;
|
||||
SET sql_log_bin= 0;
|
||||
CREATE DATABASE database_master_temp_01;
|
||||
CREATE DATABASE database_master_temp_02;
|
||||
CREATE DATABASE database_master_temp_03;
|
||||
SET sql_log_bin= 1;
|
||||
|
||||
connection slave;
|
||||
SET sql_log_bin= 0;
|
||||
CREATE DATABASE database_slave_temp_01;
|
||||
CREATE DATABASE database_slave_temp_02;
|
||||
CREATE DATABASE database_slave_temp_03;
|
||||
SET sql_log_bin= 1;
|
||||
|
||||
--echo
|
||||
--echo ****
|
||||
--echo **** Creating temporary tables on different databases with different connections
|
||||
--echo ****
|
||||
--echo **** con_temp_01 --> creates
|
||||
--echo **** t_01_01_temp on database_master_temp_01
|
||||
--echo ****
|
||||
--echo **** con_temp_02 --> creates
|
||||
--echo **** t_01_01_temp on database_master_temp_01
|
||||
--echo **** t_02_01_temp, t_02_02_temp on database_master_temp_02
|
||||
--echo ****
|
||||
--echo **** con_temp_02 --> creates
|
||||
--echo **** t_01_01_temp on database_master_temp_01
|
||||
--echo **** t_02_01_temp, t_02_02_temp on database_master_temp_02
|
||||
--echo **** t_03_01_temp, t_03_02_temp, t_03_03_temp on database_master_temp_03
|
||||
--echo ****
|
||||
|
||||
--echo
|
||||
--echo con_temp_01
|
||||
--echo
|
||||
connection con_temp_01;
|
||||
USE database_master_temp_01;
|
||||
CREATE TEMPORARY TABLE t_01_01_temp(a int);
|
||||
INSERT INTO t_01_01_temp VALUES(1);
|
||||
|
||||
--echo
|
||||
--echo con_temp_02
|
||||
--echo
|
||||
connection con_temp_02;
|
||||
USE database_master_temp_01;
|
||||
CREATE TEMPORARY TABLE t_01_01_temp(a int);
|
||||
INSERT INTO t_01_01_temp VALUES(1);
|
||||
USE database_master_temp_02;
|
||||
CREATE TEMPORARY TABLE t_02_01_temp(a int);
|
||||
INSERT INTO t_02_01_temp VALUES(1);
|
||||
CREATE TEMPORARY TABLE t_02_02_temp(a int);
|
||||
INSERT INTO t_02_02_temp VALUES(1);
|
||||
|
||||
--echo
|
||||
--echo con_temp_03
|
||||
--echo
|
||||
connection con_temp_03;
|
||||
USE database_master_temp_01;
|
||||
CREATE TEMPORARY TABLE t_01_01_temp(a int);
|
||||
INSERT INTO t_01_01_temp VALUES(1);
|
||||
USE database_master_temp_02;
|
||||
CREATE TEMPORARY TABLE t_02_01_temp(a int);
|
||||
INSERT INTO t_02_01_temp VALUES(1);
|
||||
CREATE TEMPORARY TABLE t_02_02_temp(a int);
|
||||
INSERT INTO t_02_02_temp VALUES(1);
|
||||
USE database_master_temp_03;
|
||||
CREATE TEMPORARY TABLE t_03_01_temp(a int);
|
||||
INSERT INTO t_03_01_temp VALUES(1);
|
||||
CREATE TEMPORARY TABLE t_03_02_temp(a int);
|
||||
INSERT INTO t_03_02_temp VALUES(1);
|
||||
CREATE TEMPORARY TABLE t_03_03_temp(a int);
|
||||
INSERT INTO t_03_03_temp VALUES(1);
|
||||
|
||||
--echo
|
||||
--echo **** Dropping the connections
|
||||
--echo **** We want to SHOW BINLOG EVENTS, to know what was logged. But there is no
|
||||
--echo **** guarantee that logging of the terminated con1 has been done yet.a To be
|
||||
--echo **** sure that logging has been done, we use a user lock.
|
||||
--echo
|
||||
connection master;
|
||||
sync_slave_with_master;
|
||||
connection slave;
|
||||
show status like 'Slave_open_temp_tables';
|
||||
|
||||
connection master;
|
||||
let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
|
||||
connection con_temp_01;
|
||||
select get_lock("con_01",10);
|
||||
connection master;
|
||||
disconnect con_temp_01;
|
||||
select get_lock("con_01",10);
|
||||
|
||||
connection con_temp_02;
|
||||
select get_lock("con_02",10);
|
||||
connection master;
|
||||
disconnect con_temp_02;
|
||||
select get_lock("con_02",10);
|
||||
|
||||
connection con_temp_03;
|
||||
select get_lock("con_03",10);
|
||||
connection master;
|
||||
disconnect con_temp_03;
|
||||
select get_lock("con_03",10);
|
||||
|
||||
--echo
|
||||
--echo **** Checking the binary log and temporary tables
|
||||
--echo
|
||||
connection master;
|
||||
sync_slave_with_master;
|
||||
connection slave;
|
||||
show status like 'Slave_open_temp_tables';
|
||||
|
||||
connection master;
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
--echo ****
|
||||
--echo **** Cleaning up the test case
|
||||
--echo ****
|
||||
connection master;
|
||||
SET sql_log_bin= 0;
|
||||
DROP DATABASE database_master_temp_01;
|
||||
DROP DATABASE database_master_temp_02;
|
||||
DROP DATABASE database_master_temp_03;
|
||||
SET sql_log_bin= 1;
|
||||
|
||||
connection slave;
|
||||
SET sql_log_bin= 0;
|
||||
DROP DATABASE database_slave_temp_01;
|
||||
DROP DATABASE database_slave_temp_02;
|
||||
DROP DATABASE database_slave_temp_03;
|
||||
SET sql_log_bin= 1;
|
||||
|
||||
connection master;
|
||||
sync_slave_with_master;
|
||||
|
||||
# end of 5.0 tests
|
||||
|
5
mysql-test/suite/rpl/t/rpl_stm_mixing_engines.test
Normal file
5
mysql-test/suite/rpl/t/rpl_stm_mixing_engines.test
Normal file
@@ -0,0 +1,5 @@
|
||||
--source include/have_binlog_format_statement.inc
|
||||
--source include/master-slave.inc
|
||||
--source include/have_innodb.inc
|
||||
|
||||
--source extra/rpl_tests/rpl_mixing_engines.test
|
@@ -14,6 +14,7 @@ create table t2 select * from t1 procedure analyse();
|
||||
select * from t2;
|
||||
drop table t1,t2;
|
||||
|
||||
--error ER_WRONG_USAGE
|
||||
EXPLAIN SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE();
|
||||
|
||||
#
|
||||
@@ -102,4 +103,13 @@ select f2 from t1 procedure analyse(1, 1);
|
||||
select f3 from t1 procedure analyse(1, 1);
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#46184 Crash, SELECT ... FROM derived table procedure analyze
|
||||
#
|
||||
CREATE TABLE t1(a INT,b INT,c INT,d INT,e INT,f INT,g INT,h INT,i INT,j INT,k INT);
|
||||
INSERT INTO t1 VALUES ();
|
||||
--error ER_WRONG_USAGE
|
||||
SELECT * FROM (SELECT * FROM t1) d PROCEDURE ANALYSE();
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 4.1 tests
|
||||
|
@@ -324,3 +324,21 @@ insert into t1 values(null,0,0,0,null);
|
||||
replace into t1 values(null,1,0,2,null);
|
||||
select last_insert_id();
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#46616: Assertion `!table->auto_increment_field_not_null' on view
|
||||
--echo # manipulations
|
||||
--echo #
|
||||
CREATE TABLE t1 ( a INT );
|
||||
INSERT INTO t1 VALUES (1), (1);
|
||||
|
||||
CREATE TABLE t2 ( a INT AUTO_INCREMENT KEY );
|
||||
--error ER_DUP_ENTRY
|
||||
CREATE TABLE IF NOT EXISTS t2 AS SELECT a FROM t1;
|
||||
|
||||
UPDATE t2 SET a = 2;
|
||||
|
||||
SELECT a FROM t2;
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
|
@@ -1018,3 +1018,18 @@ DROP TABLE t;
|
||||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
--echo #
|
||||
--echo # Bug #46607: Assertion failed: (cond_type == Item::FUNC_ITEM) results in
|
||||
--echo # server crash
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t (a INT, b INT, INDEX (a,b));
|
||||
INSERT INTO t VALUES (2,0), (2,0), (2,1), (2,1);
|
||||
INSERT INTO t SELECT * FROM t;
|
||||
|
||||
SELECT a, MAX(b) FROM t WHERE b GROUP BY a;
|
||||
|
||||
DROP TABLE t;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@@ -19,3 +19,22 @@ let $other_engine_type= MEMORY;
|
||||
let $other_handler_engine_type= MyISAM;
|
||||
|
||||
--source include/handler.inc
|
||||
|
||||
--echo #
|
||||
--echo # BUG #46456: HANDLER OPEN + TRUNCATE + DROP (temporary) TABLE, crash
|
||||
--echo #
|
||||
CREATE TABLE t1 AS SELECT 1 AS f1;
|
||||
HANDLER t1 OPEN;
|
||||
TRUNCATE t1;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
HANDLER t1 READ FIRST;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TEMPORARY TABLE t1 AS SELECT 1 AS f1;
|
||||
HANDLER t1 OPEN;
|
||||
TRUNCATE t1;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
HANDLER t1 READ FIRST;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@@ -5,6 +5,9 @@
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
SET @odl_sync_frm = @@global.sync_frm;
|
||||
SET @@global.sync_frm = OFF;
|
||||
|
||||
connect (locker,localhost,root,,);
|
||||
connect (writer,localhost,root,,);
|
||||
|
||||
@@ -214,6 +217,8 @@ DROP TABLE t1;
|
||||
--disconnect locker
|
||||
--disconnect writer
|
||||
|
||||
SET @@global.sync_frm = @odl_sync_frm;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
|
@@ -8,6 +8,9 @@
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
SET @odl_sync_frm = @@global.sync_frm;
|
||||
SET @@global.sync_frm = OFF;
|
||||
|
||||
# Test to see if select will get the lock ahead of low priority update
|
||||
|
||||
connect (locker,localhost,root,,);
|
||||
@@ -136,6 +139,8 @@ DROP TABLE t1, t2, t3;
|
||||
--disconnect locker
|
||||
--disconnect writer
|
||||
|
||||
SET @@global.sync_frm = @odl_sync_frm;
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
@@ -1622,4 +1622,15 @@ DROP TABLE m1,t1,t2,t3,t4,t5,t6,t7;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
SELECT 1 FROM m1; # Should not hang!
|
||||
|
||||
--echo #
|
||||
--echo # Bug #46614: Assertion in show_create_trigger()
|
||||
--echo #
|
||||
CREATE TABLE t1(a int);
|
||||
CREATE TABLE t2(a int);
|
||||
CREATE TABLE t3(a int) ENGINE = MERGE UNION(t1, t2);
|
||||
CREATE TRIGGER tr1 AFTER INSERT ON t3 FOR EACH ROW CALL foo();
|
||||
SHOW CREATE TRIGGER tr1;
|
||||
DROP TRIGGER tr1;
|
||||
DROP TABLE t1, t2, t3;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@@ -1,12 +1,35 @@
|
||||
--disable_abort_on_error
|
||||
# Run this tets only when mysqld don't has partitioning
|
||||
# Run this test only when mysqld don't has partitioning (not compiled with)
|
||||
# the statements are not expected to work, just check that we
|
||||
# can't crash the server
|
||||
-- require r/not_partition.require
|
||||
disable_query_log;
|
||||
show variables like "have_partitioning";
|
||||
enable_query_log;
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||
|
||||
#
|
||||
# Bug#39893: Crash if select on a partitioned table,
|
||||
# when partitioning is disabled
|
||||
FLUSH TABLES;
|
||||
--copy_file $MYSQLTEST_VARDIR/std_data/parts/t1.frm $MYSQLD_DATADIR/test/t1.frm
|
||||
SELECT * FROM t1;
|
||||
TRUNCATE TABLE t1;
|
||||
ANALYZE TABLE t1;
|
||||
CHECK TABLE t1;
|
||||
OPTIMIZE TABLE t1;
|
||||
REPAIR TABLE t1;
|
||||
ALTER TABLE t1 REPAIR PARTITION ALL;
|
||||
ALTER TABLE t1 CHECK PARTITION ALL;
|
||||
ALTER TABLE t1 OPTIMIZE PARTITION ALL;
|
||||
ALTER TABLE t1 ANALYZE PARTITION ALL;
|
||||
ALTER TABLE t1 REBUILD PARTITION ALL;
|
||||
ALTER TABLE t1 ENGINE Memory;
|
||||
ALTER TABLE t1 ADD (new INT);
|
||||
DROP TABLE t1;
|
||||
|
||||
--error ER_FEATURE_DISABLED
|
||||
CREATE TABLE t1 (
|
||||
|
@@ -14,6 +14,53 @@
|
||||
drop table if exists t1, t2;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Bug#46639: 1030 (HY000): Got error 124 from storage engine on
|
||||
# INSERT ... SELECT ...
|
||||
CREATE TABLE t1 (
|
||||
a int NOT NULL,
|
||||
b int NOT NULL);
|
||||
|
||||
CREATE TABLE t2 (
|
||||
a int NOT NULL,
|
||||
b int NOT NULL,
|
||||
INDEX(b)
|
||||
)
|
||||
PARTITION BY HASH(a) PARTITIONS 2;
|
||||
|
||||
INSERT INTO t1 VALUES (399, 22);
|
||||
INSERT INTO t2 VALUES (1, 22), (1, 42);
|
||||
|
||||
INSERT INTO t2 SELECT 1, 399 FROM t2, t1
|
||||
WHERE t1.b = t2.b;
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
#
|
||||
# Bug#46478: timestamp field incorrectly defaulted when partition is reorganized
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
a timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
b varchar(10),
|
||||
PRIMARY KEY (a)
|
||||
)
|
||||
PARTITION BY RANGE (to_days(a)) (
|
||||
PARTITION p1 VALUES LESS THAN (733407),
|
||||
PARTITION pmax VALUES LESS THAN MAXVALUE
|
||||
);
|
||||
|
||||
INSERT INTO t1 VALUES ('2007-07-30 17:35:48', 'p1');
|
||||
INSERT INTO t1 VALUES ('2009-07-14 17:35:55', 'pmax');
|
||||
INSERT INTO t1 VALUES ('2009-09-21 17:31:42', 'pmax');
|
||||
|
||||
SELECT * FROM t1;
|
||||
ALTER TABLE t1 REORGANIZE PARTITION pmax INTO (
|
||||
PARTITION p3 VALUES LESS THAN (733969),
|
||||
PARTITION pmax VALUES LESS THAN MAXVALUE);
|
||||
SELECT * FROM t1;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#36001: Partitions: spelling and using some error messages
|
||||
#
|
||||
|
1
mysql-test/t/partition_disabled-master.opt
Normal file
1
mysql-test/t/partition_disabled-master.opt
Normal file
@@ -0,0 +1 @@
|
||||
--loose-skip-partition
|
85
mysql-test/t/partition_disabled.test
Normal file
85
mysql-test/t/partition_disabled.test
Normal file
@@ -0,0 +1,85 @@
|
||||
--disable_abort_on_error
|
||||
# Run this test only when mysqld has partitioning, but it is disabled.
|
||||
# The statements are not expected to work, just check that we
|
||||
# can't crash the server.
|
||||
--require r/disabled_partition.require
|
||||
--disable_query_log
|
||||
show variables like "have_partitioning";
|
||||
--enable_query_log
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||
|
||||
#
|
||||
# Bug#39893: Crash if select on a partitioned table,
|
||||
# when partitioning is disabled
|
||||
FLUSH TABLES;
|
||||
--copy_file $MYSQLTEST_VARDIR/std_data/parts/t1.frm $MYSQLD_DATADIR/test/t1.frm
|
||||
SELECT * FROM t1;
|
||||
TRUNCATE TABLE t1;
|
||||
ANALYZE TABLE t1;
|
||||
CHECK TABLE t1;
|
||||
OPTIMIZE TABLE t1;
|
||||
REPAIR TABLE t1;
|
||||
ALTER TABLE t1 REPAIR PARTITION ALL;
|
||||
ALTER TABLE t1 CHECK PARTITION ALL;
|
||||
ALTER TABLE t1 OPTIMIZE PARTITION ALL;
|
||||
ALTER TABLE t1 ANALYZE PARTITION ALL;
|
||||
ALTER TABLE t1 REBUILD PARTITION ALL;
|
||||
ALTER TABLE t1 ENGINE Memory;
|
||||
ALTER TABLE t1 ADD (new INT);
|
||||
DROP TABLE t1;
|
||||
|
||||
--error ER_OPTION_PREVENTS_STATEMENT
|
||||
CREATE TABLE t1 (
|
||||
firstname VARCHAR(25) NOT NULL,
|
||||
lastname VARCHAR(25) NOT NULL,
|
||||
username VARCHAR(16) NOT NULL,
|
||||
email VARCHAR(35),
|
||||
joined DATE NOT NULL
|
||||
)
|
||||
PARTITION BY KEY(joined)
|
||||
PARTITIONS 6;
|
||||
|
||||
--error ER_OPTION_PREVENTS_STATEMENT
|
||||
ALTER TABLE t1 PARTITION BY KEY(joined) PARTITIONS 2;
|
||||
|
||||
--error ER_BAD_TABLE_ERROR
|
||||
drop table t1;
|
||||
|
||||
--error ER_OPTION_PREVENTS_STATEMENT
|
||||
CREATE TABLE t1 (
|
||||
firstname VARCHAR(25) NOT NULL,
|
||||
lastname VARCHAR(25) NOT NULL,
|
||||
username VARCHAR(16) NOT NULL,
|
||||
email VARCHAR(35),
|
||||
joined DATE NOT NULL
|
||||
)
|
||||
PARTITION BY RANGE( YEAR(joined) ) (
|
||||
PARTITION p0 VALUES LESS THAN (1960),
|
||||
PARTITION p1 VALUES LESS THAN (1970),
|
||||
PARTITION p2 VALUES LESS THAN (1980),
|
||||
PARTITION p3 VALUES LESS THAN (1990),
|
||||
PARTITION p4 VALUES LESS THAN MAXVALUE
|
||||
);
|
||||
--error ER_BAD_TABLE_ERROR
|
||||
drop table t1;
|
||||
|
||||
--error ER_OPTION_PREVENTS_STATEMENT
|
||||
CREATE TABLE t1 (id INT, purchased DATE)
|
||||
PARTITION BY RANGE( YEAR(purchased) )
|
||||
SUBPARTITION BY HASH( TO_DAYS(purchased) )
|
||||
SUBPARTITIONS 2 (
|
||||
PARTITION p0 VALUES LESS THAN (1990),
|
||||
PARTITION p1 VALUES LESS THAN (2000),
|
||||
PARTITION p2 VALUES LESS THAN MAXVALUE
|
||||
);
|
||||
--error ER_BAD_TABLE_ERROR
|
||||
drop table t1;
|
||||
|
||||
# Create a table without partitions to test "EXPLAIN PARTITIONS"
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin);
|
||||
insert into t1 values (''),(' '),('a'),('a '),('a ');
|
||||
explain partitions select * from t1 where a='a ' OR a='a';
|
||||
drop table t1;
|
@@ -8,6 +8,357 @@
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Bug#20577: Partitions: use of to_days() function leads to selection failures
|
||||
#
|
||||
--let $explain_partitions= 1;
|
||||
--let $verify_without_partitions= 0;
|
||||
--echo # test of RANGE and index
|
||||
CREATE TABLE t1 (a DATE, KEY(a))
|
||||
PARTITION BY RANGE (TO_DAYS(a))
|
||||
(PARTITION `pNULL` VALUES LESS THAN (0),
|
||||
PARTITION `p0001-01-01` VALUES LESS THAN (366 + 1),
|
||||
PARTITION `p1001-01-01` VALUES LESS THAN (TO_DAYS('1001-01-01') + 1),
|
||||
PARTITION `p2001-01-01` VALUES LESS THAN (TO_DAYS('2001-01-01') + 1));
|
||||
if ($verify_without_partitions)
|
||||
{
|
||||
ALTER TABLE t1 REMOVE PARTITIONING;
|
||||
}
|
||||
INSERT INTO t1 VALUES ('0000-00-00'), ('0000-01-02'), ('0001-01-01'),
|
||||
('1001-00-00'), ('1001-01-01'), ('1002-00-00'), ('2001-01-01');
|
||||
--source include/partition_date_range.inc
|
||||
--echo # test without index
|
||||
ALTER TABLE t1 DROP KEY a;
|
||||
--source include/partition_date_range.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # test of LIST and index
|
||||
CREATE TABLE t1 (a DATE, KEY(a))
|
||||
PARTITION BY LIST (TO_DAYS(a))
|
||||
(PARTITION `p0001-01-01` VALUES IN (TO_DAYS('0001-01-01')),
|
||||
PARTITION `p2001-01-01` VALUES IN (TO_DAYS('2001-01-01')),
|
||||
PARTITION `pNULL` VALUES IN (NULL),
|
||||
PARTITION `p0000-01-02` VALUES IN (TO_DAYS('0000-01-02')),
|
||||
PARTITION `p1001-01-01` VALUES IN (TO_DAYS('1001-01-01')));
|
||||
if ($verify_without_partitions)
|
||||
{
|
||||
ALTER TABLE t1 REMOVE PARTITIONING;
|
||||
}
|
||||
INSERT INTO t1 VALUES ('0000-00-00'), ('0000-01-02'), ('0001-01-01'),
|
||||
('1001-00-00'), ('1001-01-01'), ('1002-00-00'), ('2001-01-01');
|
||||
--source include/partition_date_range.inc
|
||||
--echo # test without index
|
||||
ALTER TABLE t1 DROP KEY a;
|
||||
--source include/partition_date_range.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#46362: Endpoint should be set to false for TO_DAYS(DATE)
|
||||
# There is a problem when comparing DATE with DATETIME.
|
||||
# In pruning it is converted into the field type
|
||||
# and in row evaluation it is converted to longlong
|
||||
# (like a DATETIME).
|
||||
--echo # Test with DATETIME column NOT NULL
|
||||
CREATE TABLE t1 (
|
||||
a int(10) unsigned NOT NULL,
|
||||
b DATETIME NOT NULL,
|
||||
PRIMARY KEY (a, b)
|
||||
) PARTITION BY RANGE (TO_DAYS(b))
|
||||
(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')),
|
||||
PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')),
|
||||
PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')),
|
||||
PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')),
|
||||
PARTITION p20090405 VALUES LESS THAN MAXVALUE);
|
||||
INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'),
|
||||
(1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-02 23:59:59'),
|
||||
(1, '2009-04-03'), (2, '2009-04-03'), (1, '2009-04-04'), (2, '2009-04-04'),
|
||||
(1, '2009-04-05'), (1, '2009-04-06'), (1, '2009-04-07');
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # Test with DATE column NOT NULL
|
||||
CREATE TABLE t1 (
|
||||
a int(10) unsigned NOT NULL,
|
||||
b DATE NOT NULL,
|
||||
PRIMARY KEY (a, b)
|
||||
) PARTITION BY RANGE (TO_DAYS(b))
|
||||
(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')),
|
||||
PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')),
|
||||
PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')),
|
||||
PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')),
|
||||
PARTITION p20090405 VALUES LESS THAN MAXVALUE);
|
||||
INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'),
|
||||
(1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-03'), (2, '2009-04-03'),
|
||||
(1, '2009-04-04'), (2, '2009-04-04'), (1, '2009-04-05'), (1, '2009-04-06'),
|
||||
(1, '2009-04-07');
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # Test with DATETIME column NULL
|
||||
CREATE TABLE t1 (
|
||||
a int(10) unsigned NOT NULL,
|
||||
b DATETIME NULL
|
||||
) PARTITION BY RANGE (TO_DAYS(b))
|
||||
(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')),
|
||||
PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')),
|
||||
PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')),
|
||||
PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')),
|
||||
PARTITION p20090405 VALUES LESS THAN MAXVALUE);
|
||||
INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'),
|
||||
(1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-02 23:59:59'),
|
||||
(1, '2009-04-03'), (2, '2009-04-03'), (1, '2009-04-04'), (2, '2009-04-04'),
|
||||
(1, '2009-04-05'), (1, '2009-04-06'), (1, '2009-04-07');
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # Test with DATE column NULL
|
||||
CREATE TABLE t1 (
|
||||
a int(10) unsigned NOT NULL,
|
||||
b DATE NULL
|
||||
) PARTITION BY RANGE (TO_DAYS(b))
|
||||
(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')),
|
||||
PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')),
|
||||
PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')),
|
||||
PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')),
|
||||
PARTITION p20090405 VALUES LESS THAN MAXVALUE);
|
||||
INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'),
|
||||
(1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-03'), (2, '2009-04-03'),
|
||||
(1, '2009-04-04'), (2, '2009-04-04'), (1, '2009-04-05'), (1, '2009-04-06'),
|
||||
(1, '2009-04-07');
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b <= '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b = '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b >= '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b > '2009-04-03';
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1
|
||||
WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME);
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # For better code coverage of the patch
|
||||
CREATE TABLE t1 (
|
||||
a int(10) unsigned NOT NULL,
|
||||
b DATE
|
||||
) PARTITION BY RANGE ( TO_DAYS(b) )
|
||||
(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')),
|
||||
PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')),
|
||||
PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')),
|
||||
PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')),
|
||||
PARTITION p20090405 VALUES LESS THAN MAXVALUE);
|
||||
INSERT INTO t1 VALUES (1, '2009-01-01'), (2, NULL);
|
||||
--echo # test with an invalid date, which lead to item->null_value is set.
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE b < CAST('2009-04-99' AS DATETIME);
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#40972: some sql execution lead the whole database crashing
|
||||
#
|
||||
|
@@ -30,7 +30,7 @@ SELECT 1 IN (SELECT 1);
|
||||
SELECT 1 FROM (SELECT 1 as a) b WHERE 1 IN (SELECT (SELECT a));
|
||||
-- error ER_WRONG_USAGE
|
||||
select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
|
||||
-- error ER_WRONG_PARAMETERS_TO_PROCEDURE
|
||||
-- error ER_WRONG_USAGE
|
||||
SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
|
||||
-- error ER_BAD_FIELD_ERROR
|
||||
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
|
||||
@@ -3336,6 +3336,38 @@ EXPLAIN EXTENDED SELECT * FROM C WHERE `int_key` IN (SELECT `int_nokey`);
|
||||
DROP TABLE C;
|
||||
--echo # End of test for bug#45061.
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug #46749: Segfault in add_key_fields() with outer subquery level
|
||||
--echo # field references
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (
|
||||
a int,
|
||||
b int,
|
||||
UNIQUE (a), KEY (b)
|
||||
);
|
||||
INSERT INTO t1 VALUES (1,1), (2,1);
|
||||
|
||||
CREATE TABLE st1 like t1;
|
||||
INSERT INTO st1 VALUES (1,1), (2,1);
|
||||
|
||||
CREATE TABLE st2 like t1;
|
||||
INSERT INTO st2 VALUES (1,1), (2,1);
|
||||
|
||||
# should have "impossible where"
|
||||
EXPLAIN
|
||||
SELECT MAX(b), (SELECT COUNT(*) FROM st1,st2 WHERE st2.b <= t1.b)
|
||||
FROM t1
|
||||
WHERE a = 230;
|
||||
|
||||
# should not crash
|
||||
SELECT MAX(b), (SELECT COUNT(*) FROM st1,st2 WHERE st2.b <= t1.b)
|
||||
FROM t1
|
||||
WHERE a = 230;
|
||||
|
||||
DROP TABLE t1, st1, st2;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
||||
#
|
||||
|
@@ -1286,3 +1286,137 @@ CREATE TABLE t1 SELECT 1 % .1234567891234567891234567891234567891234567891234567
|
||||
DESCRIBE t1;
|
||||
SELECT my_col FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#45261: Crash, stored procedure + decimal
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 81 */ 100000000000000000000000000000000000000000000000000000000000000000000000000000001
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 81 */ 100000000000000000000000000000000000000000000000000000000000000000000000000000001.
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 81 */ 100000000000000000000000000000000000000000000000000000000000000000000000000000001.1 /* 1 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 82 */ 1000000000000000000000000000000000000000000000000000000000000000000000000000000001
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 40 */ 1000000000000000000000000000000000000001.1000000000000000000000000000000000000001 /* 40 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 1 */ 1.10000000000000000000000000000000000000000000000000000000000000000000000000000001 /* 80 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 1 */ 1.100000000000000000000000000000000000000000000000000000000000000000000000000000001 /* 81 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
.100000000000000000000000000000000000000000000000000000000000000000000000000000001 /* 81 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 45 */ 123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345 /* 45 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 65 */ 12345678901234567890123456789012345678901234567890123456789012345.1 /* 1 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 66 */ 123456789012345678901234567890123456789012345678901234567890123456.1 /* 1 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
.123456789012345678901234567890123456789012345678901234567890123456 /* 66 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 AS SELECT 123.1234567890123456789012345678901 /* 31 */ AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT 1.1 + CAST(1 AS DECIMAL(65,30)) AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Test that the integer and decimal parts are properly calculated.
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a DECIMAL(30,30));
|
||||
INSERT INTO t1 VALUES (0.1),(0.2),(0.3);
|
||||
CREATE TABLE t2 SELECT MIN(a + 0.0000000000000000000000000000001) AS c1 FROM t1;
|
||||
DESC t2;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
CREATE TABLE t1 (a DECIMAL(30,30));
|
||||
INSERT INTO t1 VALUES (0.1),(0.2),(0.3);
|
||||
CREATE TABLE t2 SELECT IFNULL(a + 0.0000000000000000000000000000001, NULL) AS c1 FROM t1;
|
||||
DESC t2;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
CREATE TABLE t1 (a DECIMAL(30,30));
|
||||
INSERT INTO t1 VALUES (0.1),(0.2),(0.3);
|
||||
CREATE TABLE t2 SELECT CASE a WHEN 0.1 THEN 0.0000000000000000000000000000000000000000000000000000000000000000001 END AS c1 FROM t1;
|
||||
DESC t2;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # Test that variables get maximum precision.
|
||||
--echo #
|
||||
|
||||
SET @decimal= 1.1;
|
||||
CREATE TABLE t1 SELECT @decimal AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
@@ -3703,38 +3703,6 @@ DROP TABLE t1;
|
||||
--echo # -- End of test case for Bug#40825
|
||||
--echo
|
||||
|
||||
--echo #
|
||||
--echo # Bug #45806 crash when replacing into a view with a join!
|
||||
--echo #
|
||||
CREATE TABLE t1(a INT UNIQUE);
|
||||
CREATE VIEW v1 AS SELECT t1.a FROM t1, t1 AS a;
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
|
||||
REPLACE INTO v1(a) SELECT 1 FROM t1,t1 AS c;
|
||||
SELECT * FROM v1;
|
||||
REPLACE INTO v1(a) SELECT 3 FROM t1,t1 AS c;
|
||||
SELECT * FROM v1;
|
||||
DELETE FROM t1 WHERE a=3;
|
||||
INSERT INTO v1(a) SELECT 1 FROM t1,t1 AS c
|
||||
ON DUPLICATE KEY UPDATE `v1`.`a`= 1;
|
||||
SELECT * FROM v1;
|
||||
|
||||
CREATE VIEW v2 AS SELECT t1.a FROM t1, v1 AS a;
|
||||
|
||||
REPLACE INTO v2(a) SELECT 1 FROM t1,t1 AS c;
|
||||
SELECT * FROM v2;
|
||||
REPLACE INTO v2(a) SELECT 3 FROM t1,t1 AS c;
|
||||
SELECT * FROM v2;
|
||||
INSERT INTO v2(a) SELECT 1 FROM t1,t1 AS c
|
||||
ON DUPLICATE KEY UPDATE `v2`.`a`= 1;
|
||||
SELECT * FROM v2;
|
||||
|
||||
DROP VIEW v1;
|
||||
DROP VIEW v2;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # -- End of test case for Bug#45806
|
||||
|
||||
--echo # -----------------------------------------------------------------
|
||||
--echo # -- End of 5.0 tests.
|
||||
--echo # -----------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user