From 8161ab0b53fc14e43522580546144addf89bbc74 Mon Sep 17 00:00:00 2001 From: "mikron@mikael-ronstr-ms-dator.local" <> Date: Wed, 4 Apr 2007 16:26:32 +0200 Subject: [PATCH 001/127] Reapplied patch for bug18198 --- mysql-test/r/partition_error.result | 8 ++-- mysql-test/r/partition_hash.result | 14 ------- mysql-test/r/partition_mgm.result | 6 +-- mysql-test/r/partition_pruning.result | 58 +++++++++++++++++++++------ mysql-test/r/partition_range.result | 34 ++++++++-------- mysql-test/t/partition_error.test | 8 ++-- mysql-test/t/partition_hash.test | 12 ------ mysql-test/t/partition_mgm.test | 2 +- mysql-test/t/partition_pruning.test | 58 +++++++++++++++++++-------- mysql-test/t/partition_range.test | 26 ++++++------ sql/item.h | 18 ++++----- sql/item_cmpfunc.h | 14 ------- sql/item_func.h | 31 ++------------ sql/item_strfunc.h | 14 ------- sql/item_timefunc.h | 17 +------- sql/item_xmlfunc.h | 1 - sql/partition_info.cc | 43 ++++++++------------ sql/sql_partition.cc | 2 + sql/sql_yacc.yy | 3 +- 19 files changed, 163 insertions(+), 206 deletions(-) diff --git a/mysql-test/r/partition_error.result b/mysql-test/r/partition_error.result index 4b01b759902..41829216178 100644 --- a/mysql-test/r/partition_error.result +++ b/mysql-test/r/partition_error.result @@ -25,7 +25,7 @@ partitions 3 (partition x1 values in (1,2,9,4) tablespace ts1, partition x2 values in (3, 11, 5, 7) tablespace ts2, partition x3 values in (16, 8, 5+19, 70-43) tablespace ts3); -ERROR HY000: The PARTITION function returns the wrong type +ERROR HY000: This partition function is not allowed CREATE TABLE t1 ( a int not null, b int not null, @@ -89,7 +89,7 @@ partitions 3 (partition x1 tablespace ts1, partition x2 tablespace ts2, partition x3 tablespace ts3); -ERROR HY000: The PARTITION function returns the wrong type +ERROR HY000: This partition function is not allowed CREATE TABLE t1 ( a int not null, b int not null, @@ -422,7 +422,7 @@ partition by range (sin(a)) partitions 2 (partition x1 values less than (4), partition x2 values less than (5)); -ERROR HY000: The PARTITION function returns the wrong type +ERROR HY000: This partition function is not allowed CREATE TABLE t1 ( a int not null, b int not null, @@ -619,4 +619,4 @@ partition by range (a + (select count(*) from t1)) ERROR HY000: This partition function is not allowed create table t1 (a char(10)) partition by hash (extractvalue(a,'a')); -ERROR HY000: The PARTITION function returns the wrong type +ERROR HY000: This partition function is not allowed diff --git a/mysql-test/r/partition_hash.result b/mysql-test/r/partition_hash.result index 7ef3ee5c6c8..9a82a36d902 100644 --- a/mysql-test/r/partition_hash.result +++ b/mysql-test/r/partition_hash.result @@ -1,18 +1,4 @@ drop table if exists t1; -create table t1 (a varchar(10) charset latin1 collate latin1_bin) -partition by hash(length(a)) -partitions 10; -insert into t1 values (''),(' '),('a'),('a '),('a '); -explain partitions select * from t1 where a='a '; -id select_type table partitions type possible_keys key key_len ref rows Extra -1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where -explain partitions select * from t1 where a='a'; -id select_type table partitions type possible_keys key key_len ref rows Extra -1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where -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 p0 ALL NULL NULL NULL NULL 5 Using where -drop table t1; create table t1 (a int unsigned) partition by hash(a div 2) partitions 4; diff --git a/mysql-test/r/partition_mgm.result b/mysql-test/r/partition_mgm.result index 9b5a34bda50..04ac603fea7 100644 --- a/mysql-test/r/partition_mgm.result +++ b/mysql-test/r/partition_mgm.result @@ -10,13 +10,13 @@ subpartition sp01, subpartition sp02)); ERROR HY000: Wrong number of subpartitions defined, mismatch with previous setting drop table t1; CREATE TABLE t1 (f_date DATE, f_varchar VARCHAR(30)) -PARTITION BY HASH(CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2; +PARTITION BY HASH(YEAR(f_date)) PARTITIONS 2; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `f_date` date DEFAULT NULL, `f_varchar` varchar(30) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2 */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (YEAR(f_date)) PARTITIONS 2 */ hello/master-data/test/t1#P#p0.MYD hello/master-data/test/t1#P#p0.MYI hello/master-data/test/t1#P#p1.MYD @@ -29,7 +29,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f_date` date DEFAULT NULL, `f_varchar` varchar(30) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 1 */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (YEAR(f_date)) PARTITIONS 1 */ hello/master-data/test/t1#P#p0.MYD hello/master-data/test/t1#P#p0.MYI hello/master-data/test/t1.frm diff --git a/mysql-test/r/partition_pruning.result b/mysql-test/r/partition_pruning.result index 5fc0058356d..1143b1e4296 100644 --- a/mysql-test/r/partition_pruning.result +++ b/mysql-test/r/partition_pruning.result @@ -677,13 +677,12 @@ f_int1 f_int2 9 9 drop table t1; create table t1 (a char(10) binary) -partition by list(length(a)) -(partition p1 values in (1), -partition p2 values in (2), -partition p3 values in (3), -partition p4 values in (4), -partition p5 values in (5) -); +partition by list(ascii(a)) +(partition p1 values in (ascii('a')), +partition p2 values in (ascii('b')), +partition p3 values in (ascii('c')), +partition p4 values in (ascii('d')), +partition p5 values in (ascii('e'))); insert into t1 values ('a'),('bb'),('ccc'),('dddd'),('eeEee'); select * from t1 where a>='a' and a <= 'dddd'; a @@ -848,22 +847,57 @@ id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables drop table t1; create table t1 (a int) -partition by range((a & 0xFF) << 56) ( -partition p0 values less than (0x40 << 56), -partition p1 values less than (0x80 << 56), -partition p2 values less than (0xFF << 56) +partition by range(a) ( +partition p0 values less than (64), +partition p1 values less than (128), +partition p2 values less than (255) +); +create table t2 (a int) +partition by range(a+0) ( +partition p0 values less than (64), +partition p1 values less than (128), +partition p2 values less than (255) ); insert into t1 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE); +insert into t2 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE); explain partitions select * from t1 where a=0; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where +explain partitions select * from t2 where a=0; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where explain partitions select * from t1 where a=0xFE; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 2 Using where -explain partitions select * from t1 where a>0xFE and a<= 0xFF; +explain partitions select * from t2 where a=0xFE; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 2 Using where +explain partitions select * from t1 where a > 0xFE AND a <= 0xFF; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +explain partitions select * from t2 where a > 0xFE AND a <= 0xFF; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +explain partitions select * from t1 where a >= 0xFE AND a <= 0xFF; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 2 Using where +explain partitions select * from t2 where a >= 0xFE AND a <= 0xFF; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 2 Using where +explain partitions select * from t1 where a < 64 AND a >= 63; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where +explain partitions select * from t2 where a < 64 AND a >= 63; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where +explain partitions select * from t1 where a <= 64 AND a >= 63; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 4 Using where +explain partitions select * from t2 where a <= 64 AND a >= 63; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t2 p0,p1 ALL NULL NULL NULL NULL 4 Using where drop table t1; +drop table t2; create table t1(a bigint unsigned not null) partition by range(a+0) ( partition p1 values less than (10), partition p2 values less than (20), diff --git a/mysql-test/r/partition_range.result b/mysql-test/r/partition_range.result index d39b39f413a..e9ebd5ba2cf 100644 --- a/mysql-test/r/partition_range.result +++ b/mysql-test/r/partition_range.result @@ -1,36 +1,36 @@ drop table if exists t1; create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int) -partition by range (length(a) * b) -(partition p0 values less than (2), partition p1 values less than (400)); +partition by range (ascii(a) * b) +(partition p0 values less than (2), partition p1 values less than (4000)); insert into t1 values ('a ', 2),('a',3); drop table t1; create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int) -partition by range (b* length(a) * b) -(partition p0 values less than (2), partition p1 values less than (400)); +partition by range (b* ascii(a) * b) +(partition p0 values less than (2), partition p1 values less than (4000)); insert into t1 values ('a ', 2),('a',3); drop table t1; create table t1 (a varchar(10) charset latin1 collate latin1_bin, b varchar(10) charset latin1 collate latin1_bin) -partition by range (length(b) * length(a)) -(partition p0 values less than (2), partition p1 values less than (400)); +partition by range (ascii(b) * ascii(a)) +(partition p0 values less than (2), partition p1 values less than (40000)); insert into t1 values ('a ', 'b '),('a','b'); drop table t1; create table t1 (a varchar(10) charset latin1 collate latin1_bin, b varchar(10) charset latin1 collate latin1_bin) -partition by range (length(a) * length(b)) -(partition p0 values less than (2), partition p1 values less than (400)); +partition by range (ascii(a) * ascii(b)) +(partition p0 values less than (2), partition p1 values less than (40000)); insert into t1 values ('a ', 'b '),('a','b'); drop table t1; create table t1 (a varchar(10) charset latin1 collate latin1_bin, b varchar(10) charset latin1 collate latin1_bin, c int) -partition by range (length(a) * c) -(partition p0 values less than (2), partition p1 values less than (400)); +partition by range (ascii(a) * c) +(partition p0 values less than (2), partition p1 values less than (4000)); insert into t1 values ('a ', 'b ', 2),('a','b', 3); drop table t1; create table t1 (a varchar(10) charset latin1 collate latin1_bin, b varchar(10) charset latin1 collate latin1_bin, c int) -partition by range (c * length(a)) -(partition p0 values less than (2), partition p1 values less than (400)); +partition by range (c * ascii(a)) +(partition p0 values less than (2), partition p1 values less than (4000)); insert into t1 values ('a ', 'b ', 2),('a','b', 3); drop table t1; create table t1 (a int unsigned) @@ -109,7 +109,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 pnull_pnullsp0,pnull_pnullsp1,p0_p0sp0,p0_p0sp1 ALL NULL NULL NULL NULL 4 Using where explain partitions select * from t1 where a > 1; id select_type table partitions type possible_keys key key_len ref rows Extra -1 SIMPLE t1 p1_p1sp0,p1_p1sp1 ALL NULL NULL NULL NULL 2 Using where +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables drop table t1; CREATE TABLE t1 ( a int not null, @@ -744,7 +744,7 @@ 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 DROP TABLE t1; create table t1 (a varchar(20)) -partition by range (crc32(md5(a))) +partition by range (ascii(a)) (partition p0 values less than (100), partition p1 values less than maxvalue); insert into t1 values ("12345678901234567890"); @@ -761,16 +761,16 @@ B2345678901234567890 1234567890123456 explain partitions select * from t1 where a = "12345678901234567890"; id select_type table partitions type possible_keys key key_len ref rows Extra -1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 5 Using where +1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where explain partitions select * from t1 where a = "12345678901234567890" OR a = "A2345678901234567890" OR a = "B2345678901234567890" OR a = "C2345678901234567890"; id select_type table partitions type possible_keys key key_len ref rows Extra -1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 5 Using where +1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where explain partitions select * from t1 where a = "01234567890123456"; id select_type table partitions type possible_keys key key_len ref rows Extra -1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 5 Using where +1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where select * from t1 where a = "01234567890123456"; a select * from t1 where a = "12345678901234567890" OR diff --git a/mysql-test/t/partition_error.test b/mysql-test/t/partition_error.test index 20703b979f1..fa5055b2981 100644 --- a/mysql-test/t/partition_error.test +++ b/mysql-test/t/partition_error.test @@ -33,7 +33,7 @@ partitions 2; # # Partition by key list, wrong result type # ---error ER_PARTITION_FUNC_NOT_ALLOWED_ERROR +--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED CREATE TABLE t1 ( a int not null, b int not null, @@ -109,7 +109,7 @@ partitions 3 # # Partition by hash, invalid result type # ---error ER_PARTITION_FUNC_NOT_ALLOWED_ERROR +--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED CREATE TABLE t1 ( a int not null, b int not null, @@ -533,7 +533,7 @@ partitions 2 # # Partition by range, wrong result type of partition function # ---error ER_PARTITION_FUNC_NOT_ALLOWED_ERROR +--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED CREATE TABLE t1 ( a int not null, b int not null, @@ -790,7 +790,7 @@ partition by hash (extract(hour from convert_tz(a, '+00:00', '+00:00'))); create table t1 (a int) partition by range (a + (select count(*) from t1)) (partition p1 values less than (1)); --- error ER_PARTITION_FUNC_NOT_ALLOWED_ERROR +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED create table t1 (a char(10)) partition by hash (extractvalue(a,'a')); diff --git a/mysql-test/t/partition_hash.test b/mysql-test/t/partition_hash.test index d3f1a5f4892..3304f30fb1a 100644 --- a/mysql-test/t/partition_hash.test +++ b/mysql-test/t/partition_hash.test @@ -9,18 +9,6 @@ drop table if exists t1; --enable_warnings -# -# BUG 18198: Partition functions handling -# -create table t1 (a varchar(10) charset latin1 collate latin1_bin) -partition by hash(length(a)) -partitions 10; -insert into t1 values (''),(' '),('a'),('a '),('a '); -explain partitions select * from t1 where a='a '; -explain partitions select * from t1 where a='a'; -explain partitions select * from t1 where a='a ' OR a='a'; -drop table t1; - # # More partition pruning tests, especially on interval walking # diff --git a/mysql-test/t/partition_mgm.test b/mysql-test/t/partition_mgm.test index 8458d47d634..a06f8d1aee5 100644 --- a/mysql-test/t/partition_mgm.test +++ b/mysql-test/t/partition_mgm.test @@ -20,7 +20,7 @@ subpartition sp01, subpartition sp02)); drop table t1; CREATE TABLE t1 (f_date DATE, f_varchar VARCHAR(30)) -PARTITION BY HASH(CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2; +PARTITION BY HASH(YEAR(f_date)) PARTITIONS 2; SHOW CREATE TABLE t1; --replace_result $MYSQLTEST_VARDIR "hello" diff --git a/mysql-test/t/partition_pruning.test b/mysql-test/t/partition_pruning.test index a60846f18ff..cef57bd9356 100644 --- a/mysql-test/t/partition_pruning.test +++ b/mysql-test/t/partition_pruning.test @@ -539,13 +539,12 @@ drop table t1; # part2: bug in pruning code create table t1 (a char(10) binary) -partition by list(length(a)) - (partition p1 values in (1), - partition p2 values in (2), - partition p3 values in (3), - partition p4 values in (4), - partition p5 values in (5) -); +partition by list(ascii(a)) + (partition p1 values in (ascii('a')), + partition p2 values in (ascii('b')), + partition p3 values in (ascii('c')), + partition p4 values in (ascii('d')), + partition p5 values in (ascii('e'))); insert into t1 values ('a'),('bb'),('ccc'),('dddd'),('eeEee'); select * from t1 where a>='a' and a <= 'dddd'; explain partitions select * from t1 where a>='a' and a <= 'dddd'; @@ -692,20 +691,47 @@ explain partitions select * from t1 where a = 18446744073709551000; explain partitions select * from t1 where a = 18446744073709551613; explain partitions select * from t1 where a = 18446744073709551614; drop table t1; - -create table t1 (a int) - partition by range((a & 0xFF) << 56) ( - partition p0 values less than (0x40 << 56), - partition p1 values less than (0x80 << 56), - partition p2 values less than (0xFF << 56) +# +# Test all variants of usage for interval_via_mapping +# and interval_via_walking +# +# t1 will use interval_via_mapping since it uses a +# monotonic function, whereas t2 will use +# interval_via_walking since the intervals are short +# and the function isn't monotonic (it is, but it isn't +# discovered in this version). +# + create table t1 (a int) + partition by range(a) ( + partition p0 values less than (64), + partition p1 values less than (128), + partition p2 values less than (255) ); -insert into t1 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE); +create table t2 (a int) + partition by range(a+0) ( + partition p0 values less than (64), + partition p1 values less than (128), + partition p2 values less than (255) +); + +insert into t1 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE); +insert into t2 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE); explain partitions select * from t1 where a=0; +explain partitions select * from t2 where a=0; explain partitions select * from t1 where a=0xFE; -explain partitions select * from t1 where a>0xFE and a<= 0xFF; +explain partitions select * from t2 where a=0xFE; +explain partitions select * from t1 where a > 0xFE AND a <= 0xFF; +explain partitions select * from t2 where a > 0xFE AND a <= 0xFF; +explain partitions select * from t1 where a >= 0xFE AND a <= 0xFF; +explain partitions select * from t2 where a >= 0xFE AND a <= 0xFF; +explain partitions select * from t1 where a < 64 AND a >= 63; +explain partitions select * from t2 where a < 64 AND a >= 63; +explain partitions select * from t1 where a <= 64 AND a >= 63; +explain partitions select * from t2 where a <= 64 AND a >= 63; drop table t1; - +drop table t2; + create table t1(a bigint unsigned not null) partition by range(a+0) ( partition p1 values less than (10), partition p2 values less than (20), diff --git a/mysql-test/t/partition_range.test b/mysql-test/t/partition_range.test index 84f67febe8b..219637d6f81 100644 --- a/mysql-test/t/partition_range.test +++ b/mysql-test/t/partition_range.test @@ -13,42 +13,42 @@ drop table if exists t1; # BUG 18198: Various tests for partition functions # create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int) -partition by range (length(a) * b) -(partition p0 values less than (2), partition p1 values less than (400)); +partition by range (ascii(a) * b) +(partition p0 values less than (2), partition p1 values less than (4000)); insert into t1 values ('a ', 2),('a',3); drop table t1; create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int) -partition by range (b* length(a) * b) -(partition p0 values less than (2), partition p1 values less than (400)); +partition by range (b* ascii(a) * b) +(partition p0 values less than (2), partition p1 values less than (4000)); insert into t1 values ('a ', 2),('a',3); drop table t1; create table t1 (a varchar(10) charset latin1 collate latin1_bin, b varchar(10) charset latin1 collate latin1_bin) -partition by range (length(b) * length(a)) -(partition p0 values less than (2), partition p1 values less than (400)); +partition by range (ascii(b) * ascii(a)) +(partition p0 values less than (2), partition p1 values less than (40000)); insert into t1 values ('a ', 'b '),('a','b'); drop table t1; create table t1 (a varchar(10) charset latin1 collate latin1_bin, b varchar(10) charset latin1 collate latin1_bin) -partition by range (length(a) * length(b)) -(partition p0 values less than (2), partition p1 values less than (400)); +partition by range (ascii(a) * ascii(b)) +(partition p0 values less than (2), partition p1 values less than (40000)); insert into t1 values ('a ', 'b '),('a','b'); drop table t1; create table t1 (a varchar(10) charset latin1 collate latin1_bin, b varchar(10) charset latin1 collate latin1_bin, c int) -partition by range (length(a) * c) -(partition p0 values less than (2), partition p1 values less than (400)); +partition by range (ascii(a) * c) +(partition p0 values less than (2), partition p1 values less than (4000)); insert into t1 values ('a ', 'b ', 2),('a','b', 3); drop table t1; create table t1 (a varchar(10) charset latin1 collate latin1_bin, b varchar(10) charset latin1 collate latin1_bin, c int) -partition by range (c * length(a)) -(partition p0 values less than (2), partition p1 values less than (400)); +partition by range (c * ascii(a)) +(partition p0 values less than (2), partition p1 values less than (4000)); insert into t1 values ('a ', 'b ', 2),('a','b', 3); drop table t1; @@ -734,7 +734,7 @@ DROP TABLE t1; # Bug 18198: Try with a couple of cases using VARCHAR fields in # partition function. create table t1 (a varchar(20)) -partition by range (crc32(md5(a))) +partition by range (ascii(a)) (partition p0 values less than (100), partition p1 values less than maxvalue); diff --git a/sql/item.h b/sql/item.h index 09c118a2e14..80aa72e746b 100644 --- a/sql/item.h +++ b/sql/item.h @@ -839,8 +839,7 @@ public: german character for double s is equal to 2 s. The default is that an item is not allowed - in a partition function. However all mathematical functions, string - manipulation functions, date functions are allowed. Allowed functions + in a partition function. Allowed functions can never depend on server version, they cannot depend on anything related to the environment. They can also only depend on a set of fields in the table itself. They cannot depend on other tables and @@ -1425,7 +1424,7 @@ public: bool is_null() { return 1; } void print(String *str) { str->append(STRING_WITH_LEN("NULL")); } Item *safe_charset_converter(CHARSET_INFO *tocs); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} + bool check_partition_func_processor(byte *int_arg) { return FALSE;} }; class Item_null_result :public Item_null @@ -1610,6 +1609,7 @@ public: uint decimal_precision() const { return (uint)(max_length - test(value < 0)); } bool eq(const Item *, bool binary_cmp) const; + bool check_partition_func_processor(byte *bool_arg) { return FALSE;} }; @@ -1627,6 +1627,7 @@ public: void print(String *str); Item_num *neg (); uint decimal_precision() const { return max_length; } + bool check_partition_func_processor(byte *bool_arg) { return FALSE;} }; @@ -1669,6 +1670,7 @@ public: uint decimal_precision() const { return decimal_value.precision(); } bool eq(const Item *, bool binary_cmp) const; void set_decimal_value(my_decimal *value_par); + bool check_partition_func_processor(byte *bool_arg) { return FALSE;} }; @@ -1729,7 +1731,6 @@ public: {} void print(String *str) { str->append(func_name); } Item *safe_charset_converter(CHARSET_INFO *tocs); - bool check_partition_func_processor(byte *int_arg) {return TRUE;} }; @@ -1807,7 +1808,7 @@ public: void print(String *str); // to prevent drop fixed flag (no need parent cleanup call) void cleanup() {} - bool check_partition_func_processor(byte *int_arg) {return FALSE;} + bool check_partition_func_processor(byte *bool_arg) { return FALSE;} }; @@ -1822,7 +1823,7 @@ public: {} Item *safe_charset_converter(CHARSET_INFO *tocs); void print(String *str) { str->append(func_name); } - bool check_partition_func_processor(byte *int_arg) {return TRUE;} + bool check_partition_func_processor(byte *bool_arg) { return TRUE;} }; @@ -1835,7 +1836,6 @@ public: &my_charset_bin) { max_length=19;} enum_field_types field_type() const { return MYSQL_TYPE_DATETIME; } - bool check_partition_func_processor(byte *int_arg) {return TRUE;} }; class Item_empty_string :public Item_string @@ -1858,7 +1858,6 @@ public: unsigned_flag=1; } enum_field_types field_type() const { return int_field_type; } - bool check_partition_func_processor(byte *int_arg) {return TRUE;} }; @@ -1882,7 +1881,7 @@ public: void cleanup() {} bool eq(const Item *item, bool binary_cmp) const; virtual Item *safe_charset_converter(CHARSET_INFO *tocs); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} + bool check_partition_func_processor(byte *bool_arg) { return FALSE;} }; @@ -2119,7 +2118,6 @@ public: } Item *clone_item(); virtual Item *real_item() { return ref; } - bool check_partition_func_processor(byte *int_arg) {return TRUE;} }; #ifdef MYSQL_SERVER diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 4a1519a5498..c5c67371a8a 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -261,7 +261,6 @@ public: } Item *neg_transformer(THD *thd); virtual Item *negated_item(); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} bool subst_argument_checker(byte **arg) { return TRUE; } }; @@ -273,7 +272,6 @@ public: enum Functype functype() const { return NOT_FUNC; } const char *func_name() const { return "not"; } Item *neg_transformer(THD *thd); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} void print(String *str); }; @@ -499,7 +497,6 @@ public: bool is_bool_func() { return 1; } CHARSET_INFO *compare_collation() { return cmp_collation.collation; } uint decimal_precision() const { return 1; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -511,7 +508,6 @@ public: optimize_type select_optimize() const { return OPTIMIZE_NONE; } const char *func_name() const { return "strcmp"; } void print(String *str) { Item_func::print(str); } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -574,7 +570,6 @@ public: const char *func_name() const { return "ifnull"; } Field *tmp_table_field(TABLE *table); uint decimal_precision() const; - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -615,7 +610,6 @@ public: void print(String *str) { Item_func::print(str); } table_map not_null_tables() const { return 0; } bool is_null(); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; /* Functions to handle the optimized IN */ @@ -1006,7 +1000,6 @@ public: void print(String *str); Item *find_item(String *str); CHARSET_INFO *compare_collation() { return cmp_collation.collation; } - bool check_partition_func_processor(byte *bool_arg) { return FALSE;} void cleanup() { uint i; @@ -1081,7 +1074,6 @@ public: bool nulls_in_row(); bool is_bool_func() { return 1; } CHARSET_INFO *compare_collation() { return cmp_collation.collation; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; /* Functions used by where clause */ @@ -1124,7 +1116,6 @@ public: optimize_type select_optimize() const { return OPTIMIZE_NULL; } Item *neg_transformer(THD *thd); CHARSET_INFO *compare_collation() { return args[0]->collation.collation; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; /* Functions used by HAVING for rewriting IN subquery */ @@ -1151,7 +1142,6 @@ public: */ table_map used_tables() const { return used_tables_cache | RAND_TABLE_BIT; } - bool check_partition_func_processor(byte *int_arg) {return TRUE;} }; @@ -1174,7 +1164,6 @@ public: void print(String *str); CHARSET_INFO *compare_collation() { return args[0]->collation.collation; } void top_level_item() { abort_on_null=1; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -1213,7 +1202,6 @@ public: const char *func_name() const { return "like"; } bool fix_fields(THD *thd, Item **ref); void cleanup(); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; #ifdef USE_REGEX @@ -1236,7 +1224,6 @@ public: const char *func_name() const { return "regexp"; } void print(String *str) { print_op(str); } CHARSET_INFO *compare_collation() { return cmp_collation.collation; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; #else @@ -1293,7 +1280,6 @@ public: Item *transform(Item_transformer transformer, byte *arg); void traverse_cond(Cond_traverser, void *arg, traverse_order order); void neg_arguments(THD *thd); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} bool subst_argument_checker(byte **arg) { return TRUE; } Item *compile(Item_analyzer analyzer, byte **arg_p, Item_transformer transformer, byte *arg_t); diff --git a/sql/item_func.h b/sql/item_func.h index 3306b059097..342880d65c5 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -253,7 +253,6 @@ public: void fix_num_length_and_dec(); void find_num_type(); String *str_op(String *str) { DBUG_ASSERT(0); return 0; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -317,7 +316,6 @@ public: { max_length=args[0]->max_length; unsigned_flag=0; } void print(String *str); uint decimal_precision() const { return args[0]->decimal_precision(); } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -351,7 +349,6 @@ public: void fix_length_and_dec() {}; const char *func_name() const { return "decimal_typecast"; } void print(String *); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -448,6 +445,7 @@ public: void fix_length_and_dec(); void fix_num_length_and_dec(); uint decimal_precision() const { return args[0]->decimal_precision(); } + bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -460,6 +458,7 @@ public: my_decimal *decimal_op(my_decimal *); const char *func_name() const { return "abs"; } void fix_length_and_dec(); + bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; // A class to handle logarithmic and trigonometric functions @@ -494,7 +493,6 @@ public: Item_func_exp(Item *a) :Item_dec_func(a) {} double val_real(); const char *func_name() const { return "exp"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -504,7 +502,6 @@ public: Item_func_ln(Item *a) :Item_dec_func(a) {} double val_real(); const char *func_name() const { return "ln"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -515,7 +512,6 @@ public: Item_func_log(Item *a,Item *b) :Item_dec_func(a,b) {} double val_real(); const char *func_name() const { return "log"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -525,7 +521,6 @@ public: Item_func_log2(Item *a) :Item_dec_func(a) {} double val_real(); const char *func_name() const { return "log2"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -535,7 +530,6 @@ public: Item_func_log10(Item *a) :Item_dec_func(a) {} double val_real(); const char *func_name() const { return "log10"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -545,7 +539,6 @@ public: Item_func_sqrt(Item *a) :Item_dec_func(a) {} double val_real(); const char *func_name() const { return "sqrt"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -555,7 +548,6 @@ public: Item_func_pow(Item *a,Item *b) :Item_dec_func(a,b) {} double val_real(); const char *func_name() const { return "pow"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -565,7 +557,6 @@ public: Item_func_acos(Item *a) :Item_dec_func(a) {} double val_real(); const char *func_name() const { return "acos"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_asin :public Item_dec_func @@ -574,7 +565,6 @@ public: Item_func_asin(Item *a) :Item_dec_func(a) {} double val_real(); const char *func_name() const { return "asin"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_atan :public Item_dec_func @@ -584,7 +574,6 @@ public: Item_func_atan(Item *a,Item *b) :Item_dec_func(a,b) {} double val_real(); const char *func_name() const { return "atan"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_cos :public Item_dec_func @@ -593,7 +582,6 @@ public: Item_func_cos(Item *a) :Item_dec_func(a) {} double val_real(); const char *func_name() const { return "cos"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_sin :public Item_dec_func @@ -602,7 +590,6 @@ public: Item_func_sin(Item *a) :Item_dec_func(a) {} double val_real(); const char *func_name() const { return "sin"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_tan :public Item_dec_func @@ -611,7 +598,6 @@ public: Item_func_tan(Item *a) :Item_dec_func(a) {} double val_real(); const char *func_name() const { return "tan"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_integer :public Item_int_func @@ -639,6 +625,7 @@ public: longlong int_op(); double real_op(); my_decimal *decimal_op(my_decimal *); + bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -650,6 +637,7 @@ public: longlong int_op(); double real_op(); my_decimal *decimal_op(my_decimal *); + bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; /* This handles round and truncate */ @@ -690,7 +678,6 @@ public: Item_func_sign(Item *a) :Item_int_func(a) {} const char *func_name() const { return "sign"; } longlong val_int(); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -705,7 +692,6 @@ public: const char *func_name() const { return name; } void fix_length_and_dec() { decimals= NOT_FIXED_DEC; max_length= float_length(decimals); } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -723,7 +709,6 @@ public: my_decimal *val_decimal(my_decimal *); void fix_length_and_dec(); enum Item_result result_type () const { return cmp_type; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_min :public Item_func_min_max @@ -749,7 +734,6 @@ public: longlong val_int(); const char *func_name() const { return "length"; } void fix_length_and_dec() { max_length=10; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_bit_length :public Item_func_length @@ -769,7 +753,6 @@ public: longlong val_int(); const char *func_name() const { return "char_length"; } void fix_length_and_dec() { max_length=10; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_coercibility :public Item_int_func @@ -793,7 +776,6 @@ public: longlong val_int(); void fix_length_and_dec(); void print(String *str); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -828,7 +810,6 @@ public: Item_func_ord(Item *a) :Item_int_func(a) {} longlong val_int(); const char *func_name() const { return "ord"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_find_in_set :public Item_int_func @@ -842,7 +823,6 @@ public: longlong val_int(); const char *func_name() const { return "find_in_set"; } void fix_length_and_dec(); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; /* Base class for all bit functions: '~', '|', '^', '&', '>>', '<<' */ @@ -854,7 +834,6 @@ public: Item_func_bit(Item *a) :Item_int_func(a) {} void fix_length_and_dec() { unsigned_flag= 1; } void print(String *str) { print_op(str); } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_bit_or :public Item_func_bit @@ -880,7 +859,6 @@ public: longlong val_int(); const char *func_name() const { return "bit_count"; } void fix_length_and_dec() { max_length=2; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_shift_left :public Item_func_bit @@ -1321,7 +1299,6 @@ public: longlong val_int(); const char *func_name() const { return "inet_aton"; } void fix_length_and_dec() { decimals= 0; max_length= 21; maybe_null= 1; unsigned_flag= 1;} - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h index ae11e001551..41466eb92cf 100644 --- a/sql/item_strfunc.h +++ b/sql/item_strfunc.h @@ -50,7 +50,6 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "md5"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -94,7 +93,6 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "concat"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_concat_ws :public Item_str_func @@ -116,7 +114,6 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "reverse"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -154,7 +151,6 @@ protected: public: Item_str_conv(Item *item) :Item_str_func(item) {} String *val_str(String *); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -455,7 +451,6 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "soundex"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -549,7 +544,6 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "rpad"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -562,7 +556,6 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "lpad"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -577,7 +570,6 @@ public: collation.set(default_charset()); max_length= 64; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -594,7 +586,6 @@ public: decimals=0; max_length=args[0]->max_length*2*collation.collation->mbmaxlen; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_unhex :public Item_str_func @@ -610,7 +601,6 @@ public: decimals=0; max_length=(1+args[0]->max_length)/2; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -634,7 +624,6 @@ public: } void print(String *str); const char *func_name() const { return "cast_as_binary"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -674,7 +663,6 @@ public: String* val_str(String* str); const char *func_name() const { return "inet_ntoa"; } void fix_length_and_dec() { decimals = 0; max_length=3*8+7; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_quote :public Item_str_func @@ -689,7 +677,6 @@ public: collation.set(args[0]->collation); max_length= args[0]->max_length * 2 + 2; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_conv_charset :public Item_str_func @@ -790,7 +777,6 @@ public: const char *func_name() const { return "crc32"; } void fix_length_and_dec() { max_length=10; } longlong val_int(); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_uncompressed_length : public Item_int_func diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h index e53826ce3df..e83ebe46f1d 100644 --- a/sql/item_timefunc.h +++ b/sql/item_timefunc.h @@ -38,7 +38,6 @@ public: { max_length=6*MY_CHARSET_BIN_MB_MAXLEN; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -53,7 +52,6 @@ public: decimals=0; max_length=6*MY_CHARSET_BIN_MB_MAXLEN; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -129,6 +127,7 @@ public: max_length=10*my_charset_bin.mbmaxlen; maybe_null=1; } + bool check_partition_func_processor(byte *int_arg) {return TRUE;} }; @@ -224,7 +223,6 @@ public: max_length=2*MY_CHARSET_BIN_MB_MAXLEN; maybe_null=1; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_yearweek :public Item_int_func @@ -303,6 +301,7 @@ class Item_func_dayname :public Item_func_weekday max_length=9*MY_CHARSET_BIN_MB_MAXLEN; maybe_null=1; } + bool check_partition_func_processor(byte *int_arg) {return TRUE;} }; @@ -319,7 +318,6 @@ public: decimals=0; max_length=10*MY_CHARSET_BIN_MB_MAXLEN; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -602,7 +600,6 @@ public: void fix_length_and_dec(); uint format_length(const String *format); bool eq(const Item *item, bool binary_cmp) const; - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -621,7 +618,6 @@ class Item_func_from_unixtime :public Item_date_func const char *func_name() const { return "from_unixtime"; } void fix_length_and_dec(); bool get_date(TIME *res, uint fuzzy_date); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -685,7 +681,6 @@ public: } const char *func_name() const { return "sec_to_time"; } bool result_as_longlong() { return TRUE; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -708,7 +703,6 @@ public: bool get_date(TIME *res, uint fuzzy_date); bool eq(const Item *item, bool binary_cmp) const; void print(String *str); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -763,7 +757,6 @@ public: max_length=args[0]->max_length; maybe_null= 1; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -783,7 +776,6 @@ public: String *val_str(String *a); void fix_length_and_dec(); void print(String *str); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -885,7 +877,6 @@ public: max_length=MAX_DATE_WIDTH*MY_CHARSET_BIN_MB_MAXLEN; } longlong val_int(); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -908,7 +899,6 @@ public: } void print(String *str); const char *func_name() const { return "add_time"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} my_decimal *val_decimal(my_decimal *decimal_value) { DBUG_ASSERT(fixed == 1); @@ -949,7 +939,6 @@ public: :Item_str_timefunc(a, b ,c) {} String *val_str(String *str); const char *func_name() const { return "maketime"; } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; class Item_func_microsecond :public Item_int_func @@ -981,7 +970,6 @@ public: maybe_null=1; } void print(String *str); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; @@ -1028,7 +1016,6 @@ public: { return tmp_table_field_from_field_type(table, 1); } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; diff --git a/sql/item_xmlfunc.h b/sql/item_xmlfunc.h index 9f2860ef403..278c98baf7c 100644 --- a/sql/item_xmlfunc.h +++ b/sql/item_xmlfunc.h @@ -41,7 +41,6 @@ public: Item_func_xml_extractvalue(Item *a,Item *b) :Item_xml_str_func(a,b) {} const char *func_name() const { return "extractvalue"; } String *val_str(String *); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} }; diff --git a/sql/partition_info.cc b/sql/partition_info.cc index a7f9bd413c6..3af79f453ad 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -880,7 +880,6 @@ bool partition_info::set_up_charset_field_preps() Field *field, **ptr; char **char_ptrs; unsigned i; - bool found; size_t size; uint tot_fields= 0; uint tot_part_fields= 0; @@ -893,7 +892,6 @@ bool partition_info::set_up_charset_field_preps() { ptr= part_field_array; /* Set up arrays and buffers for those fields */ - i= 0; while ((field= *(ptr++))) { if (field_is_partition_charset(field)) @@ -929,7 +927,7 @@ bool partition_info::set_up_charset_field_preps() } part_charset_field_array[i]= NULL; } - if (is_sub_partitioned() && list_of_subpart_fields && + if (is_sub_partitioned() && !list_of_subpart_fields && check_part_func_fields(subpart_field_array, FALSE)) { /* Set up arrays and buffers for those fields */ @@ -937,7 +935,10 @@ bool partition_info::set_up_charset_field_preps() while ((field= *(ptr++))) { if (field_is_partition_charset(field)) + { tot_subpart_fields++; + tot_fields++; + } } size= tot_subpart_fields * sizeof(char*); if (!(char_ptrs= (char**)sql_calloc(size))) @@ -953,7 +954,6 @@ bool partition_info::set_up_charset_field_preps() i= 0; while ((field= *(ptr++))) { - unsigned j= 0; CHARSET_INFO *cs; char *field_buf; LINT_INIT(field_buf); @@ -962,28 +962,16 @@ bool partition_info::set_up_charset_field_preps() continue; cs= ((Field_str*)field)->charset(); size= field->pack_length(); - found= FALSE; - for (j= 0; j < tot_part_fields; j++) - { - if (field == part_charset_field_array[i]) - found= TRUE; - } - if (!found) - { - tot_fields++; - if (!(field_buf= sql_calloc(size))) - goto error; - } + if (!(field_buf= sql_calloc(size))) + goto error; + subpart_charset_field_array[i]= field; subpart_field_buffers[i++]= field_buf; } - if (!(char_ptrs= (char**)sql_calloc(size))) - goto error; - restore_subpart_field_ptrs= char_ptrs; + subpart_charset_field_array[i]= NULL; } if (tot_fields) { - uint j,k,l; - + uint k; size= tot_fields*sizeof(char**); if (!(char_ptrs= (char**)sql_calloc(size))) goto error; @@ -1001,11 +989,12 @@ bool partition_info::set_up_charset_field_preps() full_part_field_buffers[i]= part_field_buffers[i]; } k= tot_part_fields; - l= 0; for (i= 0; i < tot_subpart_fields; i++) { + uint j; + bool found= FALSE; field= subpart_charset_field_array[i]; - found= FALSE; + for (j= 0; j < tot_part_fields; j++) { if (field == part_charset_field_array[i]) @@ -1013,12 +1002,12 @@ bool partition_info::set_up_charset_field_preps() } if (!found) { - full_part_charset_field_array[l]= subpart_charset_field_array[k]; - full_part_field_buffers[l]= subpart_field_buffers[k]; - k++; l++; + full_part_charset_field_array[k]= subpart_charset_field_array[i]; + full_part_field_buffers[k]= subpart_field_buffers[i]; + k++; } } - full_part_charset_field_array[tot_fields]= NULL; + full_part_charset_field_array[k]= NULL; } DBUG_RETURN(FALSE); error: diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 923e851c0ff..b5e9855be27 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -2890,6 +2890,8 @@ uint32 get_partition_id_range_for_endpoint(partition_info *part_info, } if (unsigned_flag) part_func_value-= 0x8000000000000000ULL; + if (left_endpoint && !include_endpoint) + part_func_value++; while (max_part_id > min_part_id) { loc_part_id= (max_part_id + min_part_id + 1) >> 1; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 424fd98c4fc..9fdb1874e1d 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -3956,8 +3956,7 @@ part_bit_expr: } Lex->part_info->curr_part_elem->has_null_value= TRUE; } - else if (part_expr->result_type() != INT_RESULT && - !part_expr->null_value) + else if (part_expr->result_type() != INT_RESULT) { yyerror(ER(ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR)); YYABORT; From 48e1b76a874376babe26b90b553086361b45503d Mon Sep 17 00:00:00 2001 From: "mikael@dator3.(none)" <> Date: Fri, 6 Apr 2007 14:10:37 +0200 Subject: [PATCH 002/127] merge error --- mysql-test/r/partition_pruning.result | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/r/partition_pruning.result b/mysql-test/r/partition_pruning.result index 1143b1e4296..80a24bc7065 100644 --- a/mysql-test/r/partition_pruning.result +++ b/mysql-test/r/partition_pruning.result @@ -846,7 +846,7 @@ explain partitions select * from t1 where a = 18446744073709551614; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables drop table t1; -create table t1 (a int) +create table t1 (a int) partition by range(a) ( partition p0 values less than (64), partition p1 values less than (128), From 70213a7b53fa82abf1eda7929130eb33c4ddb2c0 Mon Sep 17 00:00:00 2001 From: "mikron@mikael-ronstr-ms-dator.local" <> Date: Thu, 12 Apr 2007 20:34:36 +0200 Subject: [PATCH 003/127] More test cases --- mysql-test/r/partition_bug18198.result | 205 ++++++++++++++++++++ mysql-test/t/partition_bug18198.test | 252 +++++++++++++++++++++++++ mysql-test/t/partition_charset.test | 7 + mysql-test/t/partition_list.test | 4 + 4 files changed, 468 insertions(+) create mode 100644 mysql-test/r/partition_bug18198.result create mode 100644 mysql-test/t/partition_bug18198.test diff --git a/mysql-test/r/partition_bug18198.result b/mysql-test/r/partition_bug18198.result new file mode 100644 index 00000000000..091de9fb853 --- /dev/null +++ b/mysql-test/r/partition_bug18198.result @@ -0,0 +1,205 @@ +drop table if exists t1; +Warnings: +Note 1051 Unknown table 't1' +create table t1 (a char(5) character set koi8r) +partition by list (ascii(a) mod 3) +subpartition by hash(ascii(a)) +subpartitions 3 +(partition p1 values in (1), +partition p2 values in (2), +partition p0 values in (0)); +insert into t1 values ('a'); +explain partitions select * from t1 where a = 'a'; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p2_p2sp2 system NULL NULL NULL NULL 1 +select * from t1 where a = 'a'; +a +a +drop table t1; +create table t1 (a char(5) character set cp1251) +partition by list (ascii(a)) (partition pn values in (null)); +drop table t1; +create table t1 (col1 datetime) +partition by range(datediff(col1,col1)) +(partition p0 values less than (10), partition p1 values less than (30)); +drop table t1; +create table t1 (a char(5) character set big5) +partition by list (ascii(a)) (partition pn values in (null)); +ERROR HY000: This partition function is not allowed +create table t1 (a char(1)) +partition by list(ascii(a)) +(partition p1 values in (ascii('i'))); +drop table t1; +create table t1 (s1 char(5) character set latin5) +partition by list (ascii(s1)) +(partition p1 values in (1)); +set names utf8; +drop table t1; +create table t1 (col1 int) +partition by range(greatest(col1,10)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(isnull(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(least(col1,12)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(case when col1>0 then 10 else 20 end) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(ifnull(col1,5)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(nullif(col1,5)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(bit_length(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 char(5)) +partition by range(bit_length(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(char_length(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 char(5)) +partition by range(char_length(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 char(5)) +partition by range(character_length(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(find_in_set(col1,1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 char(5)) +partition by range(find_in_set(col1,'1')) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(instr(col1,3)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 char(5)) +partition by range(instr(col1,'3')) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 char(5)) +partition by range(length(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 char(5)) +partition by range(locate(1,col1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(locate(1,col1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 char(5)) +partition by range(octet_length(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 char(5)) +partition by range(position(1 in col1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(position(1 in col1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 char(5)) +partition by range(strcmp(col1,2)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(strcmp(col1,2)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(crc32(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(round(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(sign(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 datetime) +partition by range(period_add(col1,5)) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 datetime, col2 datetime) +partition by range(period_diff(col1,col2)) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int, col2 int) +partition by range(period_diff(col1,col2)) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 datetime) +partition by range(timestampdiff(day,5,col1)) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 date) +partition by range(unix_timestamp(col1)) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 datetime) +partition by range(week(col1)) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 varchar(25)) +partition by range(cast(col1 as signed)) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 varchar(25)) +partition by range(convert(col1,unsigned)) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(col1 | 20) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(col1 & 20) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(col1 ^ 20) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(col1 << 20) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(col1 >> 20) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(~col1) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(bit_count(col1)) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed +create table t1 (col1 int) +partition by range(inet_aton(col1)) +(partition p0 values less than (10), partition p1 values less than (30)); +ERROR HY000: This partition function is not allowed diff --git a/mysql-test/t/partition_bug18198.test b/mysql-test/t/partition_bug18198.test new file mode 100644 index 00000000000..2d36ea4665e --- /dev/null +++ b/mysql-test/t/partition_bug18198.test @@ -0,0 +1,252 @@ +-- source include/have_partition.inc +--disable warnings +drop table if exists t1; +--enable warnings + +create table t1 (a char(5) character set koi8r) +partition by list (ascii(a) mod 3) +subpartition by hash(ascii(a)) +subpartitions 3 +(partition p1 values in (1), + partition p2 values in (2), + partition p0 values in (0)); +insert into t1 values ('a'); +explain partitions select * from t1 where a = 'a'; +select * from t1 where a = 'a'; +drop table t1; + +create table t1 (a char(5) character set cp1251) +partition by list (ascii(a)) (partition pn values in (null)); +drop table t1; + +create table t1 (col1 datetime) +partition by range(datediff(col1,col1)) +(partition p0 values less than (10), partition p1 values less than (30)); +drop table t1; + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (a char(5) character set big5) +partition by list (ascii(a)) (partition pn values in (null)); + +create table t1 (a char(1)) +partition by list(ascii(a)) +(partition p1 values in (ascii('i'))); +#insert into t1 values ('i'); +drop table t1; + +create table t1 (s1 char(5) character set latin5) +partition by list (ascii(s1)) +(partition p1 values in (1)); +set names utf8; +#insert into tn values ('¿¿'); +drop table t1; + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(greatest(col1,10)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(isnull(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(least(col1,12)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(case when col1>0 then 10 else 20 end) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(ifnull(col1,5)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(nullif(col1,5)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(bit_length(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 char(5)) +partition by range(bit_length(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(char_length(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 char(5)) +partition by range(char_length(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 char(5)) +partition by range(character_length(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(find_in_set(col1,1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 char(5)) +partition by range(find_in_set(col1,'1')) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(instr(col1,3)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 char(5)) +partition by range(instr(col1,'3')) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 char(5)) +partition by range(length(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 char(5)) +partition by range(locate(1,col1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(locate(1,col1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 char(5)) +partition by range(octet_length(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 char(5)) +partition by range(position(1 in col1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(position(1 in col1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 char(5)) +partition by range(strcmp(col1,2)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(strcmp(col1,2)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(crc32(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(round(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(sign(col1)) +(partition p0 values less than (2), partition p1 values less than (6)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 datetime) +partition by range(period_add(col1,5)) +(partition p0 values less than (10), partition p1 values less than (30)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 datetime, col2 datetime) +partition by range(period_diff(col1,col2)) +(partition p0 values less than (10), partition p1 values less than (30)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int, col2 int) +partition by range(period_diff(col1,col2)) +(partition p0 values less than (10), partition p1 values less than (30)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 datetime) +partition by range(timestampdiff(day,5,col1)) +(partition p0 values less than (10), partition p1 values less than (30)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 date) +partition by range(unix_timestamp(col1)) +(partition p0 values less than (10), partition p1 values less than (30)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 datetime) +partition by range(week(col1)) +(partition p0 values less than (10), partition p1 values less than (30)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 varchar(25)) +partition by range(cast(col1 as signed)) +(partition p0 values less than (10), partition p1 values less than (30)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 varchar(25)) +partition by range(convert(col1,unsigned)) +(partition p0 values less than (10), partition p1 values less than (30)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(col1 | 20) +(partition p0 values less than (10), partition p1 values less than (30)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(col1 & 20) +(partition p0 values less than (10), partition p1 values less than (30)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(col1 ^ 20) +(partition p0 values less than (10), partition p1 values less than (30)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(col1 << 20) +(partition p0 values less than (10), partition p1 values less than (30)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(col1 >> 20) +(partition p0 values less than (10), partition p1 values less than (30)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(~col1) +(partition p0 values less than (10), partition p1 values less than (30)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(bit_count(col1)) +(partition p0 values less than (10), partition p1 values less than (30)); + +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED +create table t1 (col1 int) +partition by range(inet_aton(col1)) +(partition p0 values less than (10), partition p1 values less than (30)); diff --git a/mysql-test/t/partition_charset.test b/mysql-test/t/partition_charset.test index 27d0dc87b89..5e8f128e87a 100644 --- a/mysql-test/t/partition_charset.test +++ b/mysql-test/t/partition_charset.test @@ -19,3 +19,10 @@ flush tables; set names latin1; select * from t1; drop table t1; + +create table t1 (a varchar(1), primary key (a)) +partition by list (ascii(a)) +(partition p1 values in (65)); +insert into t1 values ('A'); +replace into t1 values ('A'); +drop table t1; diff --git a/mysql-test/t/partition_list.test b/mysql-test/t/partition_list.test index 1e420cfe6ed..7d71d66f2d9 100644 --- a/mysql-test/t/partition_list.test +++ b/mysql-test/t/partition_list.test @@ -179,4 +179,8 @@ insert into t1 values (null); select * from t1; drop table t1; +-- error ER_PARTITION_FUNC_NOT_ALLOWED +create table t1 (a char(1)) +partition by list (ascii(ucase(a))) +(partition p1 values in (2)); From 81db111e241d7b32c70b6a391348f725b00a8596 Mon Sep 17 00:00:00 2001 From: "mikael@dator3.(none)" <> Date: Fri, 20 Apr 2007 18:35:16 +0200 Subject: [PATCH 004/127] BUG#18198 Added new test cases, fixed bugs in relation to those --- mysql-test/r/partition_charset.result | 6 ++++++ mysql-test/r/partition_list.result | 4 ++++ mysql-test/t/partition_list.test | 2 +- sql/partition_info.cc | 1 + sql/sql_partition.cc | 15 ++++++++++++--- 5 files changed, 24 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/partition_charset.result b/mysql-test/r/partition_charset.result index 665e5d55f8f..bb6cb5e3bef 100644 --- a/mysql-test/r/partition_charset.result +++ b/mysql-test/r/partition_charset.result @@ -16,3 +16,9 @@ s1 1 3 drop table t1; +create table t1 (a varchar(1), primary key (a)) +partition by list (ascii(a)) +(partition p1 values in (65)); +insert into t1 values ('A'); +replace into t1 values ('A'); +drop table t1; diff --git a/mysql-test/r/partition_list.result b/mysql-test/r/partition_list.result index e64a7a8d154..a68a67c6386 100644 --- a/mysql-test/r/partition_list.result +++ b/mysql-test/r/partition_list.result @@ -295,3 +295,7 @@ select * from t1; a 100 drop table t1; +create table t1 (a char(1)) +partition by list (ascii(ucase(a))) +(partition p1 values in (2)); +ERROR HY000: This partition function is not allowed diff --git a/mysql-test/t/partition_list.test b/mysql-test/t/partition_list.test index 7d71d66f2d9..1c76de9d55a 100644 --- a/mysql-test/t/partition_list.test +++ b/mysql-test/t/partition_list.test @@ -179,7 +179,7 @@ insert into t1 values (null); select * from t1; drop table t1; --- error ER_PARTITION_FUNC_NOT_ALLOWED +--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED create table t1 (a char(1)) partition by list (ascii(ucase(a))) (partition p1 values in (2)); diff --git a/sql/partition_info.cc b/sql/partition_info.cc index 3af79f453ad..6dfedde7116 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -951,6 +951,7 @@ bool partition_info::set_up_charset_field_preps() if (!(char_ptrs= (char**)sql_alloc(size))) goto error; subpart_charset_field_array= (Field**)char_ptrs; + ptr= subpart_field_array; i= 0; while ((field= *(ptr++))) { diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 86068cc5c0d..c02beee350c 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -3315,13 +3315,16 @@ static uint32 get_sub_part_id_from_key(const TABLE *table,byte *buf, uint32 part_id; DBUG_ENTER("get_sub_part_id_from_key"); - key_restore(buf, (byte*)key_spec->key, key_info, key_spec->length); if (likely(rec0 == buf)) + { + key_restore(buf, (byte*)key_spec->key, key_info, key_spec->length); part_id= part_info->get_subpartition_id(part_info); + } else { Field **part_field_array= part_info->subpart_field_array; set_field_ptr(part_field_array, buf, rec0); + key_restore(buf, (byte*)key_spec->key, key_info, key_spec->length); part_id= part_info->get_subpartition_id(part_info); set_field_ptr(part_field_array, rec0, buf); } @@ -3358,14 +3361,17 @@ bool get_part_id_from_key(const TABLE *table, byte *buf, KEY *key_info, longlong func_value; DBUG_ENTER("get_part_id_from_key"); - key_restore(buf, (byte*)key_spec->key, key_info, key_spec->length); if (likely(rec0 == buf)) + { + key_restore(buf, (byte*)key_spec->key, key_info, key_spec->length); result= part_info->get_part_partition_id(part_info, part_id, &func_value); + } else { Field **part_field_array= part_info->part_field_array; set_field_ptr(part_field_array, buf, rec0); + key_restore(buf, (byte*)key_spec->key, key_info, key_spec->length); result= part_info->get_part_partition_id(part_info, part_id, &func_value); set_field_ptr(part_field_array, rec0, buf); @@ -3405,14 +3411,17 @@ void get_full_part_id_from_key(const TABLE *table, byte *buf, longlong func_value; DBUG_ENTER("get_full_part_id_from_key"); - key_restore(buf, (byte*)key_spec->key, key_info, key_spec->length); if (likely(rec0 == buf)) + { + key_restore(buf, (byte*)key_spec->key, key_info, key_spec->length); result= part_info->get_partition_id(part_info, &part_spec->start_part, &func_value); + } else { Field **part_field_array= part_info->full_part_field_array; set_field_ptr(part_field_array, buf, rec0); + key_restore(buf, (byte*)key_spec->key, key_info, key_spec->length); result= part_info->get_partition_id(part_info, &part_spec->start_part, &func_value); set_field_ptr(part_field_array, rec0, buf); From 0942b2d8aa37662f337f071362880cae5aea0bb7 Mon Sep 17 00:00:00 2001 From: "mikael@dator3.(none)" <> Date: Fri, 20 Apr 2007 18:46:12 +0200 Subject: [PATCH 005/127] Removed warnings --- mysql-test/r/partition_bug18198.result | 2 -- mysql-test/t/partition_bug18198.test | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/partition_bug18198.result b/mysql-test/r/partition_bug18198.result index 091de9fb853..2071545dbca 100644 --- a/mysql-test/r/partition_bug18198.result +++ b/mysql-test/r/partition_bug18198.result @@ -1,6 +1,4 @@ drop table if exists t1; -Warnings: -Note 1051 Unknown table 't1' create table t1 (a char(5) character set koi8r) partition by list (ascii(a) mod 3) subpartition by hash(ascii(a)) diff --git a/mysql-test/t/partition_bug18198.test b/mysql-test/t/partition_bug18198.test index 2d36ea4665e..caf9bd560c0 100644 --- a/mysql-test/t/partition_bug18198.test +++ b/mysql-test/t/partition_bug18198.test @@ -1,7 +1,7 @@ -- source include/have_partition.inc ---disable warnings +--disable_warnings drop table if exists t1; ---enable warnings +--enable_warnings create table t1 (a char(5) character set koi8r) partition by list (ascii(a) mod 3) From cb401dde68368d404f34a88f1f08f83040546e31 Mon Sep 17 00:00:00 2001 From: "mikael@dator6.(none)" <> Date: Wed, 13 Jun 2007 16:12:02 +0200 Subject: [PATCH 006/127] manual merge --- sql/item.h | 6 +++--- sql/item_func.h | 8 ++++---- sql/item_timefunc.h | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/sql/item.h b/sql/item.h index 2c380fc2f69..fb2ccb6b2c9 100644 --- a/sql/item.h +++ b/sql/item.h @@ -1627,7 +1627,7 @@ public: uint decimal_precision() const { return (uint)(max_length - test(value < 0)); } bool eq(const Item *, bool binary_cmp) const; - bool check_partition_func_processor(byte *bool_arg) { return FALSE;} + bool check_partition_func_processor(uchar *bool_arg) { return FALSE;} }; @@ -1645,7 +1645,7 @@ public: void print(String *str); Item_num *neg (); uint decimal_precision() const { return max_length; } - bool check_partition_func_processor(byte *bool_arg) { return FALSE;} + bool check_partition_func_processor(uchar *bool_arg) { return FALSE;} }; @@ -1688,7 +1688,7 @@ public: uint decimal_precision() const { return decimal_value.precision(); } bool eq(const Item *, bool binary_cmp) const; void set_decimal_value(my_decimal *value_par); - bool check_partition_func_processor(byte *bool_arg) { return FALSE;} + bool check_partition_func_processor(uchar *bool_arg) { return FALSE;} }; diff --git a/sql/item_func.h b/sql/item_func.h index dc53a63bfe8..8b4b66c1410 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -439,7 +439,7 @@ public: void fix_length_and_dec(); void fix_num_length_and_dec(); uint decimal_precision() const { return args[0]->decimal_precision(); } - bool check_partition_func_processor(byte *int_arg) {return FALSE;} + bool check_partition_func_processor(uchar *int_arg) {return FALSE;} }; @@ -452,7 +452,7 @@ public: my_decimal *decimal_op(my_decimal *); const char *func_name() const { return "abs"; } void fix_length_and_dec(); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} + bool check_partition_func_processor(uchar *int_arg) {return FALSE;} }; // A class to handle logarithmic and trigonometric functions @@ -619,7 +619,7 @@ public: longlong int_op(); double real_op(); my_decimal *decimal_op(my_decimal *); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} + bool check_partition_func_processor(uchar *int_arg) {return FALSE;} }; @@ -631,7 +631,7 @@ public: longlong int_op(); double real_op(); my_decimal *decimal_op(my_decimal *); - bool check_partition_func_processor(byte *int_arg) {return FALSE;} + bool check_partition_func_processor(uchar *int_arg) {return FALSE;} }; /* This handles round and truncate */ diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h index bdf3560a55d..32f5bcf8e52 100644 --- a/sql/item_timefunc.h +++ b/sql/item_timefunc.h @@ -127,7 +127,7 @@ public: max_length=10*my_charset_bin.mbmaxlen; maybe_null=1; } - bool check_partition_func_processor(byte *int_arg) {return TRUE;} + bool check_partition_func_processor(uchar *int_arg) {return TRUE;} }; @@ -301,7 +301,7 @@ class Item_func_dayname :public Item_func_weekday max_length=9*MY_CHARSET_BIN_MB_MAXLEN; maybe_null=1; } - bool check_partition_func_processor(byte *int_arg) {return TRUE;} + bool check_partition_func_processor(uchar *int_arg) {return TRUE;} }; From c7f0c9101295aaf8dcee2dc87ec73f5928576ab8 Mon Sep 17 00:00:00 2001 From: "mikael@dator6.(none)" <> Date: Wed, 13 Jun 2007 16:40:29 +0200 Subject: [PATCH 007/127] Already fixed by bug27123 fix --- sql/sql_partition.cc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 799127995bd..edc59cad6a1 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -3294,16 +3294,15 @@ static uint32 get_sub_part_id_from_key(const TABLE *table,uchar *buf, uint32 part_id; DBUG_ENTER("get_sub_part_id_from_key"); + key_restore(buf, (uchar*)key_spec->key, key_info, key_spec->length); if (likely(rec0 == buf)) { - key_restore(buf, (uchar*)key_spec->key, key_info, key_spec->length); part_id= part_info->get_subpartition_id(part_info); } else { Field **part_field_array= part_info->subpart_field_array; set_field_ptr(part_field_array, buf, rec0); - key_restore(buf, (uchar*)key_spec->key, key_info, key_spec->length); part_id= part_info->get_subpartition_id(part_info); set_field_ptr(part_field_array, rec0, buf); } @@ -3340,9 +3339,9 @@ bool get_part_id_from_key(const TABLE *table, uchar *buf, KEY *key_info, longlong func_value; DBUG_ENTER("get_part_id_from_key"); + key_restore(buf, (uchar*)key_spec->key, key_info, key_spec->length); if (likely(rec0 == buf)) { - key_restore(buf, (uchar*)key_spec->key, key_info, key_spec->length); result= part_info->get_part_partition_id(part_info, part_id, &func_value); } @@ -3350,7 +3349,6 @@ bool get_part_id_from_key(const TABLE *table, uchar *buf, KEY *key_info, { Field **part_field_array= part_info->part_field_array; set_field_ptr(part_field_array, buf, rec0); - key_restore(buf, (uchar*)key_spec->key, key_info, key_spec->length); result= part_info->get_part_partition_id(part_info, part_id, &func_value); set_field_ptr(part_field_array, rec0, buf); @@ -3390,9 +3388,9 @@ void get_full_part_id_from_key(const TABLE *table, uchar *buf, longlong func_value; DBUG_ENTER("get_full_part_id_from_key"); + key_restore(buf, (uchar*)key_spec->key, key_info, key_spec->length); if (likely(rec0 == buf)) { - key_restore(buf, (uchar*)key_spec->key, key_info, key_spec->length); result= part_info->get_partition_id(part_info, &part_spec->start_part, &func_value); } @@ -3400,7 +3398,6 @@ void get_full_part_id_from_key(const TABLE *table, uchar *buf, { Field **part_field_array= part_info->full_part_field_array; set_field_ptr(part_field_array, buf, rec0); - key_restore(buf, (uchar*)key_spec->key, key_info, key_spec->length); result= part_info->get_partition_id(part_info, &part_spec->start_part, &func_value); set_field_ptr(part_field_array, rec0, buf); From 4ab5e26d933b240a48d7fe04f51e20a47ce19af5 Mon Sep 17 00:00:00 2001 From: "mikael@dator6.(none)" <> Date: Wed, 13 Jun 2007 17:28:59 +0200 Subject: [PATCH 008/127] Disabled ascii-function --- mysql-test/r/partition_bug18198.result | 30 ------- mysql-test/r/partition_charset.result | 4 +- mysql-test/r/partition_error.result | 2 +- mysql-test/r/partition_pruning.result | 18 ---- mysql-test/r/partition_range.result | 76 ---------------- mysql-test/t/partition_bug18198.test | 33 ------- mysql-test/t/partition_charset.test | 7 +- mysql-test/t/partition_error.test | 3 +- mysql-test/t/partition_pruning.test | 22 ++--- mysql-test/t/partition_range.test | 116 ++++++++++++------------- sql/item_func.h | 1 - 11 files changed, 76 insertions(+), 236 deletions(-) diff --git a/mysql-test/r/partition_bug18198.result b/mysql-test/r/partition_bug18198.result index 2071545dbca..18d7d904bb0 100644 --- a/mysql-test/r/partition_bug18198.result +++ b/mysql-test/r/partition_bug18198.result @@ -1,38 +1,8 @@ drop table if exists t1; -create table t1 (a char(5) character set koi8r) -partition by list (ascii(a) mod 3) -subpartition by hash(ascii(a)) -subpartitions 3 -(partition p1 values in (1), -partition p2 values in (2), -partition p0 values in (0)); -insert into t1 values ('a'); -explain partitions select * from t1 where a = 'a'; -id select_type table partitions type possible_keys key key_len ref rows Extra -1 SIMPLE t1 p2_p2sp2 system NULL NULL NULL NULL 1 -select * from t1 where a = 'a'; -a -a -drop table t1; -create table t1 (a char(5) character set cp1251) -partition by list (ascii(a)) (partition pn values in (null)); -drop table t1; create table t1 (col1 datetime) partition by range(datediff(col1,col1)) (partition p0 values less than (10), partition p1 values less than (30)); drop table t1; -create table t1 (a char(5) character set big5) -partition by list (ascii(a)) (partition pn values in (null)); -ERROR HY000: This partition function is not allowed -create table t1 (a char(1)) -partition by list(ascii(a)) -(partition p1 values in (ascii('i'))); -drop table t1; -create table t1 (s1 char(5) character set latin5) -partition by list (ascii(s1)) -(partition p1 values in (1)); -set names utf8; -drop table t1; create table t1 (col1 int) partition by range(greatest(col1,10)) (partition p0 values less than (2), partition p1 values less than (6)); diff --git a/mysql-test/r/partition_charset.result b/mysql-test/r/partition_charset.result index bb6cb5e3bef..f8f75e8bee7 100644 --- a/mysql-test/r/partition_charset.result +++ b/mysql-test/r/partition_charset.result @@ -19,6 +19,4 @@ drop table t1; create table t1 (a varchar(1), primary key (a)) partition by list (ascii(a)) (partition p1 values in (65)); -insert into t1 values ('A'); -replace into t1 values ('A'); -drop table t1; +ERROR HY000: This partition function is not allowed diff --git a/mysql-test/r/partition_error.result b/mysql-test/r/partition_error.result index 41829216178..7952c8df609 100644 --- a/mysql-test/r/partition_error.result +++ b/mysql-test/r/partition_error.result @@ -600,7 +600,7 @@ ERROR HY000: Partition constant is out of partition function domain create table t1 (v varchar(12)) partition by range (ascii(v)) (partition p0 values less than (10)); -drop table t1; +ERROR HY000: This partition function is not allowed create table t1 (a int) partition by hash (rand(a)); ERROR 42000: Constant/Random expression in (sub)partitioning function is not allowed near ')' at line 2 diff --git a/mysql-test/r/partition_pruning.result b/mysql-test/r/partition_pruning.result index 80a24bc7065..9595676016c 100644 --- a/mysql-test/r/partition_pruning.result +++ b/mysql-test/r/partition_pruning.result @@ -676,24 +676,6 @@ f_int1 f_int2 8 8 9 9 drop table t1; -create table t1 (a char(10) binary) -partition by list(ascii(a)) -(partition p1 values in (ascii('a')), -partition p2 values in (ascii('b')), -partition p3 values in (ascii('c')), -partition p4 values in (ascii('d')), -partition p5 values in (ascii('e'))); -insert into t1 values ('a'),('bb'),('ccc'),('dddd'),('eeEee'); -select * from t1 where a>='a' and a <= 'dddd'; -a -a -bb -ccc -dddd -explain partitions select * from t1 where a>='a' and a <= 'dddd'; -id select_type table partitions type possible_keys key key_len ref rows Extra -1 SIMPLE t1 p1,p2,p3,p4,p5 ALL NULL NULL NULL NULL 5 Using where -drop table t1; create table t1 (f_int1 integer) partition by list(abs(mod(f_int1,2))) subpartition by hash(f_int1) subpartitions 2 ( diff --git a/mysql-test/r/partition_range.result b/mysql-test/r/partition_range.result index e9ebd5ba2cf..a61006e87a4 100644 --- a/mysql-test/r/partition_range.result +++ b/mysql-test/r/partition_range.result @@ -1,38 +1,4 @@ drop table if exists t1; -create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int) -partition by range (ascii(a) * b) -(partition p0 values less than (2), partition p1 values less than (4000)); -insert into t1 values ('a ', 2),('a',3); -drop table t1; -create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int) -partition by range (b* ascii(a) * b) -(partition p0 values less than (2), partition p1 values less than (4000)); -insert into t1 values ('a ', 2),('a',3); -drop table t1; -create table t1 (a varchar(10) charset latin1 collate latin1_bin, -b varchar(10) charset latin1 collate latin1_bin) -partition by range (ascii(b) * ascii(a)) -(partition p0 values less than (2), partition p1 values less than (40000)); -insert into t1 values ('a ', 'b '),('a','b'); -drop table t1; -create table t1 (a varchar(10) charset latin1 collate latin1_bin, -b varchar(10) charset latin1 collate latin1_bin) -partition by range (ascii(a) * ascii(b)) -(partition p0 values less than (2), partition p1 values less than (40000)); -insert into t1 values ('a ', 'b '),('a','b'); -drop table t1; -create table t1 (a varchar(10) charset latin1 collate latin1_bin, -b varchar(10) charset latin1 collate latin1_bin, c int) -partition by range (ascii(a) * c) -(partition p0 values less than (2), partition p1 values less than (4000)); -insert into t1 values ('a ', 'b ', 2),('a','b', 3); -drop table t1; -create table t1 (a varchar(10) charset latin1 collate latin1_bin, -b varchar(10) charset latin1 collate latin1_bin, c int) -partition by range (c * ascii(a)) -(partition p0 values less than (2), partition p1 values less than (4000)); -insert into t1 values ('a ', 'b ', 2),('a','b', 3); -drop table t1; create table t1 (a int unsigned) partition by range (a) (partition pnull values less than (0), @@ -743,45 +709,3 @@ WHERE (a >= '2004-07-01' AND a <= '2004-09-30') OR 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 DROP TABLE t1; -create table t1 (a varchar(20)) -partition by range (ascii(a)) -(partition p0 values less than (100), -partition p1 values less than maxvalue); -insert into t1 values ("12345678901234567890"); -insert into t1 values ("A2345678901234567890"); -insert into t1 values ("B2345678901234567890"); -insert into t1 values ("1234567890123456789"); -insert into t1 values ("1234567890123456"); -select * from t1; -a -12345678901234567890 -A2345678901234567890 -B2345678901234567890 -1234567890123456789 -1234567890123456 -explain partitions select * from t1 where a = "12345678901234567890"; -id select_type table partitions type possible_keys key key_len ref rows Extra -1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where -explain partitions select * from t1 where a = "12345678901234567890" OR -a = "A2345678901234567890" OR -a = "B2345678901234567890" OR -a = "C2345678901234567890"; -id select_type table partitions type possible_keys key key_len ref rows Extra -1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where -explain partitions select * from t1 where a = "01234567890123456"; -id select_type table partitions type possible_keys key key_len ref rows Extra -1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where -select * from t1 where a = "01234567890123456"; -a -select * from t1 where a = "12345678901234567890" OR -a = "A2345678901234567890" OR -a = "B2345678901234567890" OR -a = "C2345678901234567890"; -a -12345678901234567890 -A2345678901234567890 -B2345678901234567890 -select * from t1 where a = "12345678901234567890"; -a -12345678901234567890 -drop table t1; diff --git a/mysql-test/t/partition_bug18198.test b/mysql-test/t/partition_bug18198.test index caf9bd560c0..7f071c6ec9e 100644 --- a/mysql-test/t/partition_bug18198.test +++ b/mysql-test/t/partition_bug18198.test @@ -3,44 +3,11 @@ drop table if exists t1; --enable_warnings -create table t1 (a char(5) character set koi8r) -partition by list (ascii(a) mod 3) -subpartition by hash(ascii(a)) -subpartitions 3 -(partition p1 values in (1), - partition p2 values in (2), - partition p0 values in (0)); -insert into t1 values ('a'); -explain partitions select * from t1 where a = 'a'; -select * from t1 where a = 'a'; -drop table t1; - -create table t1 (a char(5) character set cp1251) -partition by list (ascii(a)) (partition pn values in (null)); -drop table t1; - create table t1 (col1 datetime) partition by range(datediff(col1,col1)) (partition p0 values less than (10), partition p1 values less than (30)); drop table t1; --- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED -create table t1 (a char(5) character set big5) -partition by list (ascii(a)) (partition pn values in (null)); - -create table t1 (a char(1)) -partition by list(ascii(a)) -(partition p1 values in (ascii('i'))); -#insert into t1 values ('i'); -drop table t1; - -create table t1 (s1 char(5) character set latin5) -partition by list (ascii(s1)) -(partition p1 values in (1)); -set names utf8; -#insert into tn values ('¿¿'); -drop table t1; - -- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED create table t1 (col1 int) partition by range(greatest(col1,10)) diff --git a/mysql-test/t/partition_charset.test b/mysql-test/t/partition_charset.test index 5e8f128e87a..6842e5268fa 100644 --- a/mysql-test/t/partition_charset.test +++ b/mysql-test/t/partition_charset.test @@ -20,9 +20,10 @@ set names latin1; select * from t1; drop table t1; +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED create table t1 (a varchar(1), primary key (a)) partition by list (ascii(a)) (partition p1 values in (65)); -insert into t1 values ('A'); -replace into t1 values ('A'); -drop table t1; +#insert into t1 values ('A'); +#replace into t1 values ('A'); +#drop table t1; diff --git a/mysql-test/t/partition_error.test b/mysql-test/t/partition_error.test index fa5055b2981..5fc2097cc52 100644 --- a/mysql-test/t/partition_error.test +++ b/mysql-test/t/partition_error.test @@ -769,10 +769,11 @@ partition by range (a) # # Bug 18198 Partitions: Verify that erroneus partition functions doesn't work # +-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED create table t1 (v varchar(12)) partition by range (ascii(v)) (partition p0 values less than (10)); -drop table t1; +#drop table t1; -- error 1064 create table t1 (a int) diff --git a/mysql-test/t/partition_pruning.test b/mysql-test/t/partition_pruning.test index cef57bd9356..12951c9232a 100644 --- a/mysql-test/t/partition_pruning.test +++ b/mysql-test/t/partition_pruning.test @@ -538,17 +538,17 @@ select * from t1 where f_int1 between 5 and 15 order by f_int1; drop table t1; # part2: bug in pruning code -create table t1 (a char(10) binary) -partition by list(ascii(a)) - (partition p1 values in (ascii('a')), - partition p2 values in (ascii('b')), - partition p3 values in (ascii('c')), - partition p4 values in (ascii('d')), - partition p5 values in (ascii('e'))); -insert into t1 values ('a'),('bb'),('ccc'),('dddd'),('eeEee'); -select * from t1 where a>='a' and a <= 'dddd'; -explain partitions select * from t1 where a>='a' and a <= 'dddd'; -drop table t1; +#create table t1 (a char(10) binary) +#partition by list(ascii(a)) +# (partition p1 values in (ascii('a')), +# partition p2 values in (ascii('b')), +# partition p3 values in (ascii('c')), +# partition p4 values in (ascii('d')), +# partition p5 values in (ascii('e'))); +#insert into t1 values ('a'),('bb'),('ccc'),('dddd'),('eeEee'); +#select * from t1 where a>='a' and a <= 'dddd'; +#explain partitions select * from t1 where a>='a' and a <= 'dddd'; +#drop table t1; # BUG#18659: Assertion failure when subpartitioning is used and partition is # "IS NULL" diff --git a/mysql-test/t/partition_range.test b/mysql-test/t/partition_range.test index 219637d6f81..50d850913bc 100644 --- a/mysql-test/t/partition_range.test +++ b/mysql-test/t/partition_range.test @@ -12,45 +12,45 @@ drop table if exists t1; # # BUG 18198: Various tests for partition functions # -create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int) -partition by range (ascii(a) * b) -(partition p0 values less than (2), partition p1 values less than (4000)); -insert into t1 values ('a ', 2),('a',3); -drop table t1; +#create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int) +#partition by range (ascii(a) * b) +#(partition p0 values less than (2), partition p1 values less than (4000)); +#insert into t1 values ('a ', 2),('a',3); +#drop table t1; -create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int) -partition by range (b* ascii(a) * b) -(partition p0 values less than (2), partition p1 values less than (4000)); -insert into t1 values ('a ', 2),('a',3); -drop table t1; +#create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int) +#partition by range (b* ascii(a) * b) +#(partition p0 values less than (2), partition p1 values less than (4000)); +#insert into t1 values ('a ', 2),('a',3); +#drop table t1; -create table t1 (a varchar(10) charset latin1 collate latin1_bin, - b varchar(10) charset latin1 collate latin1_bin) -partition by range (ascii(b) * ascii(a)) -(partition p0 values less than (2), partition p1 values less than (40000)); -insert into t1 values ('a ', 'b '),('a','b'); -drop table t1; +#create table t1 (a varchar(10) charset latin1 collate latin1_bin, +# b varchar(10) charset latin1 collate latin1_bin) +#partition by range (ascii(b) * ascii(a)) +#(partition p0 values less than (2), partition p1 values less than (40000)); +#insert into t1 values ('a ', 'b '),('a','b'); +#drop table t1; -create table t1 (a varchar(10) charset latin1 collate latin1_bin, - b varchar(10) charset latin1 collate latin1_bin) -partition by range (ascii(a) * ascii(b)) -(partition p0 values less than (2), partition p1 values less than (40000)); -insert into t1 values ('a ', 'b '),('a','b'); -drop table t1; +#create table t1 (a varchar(10) charset latin1 collate latin1_bin, +# b varchar(10) charset latin1 collate latin1_bin) +#partition by range (ascii(a) * ascii(b)) +#(partition p0 values less than (2), partition p1 values less than (40000)); +#insert into t1 values ('a ', 'b '),('a','b'); +#drop table t1; -create table t1 (a varchar(10) charset latin1 collate latin1_bin, - b varchar(10) charset latin1 collate latin1_bin, c int) -partition by range (ascii(a) * c) -(partition p0 values less than (2), partition p1 values less than (4000)); -insert into t1 values ('a ', 'b ', 2),('a','b', 3); -drop table t1; +#create table t1 (a varchar(10) charset latin1 collate latin1_bin, +# b varchar(10) charset latin1 collate latin1_bin, c int) +#partition by range (ascii(a) * c) +#(partition p0 values less than (2), partition p1 values less than (4000)); +#insert into t1 values ('a ', 'b ', 2),('a','b', 3); +#drop table t1; -create table t1 (a varchar(10) charset latin1 collate latin1_bin, - b varchar(10) charset latin1 collate latin1_bin, c int) -partition by range (c * ascii(a)) -(partition p0 values less than (2), partition p1 values less than (4000)); -insert into t1 values ('a ', 'b ', 2),('a','b', 3); -drop table t1; +#create table t1 (a varchar(10) charset latin1 collate latin1_bin, +# b varchar(10) charset latin1 collate latin1_bin, c int) +#partition by range (c * ascii(a)) +#(partition p0 values less than (2), partition p1 values less than (4000)); +#insert into t1 values ('a ', 'b ', 2),('a','b', 3); +#drop table t1; # # More checks for partition pruning @@ -733,29 +733,27 @@ DROP TABLE t1; # # Bug 18198: Try with a couple of cases using VARCHAR fields in # partition function. -create table t1 (a varchar(20)) -partition by range (ascii(a)) -(partition p0 values less than (100), - partition p1 values less than maxvalue); +#create table t1 (a varchar(20)) +#partition by range (ascii(a)) +#(partition p0 values less than (100), +# partition p1 values less than maxvalue); -insert into t1 values ("12345678901234567890"); -insert into t1 values ("A2345678901234567890"); -insert into t1 values ("B2345678901234567890"); -insert into t1 values ("1234567890123456789"); -insert into t1 values ("1234567890123456"); -select * from t1; -explain partitions select * from t1 where a = "12345678901234567890"; -explain partitions select * from t1 where a = "12345678901234567890" OR - a = "A2345678901234567890" OR - a = "B2345678901234567890" OR - a = "C2345678901234567890"; -explain partitions select * from t1 where a = "01234567890123456"; -select * from t1 where a = "01234567890123456"; -select * from t1 where a = "12345678901234567890" OR - a = "A2345678901234567890" OR - a = "B2345678901234567890" OR - a = "C2345678901234567890"; -select * from t1 where a = "12345678901234567890"; - - -drop table t1; +#insert into t1 values ("12345678901234567890"); +#insert into t1 values ("A2345678901234567890"); +#insert into t1 values ("B2345678901234567890"); +#insert into t1 values ("1234567890123456789"); +#insert into t1 values ("1234567890123456"); +#select * from t1; +#explain partitions select * from t1 where a = "12345678901234567890"; +#explain partitions select * from t1 where a = "12345678901234567890" OR +# a = "A2345678901234567890" OR +# a = "B2345678901234567890" OR +# a = "C2345678901234567890"; +#explain partitions select * from t1 where a = "01234567890123456"; +#select * from t1 where a = "01234567890123456"; +#select * from t1 where a = "12345678901234567890" OR +# a = "A2345678901234567890" OR +# a = "B2345678901234567890" OR +# a = "C2345678901234567890"; +#select * from t1 where a = "12345678901234567890"; +#drop table t1; diff --git a/sql/item_func.h b/sql/item_func.h index 8b4b66c1410..568effb2f63 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -832,7 +832,6 @@ public: longlong val_int(); const char *func_name() const { return "ascii"; } void fix_length_and_dec() { max_length=3; } - bool check_partition_func_processor(uchar *int_arg) {return FALSE;} }; class Item_func_ord :public Item_int_func From 8f5b6ec237fdd152f651a3c5537763d2d0f8ef32 Mon Sep 17 00:00:00 2001 From: "svoj@mysql.com/april.(none)" <> Date: Fri, 15 Jun 2007 03:22:40 +0500 Subject: [PATCH 009/127] BUG#28971 - ALTER TABLE followed by UPDATE for a CSV table make server crash UPDATE against CSV table may cause server crash or update a table with wrong values. CSV can write only a whole row at once. That means it must read all columns, that it is not going to update, and write them along with updated columns. But only limited set of columns was read, those that were needed for the UPDATE query. With this fix all columns are read in case we're performing an UPDATE. --- mysql-test/r/csv.result | 8 ++++++++ mysql-test/t/csv.test | 11 +++++++++++ storage/csv/ha_tina.cc | 5 ++++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/csv.result b/mysql-test/r/csv.result index ede5d9a32fd..1196a264fd3 100644 --- a/mysql-test/r/csv.result +++ b/mysql-test/r/csv.result @@ -5240,3 +5240,11 @@ CREATE TABLE `bug21328` ( insert into bug21328 values (1,NULL,NULL); alter table bug21328 engine=myisam; drop table bug21328; +create table t1(a blob, b int) engine=csv; +insert into t1 values('a', 1); +flush tables; +update t1 set b=2; +select * from t1; +a b +a 2 +drop table t1; diff --git a/mysql-test/t/csv.test b/mysql-test/t/csv.test index 62482d576b2..922fbb0d3f1 100644 --- a/mysql-test/t/csv.test +++ b/mysql-test/t/csv.test @@ -1653,3 +1653,14 @@ CREATE TABLE `bug21328` ( insert into bug21328 values (1,NULL,NULL); alter table bug21328 engine=myisam; drop table bug21328; + +# +# BUG#28971 - ALTER TABLE followed by UPDATE for a CSV table make server +# crash +# +create table t1(a blob, b int) engine=csv; +insert into t1 values('a', 1); +flush tables; +update t1 set b=2; +select * from t1; +drop table t1; diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc index 9eead7a059c..c0790d69888 100644 --- a/storage/csv/ha_tina.cc +++ b/storage/csv/ha_tina.cc @@ -590,6 +590,7 @@ int ha_tina::find_current_row(uchar *buf) int eoln_len; my_bitmap_map *org_bitmap; int error; + bool read_all; DBUG_ENTER("ha_tina::find_current_row"); /* @@ -601,6 +602,8 @@ int ha_tina::find_current_row(uchar *buf) local_saved_data_file_length, &eoln_len)) == 0) DBUG_RETURN(HA_ERR_END_OF_FILE); + /* We must read all columns in case a table is opened for update */ + read_all= !bitmap_is_clear_all(table->write_set); /* Avoid asserts in ::store() for columns that are not going to be updated */ org_bitmap= dbug_tmp_use_all_columns(table, table->write_set); error= HA_ERR_CRASHED_ON_USAGE; @@ -678,7 +681,7 @@ int ha_tina::find_current_row(uchar *buf) goto err; } - if (bitmap_is_set(table->read_set, (*field)->field_index)) + if (read_all || bitmap_is_set(table->read_set, (*field)->field_index)) (*field)->store(buffer.ptr(), buffer.length(), system_charset_info); } next_position= end_offset + eoln_len; From 69cfa9b06ea5f58bc758756310cc73e2e6511234 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.(none)" <> Date: Fri, 15 Jun 2007 17:42:03 +0200 Subject: [PATCH 010/127] Bug#18415 known problem when mysql-test-run.pl run ActiveState perl for windows - Select STDOUT as default handle after having cloned the child - Disable check for "$error eq $output" to ptoperly redirect $error --- mysql-test/lib/mtr_process.pl | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/mysql-test/lib/mtr_process.pl b/mysql-test/lib/mtr_process.pl index ac2e049a67c..2b6abcf004d 100644 --- a/mysql-test/lib/mtr_process.pl +++ b/mysql-test/lib/mtr_process.pl @@ -142,6 +142,7 @@ sub spawn_impl ($$$$$$$) { if ( $pid ) { + select(STDOUT) if $::glob_win32_perl; return spawn_parent_impl($pid,$mode,$path); } else @@ -163,9 +164,6 @@ sub spawn_impl ($$$$$$$) { { # Don't redirect stdout on ActiveState perl since this is # just another thread in the same process. - # Should be fixed so that the thread that is created with fork - # executes the exe in another process and wait's for it to return. - # In the meanwhile, we get all the output from mysqld's to screen } elsif ( ! open(STDOUT,$log_file_open_mode,$output) ) { @@ -175,7 +173,7 @@ sub spawn_impl ($$$$$$$) { if ( $error ) { - if ( $output eq $error ) + if ( !$::glob_win32_perl and $output eq $error ) { if ( ! open(STDERR,">&STDOUT") ) { @@ -184,15 +182,7 @@ sub spawn_impl ($$$$$$$) { } else { - if ( $::glob_win32_perl ) - { - # Don't redirect stdout on ActiveState perl since this is - # just another thread in the same process. - # Should be fixed so that the thread that is created with fork - # executes the exe in another process and wait's for it to return. - # In the meanwhile, we get all the output from mysqld's to screen - } - elsif ( ! open(STDERR,$log_file_open_mode,$error) ) + if ( ! open(STDERR,$log_file_open_mode,$error) ) { mtr_child_error("can't redirect STDERR to \"$error\": $!"); } From 020eedd4460d4a88dc49c4bb6d4b62beea0b17f8 Mon Sep 17 00:00:00 2001 From: "bar@mysql.com/bar.myoffice.izhnet.ru" <> Date: Tue, 19 Jun 2007 15:34:21 +0500 Subject: [PATCH 011/127] mtr_report.pl: Ignore warning about file name having question marks. --- mysql-test/lib/mtr_report.pl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mysql-test/lib/mtr_report.pl b/mysql-test/lib/mtr_report.pl index 096840eb559..84d813ca918 100644 --- a/mysql-test/lib/mtr_report.pl +++ b/mysql-test/lib/mtr_report.pl @@ -359,6 +359,10 @@ sub mtr_report_stats ($) { /skip-name-resolve mode/ or /slave SQL thread aborted/ or /Slave: .*Duplicate entry/ or + # Special case for Bug #26402 in show_check.test + # Question marks are not valid file name parts + # on Windows platforms. Ignore this error message. + /\QCan't find file: '.\test\????????.frm'\E/ or # Special case, made as specific as possible, for: # Bug #28436: Incorrect position in SHOW BINLOG EVENTS causes # server coredump From 2418b850465fd73f86c81e2a27e199e17d180e76 Mon Sep 17 00:00:00 2001 From: "kent/mysqldev@mysql.com/production.mysql.com" <> Date: Wed, 20 Jun 2007 14:00:28 +0200 Subject: [PATCH 012/127] configure.in: Added --with-system-type= and --with-machine-type= options, to be able to override the one detected, for --version strings field.cc, field.h, listener.cc: C++ compatibility change for IBM VisualAge 6 and i5/OS --- configure.in | 16 ++++++++++++---- server-tools/instance-manager/listener.cc | 4 +++- sql/field.cc | 1 + sql/field.h | 2 +- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/configure.in b/configure.in index e7e9aa58c9b..6cf8dbd4e47 100644 --- a/configure.in +++ b/configure.in @@ -100,14 +100,22 @@ AC_DEFINE_UNQUOTED([NDB_VERSION_STATUS], ["$NDB_VERSION_STATUS"], # Canonicalize the configuration name. -SYSTEM_TYPE="$host_vendor-$host_os" -MACHINE_TYPE="$host_cpu" + +# Check whether --with-system-type or --without-system-type was given. +AC_ARG_WITH(system-type, + [ --with-system-type Set the system type, like "sun-solaris10"], + [SYSTEM_TYPE="$withval"], + [SYSTEM_TYPE="$host_vendor-$host_os"]) +AC_ARG_WITH(machine-type, + [ --with-machine-type Set the machine type, like "powerpc"], + [MACHINE_TYPE="$withval"], + [MACHINE_TYPE="$host_cpu"]) AC_SUBST(SYSTEM_TYPE) AC_DEFINE_UNQUOTED([SYSTEM_TYPE], ["$SYSTEM_TYPE"], - [Name of system, eg solaris]) + [Name of system, eg sun-solaris]) AC_SUBST(MACHINE_TYPE) AC_DEFINE_UNQUOTED([MACHINE_TYPE], ["$MACHINE_TYPE"], - [Machine type name, eg sun10]) + [Machine type name, eg sparc]) # Detect intel x86 like processor BASE_MACHINE_TYPE=$MACHINE_TYPE diff --git a/server-tools/instance-manager/listener.cc b/server-tools/instance-manager/listener.cc index a055d98656c..a950ecf4ed3 100644 --- a/server-tools/instance-manager/listener.cc +++ b/server-tools/instance-manager/listener.cc @@ -67,7 +67,7 @@ public: ~Listener_thread(); void run(); private: - static const int LISTEN_BACK_LOG_SIZE= 5; /* standard backlog size */ + static const int LISTEN_BACK_LOG_SIZE; ulong total_connection_count; Thread_info thread_info; @@ -80,6 +80,8 @@ private: int create_unix_socket(struct sockaddr_un &unix_socket_address); }; +const int Listener_thread::LISTEN_BACK_LOG_SIZE = 5; /* standard backlog size */ + Listener_thread::Listener_thread(const Listener_thread_args &args) : Listener_thread_args(args.thread_registry, args.options, args.user_map, diff --git a/sql/field.cc b/sql/field.cc index c8c6014b92c..87f1a815e24 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -6267,6 +6267,7 @@ Field *Field_string::new_field(MEM_ROOT *root, struct st_table *new_table, is 2. ****************************************************************************/ +const uint Field_varstring::MAX_SIZE= UINT_MAX16; int Field_varstring::store(const char *from,uint length,CHARSET_INFO *cs) { diff --git a/sql/field.h b/sql/field.h index fb6534b7b55..fbf402ab5c3 100644 --- a/sql/field.h +++ b/sql/field.h @@ -1116,7 +1116,7 @@ public: The maximum space available in a Field_varstring, in bytes. See length_bytes. */ - static const uint MAX_SIZE= UINT_MAX16; + static const uint MAX_SIZE; /* Store number of bytes used to store length (1 or 2) */ uint32 length_bytes; Field_varstring(char *ptr_arg, From 9a5908316367080a3c41043f2657a056fb5ad165 Mon Sep 17 00:00:00 2001 From: "monty@mysql.com/narttu.mysql.fi" <> Date: Wed, 20 Jun 2007 19:22:27 +0300 Subject: [PATCH 013/127] Allow multiple calls to mysql_server_end() (Part of fix for Bug#25621 Error in my_thread_global_end(): 1 threads didn't exit) Give correct error message if InnoDB table is not found (This allows us to drop a an innodb table that is not in the InnoDB registery) --- .bzrignore | 3 +++ libmysql/libmysql.c | 15 +++++++++++++++ mysql-test/r/innodb_mysql.result | 8 ++++++++ mysql-test/t/innodb_mysql.test | 14 ++++++++++++++ sql/ha_innodb.cc | 2 +- 5 files changed, 41 insertions(+), 1 deletion(-) diff --git a/.bzrignore b/.bzrignore index 8c632f8f890..e7a7a1c27dc 100644 --- a/.bzrignore +++ b/.bzrignore @@ -1341,3 +1341,6 @@ win/vs71cache.txt win/vs8cache.txt zlib/*.ds? zlib/*.vcproj +debian/control +debian/defs.mk +include/abi_check diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index e426d2c549e..121167763ed 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -168,8 +168,23 @@ int STDCALL mysql_server_init(int argc __attribute__((unused)), } +/* + Free all memory and resources used by the client library + + NOTES + When calling this there should not be any other threads using + the library. + + To make things simpler when used with windows dll's (which calls this + function automaticly), it's safe to call this function multiple times. +*/ + + void STDCALL mysql_server_end() { + if (!mysql_client_init) + return; + #ifdef EMBEDDED_LIBRARY end_embedded_server(); #endif diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index 34eb831e7db..4720c7c2e2e 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -625,4 +625,12 @@ t1 CREATE TABLE `t1` ( `a` int(11) default NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='123' drop table t1; +create table t1 (a int) engine=innodb; +select * from t2; +ERROR 42S02: Table 'test.t2' doesn't exist +drop table t1; +drop table t2; +ERROR 42S02: Unknown table 't2' +create table t2 (a int); +drop table t2; End of 5.0 tests diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/t/innodb_mysql.test index e6d94fe1627..578a81f355e 100644 --- a/mysql-test/t/innodb_mysql.test +++ b/mysql-test/t/innodb_mysql.test @@ -605,4 +605,18 @@ alter table t1 comment '123'; show create table t1; drop table t1; +# +# Test bug when trying to drop data file which no InnoDB directory entry +# + +create table t1 (a int) engine=innodb; +copy_file $MYSQLTEST_VARDIR/master-data/test/t1.frm $MYSQLTEST_VARDIR/master-data/test/t2.frm; +--error 1146 +select * from t2; +drop table t1; +--error 1051 +drop table t2; +create table t2 (a int); +drop table t2; + --echo End of 5.0 tests diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index 455c0968050..a3676bd7e1b 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -504,7 +504,7 @@ convert_error_code_to_mysql( } else if (error == (int) DB_TABLE_NOT_FOUND) { - return(HA_ERR_KEY_NOT_FOUND); + return(HA_ERR_NO_SUCH_TABLE); } else if (error == (int) DB_TOO_BIG_RECORD) { From c4b53b218c71aff3410ec4358dfec2b9d0e1e1b4 Mon Sep 17 00:00:00 2001 From: "df@pippilotta.erinye.com" <> Date: Thu, 21 Jun 2007 08:58:39 +0200 Subject: [PATCH 014/127] Steal part of fix for bug#25621 from monty for 5.0.44. --- libmysql/libmysql.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index e426d2c549e..121167763ed 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -168,8 +168,23 @@ int STDCALL mysql_server_init(int argc __attribute__((unused)), } +/* + Free all memory and resources used by the client library + + NOTES + When calling this there should not be any other threads using + the library. + + To make things simpler when used with windows dll's (which calls this + function automaticly), it's safe to call this function multiple times. +*/ + + void STDCALL mysql_server_end() { + if (!mysql_client_init) + return; + #ifdef EMBEDDED_LIBRARY end_embedded_server(); #endif From aabbd2fb69193bc9c3c9dee1129a4dc79c551f37 Mon Sep 17 00:00:00 2001 From: "ramil/ram@mysql.com/ramil.myoffice.izhnet.ru" <> Date: Fri, 22 Jun 2007 17:12:40 +0500 Subject: [PATCH 015/127] Fix for bug #29079: Semantics of "bigint" depend on platform specifics (size, signedness of char ?) Problem: long and long long types mess in a comparison may lead to wrong results on some platforms. Fix: prefer [unsigned] long long as [u]longlong as it's used unconditionally in many places. --- include/my_global.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/include/my_global.h b/include/my_global.h index b7b200fdcf4..5e31a66e5e3 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -828,7 +828,12 @@ error "Neither int or long is of 4 bytes width" typedef unsigned long ulong; /* Short for unsigned long */ #endif #ifndef longlong_defined -#if defined(HAVE_LONG_LONG) && SIZEOF_LONG != 8 +/* + Using [unsigned] long long is preferable as [u]longlong because we use + [unsigned] long long unconditionally in many places, + for example in constants with [U]LL suffix. +*/ +#if defined(HAVE_LONG_LONG) && SIZEOF_LONG_LONG == 8 typedef unsigned long long int ulonglong; /* ulong or unsigned long long */ typedef long long int longlong; #else From 717c8fe98ee82eef09343a6abb9863dc49f337d7 Mon Sep 17 00:00:00 2001 From: "svoj@mysql.com/april.(none)" <> Date: Sun, 24 Jun 2007 19:44:54 +0500 Subject: [PATCH 016/127] BUG#15787 - MySQL crashes when archive table exceeds 2GB Max compressed file size was calculated incorretly causing server crash on INSERT. With this patch we use proper max file size provided by zlib. Affects 5.0 only. --- mysql-test/r/archive-big.result | 19 +++++++++++++++++++ mysql-test/t/archive-big.test | 25 +++++++++++++++++++++++++ sql/ha_archive.cc | 3 ++- 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 mysql-test/r/archive-big.result create mode 100644 mysql-test/t/archive-big.test diff --git a/mysql-test/r/archive-big.result b/mysql-test/r/archive-big.result new file mode 100644 index 00000000000..7dbdb490017 --- /dev/null +++ b/mysql-test/r/archive-big.result @@ -0,0 +1,19 @@ +CREATE TABLE t1(a BLOB) ENGINE=ARCHIVE; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +DROP TABLE t1; diff --git a/mysql-test/t/archive-big.test b/mysql-test/t/archive-big.test new file mode 100644 index 00000000000..414b689b180 --- /dev/null +++ b/mysql-test/t/archive-big.test @@ -0,0 +1,25 @@ +--source include/big_test.inc +--source include/have_archive.inc +CREATE TABLE t1(a BLOB) ENGINE=ARCHIVE; +--disable_query_log +INSERT INTO t1 VALUES('gt:Y;V(Wh/DM;z\'@Scyb^2u*b:8GBTan./A;D(7x(PB98IL%ipw0x=^H,>8=i%m\'heEdN:pR*o%Ywtf&x]H2[]Ex\\Bn1>\'EhfGmw56OpkO(n$VpXE2d.M#Z*XevKM$`Er;euB&2e3d-HdFlw;RobzhxMQ3EFn&aCf`5y79V/\"UmMt-t36S(aAY&Ekt.w@m4Q!G,@@]?\\:D.R;j1Kj[j*&\"n8cq6Me>@fgW_Wx$821=#0fAM@75D7\'Wi2T8W32B96C2kQ5MiO2C>NP-(!fms!;I?Biu7F?G*6o[Z54D?LCJ/H\\#+M,-;$?Rd\'-Ii`+GfW_\\5-zRc\'.M%dV`dYpOv2,\"`L;\"3u(Xk9pU8Ry79Z?fo\"K=-b7#FxX0!OS6Oma\"uZ@m1C?Q]c\\*P=z\")Hq/(xSsrd\"j&n(m{J9x#4y:KM%cSV7LZft=gzUtse$tM`#zsV35Oqsrf,=0u-q#H-@=Qc(1\\ddM6`gke>>^F{fmt(Zuey[9G=;O_tRx1zH2[Z9E5rjDL8j<)RIVX<\\Bq@\'<cbFq2;qS+q*lprp_gnv/t0$`Ep4HP>$4w-iWW35Lc7{8zxpK`+KyLKs.{Si>3#PR.,.@>Uqd%zj(wRpe,@Cm)q4D<>caAZ+[qQy9HCT_e_3sy0qw,b6#Fz`QT7Qv+a4v\'N;xxudtC+FcJ%p9``Cjt0)vJKt7JO5T10<\"-\\qK_#&2iIke<7?tY@m4Os$H((0TC/[did@K<)TU0)vJJq(eO;uj6aq>u_Z*Yi+1S6Pqo`qA*Fg\\u`_ChmkXU&SU8Pod.M{Q[[:LR=rR&\\)L.;\"1l\\i\"Z0u1)s;a_>Q^k&js+lkYY7B*FbEkr&U`hljR9cp01GUYAtRw/qz8>m:k=)M3Oy>`OMr\"Bju6A\'<:LUKWV.yJ>9Axft@va`Be\\#,RC5#EwV)]&<@gr-zQavV-ox56L_!wh&uM\\k,0Ia7\'YrYI?>W&N<{)L*).JmlZ]H0S9[I9!5)i`,N.7d\"m/:r\\UutlDH#hp!F#rIO4Q&\\*TNiO-0GWeyY/v59``ChiYbf]#,O6W8Ayk1EN;xwpQ$Vi9unNu-q#I1Q/1HZoHRGL+,<-gL\'p1;pQ\"MERQ#OO{J<-fFh^%2kP08h2T:\\LDQNpty*V\\NO(lu1(o+xMS=qMhL\"Y\'K-9tlDJ,8q`it4:g%q=sW8KWU,mng:)Yl=#3sz3\"MFWexSpauQod-G_4z;KL{Sg4c$xb`B`Dp6OpnZU$Er;er8T(^.`(:/u33ECbL5`hq%S[TsmLmkUGARYNXV*b>I:#G.Ii\\rPs\"0omXQkN&gb8+i[n@.`\'5qjERPy>Y.oty.iSD;:M[ccM6`kyI8z.gIq,vAv[Cx`Y!-\\oEDeV`dXk:uj8lFTX@qGJzW#;D(7x)UX?m2FM6][4.*%tJR@+O5T0.5_e`81./?4%Ywtcp6NjUIK\"\\512I[qOrw\'N9oOyAk%gb;:PiF]*M-3XJJp&Yxvl=&B\\0qtx(K)&#tU*hX`]4(eRHTQv,fK%l$]6/*!bYwqU5A.[j++4d*:\'OA7.yMMyI8x%>LG]\'ASczfo!G*8x&CcRPw44D>J=0s\'Wh0H`2n`uSz8@v^Sd%{n\'AWupW@v`\\/jWRv)WexSrjCK1LosuwvpS-zRf3^hu:X309h1O#WrcxX0yG0S:bf\\zyucn(jmiKs1/4YLP/4W@wcheFid=Ak&hiZft?qIRD=Cxa[*SJ[k3S.&n+zVz1t)]\'ATe(.Kq$QQ)n#PS5GJzW$Be[vi2R-$ggUS$NFPGO(Eg]#)BVmKfK#cUajs+kfBRZO[aZ$95?yqPu)\\#/`%)@G*7rh6h7oU;`]611A71-/CGwQjIj`)=>\\=X-j^tW4:euD-O1A6*h[mUsmKjZdmw9KQ9aggO7_`G!fjfFcGtAzoD>I9z0ne5mR3A2og<0v6=pIVX=_QU\'D`A^=P`rGEdO>(HvE1_sL]pD?OR3?)IvC&.R>xm?.c4n]c_5\'[%81)t@ym9C(9)[woJ_%1e5mT=m;rZJCPMornXKP3IXdp.(wTv#:?l.4\\Z2&cL0I_+N.8k@738`cRP{G+<0t+i\\oB7,r+mt&M=)N4V^H+:&J)\'\'-N&inm\\dfV]Re+>7;`Y#7-xH:(RPu.q\"DsC1f;-j[j-5`m-+/JlfAJ6h6kESR(fUU23FJ%m)tA#%.VMa*@F&#w_Xxz$5z9C+E\\*REB\\.fGjhM(vMWQpjCL9r`ggVW7GCXsctG@I2ZW)[uez]Cn1?*M1EL1I`.Zdls%PJb7&QOx:Oa$%*D\\)L.;{,YfvG<3*s8S\"Co4HTNjReh_)CWqZP_rGFjiVPna{l2HXdr8U-w@m5S,vAtS#I-BG$o8_\\63;mA6)dK+,>4)lptvwxwoLgIq-zP^hvAw^Q[Y0zH4c&&,Jt6GCZ#3w1#Ui;&Em{J;&I&vSv&GyY0xAm.5]\\-]wh)%xb_;D&*?CrB,N-1Kka*@F#o;j6am)uB&0[fo&^5&XpU7Nd6w\'I%r?zu^Y\'M6`jwAp?&8*b@R`l+\"da;=_NG[vh+3\\_I3YRmVE7#Ciq&Xr]Z0u1(lx=^I1S9^TkGXi0I`2lYW,i[j-7h7oV>n=yyueyW(Xi2R-#dYqW?n8cr>pHSK[l7cuLUHK\"\\9B#{u]Q^gnv1$[*SNkY[BsIO2EJ*)1XRpd+;.nlYU$FzbYvoNqw,a5w*]{{{\"$-WT%RS/-0JhTMb/XT#Fy[;QiEVez`OKiVRx1{I8vulDFs>qK^{vbgb<qJX^Sg3_j!Vsh3[Y0w;Sv&GxQiBJ3WF7z63;nFN7csC-SC5x1x)L-7kA@Z-gM++3]edK,4^edJ$jyH7rh8raq:clw9M\\i&o.-5c!izRe0SQavV*eK%n+{]@aQR*q,xH<2#Te)2\\aUd#o:h,4`p(J%m)q4D=E&*<3-#d[z\")Hp+r13LhN+($uT%OH\\vf\"bXoP#QXICUf((2`vW0#Z+[rT*mqssj>/l`{qISJWY@l-2Q+u>l4S.%hi\\pHQA2pkMx@m3J`,O2DCeYoIZk6_cYqU7M_{rQu)[uduHBQT4C:47W7HFeUV6F@LCJ.?60/7g.BH&x]F*7rj=/mc/TC2kQ4K_#(==Y1\"R_k\"X$?Q_n2B::Su#>P\\_NGXg\'!i\"[0t,nsw\'J*,=4*q,wF1^o:j3R01EI%o4IXbgc@NKj^yk3Ow7B*GgYg#hp#L?5+q,vC\"wdks([z#/_yl6][64@*L*\'$yen\"MFTXC%\'6uz,^\"{yoHRHQC95;h\'zaWq[TqbwX1&eXg%sHGkjY^QYNZ_QWF8$FuKO/6_d_1kVL[guAxeo)knkS=qNl^rIRB5#G&#v\\J=0qx0s&T\\TnVC.UJQ;pPv2)r6KZg{Z1\"OQ,#aPMnjLv<]I7mO\"QYN[dg]ysYC\"tS%S[Qd-HfO:oMnkQ1=TrkFWcq8V2/7ctG@J7oWF8\">Vx\'Fp/.9oS/-2Q,ySlO&fZnDB_?X(O@3u*`1jO,)(*:*]$1gBL:y(Gp,wIAI0KorsnP)lu/xArFBVmKgM,/GYm@3w0yF*8y-d>DwW-r(^/gDZy\"*L+*0P+yUw%AY%Cf]%6\"Bjt38\\NR6R!Co3FJ%o2@.^zqMfBRZO[aYz%:7D4qlMt/\"Wwy\".`&3jIke=(Go(g]\"$-TJRD;<[:E2b(4kN{OS6Pt#AaOCDks(^/e<7>n@-Ydkr\"Bir+ox6:]PYQh?=TpasE;8D0`yh{[50/;z\'DaGwQg<0v3/2KhP6ZKF]+P.fBR[Trh8rcwU%L7j>0olVGAONw;V(YnEK+.DPI]{yt\\P[Z7>oC:8IL\'o,$gja*FbCbL3XG:+eGp(ha0a(7x,a0c-Jt39cp16]X%GwQiDT]X&H!aTal%`AaM<&@UmMr$J3YO_sMa(9+dFhc<;SrlLoqpbzdh`-R@)Ho$VlCFtD0_sOjQ5Nnf8z2zCsGD^3x56OkXV+fO7aip\"Ex\\Bm-.>1t(Wg(%zl1FN9oNrz:E0[aWr`hkhIoz?`NFSPw56PplQ05WB!sU-u8Og?@d^0iM\'n&cL2P$Wsf\'&\'1^n6XByk/>/iP3IZk3T4C91*zW&M9oQ)jhQ;l?-^zsU.#]8;]KAAcWh.@;G6ri;%@UpZRjHa80&f\\z{\"(BTd\"j&m$[,_(<8F:-ortrd\"l+(\'\'0Z[=Z67R!Bit6C2iJnsy0t)_/b-N+%rB-R@*K#aK6d#qC7&SXB\"wclv6?vbhfM/;z)K&p4HSIVW48[I=4+u?m6[Qax^ONw;V(Zvj6`l\'ku0%dU^Z.jY`Z&B^;F2c\'0ZZ;Ttwy#0f@EzaZ{*N6ZJCRT5EAR\\]@bUcuIGh]xj2Nu/{OS9[H4e.Lv<]I6jBFvMWQqlN#UnP\'eTT/\'o,#cXmEL1Jb9.s/%bN@4\"G)0T>u_\\3&\\*RFJ#bUbn-)&\"p?\'@OP)q/,/FV`dZt`f_1jR:fyUy0omZY406ZNWOb*?@d_3v+b;:PiEXmEJ(\"k(uJIq(dL.=-b5v&GuG=;MXU\'Xk=\'Ejmg@F$rFATe(,DVdz^H-BH\'&&+CUf)/N%cOC?R`q?yu__?Z/prqbwW.t22A3u\'RQ$R[W\'PDEm#R_k$^=Rd,@Biq%UcuJL\"[0t+gSIRFFkoqnVB(;42?\'@PWF8&OB;C\"v\\LFWg+5d)1\\bZ#5&Vg.CI+5e.HdEf\\xqPu-nof6nU>qJX`[,`,O2EGuE1^qD9/\"Vq_gljR;l=$7,nt%I)*8z2v.t1+$m*wNXRstnO!LETW?n8bl$[-c9,liM&kt0&hgN3LgKzRe.Kpy;LS>ucn(knlWN^tU+i^\"\"!!!\"$/^rMd8%L5]_F$rGFjgM)z^I.H`3u$BbRP\"J8sh6g4`q?!#)EbGwO`w\\G0R8W9PlTA&5u#=NQ2?,X_Wsh2T9]NN{NMu5=qMgJt8Ne7x*Xcm\"OS4DcaA\\3#NH\\yvexTtvtg+5g6lKmiM$_Cinqqg3_m0;xwnIYh))/Q4HP>$5z:F4lR4GN3Q\'cK.<\'J%p7U0+&uM^qFDaCdYmDFo*u?nDzhzRh;)TV5A+O3LhM*%rC3mZZ8E3lS8ZCygt>k.8nP\"PVA\"zqNma#zn>&>I9z.gGh_\':1%bK/CI*,ACl#Xz+UU0(r7Rz=Tri=-eD].d:.r(]+TNjQ8[MN$\\1t\'U_`H&{k,/CJ,7oWE4kO)q3@*K#`I,:#:?j\'tD2hDT^^Bgjc6w(PEGt=j*\'&\'1^p?$2lVJO2GRKa,KzSh;)SNng?>X+`0c1^l0?1ohADsD5u\"6-yNS9_[0omYU#Bgi]u]OUA\'6x.k`{rMe;2*vE1_sL^wes8T\'Zyxtaipx2&aCe[xrWW%I&vV(Zvj5^bWk<%>MKnrrmLpy529h/EQMk\\i$hmne4i@>Usj@9>j(xTy0ptw$;BvY9LWU)b>K@>W%Fs?u]OTW#8=h$hkf@I3]da@Ti<*XclzG.JnqrmNw;Sw\'N:r^_DsC/\\hxLLwAuT#G\'%$#!xj/BCdYpOt)\\\"+O4S+q,wC\'/XSy3&`?TkGZrV6HJyOXOe5nVE5soZRjF\\&:8GAOLorrh8tmJc>Dx`Tf,;*Zm=%<@n5QzAjzOVF:.q\"Ey`QUn9i1Lnof4d,CMA9<`VmH\\zyubhi[i&sC0]n:j4[V#=P\\bYws]Y*ZoIYg{]@cZxvi/CI(%yfq-#aNA98L\\k0A:=b_;C#yl4R)ls#FxY1$\\0qtx%?PWG?DxZ9KM)vIGeQD>LG^)JyQazi$feK&r=pHRGJ$ip#K7nP$Xx{)Ht=h\"`L9pYLP/7bsB*GjhN/8lDH\"da=H4g5kESV:V.u5?zvf\"d_4{?aPKgL(xUz613J_(=@eeO9l?1rv%En*s9U+h[k4WAwbbL6`l%dV_^>TqatKR?$0e9)Yl?.c3mWKQ7[NR4IVX9PjKr,p%Vi7kCH#j!Up\\Z54D;=]E\"on=!(EeUZF.N%dU]W!3{DwW/xAqB0c/TD7&PKeAR[V#?X&J(&$\"wep/+,:\"4\"I3ZV%K3XG=9E1c*;0v46S&WlDGuE5pd)4g7rf,?=Qe0S.b4pd,AEtHFfUW;W/{NO(kqy3*s6JTJVW34Lc5sq`m,\'y`Tap9]Q_j\"Y)SNl^sOiM$`G\"glnhCPLjX\\H2\\_K;%BaI*/Mw?i\"[2#R]aPNu1(n%]1s\"=Qb%\"wchc=An5Pw2*vD.S=sYC\"sOl\\fmw43D=G.Jnsy/l_yi&o2?+RFFjmg@Cn1j*\'$yh$ebhyOYU%L8mH\\wi.@89S{>V{4)g\\t\\OXMZ_Tf,=4*p\'cJ*+7tmLnm[aZ!+UPqrjA@]:D*AK:xz&=F,BK4_iv?l1B>LJkd7#AaM>.e@K;%AZ-c8+hVX9Of:*^*K\"\\8;`Xy\'DdTT/)wO`xceUX?k,.?76E?J:$=KEXoNqtx&CaFvMWQph=2#S^edJ#d\\&;=\\Ahr,u:W1*xO[_ONx@j!Vvxz&:8JM)wN]k,+5e-DQOw9IGh\\rR#NEPGRGP=z\")EbFs>qK[m8h.AChlhKxF/Q4Ka/XY9JL$e[yxrV8Nb,Js0*{`NDH$n0;vl?1okN#Z*UY@n7[LMzLHcAWrcvRn\\aWmGWcm$Y$=H8x(K-7kAA^>W#=LKs0(r:_Xx$833HQD@R`n0;uk;x{\'ATe)2[^K:!1ppc%{pB7(_2pmT;g\"bUais-v=caA]:D*=;NZ^K>3#PT7NiLzOU@!xm?,Ydo(jiSE?LCI+5h9y)O:oLiVQrtp[Sqd%!qGJ\"`H*0R6R$NFSQz@fi`*EbDe[xqT-yNT>rS%Vg.CI((-HgW\\NN\"R`m.2Nu/zMIiZg\"`J3ZSqh9wz&?OP+zW$A_BggSHP`QS28bl\"RasHEcHyW(TZH<2$Y\"3x7\",UOl[`Td{ejiQ8afa6&RV=fs7L\\pEATi:z,Ydq15W>l1EL/DH#l&jqz;NWNb*>:F4lR3EBZ&En$Y!/e>@c\\)IzVy,_)BVi:wwtctD2f:)Yk6an/3Q(fZnA7/%bOCCbM9oT2:i/CH$o5Q!F\'(3e/R7U.\"Y(QFL,3ZRnZX.s)cDeV_]89W34GL.;#6)fUS&WoNs(Zvh/DK1Mt.t4j)z_K9uqZP^m/:r\\W%H\"glmb(7x,a2kQ3D@R_k$`Er;fxNZ]G-BJ/Ib931:nJb8+gTMc6uw\"1ne4h<.lc1_rHJyP_p_K;$>MLt0)tB%-R>xnB:=_PQ+wKHgW]Q[X.s)aK@?\\:D,KxF1YX2+xNWOc.R8]Sf2ZV$FwQkP+!^Co4IUU,r-xF1[aVlBBdXl=\'Eg`2kS>sW;Y6D{k*&ycbFr7Pruy(J#d^0iM$`Do1;pR(fXdr9[G1ZW-ot{5.#_Dn-)%vX6=m:qU5FBWr^bVdwQjLu7E9/w?j$dXlA7/&jr(^0jP1=%+TQu\'SR)kk[emx:N^o?&8,mpmT?wetB%,N--<*V[I;+b6#EvQmXPe7tsf*3_m/8kA;D*;1zH2ZW)^+N3Mlc-Jr-xF/TA*GjfHlrz8;a\\.d;417bn*wLQ5NkYZ>aTcvOb)9\'ST.$e](ATf+;*Xg&vT\"?X)Xi-:z*SK]sU.\"Y%Elw;Su{2u+dC[-_\':0zK@=Rg7re)0WKQ;mA5%T`jt4_MA=MQ07`hov+cAS`l(o,#dZxrZJDUakyE)5o]aTam*xPb%$$)?Ezfp(dO?*P=!&:6?vbild6trd$vX44JYgzX(SR%YvqW?pD;=\\@dbC`BcU__Dn.-9r`ju7GCZ#4z;O`w\\F*:\'O?0jTE=An3FL/A>P\\`PNx>aXr]Z.nlWN_wbaFtE3hCNCCfa90%bN<\"-]tV34K`+Jv?o>z{#+K$cWf\'\"o:i1KhSHO4S.%fb?LCL5`n/3P#Saq[:JJp&[\'CaGwRlP,$ir(bC`Be])Hr4B2m[`Uf,<,b6z8>k0B@X%B`Ckw<[?bZy{&8.xD%\'0\\hvC&-M%dVco17cq:_[.iUKVRx1zG-EVdyZ9D2d.N\'m$Y\"3x7>oD=D#tS!AgliQ8]TjEQKb3n_m2CAZ,_)D\\*SLc4nZW*_.\\n=\")FjiSFD^85@%1gBNCCgc@Q[W*]&8+gRFGr3?&;7D3lVF<7@xi*)0Q3D@Sd$vZ?gp&Z\"-]sT*je>?bYtg)-DSYI?Ae`81*z\\>Y.pty,^#)AQVA$&4n]flojKt23HUU.yLHdHuC*?Cp:fyW&L6e$uT%OGV_\\4)ieAOP%[*UV4:euE3jIi[j0A;IDVg,9{0nhBL:y%95;h\'yaWpV>j+*2YSqh:$>P\\aVh4^efQB7,nt%H\'!k){aRXIAI/Ha945Le==X,gO7^\\513LjVPm^j\'p3A3v*\\yt]Up]`PLk^sRz>[67OjQ7X@qFDbHz^Cr?yrR#MEM:th0Ib<@j!Wy+Xclx@k(r8V33HSK^xl6^aNDH!bVg+7re\'\'-Jp%Vi7j=-b3n^i!Vx#70(s;dm{I7rd\"k(tC-R>xnBj(xW(YnEK**3_l.1Nu0&eWcp03P!J9wxz&<=^J5e*8w\"3v-j_yn>\'@R_it5>wh*-AEr=m>&>H3_l*$m--;\"3x8B%.UL[gvG:*^)D_9;X44GM0A=LIhYdo*q-zSjDQNpro[W(TYG5o[Y0w=^I3[Z53?(BXx\"-\\pFFkqw,d?J;\'L0EN;wtajv8HHnzBp8^Y\'I&vStw!/gGeQFGq/.5`m*{]>Z1zI5g4d*:\'M6cvQjMyG3ayfp(g\\vfz[8@wep/-2Q,zX&H$n/5][53=yvi0FTW>gu=gu>m6YF3f4f2[^G+8x(M2Mprqf,@?Z3&aCdVbn+!]?[7\\\\=Uy.jXZ<[;Ob%&0Z_PR18csA$*CYy$5#H)0T@zu]UmP\'g\\zvg&uOf=65HN4Q#RYO]i#^@`H*3]egXabM:tg+4d(0VIIs5C5{=RiBFxV%J,:#97JP7]UtoS14S-zTnWG<8@zpJXa`AaK4ZSnZW*a90%aGyZ7:JJq*mrx/oph;)V_\\4)ha2hDWk<&CbL6cwT{:F5o_k&jr\'XpR)jhO2HVZE,CPNs(Ztcq7R{@ecDf[t`bN@6.{SjAAcVbo/1FRKb3lR7U/#_?Z0u/xBtPoe/P-+-BFwTy/ophu`aK1NzG/O(m#Tg0O&dTV8OiJr+p\']/gFbEilf@F$sL]pEB[-`,M*$m.1JeFifFh_\'<:O`xbbH#jzLKow/s(^0iN+\'y^J8rbuOd3f7usd#m.4WA!u[I<0v32={\'?MGZucp18g)+:(RNqroZUz2\"J:z+VZE)6rh:z.c6z63DzhwG7x(N7e\"ixG7trbsE7#EsD2f9#>Sh=1u-pzJ=0s&RS.\'sA#&6y2\"K>4)h_)D\\-_%-TGGls#Fz_MCI&ya[&AWwwuh.BDl\"Sc\"n5S*mt\'U`ghURx52=wl?0jRzvg%sF>DwZ;SrlLot#@[4)lr\"Bgi[k0CCe[yxoIYh&vPiHeL+/GZs^Y)SR$RXG9)[xrX>gu?pC946T*jd;7>oB7-s.{TkG[wnDB_AaM=)PA1m`vY:Rn^k)xRmUA#(<:MWQqkIfO6YG9&K0Ic?K>4)kk]m6\\SkJhUQw.orrh9vuj:xyz\"*JwI>=V\":@qGJyRiABe^.\\oB6%SYKKv<^NKj]qJYer4B3qnYRnYSsp[V%FxTttnQ\'bFs?tW8LY\\F)5kIdDcK0EPGSLb1e3f4d)7uwwr[Qc&*?@d^1m^m2FM6][79X8IIq*lrx-iTIRA0f@DvSuy,^#)ANH^+M,-?612EGt@yk3Q\'bGuD/Y[Al*zZ53>$2n^n7\\Rd)6p_j!UpZRjG`3sw%CcODGuF8%J/GXg(\'*:+c?H2YTw\'J*.EVdxV#AcTZKGa:9MZbaEm%`@Y(QHRIW]OR4GJ\"_FxZ8D2e6p_iwBw`Y$98M^sOlZ^J:$>MN$\\0qw*Yl:q[P^j&js-u8M\\i&o2@-[m9i1P)o\'aDgb<=]G)1[^K<*Xet@xg\"`MALIgTLb.SA+N.6dzefW`]:AuY;V&PKd?G*8z/jXX6%7)a;QawZ>_L@;D\'1_rIO5U6GGkniGcDdSPy=Y1#Sd&#v^Tf/IhX^Ti=.gIs6IM-2T8V/#\\2yAixE-HgXadRQ{F%{n:j7g.DPJb5v(PC@UnR.)#k%gc@PVB(:-pw.mjN\'kv6>uadVcp4GK(xZ7(Gq0/<$834JZl7dxY54GJ\"`K4_iu8Nc/VKTGGlqv\'OA6,p$RYMR9af`3rtpZO]hu>j(xW*^,SEAUkDL5^aRT27__BghZh%m*yW$BdZt`dYqT26U25R\'^2v,gO8aipw2%^6,u=dhc90!PXLTE;9HD\\+SMc5uw#4z>Y.ot{4)h^$-VOjP2A6(`82/3T4@,UMd8%K4ZSmU?t[KCL9q]Z1!K?:D)9*a5x1\"PT9\\I:&Hz\\=Uy0omYU$FwQkO\'iiWV/#[,b3oc&);2%^5,s39blyCxb_;C$\"xj-7i;#86B.[guAw`\\.iR=t]Wx$:=^NH_/^u[H6p^efQA3w.opkLr&Vi5_gmrw\'K-;%>NO\'ij]pC8/!Sg4bycaA[.gL\'q6Pt\"1t)_0e9(V`e^*K#`K4\\\\J>63:k:ulB=I>8=i%l&dU[OYStuulBB`FyZ7?sS\'[#1lYY8F<9F7\"@[5/.5an/3P\"LBFvKQ9adYpNon_o:g%sF>DwX46OoiF]*L)$sGBWr^^Bhow1$Y\"3w2)myBo9cp16[Qaxa\\.d=>^H-CL:umFQFJ\'y^I3^gnv1$Y%?PXN^qFBY{,Zh#fdJ$jv:RrmS8U.zP[\\?bUe#l-/DI))0S=oDB[-b6!=P^n4Ou-nnb\'1[b_98M\\l3LiVPog8w#5%RV=gvG:+`2lXSuz.d;56Prv#9:W-r)eM4S00>*SMgFa@UpYLP3GOeh\\wg\"d]+SJVU.!Sg3]dbDeXg)(-Jp!DvStw\"3v,fK$hnruy(K(y^K9x#5&Ubo3EDcM9mI^&7%NCBaJ/GYnFN7csB)?F&%\'4n[]Ezfmu-py:G<67PplQ04U6GHq/)!d_5$OI_+L)y\\@bXoOx=Y2)p+u?o=wmA70+&tJN/9mH\\yqS(aAZ(N9lApHQA2qo^iu<^OP%_=KF\\\'@R_jyH9!5)jfD\\,Yckqy4-$ggRC947U1/6bsD5v$?Ww\"3u\'SV9U(\\$4w.oqlNzLFWg((.Kt22C?PYQh@Cm)r7Qv+c?K@?X\'L3S01FM7dy^H,>63>!&90$[-b3lVJM\'p4EC]3!G,?I7rf-BFwU!:E.Q8\\OXPe4iDOEJ*,>5/+*.HcDbI\'\"k)xUx,_+L%iow.noe0S:dq3?\'@QZUy.gK#^@_EwSu\"5+o#PP%\\/hM\'q6Oog;+^&8+gUS%RWAzqJYfuE0[b]/iO.4[SlO&bK1Nw8G@H/MxBw\\E$ygyRg7sj@;D+BMBA`EuJL#^>Vy*VX>fp(ePC;>c_:;[@jzNT>qMfCUg/H_.]rNgGfSLa+JwD\'1`yi$e`7*fRHQ@-[j-7i8q\\Z3*s5GFhb7(Ys^Z0u/xBvW/\"WvulCEn(jk_yi*),@Bhmm^pA,TISHM-5_hp\"H,<.iVRw/qy67OiM%eZs]UtmLle9&K0JeFh`0b+BOJeEdQGP>&qNjTD91&f\\zxqR$QUY-jZchdAQVB(8(YqT0-.>4\'_71-/B@[0r$H)/N#Wwy$7*dJ$is,t4!&;8G?E\"o*SLc4n]c^1ne5jG^-WX7F>Am,+0P+ySnVE7!;I>=TsoVA{tY>dh_)BUe).Lt5`PR-\"^BffP=!\'?K>2\"NJfM/:wtcs@ypJZk5YIBOH[t]TlLr&Ubq:aaGy[8B&3iEYqV:Z=[>]Cq>wi,5c{izTnWF8$EuHCUf)0S;fwMVM[gvE0YZwh*.Hb?KACiq#H+9y(K*)0T>t\\MN\"Tj@`PMpw,eEaDjoqo[X.r$M>0ojJlkWSy2%Z%@Th8qap8YC#xgyRjG^+RD=D#uY\"*Is5E@NMv7C.WT&RVzxrV5C3roZV$Eq6Om_rGGn#S^aRU8Sz=Vy.fGic:0!OT:^Vq^cYs`gfN3P#OO\"NMw<\\@gozBn09j<#7.xF/S>sYBzk.:wsakyF+@BkzMMzJ>9@rMe=:KM\'o-%kyH8vy&?MHa:6?zubij^u\\J?bZ!+RFDbGxTv$>P[Z69ZD\"qHM/=\'Df^(?J:$>P\\`S[SlO&dSPw6:`^:@pB2n`tRtz2w42=z$2nb\"rMc2d-Ks1,,4^fi^\"\"%2hCPKfKzUslGXj4WD/WQoaxa]3{Cq?{xoGP@-\\qIVU.xG4iCK4\\[:G<3-&p6Rz=X,iVU,nv.ou&L6bsD4pg6mR05U6GIu?qHP;nI\\vco+vC)=pFIxP_o:h+4_m-.=-c8\'Vbm\'jmf?Bl\'ks*gVV0)t?tV37YC$!uZD%%\'6x.jWV/!RarE<G0S;fxP`vZ?egZm;ug((.M$]8;\\G,@AcZxrZKF_1m_tPod/O)t@v_Y&Df`2lVLVRw,dATf-@@_FxZ9F7#BfdDcPCAY\'K+.DQNr{:G7w\'L1Lk]pEAUj>1t)[{$/`%,L#^=Qaxb_m8bq6Rz@c[$4y9D-N)vKL#^=NVIK{VuumFRKa0a$#\"ztZH5mQ/2KgN/:sdxY2)q14Nr\">X&I\'\"oRg5jESS-yMQ08g+5i<*Yi+2WHBQS3@*M.9oS3;pOv1$[-a1c.O.1H\\wk8h4]aSZPb#uZ@m2DDf^)EeTT/&kv9MZccM8h0Lq\"Cn1;r[Rh;+\\vewN]hxKJnrttoS/-4[W\'OB>MMxCzh![4,yRf1YV\'U]W\"6/\'p18dwSpf1T?xmc`=G1\\b\\*P>\'?NMu6?xnB821?-\\qK_#\'7%NA86C1g@DtJM*%rB,O4Ml^sOjO/7ctGAPQ,zTp]bYtdwTy/prqc!k(uF;2(lt-p{Aiv;Y6;fvH>>Y1#R^fgW\\KEU^[4,wI>=TrjBDn,\"_G$sKVQt#=NT>rR%S[RkJkc2c.LzMN%aEr:^RbwZl2Jb7$J/FV`cU_`H\'$xdlu/zLHa:6A)BR[Uv#84=t\\NS9[J?elr!=Qe/N&e[t`dXj7i6i<(L1GXi.?4&[(K\'vN`zo@,TMd6tusbsA\'8(Zt`bPIZnC@RbyaXtg+4d\'+AK6i;$>LHdGq.(vMXX5:``Cjt1,\'y^I4bzgs4?$0b*AL?5,u=dg^$-THM,0JfM-5`m,(\"l+(%yenzDydg[sYBw^R_k#\\5+s6E=BrD5y64D931:oOt,i]u\\LFXnHUX<\\F(-Jq%T_ggWZCxcdO@3v/r\'[z%5y8dh^$,O2FL1KiUOkUGD\\+VX:Sv\'M7cxX/x@n3LeBTd#qC3od-Ij`(==Z3-\'tF:/w>c_71-0EM9nMopf6nV@yl6_e^-Zg{Z2&_MMyG1ZY6;er4D:7C/[gt:Y;Ty1x=[;Qg;+a3ob\"rMb-O1?-\\rOoh??[7:ZBrHIt:Y9MY[@k&ku48[I<1zE&(6uvwtcr=nA4y69X7D6{;H??^EwSuz1pqh=/niIi^ypHRFI{[50/<#2sz2!H.JljS>vf#hq&Z\".a)=;N\\gv@tS%PLld6uuq\\Y+_-VQt{4(dN9j;\"2sy/lb*?Cq=rU0+$l&geFieBVkA>SjDNA:?izUuse\'&)9\'RPx7B\'7#CkzMKov)[wmA5$POyCx_QYMWQpe1ZW)])Fhb5w-iUPm_p>yvg\'zfms#EvPe6qbyb^6+p$S\\X+`/_wchdC\\-a.WSz8=i)\"k&inplQ05XC&-O-0I_-UPn_sMa);402I^&5x1w8G?F$w\\F*:(UYB{pD;>aVkA:@o>\"\'=An5Pw3..7kBA_Er:G:,fJ!Z.k_zoC948ZF-Ks.\"X\"722B;@n7[LLw@n7[NS;h(#qB/^tU,p%T_ffN7_bQPzF&$###%/]m5W?m5T0-1NyBrE=@j!Vvxy!(C]4&[\'C`A_Dq8ZBvX7E8&RR)kl^sPqpbw[>^J5f-CL7i:z,Zg#ea=F.Ks0(r7Qt!76IP;oKd;6>pGK*\'#w^PWIE_4\"Ezb\\+TPqsp]aRVE$yh{X)V__@^Ae^._zrNl]k)\"fib1c,E\\&$5{=V#?X\'M9mFO@1ma!rL`\'7#BgfO7^^AcXmFN;tez`RV?tU,q\'_4#I2VE4n\\_LA=MP-*,;*Yi0EPEJ(\"m/9mH[t_]:B#!vadWco//@5*kjUJQ?&<3%Yws^^BghW[F-Jns\">Rh;*[rU0*!bWlDHz\\=V!87KYa`BaL7g0O%_?UqasF@J7mP(knkS:dr6Me=NO*uB##%/Y]LCK4YNZ]F\')8{5.#`I-=/ngAI.CL7g.FWe!c^1nc,GcC_>TmQ,$iox54B5#H*3`rD9-s,ox7>qL`(9+eJ\"^Cm*yUx+\\sZE)8#?X%ChgPoD=D\"tQu&M;xvmB?Se+<0u1)tA{sU/#[0ry4-\"];JGbAX\"2sz5,xLKr)dJ%l(n&aCfb:6?wj/@:@pA0e;1#Scyb[\'Gp/-2P)mw9HCXr^aM?4\'].d:-lhHjfDYxwnI[pLd:.s,p{Bl&josw$>OVD1d/TB.XZ>c_97F?I5e-DT\\Uvy$81*yV\";H9#@Y*Yl9oOy@gp&\\)L,1R05U6GHs7KX\\G1XOd2b#xcga4stram,\'vQlUD2g>I5f3`p?_L?3\"L@;F1[`R\\X+b;;Sv#99T#Dp7U0)xRlP+zW%Fs?sV21?+VW8IJvD\'3f9\"9=elt+hYdo(jk^sOnb&*@H-AEtHCVj;!/d:-osv\"5(dJ%n09mGV\\OUC.UM_xh\"bRV=i%m)s:]LFWg*1S:beWeyW(Wf#k%cPI]yrS*ic7\"AbU^^AfdGq/-1NyD#w`Xy%:9Pg@Cn-)(*:*]$.X\\H4d+=Vz2x;QkN%bM7e\'&*>;NXSw+]$0c0\\ddPB;>dgZl:nMniJq%Vh0Ls)bBZ(L.=,]xn@/f@H-DQLiVPlYX1$]4(fUU23IYer7Rw0x>bXuj7g2YPd.N(n(lt+iZi)&!m4R)id=@eeM5WB#$)ANFU\\Rg6kFXj6cxZ:LQ8^Y(QHVW9Nb,HkiO1A70\'n(koob%%(8$G{c],ZfxNZ\\Dx^OLqz:IDWnKeCXvr\\W{2x8E6y1w7@!xl;tdxUz75C5y52:k:r_d]\'BXwxxug(\'+@Cn-,4^gmpn]c`97GCZ%>LEWf&zdg[rU36S*lme5lP,\"bVcuKR>yt^Wx&AXy\'Gq16W@rJTNf?ExY7@xl8h/ETYE-Kt38_]8:X7D2iIkhKv?m5T0.6ao3C;@l,,8tmJdAPR.*&{k*$o5Qz>^F#n6U4>wj4WC(:0x@k\'p19i1O\"OS6L`&0`yj-3ZSo]dbCcQKb6y4*o$Ui9uoR,yQd+<2$Yy$5$NEO@2sy/la\'1_rIP8dwQkM{PVE7!:E-N\'n\'hc;9JKzRc&);-lgBOIa5z7;`[+[oDCaEr;fuE0Z_QU>oD?LDNA;AsNgDYte!eeP?*O9j6d{fo{E#rFD`?Re.HdEf\\xoHVYBvX47V6B0b+F_4y;MXSu$A_Ciou&K3U*Q@/d5soYO`xdhd>E%\"tS#J3[W)Xl;y{&:45OohAH\'\'+CPMr{=SlP*vH>9AzoA0hGcGt@va_?UtnP&bGvKN*yY0wys[MO)q3@,UNf>=W(SV7JTL^wbf^\'<;Rpb\"o>ywj5^aPMprrf/Ls.yKCOFPEGq15XAv_UlH[uexSpc&%(6w%DhiZgzX*[wj2P%[+Xdp//;z&@PUA\"zrQx6;bdU\\Q^l)yW)Xj3U,XaaEr&=CxaZ$95=sX=aYxyz$0e:-j^uZAo=s\\Si=0ry5/,.BDkxBw[Ap;m@0jSA,R>\"(APT:]NP)p-#cWh,9wz)M0B=LIhYesVw#95A)BUh2XJL!UoXJHia.WU&T[RiBG\"iyMMyF,BNDK-;%CbK2Q+wG8z2!H.G`5{?\\vevLP4J[oEEjnlYY42>$4w-j\\m7_cXj8nNt-p!Cp8[J@Ae`6\'Ys__G\"ixH;-hQ=xpLfDZ\".`\'4oavX59^VunOw9JL\"Z-gL\'q7U/%eZqR%VmHYj5[UuupV60.6ap7U1-/CFuHCT`ir)dM1GWblxBrF?I7qbsF?I2WJIr.$bQKc;45K]tY?izUre+8utlB>P\\bZ#1na{n;pQ$S_hov.r(],X_Y%@WvvpT4B0d6v\"4\"I0O&eU[NR4HREC^;D&.P3IW\\OS7S&Vi6f.G\\{%7&T]X(ROt\'SU5C3ro[Z69[G0VGANI`1hGeM2KgKzUrf/Mv;U$H((/S(Eg^\'=An3GQEEf^%6\"@`J0Nx@l.5]\\9E1a#xgxMS=qPv.q!Ahpz@ea>I:%FtB(:/v7D3n_qA+N.4\\[9D.Q9``H$q@%2hEZyyuez_I0Mv8HFdL2MoqnXMWQpg9y(K+/JgRB5\"Bl&f]#.Y_WrcuKP7[MQ1:qV9S\"Co09lCDgeHq12FN9k?2t\'V`e`4u&N;y#/d7x,b7\'T[NVKQ:h*-BJ2R04S.%ggSHO7__EvOb\'2d-IlkZ_R^bT^`L;z)L*)/O)r8S$NFSS(aA[0psslH[uduG<55IQC7,ov.r$M@85B0a\'4nZX0\"QZRn\\`OLlb,KxI=5/.7i7mKkb,Jq+nv/u48\\MN$]738af`4w-ka\'2g>:E3f6p^gox56La+GfTQv/u1+{^Dq=oEGq01DGtB(;2)p+vE-LxH9\"8:V*fO9i3U;dkr$J3[W(TV;Z?dbB_AaL8oS2;pOrz500@4\"H/IdGn{G.G`7,nv,iZgwKJr+q(dK-7mKk_yl8ez`QS02Ja3mXQn]gp$S\\W\'PEHzY.oqo\\`OIa6#G\"j#^?Z1w:Pf8y,`,Q;k7h1O\'eWdq5K]u[G1[\\Bn0:pU9T&T]X)U[LKr+mrx.iSB2oc\'-Kv?l/;xxs^\\9@uX:T{9A{rPt#@[2\"LABdXmEJ($sM_{sS\'Zz$5y8?qL^{t[H6rf-BH\'$v[E%$$&1a%(7\"?Z-gO3Mk[ft9W31\\?_G\'&\'0Z_PT9X9MZb_;C%&-P4Kc7$FvPd1]hu>h![50/9pWAxh&q:adTX?n9f&wX305XC(7y/mg?@aPKgM-1KmiJp#L=-c7%K4[V$Cjt/%cROs&PKeE`2y=Z7=m:nHZk7cvQkQ2?*P;qT0/7g/JiZgzY,gM-1Mt,p\"G\'*9%Erl2I\\ubkt.v=aXsctHCXuj:uk?2v/u5;g\"cYs^]:F3h>77OkUGCYz)J{Z1x>aVj<&A[.hM)yY3+yP_rHK#aK6f-CN@4%TcuM[djk[gvE1\\fp)kmc0XU$I.ABe])Fkoph=1x=\\=Y.pv(ST/\'q6Mc4mVD5ssj?4(eRIW^Wvuj9q]\\8?tU,ox8C*CUf,;)TT,t6GFg[tZH:&I%sE:2-)#o8``Gy\\AgkjTE;7B)?F%zl4Px;Pe4g7tmKka&1`xdmw7@#\'8*dFigO2HV\\NP,&tHDZ#3w/s([#0f@F\"k(vMYZ?`MCFr:a_=OYV(YnGRJYesQ^hr-zP^hs1/7g/IeGo%[(J#fgSK\\oC948]Q`o7X>gvC%*BS[Vz0qv%Em%_pGO7cr=l7dy\\@ecEheGmw7@ynA4zY-iYbbI%rC1c/VM[emv2*vH=8B%-Q7ZH8x*UW8Nb+E^1plR4ISL`&4n^izP\\aTbtHFfUV4=sW;Z>^H/Lt1+\"d^/d9*^)EdO=$4y9B&2f8{5*kjVOiLwC#wa^9=dieCWq\\Y+b92*ySpasGCZ%=F.Ks.\"Z*ZmA3w2)mv46Prv$>OUD1b(6v!1rx-eEbDgeGls&RQ\'cJ(%yceTR\'].b3iFZyvk7f+7q`m,(\"l/8j=)P?,VU.wAsL]rPpmWKR>wl9nKeEa@Wy)M1HZpNomVG@K:\"6,s23GQDB[+Yh\'xZ8C,L$dXi2S18e{aSZPaxaZ\'Fp-%m\'jopjFZug\'#rGGknkR9acSR)ia1f;.oro]da=F,DSYH;1zH2]efVYBuV/!Sd(0UC2gAF!hv?n:i1Lpu%G{`NEO?0l\\fp\'`=I:(QKb2iHeN6ZNXPf<4,xMP07ctGBRXIDXr\\TnWG?DuM^rNf>>\\=W$Dku5>sW;[?c^0iN*z\\%:5:et?qK^wfvIDVi7i;#6+ox9F9(YpMme5p`p:g$n1xoIW_Y$n=\")EfYi.=-c9+fO9i0Kle;2\'dQIYg#feN7am\'jmf?Bjw@p?#+M*$n4K`)?G,ADp4IVY?hxJBL:y$820:r\\Uvwxvl>-_%/\\h\"\\:D.R=rU38^Y&I&wX/yH3aycdQFI\"`K7j>2x8D1a\"uX:QmYW+eK$iq$QQ(g\\xl:r]X&L3T7OlXRrqbwV*b;=`RYNYW-ow0yApoC95>sYAuX5:es;bfZqPw303P#PQ)o(ha1c0XSy2!K>600=%;=_QXG;2)o&]2t&M<$:9Of;.mjM%dVahke<7?rPqrmO{KADo..;z)N5ZKImpo^hr0,,4bwW-q&XoNr\"@aPKhR>\"\'<X+`2m]hvAuX8GAOOzG,BI-AAbTYJCRS16XBzn={&:59_X!2w1$[*TQw418csB\'7$I-=/la&/XT!>X)YnEHyW$Er;bg`1f<52;qS,u>hyQax`Wr_gi\\pGM/?1s#Ckw?i!X$>OVF:0\"Q[[9E4o`q?#+KzSjCJ.BEs@\"zt[I:)Wcn(lw7B*CWnLla&/VNa&1`xbbK-8sf+6lLpx2$Z$;@n7ZI?@cXpQ%WqZP_rGHo$Te(+>SjERR\'cH{^Co3DBZ)TPv-oqqd\'(5pby`WpVQauSy4,xJF_2pkMxBsMa(9(Xi1Mu0%dU[LIja-P3Ka0^tS\"Bl(o)o(fYg%sD3oc%$%,Js1/6bq=oGP=#1hHjc6z4,vB\"u\\I;,b7([{%7)^0e>>Y2$Z(L0DK.=-eBRZPazj+*2[[;NZ^NIb9/\"Vsg/G^+P*N2KgN/;y#0gBNDK0FUZH9&L3S3>{#.Zeo%Z%>KDRQ$Td{flon^j#_Dm\'igO7[Q`uRt{4(dL.=*VX>gq.%fcAWr`hnrv!2v1#Wsg.FYnGQEDdSQ\"I1UC+Jt8PlWOf:,c?I4b{k*#l,\'{gp\'a@VtnMqx1zH0P-)%yen\"LBEr;chfIwH<3+uB{sS#K9tj<%AZ)QDB[.hN.4[SnWIE`:<^L@=OYTz64@*IwH;-j^tV34IW^TkGXk9nKeFha1gAH,=0t)`7*hYfuE2e5kHc?MIfM/<&C`Cjq%PMqx2#QYO`xa[)RGM1HYj1KhQ;pQzDvSv%Dku49_\\2zBn2D@WuqZLP1?-]sT,q\'^2t%K1NzF*7w%@Wur`is0\'lx>dcHzY.oqnWJJu;\\DzgtejgJv@rL]qJYdn$Z$96D7\'Ve#k&iorqe+9$CgeGp*ny>^F$w\\F)3f4c(/S>vds?rOojKox3*s6HM+,;&I\"d`7/#[.gL\'r;fxNZ\\CvSy2$XuoNt+fN2Lk\\k/<$7.xG5kIdC_=KF\\&<=_L?75D:6LFXmC@Wy&B_>P^k\'q7R{@aQP{I4c#rIP8dtD0_tRx4.(y\\@ecFlw;Tz4)mt)](Fhc;5;clx?eh]zwg\"d]*Q?&=BtOg?BjwAtRu%Eq5HQC:6A&5x/nkQ3GL.;$96A+M*\"goy=Z4.+-=.k\\k-3WC,LzRc&&+CVi4^fgX_Z(L1KhRA-XZ@l.3WB$&1d0VLXZ>_NJc?J<+]zveuD/Z]I6lMr&Wi5bwU$I+7nU>pEEg^%5z78Rw0x@iyLLw@n6V7JRC7*gVW6C3n]gq+r/)yZ52;pPw7B\'7$GzbWpS/+),=63sT-u9PjO,)).Ks-u:U(Zuh/CFvNZ`Uh4^fgXclw9KP6T0,-9wxz#-X[F+?@cXmDHyV!9?l1FN:r\\SmR19h0Lnm^l,,8tlGWae](D`@Z,a0c1]i\"[2{G-F\\$2lWPkO)s:]NMv;U\"?Y-gM++3_n3FK($rD8*dHt;`Y{-_$,M)yX-j\\n={&8-s.zOT>sU.\"Y%ElzG1VIGjeAQWC)@G\'(4iDRS.&n*t=h!\\;JE]+SISKZi)#m0:scr>t\\LF\\$5z:F6tvtg,:#;D\'/WRro\\_I1Q.**1UB)@J7mMt.w>dg]{yrU37YD&+DWoOv59[F0T>uadWg))1YV(ZueyX+dEdPC@Vsi8q\\Y-hSEBVpYLN(q6KZh&rA%/Z`XvpT3=wnFL1I^(@K>5+t:Y:QlR6Pt&PFM3S16XB{pEBY%?Rby`Ui8q\\Z4-%ju7GD\\*RFGr7M`&1b(3g:(SQ\"J7oWD/VM_v_X!1ng=529exV$G\"hq)h^!ztZG3b!n8`fa:5;h)(,AI.DOEL1Llc1_qB2kSG+>8?sQw/t0$]9*P=z#,UM`%.ULZb`@W!4$RXG:,gPP]dbDe[tae[vi2O\"PS4FFkqw-iWW1,\'xZ;Ob\'/TA*FgZm@0hIp%XsdwRmWJN,+3[[9D0^p?&:6@!ypHTQw0w;Tx/njO*zZ4-#cWj7h3ZSrjCI)-EU`fdEeV]Vur_cWk:wui3XHBNGXg&wX3/0ADydg]ypKa.XY8E6y2\"MFXh-:\"4\"F$uV-r)cGr4C90\'ij^u\\LDRR\'cL0FQJ\\rS&Z!+RC;:Pf:)ZoI[pK^\"zvdq5GHs:[D{k.6cy`TcwW,kb.RH1VF>?cZy\"*JyO\\b\\*REB[*W^UmNzI7sj?5-xH9$Ciml[aYxz&;9KSB1f?AffQC;<[>\\@cZz$2lYU&QNqx/nmZZ:LUHIt;\\H4d*:)V]TnT7Ry7;dkorri=-eD\\+XbeYk8h4\\^H+7rf,=3(h_\':1&f[vg&vRqlKnog8z.eBQXF7y2x;Sqg4e+;*]\")CY!.`(;69ZBw]MG]%4suwy{\'@PS5KZgzX)Xf#j{Q`o9co-%kzLEVbl$]727YD&.S@\':3..8pZNVLXX6@#(>CuPkR6T*jfE_70(s:JHh]wi+/IdFiiTHM/:ti7j>1t)\\%5z:H@EzdeRK`+Jv?m3Noo`sHK#bRT01@4{Cq;i,3[Z53>$3rrjBEo..:unLjWX5:cjq\"Co2>\'C_;E.O-.=-a.VPn`uU*dFjnm\\cbElzF+>9C*@F$vZ=]CsHIq+s4?#,P7\\Si>4,vC%*CVh2TV!74>xoHUU.{Sg6lIb:48ZE+AI/H`3rqd)1XRpg6kGZucq5HO9j7i8p[TtrbtIHmu-ml\\dg[rR%WoOzCsJQ;l>+US%S\\Y/pt{4(fVZF/P1J<,c9/xC!o?%5zLH`6(\\&)L.;!.c4pe/N&eZoIZk6^bQQ&]0kWT#H\'&(3g=4,yRg6lMu33DAY%@WvvqW>k/>-^\"!ysV7IO2EJ&rB.WV+ja.UL[fs9W2/5XF6tuoR+u?n:l>*SLa*Ea?Q\\^H+:\'N;vlA86B1e8#>TmQ.-5_hp\"H,>8.gK!W{2v-nrsnP\'eV\\P[]E!k(vLUHGjhQ;oJ^#\':3-*\'&(3g9#?TmNzH4g5f3`p;j1Kj\\k/;!.a*E].c4pd*8y+Zj2Nt,mm^pA/`$\'7!;JDUdxX/t/$]77M_zrMgHkiR>yt^Z,b5v&H#hp$PQ*s7OhHh[pGL-7j>1v1%`BdZrZJBNB?TmNyE(/R;h*-ACm&dRPv1\'jk]rK]rOnc)9$Es>rPu\'SR*knhBK7i9wxwoLhN,,8re%w[Cx]J:\"5\'^1nc,GdIzV{5*nzCrE:2*uD/WOf;0x>`PP$VoS3@)It9V.u8JO2FK-9sh2U@zrOqqg4d(1ZY6=n?+SHO8bp3A4w-le;0xAn4Ld==Y2&bHz^Ezca@UnS5HO7__Fzb[&>I:&GwQg=63=xoK`-Q:h),<0s(\\$4x0w8E9*cATf,<.mhEYuf&y`Ui:x\"-[m:oNs%N@4$QR/-5_it24LfE_6,r/(s@yl8e!fkhL&kw;X/w>b]0l[ccK,3\\^F#n8^X$>QawY6>pK^yoC(Ht?oA/b/Y[@j{TmP&`BbNA:>hxIAH+9z.d<8E6u{0nhCPJa4suupS0/l2KgM*&yaYy\",UOjQ4LeAPP&`A\\63:k8i6e\'+>:H>?`L<%@Vrcy`QV=l3Ox9KR=rU4;i0I`2m]fmu+fN4T0/8kA:BxbbJ+2XMVOiHi^zrR!E{hwC\'0\\emt)`4x3(koqjEU^^AaQNqy4*p(eTQ{Cp7X?k)\"iu:T$I+8tnO{I4d*6rf.HcC`?Uqczb[\'EijZdkqv(TW;\\Cw[Aj$`FvLS@%4stq_fgUS#J6j?5+s6FC]0l]n7^\\514Nqty+Zi,5czejfGid>Ak$_A_F{ddJ(zc^2rw&Eo-%k{NQ/2Moph=0r\"AcVe$o7X>fq,vB#zpFFks\'Vf$rD8)`7)dI{[528ahiZep/,->5-yOYTy2zCvU\'Wg(*6nUA\"#\':1\'jmf>;N[`S]_I0N\"Sc!j$dYqS,wD)9\'SS+o$Uf)/Q1t[I:%GwNYZVy-a.Y]LCH\'#sKX^PVD/WSx2#SbtLVQrpatJO4Orz63>zyucn(iiVS{=Uv!1nf;+`/]n=xs[OVIIq-zQbzhxLLyJ@?Z0s*cDdRMl`zn;s\\Rd*8\"86HK$fcC_;C#!u[F,EZuj6br@%2hF[#2m^m3IYfzY.mjO.0FRNmc,HfTOpmWKO.4WB$(;3-(zaXpV=fr5FEeSPx9H@I1S6Psx+]\"$+N-2P$Y\"1oiDRT13I[pIX`_A^AaOFQIYevG;3,\"_DsC1b*>zveuF8%I*/MxCzi$fc@Sc!k)xTx*Xcm%^:>fr27[MN\'ij]sS$NDK0H]#,R@,RA/a\'6x-gK!Y*Yj2Q*s7OhFaj*\'%#zoCE\'*>=Uux#6\'Z{(BY$::Sv\'L2R-%js+lmb(6soWF7x,b8(YpQ%Z\"-^xh(zdcGuE3iF]\'?LBH$q>vewN[b^7.#_@_Fy^I4_l+%p8[KCOFPDB^:C#yn?(D`@W!3y^Ex[?aRU;a]6-yMN&dUZJCOFPEI\"bT][4+t<`Z%@UoXICS][4-$geL-4[W%J,9y(IyTrh7pZSo\\^H+:\'O?-^xk1KfJxKIll^pB3str`l(q3>$2m]hwH8#=MQ1=#1jQ6V4:h+0MxC!n8dtF9,kb0[cdO!&;7D3jKp#L<)O=#2oh?;JDUcvN`xcfZpMkY]LCJ/ERNqw*\\vg%o6R%UcvRrlNyE\'-LxE+??_H,;*[rS(a@Vsf,<-eEcI%q\'C`A\\76GGlrz9C(:-nm^o=ubjr%SZLM$_Be]\'@OO%\\0qssj?3$Tao5MfDXui3ZPd-Kr*jgGic:2,$is-v>fnxi\'r=n>(Hs:[F)6smKkb-M%dXi1NxAl.1Ms&Ucs@#%0^tT)b@R^fh^ztYAuU*dHt:F6v#725Q\"J5d(/Q5MiO2C?OUA$)AOLqy529g)+:&J)(,BNCFq6NiN,(\"n5S*ny,[oFHvF8!9?pC934J\\pGO8f((1YU&OGRMgJs4@%5y64D:48X=ca@VrczdfTT*lmd3d+=7n>%8,ll]l0A7/%geIt>j+*3]b[&?MIcC]2x:LR=sZH;*]$0`%*AK;&Fq3?(AUlEM9pS26ZH:)YnDB`CgdGmzF)2]iyMR4IUS%RU9Y:Su\"88Ne7v#723HRISMd8\'SW<`Yz*P>#0d6w%B_AbSU6JSHK%l$]611C>OU?u^VtlFQHSMiN-0EQLeCVj>-d:2,$jv=`WnOzG,AH\'$zm6YH<4//<$95>u``G{aVj8pWC(7#BgfM.8mLmiKt24Lc7$I,;\'K/ASjDM;z(Flr%M?2w419i5^bVf\'$yfs6IQ>!\'=CtM_ym8dyZ9E6v$?Si>3&[(J#d^/e>>\\CrB+L&o.-4[Y2%^9:X45JZi(y_NGZrWrR\"F$tNc1_rHK#cU`e]\'@Q[W\'SS,wE-Jp%WlEM7cwStvxz%6\'[\"*M.8lFQIZm;tf%sIN-1Nv6@\"!zveuE3jHfO9g+6jBEs?vclv6=oEGq2;pNpssi<)RHSJZi*()3e0UE7#EsC.XX32>\'AUlGWds>pISITNjR9co,#d[\"+N3Ml_xdkr$K5asGBUg/Hc@R]aS[SmT=m=!(C\\,^zvdo-(xW,hWY=`R\\Y/q{=SlP+zVy-eAPQ*q00?/gIq)g\\sW:T\"Ad]*L(z_NEPCB]9=eo$Tf+7rh4^fkjTF@ONyD{l0A99Rsurcy\\Aj\"Vsg1T;dlx@iyKEYqV9T$I.ESU3:i0FU^X&Fr9[H6nU=j-4_jxD(4lO(n&aBbNA71-,7nS3?(EeTU25Py;Pf8y-c8)^*J\"^@aPKd@NJgRA0d4lQ1:nI^%3m[^I3\\_MBA_Cl#Wvuk?2v0\"Q]`NGV_];G7w&Dga6#EvPhBM>0ng=4-&o/0CFsgq-\"Z,b6\"Ae^/e;1#Te*7uth2T:_Xx\"1l\\dg\\veuC-O.3U;baFuF;2\'eXh))2]gp%Vi8oV>m7bo/1FO?+UT)bB\\1r{;H>;KM$`FwRmVD4ob#tT%OGUYC%(9\'TZLJnqsq_jwByfq.&o19i2R2:l=\'Eij]qJWY>b^4$OJc3&\\,]u^Vsh4aq=sX=a\\.b4n]ca?Q^fkjWT$I,<,b7\'XlA71.2Q*s6HM.7g2VB\'5v&FtD/XX45JZi+/H`3qnVF:0yF-HdFmx?ddL-7kEN<\"/c4n\\_NFTW;\\F(.P0;tdxTy0ptvz(Ht%:8KP7[OXQjJpy;Pb#zm;qW?m5U6F@OO%\\/k\\j(wPg0mc/R:cm#WrcvPe7uumKfJzTqasHIp*lomXPiF[z%5y4-&o1:nHV^X\"6.zP]efTR{Cp8[I>9@v^Q]d_7,q&\\\'DeXh*.Hb>I7rf-ADq9]Q\\_MBA^@`G&zfp*p)kl^qGIvC);3,{Z1{J9z,\\rPu+fK&n..:wvoKfGlrx0u/zMKot{5.$dZtafb>F+=3+t=ep)ifHo%Ywtey\\Aiu:W.v:RsskEPEI$l(o,ySlMxAoxnB:;V+gTLb/XU\'VctD2hCNA=NS8X<_ONx@k)wPb\'/TC1f:,fK$ggTOnd-ImokO(n&bGwQg:\'M8lCDlyF-F](Go(fYh*,<,d?I5g4e*9!5)jgIp(bGr9[F,EWj:umHXf#gkfD[%;?izSjDN@7/\'p18bn,&sB,N,+4`p=pNl]k-3XJInw43C8.v>gs6HJzUrg0Q19k:uk>0md2azj*\'\"qD<=]G(/O)s=j*(*:&K1JfL&o1$2pkJiZh#eafq/(uG=:KO0:sbq:acQKa2hCQS.&m\'ijZfr6HL+*2[]Cp;h)\'&(5pbx]F*7skCFwPd.M$`DkxBvY;Tw\'N:pS12GRIX_[0ppe0Q3C:9M^qIQ>\"+O6ZKIhYfuD.R=qPt(Wi0Kk`&/Z]J:$>PZV%I,7oYLR;i/DJ*.HdEf[uae\\{#*JyP\\b].a+Io\"J9uq\\Y+_,THL+*1VF;42Y-iVRx3*s5FBXxxyvj5]`J3\\[8?rMe;42;r[OYW+dEg^\'=@gmt&ODDks)a97D5w*ZoGO;saiq&UcuLVNd4mU?wh(#n4LhN,+2XMXW.w>caAZ,b5w,eC[&CaH\"glmb):+b90&e[tagdBZ(L.:y$6\'\\(DdTU4>xqOqtuulCEp02Kd>E#tPlXRpg6nU>qMf@J5e,ACk!R_k$`Dm&cN<#3t{60/;ws^]=Pb\"rMa,Jt5A*Ho$S]^Bl(n(h`0a%(:/t/\"X\"4$PP%]2u+fK&p3EEf]\"(@LAA`H%w\\E$w_VoT7Pnc\'1\\ca?Si<*V\\Q^jzQ^j\"Y\'M7ctIJt7KXZ>aXsdwRpb!l1DGuF8&L8kA1u-ov,eEdQHTQz=W&N=\'C`BdWg+2ZW*b:59^X\"5)eQDAXy\'Fm\"NLpx4-$hjb1b)9\'PEJ&vRpg5h;)TU37YD&+F_6,p&Yws^[2!J:%@Y\'L/CEo/2I^$-THJzVy.d=?aUd!fid;419i2U*P>$3rpbx]G.G])Gn\"ONw=^I1TP\\_L?88PkT@%/^uW35MiR>vg&uOe9%H\"fi_%/\\k,->2\"L@=P_m2FN8e#o7X@n;mA6,r/\'n*r4B3sw$9C&1c);.px3(ha1e9&M:r_bQPzF(.M#\\5+q-yOZW*`3pkKpzY+_,QoA0e=9G<69Y<[0omWM[dkmd4kKq#H,=2\"LA@];IBL:x\"/b.TFAS`l(o*s8Qsw#838^Z,b6!>UsnP&bJ*+9#:>hyO[\\CuOe9%FwQiEUaip\"DtJM(wO_rHM/=(HvH@G&$\"wabJ+1U@{u``EtB*FcHxP`w\\H3bx`Wsbq:bf_-UPog:\'M8kA:AtS#I.FXk8j=,`*D]1ppb!m5S*nw6=oC<@l-1Lnm[^J:{0kYY9LVNb,Jq(a>KCL9se&zhwH;0x>c_6*jfBS_hov,hUQt\"deSOpn[[CsHGkk\\l3Mmg>;MS?!\"&7\'Xk<\"1kXV)]*M/;y&.e@I1UA$)APP&'); +--enable_query_log +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +--error 0,1114 +INSERT INTO t1 SELECT * FROM t1; +DROP TABLE t1; diff --git a/sql/ha_archive.cc b/sql/ha_archive.cc index e2a2211259f..6e18f2e1e01 100644 --- a/sql/ha_archive.cc +++ b/sql/ha_archive.cc @@ -205,7 +205,7 @@ bool archive_db_init() else { zoffset_size= 2 << ((zlibCompileFlags() >> 6) & 3); - switch (sizeof(z_off_t)) { + switch (zoffset_size) { case 2: max_zfile_size= INT_MAX16; break; @@ -676,6 +676,7 @@ int ha_archive::real_write_row(byte *buf, gzFile writer) total_row_length+= ((Field_blob*) table->field[*ptr])->get_length(); if (share->approx_file_size > max_zfile_size - total_row_length) { + gzflush(writer, Z_SYNC_FLUSH); info(HA_STATUS_TIME); share->approx_file_size= (ulong) data_file_length; if (share->approx_file_size > max_zfile_size - total_row_length) From 25af844f6feda6ec9cfb094b4ca4f49aac7d3ecc Mon Sep 17 00:00:00 2001 From: "tnurnberg@sin.intern.azundris.com" <> Date: Mon, 25 Jun 2007 11:34:23 +0200 Subject: [PATCH 017/127] Bug #22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB fix binlog-writing so that end_log_pos is given correctly even within transactions for both SHOW BINLOG and SHOW MASTER STATUS, that is as absolute values (from log start) rather than relative values (from transaction's start). --- Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-maint into sin.intern.azundris.com:/home/tnurnberg/22540/50-22540 --- mysql-test/r/binlog.result | 122 ++++++++++++++++++++++++++++++++++++- mysql-test/t/binlog.test | 93 +++++++++++++++++++++++++++- sql/log.cc | 63 +++++++++++++++++-- 3 files changed, 269 insertions(+), 9 deletions(-) diff --git a/mysql-test/r/binlog.result b/mysql-test/r/binlog.result index 6807da16e66..41c75a2067b 100644 --- a/mysql-test/r/binlog.result +++ b/mysql-test/r/binlog.result @@ -1,6 +1,6 @@ drop table if exists t1, t2; reset master; -create table t1 (a int) engine=bdb; +create table t1 (a int) engine=innodb; create table t2 (a int) engine=innodb; begin; insert t1 values (5); @@ -10,11 +10,11 @@ insert t2 values (5); commit; show binlog events from 98; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; create table t1 (a int) engine=bdb +master-bin.000001 # Query 1 # use `test`; create table t1 (a int) engine=innodb master-bin.000001 # Query 1 # use `test`; create table t2 (a int) engine=innodb master-bin.000001 # Query 1 # use `test`; BEGIN master-bin.000001 # Query 1 # use `test`; insert t1 values (5) -master-bin.000001 # Query 1 # use `test`; COMMIT +master-bin.000001 # Xid 1 # COMMIT /* XID */ master-bin.000001 # Query 1 # use `test`; BEGIN master-bin.000001 # Query 1 # use `test`; insert t2 values (5) master-bin.000001 # Xid 1 # COMMIT /* XID */ @@ -133,3 +133,119 @@ master-bin.000001 # Rotate 1 # master-bin.000002;pos=4 show binlog events in 'master-bin.000002' from 98; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000002 # Query 1 # use `test`; drop table t1 +set @ac = @@autocommit; +set autocommit= 0; +reset master; +create table t1(n int) engine=innodb; +begin; +insert into t1 values (1); +insert into t1 values (2); +insert into t1 values (3); +commit; +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 98 Server version, Binlog ver: 4 +master-bin.000001 98 Query 1 197 use `test`; create table t1(n int) engine=innodb +master-bin.000001 197 Query 1 265 use `test`; BEGIN +master-bin.000001 265 Query 1 353 use `test`; insert into t1 values (1) +master-bin.000001 353 Query 1 441 use `test`; insert into t1 values (2) +master-bin.000001 441 Query 1 529 use `test`; insert into t1 values (3) +master-bin.000001 529 Xid 1 556 COMMIT /* XID */ +master-bin.000001 556 Query 1 632 use `test`; drop table t1 +set autocommit= 1; +reset master; +create table t1(n int) engine=innodb; +insert into t1 values (1); +insert into t1 values (2); +insert into t1 values (3); +commit; +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 98 Server version, Binlog ver: 4 +master-bin.000001 98 Query 1 197 use `test`; create table t1(n int) engine=innodb +master-bin.000001 197 Query 1 285 use `test`; insert into t1 values (1) +master-bin.000001 285 Xid 1 312 COMMIT /* XID */ +master-bin.000001 312 Query 1 400 use `test`; insert into t1 values (2) +master-bin.000001 400 Xid 1 427 COMMIT /* XID */ +master-bin.000001 427 Query 1 515 use `test`; insert into t1 values (3) +master-bin.000001 515 Xid 1 542 COMMIT /* XID */ +master-bin.000001 542 Query 1 618 use `test`; drop table t1 +reset master; +create table t1(n int) engine=myisam; +begin; +insert into t1 values (4); +insert into t1 values (5); +insert into t1 values (6); +commit; +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 98 Server version, Binlog ver: 4 +master-bin.000001 98 Query 1 197 use `test`; create table t1(n int) engine=myisam +master-bin.000001 197 Query 1 285 use `test`; insert into t1 values (4) +master-bin.000001 285 Query 1 373 use `test`; insert into t1 values (5) +master-bin.000001 373 Query 1 461 use `test`; insert into t1 values (6) +master-bin.000001 461 Query 1 537 use `test`; drop table t1 +set autocommit= 1; +reset master; +create table t1(n int) engine=innodb; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 197 +insert into t1 values (1); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 312 +insert into t1 values (2); +insert into t1 values (3); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 542 +commit; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 542 +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 98 Server version, Binlog ver: 4 +master-bin.000001 98 Query 1 197 use `test`; create table t1(n int) engine=innodb +master-bin.000001 197 Query 1 285 use `test`; insert into t1 values (1) +master-bin.000001 285 Xid 1 312 COMMIT /* XID */ +master-bin.000001 312 Query 1 400 use `test`; insert into t1 values (2) +master-bin.000001 400 Xid 1 427 COMMIT /* XID */ +master-bin.000001 427 Query 1 515 use `test`; insert into t1 values (3) +master-bin.000001 515 Xid 1 542 COMMIT /* XID */ +master-bin.000001 542 Query 1 618 use `test`; drop table t1 +set autocommit= 0; +reset master; +create table t1(n int) engine=myisam; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 197 +insert into t1 values (4); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 285 +insert into t1 values (5); +insert into t1 values (6); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 461 +commit; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 461 +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 98 Server version, Binlog ver: 4 +master-bin.000001 98 Query 1 197 use `test`; create table t1(n int) engine=myisam +master-bin.000001 197 Query 1 285 use `test`; insert into t1 values (4) +master-bin.000001 285 Query 1 373 use `test`; insert into t1 values (5) +master-bin.000001 373 Query 1 461 use `test`; insert into t1 values (6) +master-bin.000001 461 Query 1 537 use `test`; drop table t1 +set session autocommit = @ac; +End of 5.0 tests diff --git a/mysql-test/t/binlog.test b/mysql-test/t/binlog.test index accfa6a577f..6271a8f95a8 100644 --- a/mysql-test/t/binlog.test +++ b/mysql-test/t/binlog.test @@ -3,7 +3,6 @@ # -- source include/have_log_bin.inc -- source include/not_embedded.inc --- source include/have_bdb.inc -- source include/have_innodb.inc -- source include/have_log_bin.inc @@ -12,7 +11,7 @@ drop table if exists t1, t2; --enable_warnings reset master; -create table t1 (a int) engine=bdb; +create table t1 (a int) engine=innodb; create table t2 (a int) engine=innodb; begin; insert t1 values (5); @@ -49,3 +48,93 @@ show binlog events in 'master-bin.000001' from 98; --replace_column 2 # 5 # show binlog events in 'master-bin.000002' from 98; +# +# Bug#22540 - Incorrect value in column End_log_pos of +# SHOW BINLOG EVENTS using InnoDB +# + +# the following tests will show that certain queries now return +# absolute offsets (from binlog start, rather than relative to +# the beginning of the current transaction). under what +# conditions it should be allowed / is sensible to put the +# slider into the middle of a transaction is not our concern +# here; we just guarantee that if and when it's done, the +# user has valid offsets to use. if the setter function still +# wants to throw a "positioning into middle of transaction" +# warning, that's its prerogative and handled elsewhere. + +set @ac = @@autocommit; + +# first show this to work for SHOW BINLOG EVENTS + +set autocommit= 0; +reset master; +create table t1(n int) engine=innodb; +begin; +insert into t1 values (1); +insert into t1 values (2); +insert into t1 values (3); +commit; +drop table t1; +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ +show binlog events from 0; + +set autocommit= 1; +reset master; +create table t1(n int) engine=innodb; +insert into t1 values (1); +insert into t1 values (2); +insert into t1 values (3); +commit; +drop table t1; +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ +show binlog events from 0; + +reset master; +create table t1(n int) engine=myisam; +begin; +insert into t1 values (4); +insert into t1 values (5); +insert into t1 values (6); +commit; +drop table t1; +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ +show binlog events from 0; + +# now show this also works for SHOW MASTER STATUS +# as this is what "mysqldump --master-data=1" uses. + +set autocommit= 1; +reset master; +create table t1(n int) engine=innodb; +show master status; +insert into t1 values (1); +show master status; +insert into t1 values (2); +insert into t1 values (3); +show master status; +commit; +show master status; +drop table t1; +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ +show binlog events from 0; + +set autocommit= 0; +reset master; +create table t1(n int) engine=myisam; +show master status; +insert into t1 values (4); +show master status; +insert into t1 values (5); +insert into t1 values (6); + +show master status; +commit; +show master status; +drop table t1; +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ +show binlog events from 0; + +set session autocommit = @ac; + +--echo End of 5.0 tests diff --git a/sql/log.cc b/sql/log.cc index 818828f9557..465d694ba10 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -134,7 +134,7 @@ static int binlog_commit(THD *thd, bool all) // we're here because trans_log was flushed in MYSQL_LOG::log_xid() DBUG_RETURN(0); } - if (all) + if (all) { Query_log_event qev(thd, STRING_WITH_LEN("COMMIT"), TRUE, FALSE); qev.error_code= 0; // see comment in MYSQL_LOG::write(THD, IO_CACHE) @@ -1835,7 +1835,9 @@ bool MYSQL_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event) if (likely(is_open())) // Should always be true { - uint length; + uint length, group, carry, hdr_offs; + long val; + byte header[LOG_EVENT_HEADER_LEN]; /* Log "BEGIN" at the beginning of the transaction. @@ -1867,13 +1869,66 @@ bool MYSQL_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event) /* Read from the file used to cache the queries .*/ if (reinit_io_cache(cache, READ_CACHE, 0, 0, 0)) goto err; - length=my_b_bytes_in_cache(cache); + + length= my_b_bytes_in_cache(cache); DBUG_EXECUTE_IF("half_binlogged_transaction", length-=100;); + + group= my_b_tell(&log_file); + hdr_offs= carry= 0; + do { + if (likely(carry > 0)) + { + DBUG_ASSERT(carry < LOG_EVENT_HEADER_LEN); + + memcpy(&header[carry], (char *)cache->read_pos, LOG_EVENT_HEADER_LEN - carry); + + val= uint4korr(&header[LOG_POS_OFFSET]) + group; + int4store(&header[LOG_POS_OFFSET], val); + + if (my_b_write(&log_file, header, carry)) + goto err; + + memcpy((char *)cache->read_pos, &header[carry], LOG_EVENT_HEADER_LEN - carry); + + hdr_offs = LOG_EVENT_HEADER_LEN - carry + + uint4korr(&header[EVENT_LEN_OFFSET]); + + carry= 0; + } + + if(likely(length > 0)) + { + do { + DBUG_ASSERT((hdr_offs + max(EVENT_LEN_OFFSET, LOG_POS_OFFSET) + 4) <= length); + + val= uint4korr((char *)cache->read_pos + hdr_offs + LOG_POS_OFFSET) + group; + int4store((char *)cache->read_pos + hdr_offs + LOG_POS_OFFSET, val); + hdr_offs += uint4korr((char *)cache->read_pos + hdr_offs + EVENT_LEN_OFFSET); + + /* header beyond current read-buffer? */ + if (hdr_offs >= length) + { + hdr_offs -= length; + break; + } + + /* split header? */ + if (hdr_offs + LOG_EVENT_HEADER_LEN > length) + { + carry= length - hdr_offs; + + memcpy(header, (char *)cache->read_pos + hdr_offs, carry); + length -= carry; + } + + } while (hdr_offs < length); + } + /* Write data to the binary log file */ if (my_b_write(&log_file, cache->read_pos, length)) - goto err; + goto err; cache->read_pos=cache->read_end; // Mark buffer used up DBUG_EXECUTE_IF("half_binlogged_transaction", goto DBUG_skip_commit;); } while ((length=my_b_fill(cache))); From 4ca5aabf98044166d98d261a0dfee8a4ef4bdfef Mon Sep 17 00:00:00 2001 From: "tnurnberg@sin.intern.azundris.com" <> Date: Mon, 25 Jun 2007 11:37:10 +0200 Subject: [PATCH 018/127] Bug #22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB fix binlog-writing so that end_log_pos is given correctly even within transactions for both SHOW BINLOG and SHOW MASTER STATUS, that is as absolute values (from log start) rather than relative values (from transaction's start). --- Merge sin.intern.azundris.com:/home/tnurnberg/22540/50-22540 into sin.intern.azundris.com:/home/tnurnberg/22540/51-22540 --- Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-maint into sin.intern.azundris.com:/home/tnurnberg/22540/51-22540 --- mysql-test/extra/binlog_tests/binlog.test | 92 +++++++++++++++++ mysql-test/r/binlog_stm_binlog.result | 118 +++++++++++++++++++++- sql/log.cc | 60 ++++++++++- 3 files changed, 267 insertions(+), 3 deletions(-) diff --git a/mysql-test/extra/binlog_tests/binlog.test b/mysql-test/extra/binlog_tests/binlog.test index e838acbed35..02d5a92ea38 100644 --- a/mysql-test/extra/binlog_tests/binlog.test +++ b/mysql-test/extra/binlog_tests/binlog.test @@ -49,6 +49,98 @@ show binlog events in 'master-bin.000001' from 106; --replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\// show binlog events in 'master-bin.000002' from 106; + +# +# Bug#22540 - Incorrect value in column End_log_pos of +# SHOW BINLOG EVENTS using InnoDB +# + +# the following tests will show that certain queries now return +# absolute offsets (from binlog start, rather than relative to +# the beginning of the current transaction). under what +# conditions it should be allowed / is sensible to put the +# slider into the middle of a transaction is not our concern +# here; we just guarantee that if and when it's done, the +# user has valid offsets to use. if the setter function still +# wants to throw a "positioning into middle of transaction" +# warning, that's its prerogative and handled elsewhere. + +set @ac = @@autocommit; + +# first show this to work for SHOW BINLOG EVENTS + +set autocommit= 0; +reset master; +create table t1(n int) engine=innodb; +begin; +insert into t1 values (1); +insert into t1 values (2); +insert into t1 values (3); +commit; +drop table t1; +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ +show binlog events from 0; + +set autocommit= 1; +reset master; +create table t1(n int) engine=innodb; +insert into t1 values (1); +insert into t1 values (2); +insert into t1 values (3); +commit; +drop table t1; +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ +show binlog events from 0; + +reset master; +create table t1(n int) engine=myisam; +begin; +insert into t1 values (4); +insert into t1 values (5); +insert into t1 values (6); +commit; +drop table t1; +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ +show binlog events from 0; + +# now show this also works for SHOW MASTER STATUS +# as this is what "mysqldump --master-data=1" uses. + +set autocommit= 1; +reset master; +create table t1(n int) engine=innodb; +show master status; +insert into t1 values (1); +show master status; +insert into t1 values (2); +insert into t1 values (3); +show master status; +commit; +show master status; +drop table t1; +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ +show binlog events from 0; + +set autocommit= 0; +reset master; +create table t1(n int) engine=myisam; +show master status; +insert into t1 values (4); +show master status; +insert into t1 values (5); +insert into t1 values (6); + +show master status; +commit; +show master status; +drop table t1; +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ +show binlog events from 0; + +set session autocommit = @ac; + +--echo End of 5.0 tests + # Test of a too big SET INSERT_ID: see if the truncated value goes # into binlog (right), or the too big value (wrong); we look at the # binlog further down with SHOW BINLOG EVENTS. diff --git a/mysql-test/r/binlog_stm_binlog.result b/mysql-test/r/binlog_stm_binlog.result index 66fe3e40270..1bc7430fde0 100644 --- a/mysql-test/r/binlog_stm_binlog.result +++ b/mysql-test/r/binlog_stm_binlog.result @@ -7,7 +7,7 @@ Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 4 Format_desc 1 106 Server ver: #, Binlog ver: # master-bin.000001 106 Query 1 213 use `test`; create table t1 (a int, b int) engine=innodb master-bin.000001 213 Query 1 281 use `test`; BEGIN -master-bin.000001 281 Query 1 90 use `test`; insert into t1 values (1,2) +master-bin.000001 281 Query 1 371 use `test`; insert into t1 values (1,2) master-bin.000001 371 Xid 1 398 COMMIT /* XID */ drop table t1; drop table if exists t1, t2; @@ -145,6 +145,122 @@ master-bin.000001 # Rotate 1 # master-bin.000002;pos=4 show binlog events in 'master-bin.000002' from 106; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000002 # Query 1 # use `test`; drop table t1 +set @ac = @@autocommit; +set autocommit= 0; +reset master; +create table t1(n int) engine=innodb; +begin; +insert into t1 values (1); +insert into t1 values (2); +insert into t1 values (3); +commit; +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 +master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=innodb +master-bin.000001 205 Query 1 273 use `test`; BEGIN +master-bin.000001 273 Query 1 361 use `test`; insert into t1 values (1) +master-bin.000001 361 Query 1 449 use `test`; insert into t1 values (2) +master-bin.000001 449 Query 1 537 use `test`; insert into t1 values (3) +master-bin.000001 537 Xid 1 564 COMMIT /* XID */ +master-bin.000001 564 Query 1 640 use `test`; drop table t1 +set autocommit= 1; +reset master; +create table t1(n int) engine=innodb; +insert into t1 values (1); +insert into t1 values (2); +insert into t1 values (3); +commit; +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 +master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=innodb +master-bin.000001 205 Query 1 293 use `test`; insert into t1 values (1) +master-bin.000001 293 Xid 1 320 COMMIT /* XID */ +master-bin.000001 320 Query 1 408 use `test`; insert into t1 values (2) +master-bin.000001 408 Xid 1 435 COMMIT /* XID */ +master-bin.000001 435 Query 1 523 use `test`; insert into t1 values (3) +master-bin.000001 523 Xid 1 550 COMMIT /* XID */ +master-bin.000001 550 Query 1 626 use `test`; drop table t1 +reset master; +create table t1(n int) engine=myisam; +begin; +insert into t1 values (4); +insert into t1 values (5); +insert into t1 values (6); +commit; +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 +master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=myisam +master-bin.000001 205 Query 1 293 use `test`; insert into t1 values (4) +master-bin.000001 293 Query 1 381 use `test`; insert into t1 values (5) +master-bin.000001 381 Query 1 469 use `test`; insert into t1 values (6) +master-bin.000001 469 Query 1 545 use `test`; drop table t1 +set autocommit= 1; +reset master; +create table t1(n int) engine=innodb; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 205 +insert into t1 values (1); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 320 +insert into t1 values (2); +insert into t1 values (3); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 550 +commit; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 550 +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 +master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=innodb +master-bin.000001 205 Query 1 293 use `test`; insert into t1 values (1) +master-bin.000001 293 Xid 1 320 COMMIT /* XID */ +master-bin.000001 320 Query 1 408 use `test`; insert into t1 values (2) +master-bin.000001 408 Xid 1 435 COMMIT /* XID */ +master-bin.000001 435 Query 1 523 use `test`; insert into t1 values (3) +master-bin.000001 523 Xid 1 550 COMMIT /* XID */ +master-bin.000001 550 Query 1 626 use `test`; drop table t1 +set autocommit= 0; +reset master; +create table t1(n int) engine=myisam; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 205 +insert into t1 values (4); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 293 +insert into t1 values (5); +insert into t1 values (6); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 469 +commit; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 469 +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 +master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=myisam +master-bin.000001 205 Query 1 293 use `test`; insert into t1 values (4) +master-bin.000001 293 Query 1 381 use `test`; insert into t1 values (5) +master-bin.000001 381 Query 1 469 use `test`; insert into t1 values (6) +master-bin.000001 469 Query 1 545 use `test`; drop table t1 +set session autocommit = @ac; +End of 5.0 tests reset master; create table t1 (id tinyint auto_increment primary key); set insert_id=128; diff --git a/sql/log.cc b/sql/log.cc index 6dc204265b0..de5d94a2e93 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -3945,9 +3945,65 @@ int MYSQL_BIN_LOG::write_cache(IO_CACHE *cache, bool lock_log, bool sync_log) if (reinit_io_cache(cache, READ_CACHE, 0, 0, 0)) return ER_ERROR_ON_WRITE; - uint bytes= my_b_bytes_in_cache(cache); + uint bytes= my_b_bytes_in_cache(cache), group, carry, hdr_offs; + long val; + uchar header[LOG_EVENT_HEADER_LEN]; + + group= my_b_tell(&log_file); + hdr_offs= carry= 0; + do { + if (likely(carry > 0)) + { + DBUG_ASSERT(carry < LOG_EVENT_HEADER_LEN); + + memcpy(&header[carry], (char *)cache->read_pos, LOG_EVENT_HEADER_LEN - carry); + + val= uint4korr(&header[LOG_POS_OFFSET]) + group; + int4store(&header[LOG_POS_OFFSET], val); + + if (my_b_write(&log_file, header, carry)) + return ER_ERROR_ON_WRITE; + + memcpy((char *)cache->read_pos, &header[carry], LOG_EVENT_HEADER_LEN - carry); + + hdr_offs = LOG_EVENT_HEADER_LEN - carry + + uint4korr(&header[EVENT_LEN_OFFSET]); + + carry= 0; + } + + if(likely(bytes > 0)) + { + do { + DBUG_ASSERT((hdr_offs + max(EVENT_LEN_OFFSET, LOG_POS_OFFSET) + 4) <= bytes); + + val= uint4korr((char *)cache->read_pos + hdr_offs + LOG_POS_OFFSET) + group; + int4store((char *)cache->read_pos + hdr_offs + LOG_POS_OFFSET, val); + hdr_offs += uint4korr((char *)cache->read_pos + hdr_offs + EVENT_LEN_OFFSET); + + /* header beyond current read-buffer? */ + if (hdr_offs >= bytes) + { + hdr_offs -= bytes; + break; + } + + /* split header? */ + if (hdr_offs + LOG_EVENT_HEADER_LEN > bytes) + { + carry= bytes - hdr_offs; + + memcpy(header, (char *)cache->read_pos + hdr_offs, carry); + bytes -= carry; + } + + } while (hdr_offs < bytes); + } + + /* Write data to the binary log file */ + if (my_b_write(&log_file, cache->read_pos, bytes)) return ER_ERROR_ON_WRITE; cache->read_pos= cache->read_end; @@ -4028,7 +4084,7 @@ bool MYSQL_BIN_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event) if ((write_error= write_cache(cache, false, false))) goto err; - + if (commit_event && commit_event->write(&log_file)) goto err; if (flush_and_sync()) From c8717280a9e49beb472b780d919a4faaf093f877 Mon Sep 17 00:00:00 2001 From: "svoj@mysql.com/june.mysql.com" <> Date: Mon, 25 Jun 2007 14:42:35 +0500 Subject: [PATCH 019/127] BUG#28026 - Falcon: crash if partitions and select for update Assertion failure may happen with falcon + partition + select for update. This may affect other engines as well. Though assertion failure is fixed with this patch, falcon still deadlocks when running falcon_bug_28026.test. --- sql/ha_partition.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 0c4f3cf708f..37e42f7a850 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -3117,7 +3117,7 @@ int ha_partition::rnd_next(uchar *buf) continue; // Probably MyISAM if (result != HA_ERR_END_OF_FILE) - break; // Return error + goto end_dont_reset_start_part; // Return error /* End current partition */ late_extra_no_cache(part_id); @@ -3143,6 +3143,7 @@ int ha_partition::rnd_next(uchar *buf) end: m_part_spec.start_part= NO_CURRENT_PART_ID; +end_dont_reset_start_part: table->status= STATUS_NOT_FOUND; DBUG_RETURN(result); } From 874ccf025dcd9df0d6962306e810f299a49e9901 Mon Sep 17 00:00:00 2001 From: "tnurnberg@sin.intern.azundris.com" <> Date: Mon, 25 Jun 2007 18:41:17 +0200 Subject: [PATCH 020/127] Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB end_log_pos data within a transaction are relative to the start of the transaction rather than absolute. we fix those groups in situ before writing the log out. additional comments and handling for groups with very large single events, as suggested by Guilhem. --- sql/log.cc | 90 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 68 insertions(+), 22 deletions(-) diff --git a/sql/log.cc b/sql/log.cc index 465d694ba10..a5c5f42a393 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1835,8 +1835,7 @@ bool MYSQL_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event) if (likely(is_open())) // Should always be true { - uint length, group, carry, hdr_offs; - long val; + uint length, group, carry, hdr_offs, val; byte header[LOG_EVENT_HEADER_LEN]; /* @@ -1873,57 +1872,104 @@ bool MYSQL_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event) length= my_b_bytes_in_cache(cache); DBUG_EXECUTE_IF("half_binlogged_transaction", length-=100;); + /* + The events in the buffer have incorrect end_log_pos data + (relative to beginning of group rather than absolute), + so we'll recalculate them in situ so the binlog is always + correct, even in the middle of a group. This is possible + because we now know the start position of the group (the + offset of this cache in the log, if you will); all we need + to do is to find all event-headers, and add the position of + the group to the end_log_pos of each event. This is pretty + straight forward, except that we read the cache in segments, + so an event-header might end up on the cache-border and get + split. + */ + group= my_b_tell(&log_file); hdr_offs= carry= 0; do { - if (likely(carry > 0)) + + /* + if we only got a partial header in the last iteration, + get the other half now and process a full header. + */ + if (unlikely(carry > 0)) { DBUG_ASSERT(carry < LOG_EVENT_HEADER_LEN); + /* assemble both halves */ memcpy(&header[carry], (char *)cache->read_pos, LOG_EVENT_HEADER_LEN - carry); + /* fix end_log_pos */ val= uint4korr(&header[LOG_POS_OFFSET]) + group; int4store(&header[LOG_POS_OFFSET], val); + /* write the first half of the split header */ if (my_b_write(&log_file, header, carry)) goto err; + /* + copy fixed second half of header to cache so the correct + version will be written later. + */ memcpy((char *)cache->read_pos, &header[carry], LOG_EVENT_HEADER_LEN - carry); + /* next event header at ... */ hdr_offs = LOG_EVENT_HEADER_LEN - carry + uint4korr(&header[EVENT_LEN_OFFSET]); carry= 0; } + /* if there is anything to write, process it. */ + if(likely(length > 0)) { - do { - DBUG_ASSERT((hdr_offs + max(EVENT_LEN_OFFSET, LOG_POS_OFFSET) + 4) <= length); + /* + next header beyond current read-buffer? we'll get it later + (though not necessarily in the very next iteration). + */ - val= uint4korr((char *)cache->read_pos + hdr_offs + LOG_POS_OFFSET) + group; - int4store((char *)cache->read_pos + hdr_offs + LOG_POS_OFFSET, val); - hdr_offs += uint4korr((char *)cache->read_pos + hdr_offs + EVENT_LEN_OFFSET); + if (hdr_offs >= length) + hdr_offs -= length; + else + { - /* header beyond current read-buffer? */ - if (hdr_offs >= length) - { - hdr_offs -= length; - break; - } + /* process all event-headers in this (partial) cache. */ - /* split header? */ - if (hdr_offs + LOG_EVENT_HEADER_LEN > length) - { - carry= length - hdr_offs; + do { - memcpy(header, (char *)cache->read_pos + hdr_offs, carry); - length -= carry; - } + /* + partial header only? save what we can get, process once + we get the rest. + */ - } while (hdr_offs < length); + if (hdr_offs + LOG_EVENT_HEADER_LEN > length) + { + carry= length - hdr_offs; + memcpy(header, (char *)cache->read_pos + hdr_offs, carry); + length= hdr_offs; + } + else + { + /* we've got a full event-header, and it came in one piece */ + + char *log_pos= cache->read_pos + hdr_offs + LOG_POS_OFFSET; + + /* fix end_log_pos */ + val= uint4korr(log_pos) + group; + int4store(log_pos, val); + + /* next event header at ... */ + log_pos= (char *)cache->read_pos + hdr_offs + EVENT_LEN_OFFSET; + hdr_offs += uint4korr(log_pos); + + } + } while (hdr_offs < length); + } } /* Write data to the binary log file */ From 5c3273f19d998ec650206ca324e8629895ca9187 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.(none)" <> Date: Tue, 26 Jun 2007 12:26:21 +0200 Subject: [PATCH 021/127] Bug#25657 mysql-test-run.pl kill itself under ActiveState perl - Various fixes for running mysql-test-run.pl on ActiveState perl for windows. Reading it's source in win32/win32.c helps... --- mysql-test/lib/mtr_process.pl | 17 ++++++++++++++++- mysql-test/lib/mtr_timer.pl | 9 +++++++-- mysql-test/mysql-test-run.pl | 27 ++++++++++++++++++--------- 3 files changed, 41 insertions(+), 12 deletions(-) diff --git a/mysql-test/lib/mtr_process.pl b/mysql-test/lib/mtr_process.pl index e4fd3390c5f..57f9cf571bb 100644 --- a/mysql-test/lib/mtr_process.pl +++ b/mysql-test/lib/mtr_process.pl @@ -611,6 +611,11 @@ sub mtr_check_stop_servers ($) { if ( $pid ) { # Server is still alive, put it in list to be hard killed + if ($::glob_win32_perl) + { + # Kill the real process if it's known + $pid= $srv->{'real_pid'} if ($srv->{'real_pid'}); + } $kill_pids{$pid}= 1; # Write a message to the process's error log (if it has one) @@ -664,6 +669,16 @@ sub mtr_check_stop_servers ($) { } } + if ($::glob_win32_perl and $srv->{'real_pid'}) + { + # Wait for the pseudo pid - if the real_pid was known + # the pseudo pid has not been waited for yet, wai blocking + # since it's "such a simple program" + mtr_verbose("Wait for pseudo process $srv->{'pid'}"); + my $ret_pid= waitpid($srv->{'pid'}, 0); + mtr_verbose("Pseudo process $ret_pid died"); + } + $srv->{'pid'}= 0; } } @@ -1041,7 +1056,7 @@ sub sleep_until_file_created ($$$) { { if ( -r $pidfile ) { - return $pid; + return 1; } # Check if it died after the fork() was successful diff --git a/mysql-test/lib/mtr_timer.pl b/mysql-test/lib/mtr_timer.pl index 523799f7cf5..86a9f58514f 100644 --- a/mysql-test/lib/mtr_timer.pl +++ b/mysql-test/lib/mtr_timer.pl @@ -97,9 +97,14 @@ sub mtr_timer_start($$$) { # clearing the signal handler. $SIG{INT}= 'DEFAULT'; + $SIG{TERM}= sub { + mtr_verbose("timer woke up, exiting!"); + exit(0); + }; + $0= "mtr_timer(timers,$name,$duration)"; - mtr_verbose("timer child $name, sleep $duration"); sleep($duration); + mtr_verbose("timer expired after $duration seconds"); exit(0); } } @@ -118,7 +123,7 @@ sub mtr_timer_stop ($$) { # FIXME as Cygwin reuses pids fast, maybe check that is # the expected process somehow?! - kill(9, $tpid); + kill(15, $tpid); # As the timers are so simple programs, we trust them to terminate, # and use blocking wait for it. We wait just to avoid a zombie. diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 08090e5b96f..c58ed308bd8 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -2579,10 +2579,19 @@ sub ndbcluster_wait_started($$){ sub mysqld_wait_started($){ my $mysqld= shift; - my $res= sleep_until_file_created($mysqld->{'path_pid'}, - $mysqld->{'start_timeout'}, - $mysqld->{'pid'}); - return $res == 0; + if (sleep_until_file_created($mysqld->{'path_pid'}, + $mysqld->{'start_timeout'}, + $mysqld->{'pid'}) == 0) + { + # Failed to wait for pid file + return 1; + } + + # Get the "real pid" of the process, it will be used for killing + # the process in ActiveState's perl on windows + $mysqld->{'real_pid'}= mtr_get_pid_from_file($mysqld->{'path_pid'}); + + return 0; } @@ -3720,7 +3729,6 @@ sub mysqld_arguments ($$$$) { mtr_add_arg($args, "%s--no-defaults", $prefix); - mtr_add_arg($args, "%s--console", $prefix); mtr_add_arg($args, "%s--basedir=%s", $prefix, $path_my_basedir); mtr_add_arg($args, "%s--character-sets-dir=%s", $prefix, $path_charsetsdir); @@ -4093,6 +4101,7 @@ sub stop_all_servers () { push(@kill_pids,{ pid => $mysqld->{'pid'}, + real_pid => $mysqld->{'real_pid'}, pidfile => $mysqld->{'path_pid'}, sockfile => $mysqld->{'path_sock'}, port => $mysqld->{'port'}, @@ -4300,6 +4309,7 @@ sub run_testcase_stop_servers($$$) { push(@kill_pids,{ pid => $mysqld->{'pid'}, + real_pid => $mysqld->{'real_pid'}, pidfile => $mysqld->{'path_pid'}, sockfile => $mysqld->{'path_sock'}, port => $mysqld->{'port'}, @@ -4351,6 +4361,7 @@ sub run_testcase_stop_servers($$$) { push(@kill_pids,{ pid => $mysqld->{'pid'}, + real_pid => $mysqld->{'real_pid'}, pidfile => $mysqld->{'path_pid'}, sockfile => $mysqld->{'path_sock'}, port => $mysqld->{'port'}, @@ -4775,12 +4786,10 @@ sub run_mysqltest ($) { mtr_add_arg($args, "%s", $_) for @args_saved; } - mtr_add_arg($args, "--test-file"); - mtr_add_arg($args, $tinfo->{'path'}); + mtr_add_arg($args, "--test-file=%s", $tinfo->{'path'}); if ( defined $tinfo->{'result_file'} ) { - mtr_add_arg($args, "--result-file"); - mtr_add_arg($args, $tinfo->{'result_file'}); + mtr_add_arg($args, "--result-file=%s", $tinfo->{'result_file'}); } if ( $opt_record ) From 26398867119f06a05dbf6cb6412fca4f20cda52a Mon Sep 17 00:00:00 2001 From: "tsmith@maint1.mysql.com" <> Date: Tue, 26 Jun 2007 13:15:43 +0200 Subject: [PATCH 022/127] Bug #29245: Bad Merge Caused Error Codes Conflict between 5.0/5.1 Fix some error messages so that all error codes are equivalent in 5.0 and 5.1 --- mysql-test/r/backup.result | 2 +- mysql-test/r/events_bugs.result | 16 ++--- mysql-test/r/events_trans.result | 2 +- mysql-test/r/ndb_dd_basic.result | 6 +- mysql-test/r/ndb_dd_ddl.result | 2 +- mysql-test/r/ndb_gis.result | 4 +- mysql-test/r/ndb_row_format.result | 2 +- mysql-test/r/rpl_extraCol_innodb.result | 28 ++++---- mysql-test/r/rpl_extraCol_myisam.result | 28 ++++---- mysql-test/r/rpl_incident.result | 4 +- mysql-test/r/rpl_ndb_extraCol.result | 28 ++++---- mysql-test/r/rpl_row_tabledefs_2myisam.result | 16 ++--- mysql-test/r/rpl_row_tabledefs_3innodb.result | 16 ++--- mysql-test/r/rpl_sp.result | 2 +- mysql-test/r/select.result | 2 +- mysql-test/r/show_check.result | 2 +- mysql-test/r/sp.result | 8 +-- mysql-test/r/sp_gis.result | 4 +- mysql-test/r/sp_trans.result | 2 +- mysql-test/r/type_timestamp.result | 14 ++-- mysql-test/r/warnings.result | 2 +- mysql-test/r/xml.result | 18 ++--- mysql-test/t/grant.test | 2 +- mysql-test/t/partition_grant.test | 4 +- sql/mysql_priv.h | 2 +- sql/share/errmsg.txt | 68 +++++++++++-------- 26 files changed, 146 insertions(+), 138 deletions(-) diff --git a/mysql-test/r/backup.result b/mysql-test/r/backup.result index 154b577e61f..4de599f3af7 100644 --- a/mysql-test/r/backup.result +++ b/mysql-test/r/backup.result @@ -36,7 +36,7 @@ restore table t1 from '../bogus'; Table Op Msg_type Msg_text t1 restore error Failed copying .frm file Warnings: -Warning 1543 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead +Warning 1287 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead Error 29 File 'MYSQLTEST_VARDIR/bogus/t1.frm' not found (Errcode: X) restore table t1 from '../tmp'; Table Op Msg_type Msg_text diff --git a/mysql-test/r/events_bugs.result b/mysql-test/r/events_bugs.result index fae530f556b..541502607c1 100644 --- a/mysql-test/r/events_bugs.result +++ b/mysql-test/r/events_bugs.result @@ -31,7 +31,7 @@ create event e_55 on schedule at 10000101000000 do drop table t; ERROR HY000: Incorrect AT value: '10000101000000' create event e_55 on schedule at 20000101000000 do drop table t; Warnings: -Note 1584 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created +Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created show events; Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator create event e_55 on schedule at 20200101000000 starts 10000101000000 do drop table t; @@ -457,22 +457,22 @@ CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00' DO SELECT 1; Warnings: -Note 1584 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created +Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00' ENDS '1999-01-02 00:00:00' DISABLE DO SELECT 1; Warnings: -Note 1584 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created +Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created CREATE EVENT e4 ON SCHEDULE AT '1999-01-01 00:00:00' DO SELECT 1; Warnings: -Note 1584 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created +Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created CREATE EVENT e4 ON SCHEDULE AT '1999-01-01 00:00:00' DISABLE DO SELECT 1; Warnings: -Note 1584 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created +Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created SHOW EVENTS; Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator events_test e1 root@localhost +05:00 RECURRING NULL 1 DAY 2006-01-01 00:00:00 NULL ENABLED 1 @@ -482,19 +482,19 @@ The following should succeed giving a warning. ALTER EVENT e1 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00' ENDS '1999-01-02 00:00:00' ON COMPLETION PRESERVE; Warnings: -Note 1533 Event execution time is in the past. Event has been disabled +Note 1541 Event execution time is in the past. Event has been disabled CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00' ENDS '1999-01-02 00:00:00' ON COMPLETION PRESERVE DO SELECT 1; Warnings: -Note 1533 Event execution time is in the past. Event has been disabled +Note 1541 Event execution time is in the past. Event has been disabled CREATE EVENT e5 ON SCHEDULE AT '1999-01-01 00:00:00' ON COMPLETION PRESERVE DO SELECT 1; Warnings: -Note 1533 Event execution time is in the past. Event has been disabled +Note 1541 Event execution time is in the past. Event has been disabled The following should succeed without warnings. ALTER EVENT e2 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'; ALTER EVENT e3 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00' diff --git a/mysql-test/r/events_trans.result b/mysql-test/r/events_trans.result index a9829db0c61..1f87bcea68e 100644 --- a/mysql-test/r/events_trans.result +++ b/mysql-test/r/events_trans.result @@ -63,7 +63,7 @@ begin work; insert into t1 (a) values ("OK: create event if not exists"); create event if not exists e1 on schedule every 2 day do select 2; Warnings: -Note 1526 Event 'e1' already exists +Note 1534 Event 'e1' already exists rollback work; select * from t1; a diff --git a/mysql-test/r/ndb_dd_basic.result b/mysql-test/r/ndb_dd_basic.result index 7aeb156869b..bc1762ce407 100644 --- a/mysql-test/r/ndb_dd_basic.result +++ b/mysql-test/r/ndb_dd_basic.result @@ -5,20 +5,20 @@ INITIAL_SIZE 16M UNDO_BUFFER_SIZE = 1M ENGINE=MYISAM; Warnings: -Error 1466 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP' +Error 1475 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP' ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'undofile02.dat' INITIAL_SIZE = 4M ENGINE=XYZ; Warnings: Warning 1286 Unknown table engine 'XYZ' -Error 1466 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP' +Error 1475 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP' CREATE TABLESPACE ts1 ADD DATAFILE 'datafile.dat' USE LOGFILE GROUP lg1 INITIAL_SIZE 12M; Warnings: -Error 1466 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP' +Error 1475 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP' set storage_engine=ndb; CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' diff --git a/mysql-test/r/ndb_dd_ddl.result b/mysql-test/r/ndb_dd_ddl.result index 67857d39ab6..55f1f56fd0c 100644 --- a/mysql-test/r/ndb_dd_ddl.result +++ b/mysql-test/r/ndb_dd_ddl.result @@ -16,7 +16,7 @@ ERROR HY000: Failed to create LOGFILE GROUP SHOW WARNINGS; Level Code Message Error 1296 Got error 1514 'Currently there is a limit of one logfile group' from NDB -Error 1516 Failed to create LOGFILE GROUP +Error 1525 Failed to create LOGFILE GROUP CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' INITIAL_SIZE 1M diff --git a/mysql-test/r/ndb_gis.result b/mysql-test/r/ndb_gis.result index 3af7b71d72d..54f1fc23489 100644 --- a/mysql-test/r/ndb_gis.result +++ b/mysql-test/r/ndb_gis.result @@ -463,7 +463,7 @@ drop table t1; End of 4.1 tests CREATE TABLE t1 (name VARCHAR(100), square GEOMETRY); Warnings: -Error 1466 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' +Error 1475 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' INSERT INTO t1 VALUES("center", GeomFromText('POLYGON (( 0 0, 0 2, 2 2, 2 0, 0 0))')); INSERT INTO t1 VALUES("small", GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))')); INSERT INTO t1 VALUES("big", GeomFromText('POLYGON (( 0 0, 0 3, 3 3, 3 0, 0 0))')); @@ -1013,7 +1013,7 @@ drop table t1; End of 4.1 tests CREATE TABLE t1 (name VARCHAR(100), square GEOMETRY); Warnings: -Error 1466 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' +Error 1475 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' INSERT INTO t1 VALUES("center", GeomFromText('POLYGON (( 0 0, 0 2, 2 2, 2 0, 0 0))')); INSERT INTO t1 VALUES("small", GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))')); INSERT INTO t1 VALUES("big", GeomFromText('POLYGON (( 0 0, 0 3, 3 3, 3 0, 0 0))')); diff --git a/mysql-test/r/ndb_row_format.result b/mysql-test/r/ndb_row_format.result index ae165d87c5c..37c239986f6 100644 --- a/mysql-test/r/ndb_row_format.result +++ b/mysql-test/r/ndb_row_format.result @@ -8,7 +8,7 @@ ENGINE=NDB; ERROR HY000: Can't create table 'test.t1' (errno: 138) SHOW WARNINGS; Level Code Message -Error 1466 Table storage engine 'ndbcluster' does not support the create option 'Row format FIXED incompatible with variable sized attribute' +Error 1475 Table storage engine 'ndbcluster' does not support the create option 'Row format FIXED incompatible with variable sized attribute' Error 1005 Can't create table 'test.t1' (errno: 138) CREATE TABLE t1 ( a INT KEY, diff --git a/mysql-test/r/rpl_extraCol_innodb.result b/mysql-test/r/rpl_extraCol_innodb.result index cfce12b594e..c3159987b30 100644 --- a/mysql-test/r/rpl_extraCol_innodb.result +++ b/mysql-test/r/rpl_extraCol_innodb.result @@ -72,7 +72,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 Skip_Counter 0 Exec_Master_Log_Pos # @@ -90,7 +90,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -134,7 +134,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 Skip_Counter 0 Exec_Master_Log_Pos # @@ -152,7 +152,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -196,7 +196,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 Skip_Counter 0 Exec_Master_Log_Pos # @@ -214,7 +214,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -257,7 +257,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 Skip_Counter 0 Exec_Master_Log_Pos # @@ -275,7 +275,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3; *** Drop t6 *** @@ -369,7 +369,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 Skip_Counter 0 Exec_Master_Log_Pos # @@ -387,7 +387,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -430,7 +430,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 Skip_Counter 0 Exec_Master_Log_Pos # @@ -448,7 +448,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -755,7 +755,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 Skip_Counter 0 Exec_Master_Log_Pos # @@ -773,7 +773,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; diff --git a/mysql-test/r/rpl_extraCol_myisam.result b/mysql-test/r/rpl_extraCol_myisam.result index b250911368c..9d6c3ed5d33 100644 --- a/mysql-test/r/rpl_extraCol_myisam.result +++ b/mysql-test/r/rpl_extraCol_myisam.result @@ -72,7 +72,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 Skip_Counter 0 Exec_Master_Log_Pos # @@ -90,7 +90,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -134,7 +134,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 Skip_Counter 0 Exec_Master_Log_Pos # @@ -152,7 +152,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -196,7 +196,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 Skip_Counter 0 Exec_Master_Log_Pos # @@ -214,7 +214,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -257,7 +257,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 Skip_Counter 0 Exec_Master_Log_Pos # @@ -275,7 +275,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3; *** Drop t6 *** @@ -369,7 +369,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 Skip_Counter 0 Exec_Master_Log_Pos # @@ -387,7 +387,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -430,7 +430,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 Skip_Counter 0 Exec_Master_Log_Pos # @@ -448,7 +448,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -755,7 +755,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 Skip_Counter 0 Exec_Master_Log_Pos # @@ -773,7 +773,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; diff --git a/mysql-test/r/rpl_incident.result b/mysql-test/r/rpl_incident.result index 9d82798b5f4..84fd9c0ee4f 100644 --- a/mysql-test/r/rpl_incident.result +++ b/mysql-test/r/rpl_incident.result @@ -44,7 +44,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1586 +Last_Errno 1587 Last_Error The incident LOST_EVENTS occured on the master. Message: Skip_Counter 0 Exec_Master_Log_Pos # @@ -62,7 +62,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1586 +Last_SQL_Errno 1587 Last_SQL_Error The incident LOST_EVENTS occured on the master. Message: SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; diff --git a/mysql-test/r/rpl_ndb_extraCol.result b/mysql-test/r/rpl_ndb_extraCol.result index 5afc9c1db77..edb4dfbf392 100644 --- a/mysql-test/r/rpl_ndb_extraCol.result +++ b/mysql-test/r/rpl_ndb_extraCol.result @@ -72,7 +72,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 Skip_Counter 0 Exec_Master_Log_Pos # @@ -90,7 +90,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -134,7 +134,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 Skip_Counter 0 Exec_Master_Log_Pos # @@ -152,7 +152,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -196,7 +196,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 Skip_Counter 0 Exec_Master_Log_Pos # @@ -214,7 +214,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -257,7 +257,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 Skip_Counter 0 Exec_Master_Log_Pos # @@ -275,7 +275,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3; *** Drop t6 *** @@ -369,7 +369,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 Skip_Counter 0 Exec_Master_Log_Pos # @@ -387,7 +387,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -430,7 +430,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 Skip_Counter 0 Exec_Master_Log_Pos # @@ -448,7 +448,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -756,7 +756,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 Skip_Counter 0 Exec_Master_Log_Pos # @@ -774,7 +774,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; diff --git a/mysql-test/r/rpl_row_tabledefs_2myisam.result b/mysql-test/r/rpl_row_tabledefs_2myisam.result index d8ff1907e28..eb0c1cdc81d 100644 --- a/mysql-test/r/rpl_row_tabledefs_2myisam.result +++ b/mysql-test/r/rpl_row_tabledefs_2myisam.result @@ -165,7 +165,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Table width mismatch - received 2 columns, test.t2 has 1 columns Skip_Counter 0 Exec_Master_Log_Pos # @@ -183,7 +183,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Table width mismatch - received 2 columns, test.t2 has 1 columns SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -208,7 +208,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4 Skip_Counter 0 Exec_Master_Log_Pos # @@ -226,7 +226,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -251,7 +251,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4 Skip_Counter 0 Exec_Master_Log_Pos # @@ -269,7 +269,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -294,7 +294,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4 Skip_Counter 0 Exec_Master_Log_Pos # @@ -312,7 +312,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; diff --git a/mysql-test/r/rpl_row_tabledefs_3innodb.result b/mysql-test/r/rpl_row_tabledefs_3innodb.result index 17c591327c2..287ab072e3d 100644 --- a/mysql-test/r/rpl_row_tabledefs_3innodb.result +++ b/mysql-test/r/rpl_row_tabledefs_3innodb.result @@ -165,7 +165,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Table width mismatch - received 2 columns, test.t2 has 1 columns Skip_Counter 0 Exec_Master_Log_Pos # @@ -183,7 +183,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Table width mismatch - received 2 columns, test.t2 has 1 columns SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -208,7 +208,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4 Skip_Counter 0 Exec_Master_Log_Pos # @@ -226,7 +226,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -251,7 +251,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4 Skip_Counter 0 Exec_Master_Log_Pos # @@ -269,7 +269,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; @@ -294,7 +294,7 @@ Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table -Last_Errno 1523 +Last_Errno 1532 Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4 Skip_Counter 0 Exec_Master_Log_Pos # @@ -312,7 +312,7 @@ Seconds_Behind_Master # Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error -Last_SQL_Errno 1523 +Last_SQL_Errno 1532 Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; diff --git a/mysql-test/r/rpl_sp.result b/mysql-test/r/rpl_sp.result index 208c46c5fab..323926e2a9e 100644 --- a/mysql-test/r/rpl_sp.result +++ b/mysql-test/r/rpl_sp.result @@ -181,7 +181,7 @@ end| ERROR HY000: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) set global log_bin_trust_routine_creators=1; Warnings: -Warning 1543 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead +Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead set global log_bin_trust_function_creators=0; set global log_bin_trust_function_creators=1; set global log_bin_trust_function_creators=1; diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index 92ceca2162f..a148d1029df 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -3492,7 +3492,7 @@ SELECT 0.9888889889 * 1.011111411911; 0.9998769417899202067879 prepare stmt from 'select 1 as " a "'; Warnings: -Warning 1548 Leading spaces are removed from name ' a ' +Warning 1466 Leading spaces are removed from name ' a ' execute stmt; a 1 diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result index 66cd929ee05..c07aadff042 100644 --- a/mysql-test/r/show_check.result +++ b/mysql-test/r/show_check.result @@ -712,7 +712,7 @@ drop database mysqltest; show full plugin; show warnings; Level Code Message -Warning 1543 The syntax 'SHOW PLUGIN' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW PLUGINS' instead +Warning 1287 The syntax 'SHOW PLUGIN' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW PLUGINS' instead show plugin; show plugins; create database `mysqlttest\1`; diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result index 98d73f7536c..558daec5c30 100644 --- a/mysql-test/r/sp.result +++ b/mysql-test/r/sp.result @@ -5665,7 +5665,7 @@ drop function if exists pi; create function pi() returns varchar(50) return "pie, my favorite desert."; Warnings: -Note 1581 This function 'pi' has the same name as a native function +Note 1582 This function 'pi' has the same name as a native function SET @save_sql_mode=@@sql_mode; SET SQL_MODE='IGNORE_SPACE'; select pi(), pi (); @@ -5714,15 +5714,15 @@ use test; create function `database`() returns varchar(50) return "Stored function database"; Warnings: -Note 1581 This function 'database' has the same name as a native function +Note 1582 This function 'database' has the same name as a native function create function `current_user`() returns varchar(50) return "Stored function current_user"; Warnings: -Note 1581 This function 'current_user' has the same name as a native function +Note 1582 This function 'current_user' has the same name as a native function create function md5(x varchar(50)) returns varchar(50) return "Stored function md5"; Warnings: -Note 1581 This function 'md5' has the same name as a native function +Note 1582 This function 'md5' has the same name as a native function SET SQL_MODE='IGNORE_SPACE'; select database(), database (); database() database () diff --git a/mysql-test/r/sp_gis.result b/mysql-test/r/sp_gis.result index fddf2a6bc18..b4fe0872d64 100644 --- a/mysql-test/r/sp_gis.result +++ b/mysql-test/r/sp_gis.result @@ -7,11 +7,11 @@ return 1; create function x() returns int return 2; Warnings: -Note 1581 This function 'x' has the same name as a native function +Note 1582 This function 'x' has the same name as a native function create function y() returns int return 3; Warnings: -Note 1581 This function 'y' has the same name as a native function +Note 1582 This function 'y' has the same name as a native function select a(); a() 1 diff --git a/mysql-test/r/sp_trans.result b/mysql-test/r/sp_trans.result index a0d687e565b..abd454ac907 100644 --- a/mysql-test/r/sp_trans.result +++ b/mysql-test/r/sp_trans.result @@ -535,7 +535,7 @@ use db_bug7787| CREATE PROCEDURE p1() SHOW INNODB STATUS; | Warnings: -Warning 1543 The syntax 'SHOW INNODB STATUS' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW ENGINE INNODB STATUS' instead +Warning 1287 The syntax 'SHOW INNODB STATUS' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW ENGINE INNODB STATUS' instead GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost| DROP DATABASE db_bug7787| drop user user_bug7787@localhost| diff --git a/mysql-test/r/type_timestamp.result b/mysql-test/r/type_timestamp.result index c075a199dae..7caf7e78fe9 100644 --- a/mysql-test/r/type_timestamp.result +++ b/mysql-test/r/type_timestamp.result @@ -101,13 +101,13 @@ create table t1 (t2 timestamp(2), t4 timestamp(4), t6 timestamp(6), t8 timestamp(8), t10 timestamp(10), t12 timestamp(12), t14 timestamp(14)); Warnings: -Warning 1543 The syntax 'TIMESTAMP(2)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead -Warning 1543 The syntax 'TIMESTAMP(4)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead -Warning 1543 The syntax 'TIMESTAMP(6)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead -Warning 1543 The syntax 'TIMESTAMP(8)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead -Warning 1543 The syntax 'TIMESTAMP(10)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead -Warning 1543 The syntax 'TIMESTAMP(12)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead -Warning 1543 The syntax 'TIMESTAMP(14)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead +Warning 1287 The syntax 'TIMESTAMP(2)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead +Warning 1287 The syntax 'TIMESTAMP(4)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead +Warning 1287 The syntax 'TIMESTAMP(6)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead +Warning 1287 The syntax 'TIMESTAMP(8)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead +Warning 1287 The syntax 'TIMESTAMP(10)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead +Warning 1287 The syntax 'TIMESTAMP(12)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead +Warning 1287 The syntax 'TIMESTAMP(14)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead insert t1 values (0,0,0,0,0,0,0), ("1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59", diff --git a/mysql-test/r/warnings.result b/mysql-test/r/warnings.result index 01b1c77887f..2929328a9b1 100644 --- a/mysql-test/r/warnings.result +++ b/mysql-test/r/warnings.result @@ -168,7 +168,7 @@ max_error_count 10 drop table t1; set table_type=MYISAM; Warnings: -Warning 1543 The syntax 'table_type' is deprecated and will be removed in MySQL 5.2. Please use 'storage_engine' instead +Warning 1287 The syntax 'table_type' is deprecated and will be removed in MySQL 5.2. Please use 'storage_engine' instead create table t1 (a int); insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10); update t1 set a='abc'; diff --git a/mysql-test/r/xml.result b/mysql-test/r/xml.result index f71b8cadabb..95ad19a886f 100644 --- a/mysql-test/r/xml.result +++ b/mysql-test/r/xml.result @@ -647,32 +647,32 @@ select extractValue('a','/a'); extractValue('a','/a') NULL Warnings: -Warning 1513 Incorrect XML value: 'parse error at line 1 pos 5: unexpected END-OF-INPUT' +Warning 1522 Incorrect XML value: 'parse error at line 1 pos 5: unexpected END-OF-INPUT' select extractValue('a<','/a'); extractValue('a<','/a') NULL Warnings: -Warning 1513 Incorrect XML value: 'parse error at line 1 pos 6: END-OF-INPUT unexpected (ident or '/' wanted)' +Warning 1522 Incorrect XML value: 'parse error at line 1 pos 6: END-OF-INPUT unexpected (ident or '/' wanted)' select extractValue('aaaa' wanted)' +Warning 1522 Incorrect XML value: 'parse error at line 1 pos 8: END-OF-INPUT unexpected ('>' wanted)' select extractValue('a','/a'); extractValue('a','/a') NULL Warnings: -Warning 1513 Incorrect XML value: 'parse error at line 1 pos 12: '' unexpected (END-OF-INPUT wanted)' +Warning 1522 Incorrect XML value: 'parse error at line 1 pos 12: '' unexpected (END-OF-INPUT wanted)' select extractValue('a','/a'); extractValue('a','/a') NULL Warnings: -Warning 1513 Incorrect XML value: 'parse error at line 1 pos 7: '>' unexpected (ident or string wanted)' +Warning 1522 Incorrect XML value: 'parse error at line 1 pos 7: '>' unexpected (ident or string wanted)' select extractValue('1','position()'); ERROR HY000: XPATH syntax error: '' select extractValue('1','last()'); @@ -723,17 +723,17 @@ select extractValue('<01>10:39:15<02>140','//* extractValue('<01>10:39:15<02>140','//*') NULL Warnings: -Warning 1513 Incorrect XML value: 'parse error at line 1 pos 13: unknown token unexpected (ident or '/' wanted)' +Warning 1522 Incorrect XML value: 'parse error at line 1 pos 13: unknown token unexpected (ident or '/' wanted)' select extractValue('<.>test','//*'); extractValue('<.>test','//*') NULL Warnings: -Warning 1513 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)' +Warning 1522 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)' select extractValue('<->test','//*'); extractValue('<->test','//*') NULL Warnings: -Warning 1513 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)' +Warning 1522 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)' select extractValue('<:>test','//*'); extractValue('<:>test','//*') test diff --git a/mysql-test/t/grant.test b/mysql-test/t/grant.test index 17c5f1bbe8f..e33712e1ebf 100644 --- a/mysql-test/t/grant.test +++ b/mysql-test/t/grant.test @@ -1271,6 +1271,6 @@ grant select on test.* to юзер_юзер@localhost; --exec $MYSQL --default-character-set=utf8 --user=юзер_юзер -e "select user()" revoke all on test.* from юзер_юзер@localhost; drop user юзер_юзер@localhost; ---error 1573 +--error ER_WRONG_STRING_LENGTH grant select on test.* to очень_длинный_юзер@localhost; set names default; diff --git a/mysql-test/t/partition_grant.test b/mysql-test/t/partition_grant.test index 0d30ad01c7a..cf944e507fd 100644 --- a/mysql-test/t/partition_grant.test +++ b/mysql-test/t/partition_grant.test @@ -63,13 +63,13 @@ insert into t1 values (1); grant alter on mysqltest_1.* to mysqltest_1@localhost; connect (conn4,localhost,mysqltest_1,,mysqltest_1); connection conn4; ---error 1514 +--error ER_NO_PARTITION_FOR_GIVEN_VALUE alter table t1 partition by list (s1) (partition p1 values in (2)); connection default; grant select, alter on mysqltest_1.* to mysqltest_1@localhost; disconnect conn4; connect (conn5,localhost,mysqltest_1,,mysqltest_1); ---error 1514 +--error ER_NO_PARTITION_FOR_GIVEN_VALUE alter table t1 partition by list (s1) (partition p1 values in (2)); disconnect conn5; connection default; diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 5a50b03282f..e6455a82c33 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -98,7 +98,7 @@ char* query_table_status(THD *thd,const char *db,const char *table_name); DBUG_ASSERT(strncmp(Ver, MYSQL_SERVER_VERSION, sizeof(Ver)-1) > 0); \ if (((uchar*)Thd) != NULL) \ push_warning_printf(((THD *)Thd), MYSQL_ERROR::WARN_LEVEL_WARN, \ - ER_WARN_DEPRECATED_SYNTAX, ER(ER_WARN_DEPRECATED_SYNTAX), \ + ER_WARN_DEPRECATED_SYNTAX, ER(ER_WARN_DEPRECATED_SYNTAX_WITH_VER), \ (Old), (Ver), (New)); \ else \ sql_print_warning("The syntax '%s' is deprecated and will be removed " \ diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index 1dde977800b..37176a04c32 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -1478,6 +1478,8 @@ ER_DUP_KEYNAME 42000 S1009 spa "Nombre de clave duplicado '%-.192s'" swe "Nyckelnamn '%-.192s' finns flera gånger" ukr "äÕÂÌÀÀÞÅ ¦Í'Ñ ËÌÀÞÁ '%-.192s'" +# When using this error code, please use ER(ER_DUP_ENTRY_WITH_KEY_NAME) +# for the message string. See, for example, code in handler.cc. ER_DUP_ENTRY 23000 S1009 cze "Zdvojen-Bý klíè '%-.192s' (èíslo klíèe %d)" dan "Ens værdier '%-.192s' for indeks %d" @@ -5022,7 +5024,9 @@ ER_UNKNOWN_STORAGE_ENGINE 42000 ger "Unbekannte Speicher-Engine '%s'" por "Motor de tabela desconhecido '%s'" spa "Desconocido motor de tabla '%s'" -ER_UNUSED_1 +# When using this error code, use ER(ER_WARN_DEPRECATED_SYNTAX_WITH_VER) +# for the message string. See, for example, code in mysql_priv.h. +ER_WARN_DEPRECATED_SYNTAX eng "'%s' is deprecated; use '%s' instead" ger "'%s' ist veraltet. Bitte benutzen Sie '%s'" por "'%s' é desatualizado. Use '%s' em seu lugar" @@ -5606,8 +5610,6 @@ ER_SP_RECURSION_LIMIT ER_SP_PROC_TABLE_CORRUPT eng "Failed to load routine %-.192s. The table mysql.proc is missing, corrupt, or contains bad data (internal code %d)" ger "Routine %-.192s konnte nicht geladen werden. Die Tabelle mysql.proc fehlt, ist beschädigt, oder enthält fehlerhaften Daten (interner Code: %d)" -ER_FOREIGN_SERVER_EXISTS - eng "The foreign server, %s, you are trying to create already exists." ER_SP_WRONG_NAME 42000 eng "Incorrect routine name '%-.192s'" ger "Ungültiger Routinenname '%-.192s'" @@ -5629,6 +5631,34 @@ ER_NON_GROUPING_FIELD_USED 42000 ER_TABLE_CANT_HANDLE_SPKEYS eng "The used table type doesn't support SPATIAL indexes" ger "Der verwendete Tabellentyp unterstützt keine SPATIAL-Indizes" +ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA + eng "Triggers can not be created on system tables" + ger "Trigger können nicht auf Systemtabellen erzeugt werden" +ER_REMOVED_SPACES + eng "Leading spaces are removed from name '%s'" + ger "Führende Leerzeichen werden aus dem Namen '%s' entfernt" +ER_AUTOINC_READ_FAILED + eng "Failed to read auto-increment value from storage engine" + ger "Lesen des Autoincrement-Werts von der Speicher-Engine fehlgeschlagen" +ER_USERNAME + eng "user name" + ger "Benutzername" +ER_HOSTNAME + eng "host name" + ger "Hostname" +ER_WRONG_STRING_LENGTH + eng "String '%-.70s' is too long for %s (should be no longer than %d)" + ger "String '%-.70s' ist zu lang für %s (sollte nicht länger sein als %d)" +ER_NON_INSERTABLE_TABLE + eng "The target table %-.100s of the %s is not insertable-into" + ger "Die Zieltabelle %-.100s von %s ist nicht einfügbar" +ER_ADMIN_WRONG_MRG_TABLE + eng "Table '%-.64s' is differently defined or of non-MyISAM type or doesn't exist" +ER_FOREIGN_SERVER_EXISTS + eng "The foreign server, %s, you are trying to create already exists." +ER_FOREIGN_SERVER_DOESNT_EXIST + eng "The foreign server name you are trying to reference does not exist. Data source error: %-.64s" + ger "Die externe Verbindung, auf die Sie zugreifen wollen, existiert nicht. Datenquellenfehlermeldung: %-.64s" ER_ILLEGAL_HA_CREATE_OPTION eng "Table storage engine '%-.64s' does not support the create option '%.64s'" ger "Speicher-Engine '%-.64s' der Tabelle unterstützt die Option '%.64s' nicht" @@ -5848,9 +5878,6 @@ ER_BINLOG_ROW_WRONG_TABLE_DEF ER_BINLOG_ROW_RBR_TO_SBR eng "Slave running with --log-slave-updates must use row-based binary logging to be able to replicate row-based binary log events" ger "Slave, die mit --log-slave-updates laufen, müssen zeilenbasiertes Loggen verwenden, um zeilenbasierte Binärlog-Ereignisse loggen zu können" -ER_FOREIGN_SERVER_DOESNT_EXIST - eng "The foreign server name you are trying to reference does not exist. Data source error: %-.64s" - ger "Die externe Verbindung, auf die Sie zugreifen wollen, existiert nicht. Datenquellenfehlermeldung: %-.64s" ER_EVENT_ALREADY_EXISTS eng "Event '%-.192s' already exists" ger "Event '%-.192s' existiert bereits" @@ -5901,7 +5928,9 @@ ER_EVENT_DATA_TOO_LONG ER_DROP_INDEX_FK eng "Cannot drop index '%-.192s': needed in a foreign key constraint" ger "Kann Index '%-.192s' nicht löschen: wird für einen Fremdschlüssel benötigt" -ER_WARN_DEPRECATED_SYNTAX +# When using this error message, use the ER_WARN_DEPRECATED_SYNTAX error +# code. See, for example, code in mysql_priv.h. +ER_WARN_DEPRECATED_SYNTAX_WITH_VER eng "The syntax '%s' is deprecated and will be removed in MySQL %s. Please use %s instead" ger "Die Syntax '%s' ist veraltet und wird in MySQL %s entfernt. Bitte benutzen Sie statt dessen %s" ER_CANT_WRITE_LOCK_LOG_TABLE @@ -5916,9 +5945,6 @@ ER_FOREIGN_DUPLICATE_KEY 23000 S1009 ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE eng "Column count of mysql.%s is wrong. Expected %d, found %d. Created with MySQL %d, now running %d. Please use mysql_upgrade to fix this error." ger "Spaltenanzahl von mysql.%s falsch. %d erwartet, aber %d erhalten. Erzeugt mit MySQL %d, jetzt unter %d. Bitte benutzen Sie mysql_upgrade, um den Fehler zu beheben" -ER_REMOVED_SPACES - eng "Leading spaces are removed from name '%s'" - ger "Führende Leerzeichen werden aus dem Namen '%s' entfernt" ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR eng "Cannot switch out of the row-based binary log format when the session has open temporary tables" ger "Kann nicht aus dem zeilenbasierten Binärlog-Format herauswechseln, wenn die Sitzung offene temporäre Tabellen hat" @@ -5975,9 +6001,6 @@ ER_BASE64_DECODE_ERROR eng "Decoding of base64 string failed" swe "Avkodning av base64 sträng misslyckades" ger "Der Server hat keine zeilenbasierte Replikation" -ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA - eng "Triggers can not be created on system tables" - ger "Trigger können nicht auf Systemtabellen erzeugt werden" ER_EVENT_RECURSION_FORBIDDEN eng "Recursion of EVENT DDL statements is forbidden when body is present" ger "Rekursivität von EVENT-DDL-Anweisungen ist unzulässig wenn ein Hauptteil (Body) existiert" @@ -5987,27 +6010,12 @@ ER_EVENTS_DB_ERROR ER_ONLY_INTEGERS_ALLOWED eng "Only integers allowed as number here" ger "An dieser Stelle sind nur Ganzzahlen zulässig" -ER_AUTOINC_READ_FAILED - eng "Failed to read auto-increment value from storage engine" - ger "Lesen des Autoincrement-Werts von der Speicher-Engine fehlgeschlagen" -ER_USERNAME - eng "user name" - ger "Benutzername" -ER_HOSTNAME - eng "host name" - ger "Hostname" -ER_WRONG_STRING_LENGTH - eng "String '%-.70s' is too long for %s (should be no longer than %d)" - ger "String '%-.70s' ist zu lang für %s (sollte nicht länger sein als %d)" ER_UNSUPORTED_LOG_ENGINE eng "This storage engine cannot be used for log tables"" ger "Diese Speicher-Engine kann für Logtabellen nicht verwendet werden" ER_BAD_LOG_STATEMENT eng "You cannot '%s' a log table if logging is enabled" ger "Sie können eine Logtabelle nicht '%s', wenn Loggen angeschaltet ist" -ER_NON_INSERTABLE_TABLE - eng "The target table %-.100s of the %s is not insertable-into" - ger "Die Zieltabelle %-.100s von %s ist nicht einfügbar" ER_CANT_RENAME_LOG_TABLE eng "Cannot rename '%s'. When logging enabled, rename to/from log table must rename two tables: the log table to an archive table and another table back to '%s'" ger "Kann '%s' nicht umbenennen. Wenn Loggen angeschaltet ist, müssen beim Umbenennen zu/von einer Logtabelle zwei Tabellen angegeben werden: die Logtabelle zu einer Archivtabelle und eine weitere Tabelle zurück zu '%s'" @@ -6023,6 +6031,8 @@ ER_WRONG_PARAMETERS_TO_STORED_FCT 42000 ER_NATIVE_FCT_NAME_COLLISION eng "This function '%-.192s' has the same name as a native function" ger "Die Funktion '%-.192s' hat denselben Namen wie eine native Funktion" +# When using this error message, use the ER_DUP_ENTRY error code. See, for +# example, code in handler.cc. ER_DUP_ENTRY_WITH_KEY_NAME 23000 S1009 cze "Zvojen-Bý klíè '%-.64s' (èíslo klíèe '%-.192s')" dan "Ens værdier '%-.64s' for indeks '%-.192s'" @@ -6059,8 +6069,6 @@ ER_SLAVE_INCIDENT eng "The incident %s occured on the master. Message: %-.64s" ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT eng "Table has no partition for some existing values" -ER_ADMIN_WRONG_MRG_TABLE - eng "Table '%-.64s' is differently defined or of non-MyISAM type or doesn't exist" ER_BINLOG_UNSAFE_STATEMENT eng "Statement is not safe to log in statement format." swe "Detta är inte säkert att logga i statement-format." From 058877e05ecd95969b8cb672bb6bc5ebae9f3de1 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.(none)" <> Date: Tue, 26 Jun 2007 14:18:53 +0200 Subject: [PATCH 023/127] Bug #29133 mysqld does not exit during shutdown - Fix faulty merge by adding back the 'pthread_kill' call that wakes up the select thread --- sql/mysqld.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 12cab1c6de6..cdb6ee616db 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -762,6 +762,7 @@ static void close_connections(void) DBUG_PRINT("info",("Waiting for select thread")); #ifndef DONT_USE_THR_ALARM + if (pthread_kill(select_thread, thr_client_alarm)) break; // allready dead #endif set_timespec(abstime, 2); From b1827ecb0420f597b5a2b3806fd7e57093bd434b Mon Sep 17 00:00:00 2001 From: "iggy@amd64.(none)" <> Date: Tue, 26 Jun 2007 11:26:01 -0400 Subject: [PATCH 024/127] Bug#24732 Executables do not include Vista manifests - Corrected manifest attributes. --- CMakeLists.txt | 2 +- win/create_manifest.js | 10 +++------- win/mysql_manifest.cmake | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 54df0befad9..d2a828c1843 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -161,7 +161,7 @@ IF(EMBED_MANIFESTS) ENDIF(NOT tmp_manifest) # Set the processor architecture. IF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64") - SET(PROCESSOR_ARCH "X64") + SET(PROCESSOR_ARCH "amd64") ELSE(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64") SET(PROCESSOR_ARCH "X86") ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64") diff --git a/win/create_manifest.js b/win/create_manifest.js index 520ecec21b8..8569bd508ff 100755 --- a/win/create_manifest.js +++ b/win/create_manifest.js @@ -1,11 +1,10 @@ /* manifest.js - Writes a custom XML manifest for each executable/library - 6 command line options must be supplied: + 5 command line options must be supplied: name - Name of the executable/library into which the mainfest will be embedded. version - Version of the executable arch - Architecture intended. - type - Application type. exe_level - Application execution level. [asInvoker|highestAvailable|requireAdministrator] outfile - Final destination where mainfest will be written. @@ -37,9 +36,6 @@ try case "arch": var app_arch= parts[1]; break; - case "type": - var app_type= parts[1]; - break; case "exe_level": var app_exe_level= parts[1]; break; @@ -50,7 +46,7 @@ try WScript.echo("Invalid argument supplied."); } } - if (i != 6) + if (i != 5) throw new Error(1, "Incorrect number of arguments."); var manifest_xml= "\r\n"; @@ -61,7 +57,7 @@ try manifest_xml+= " version=\'" + app_version + "\'"; manifest_xml+= " processorArchitecture=\'" + app_arch + "\'"; // TOADD - Add publicKeyToken attribute once we have Authenticode key. - manifest_xml+= " type=\'" + app_type + "\' />\r\n"; + manifest_xml+= " type=\'win32\' />\r\n"; // Identify the application security requirements. manifest_xml+= "\t\r\n"; manifest_xml+= "\t\t\r\n\t\t\t\r\n\t\t\t\t"; diff --git a/win/mysql_manifest.cmake b/win/mysql_manifest.cmake index b5bb6fda8fb..4c88be1d800 100755 --- a/win/mysql_manifest.cmake +++ b/win/mysql_manifest.cmake @@ -9,7 +9,7 @@ MACRO(MYSQL_EMBED_MANIFEST _target_name _required_privs) TARGET ${_target_name} PRE_LINK COMMAND cscript.exe - ARGS "${PROJECT_SOURCE_DIR}/win/create_manifest.js" name=$(ProjectName) version=${VERSION} arch=${PROCESSOR_ARCH} type=$(PlatformName) exe_level=${_required_privs} outfile=$(IntDir)\\$(TargetFileName).intermediate.manifest + ARGS "${PROJECT_SOURCE_DIR}/win/create_manifest.js" name=$(ProjectName) version=${VERSION} arch=${PROCESSOR_ARCH} exe_level=${_required_privs} outfile=$(IntDir)\\$(TargetFileName).intermediate.manifest COMMENT "Generates the contents of the manifest contents.") ADD_CUSTOM_COMMAND( TARGET ${_target_name} From 7dddab867df320f28631241468b50ff63d7b01a3 Mon Sep 17 00:00:00 2001 From: "iggy@amd64.(none)" <> Date: Tue, 26 Jun 2007 14:24:01 -0400 Subject: [PATCH 025/127] Bug#24732 Executables do not include Vista manifests - Post Merge Fixup --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 538c5cb122e..1bdb1e01612 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -174,7 +174,7 @@ IF(EMBED_MANIFESTS) ENDIF(NOT tmp_manifest) # Set the processor architecture. IF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64") - SET(PROCESSOR_ARCH "X64") + SET(PROCESSOR_ARCH "amd64") ELSE(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64") SET(PROCESSOR_ARCH "X86") ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64") From d7ba5280260ed4da5a4d7e877fca44a566cca784 Mon Sep 17 00:00:00 2001 From: "dkatz@damien-katzs-computer.local" <> Date: Tue, 26 Jun 2007 20:33:53 -0400 Subject: [PATCH 026/127] Bug #29307 status.test fails with different Table_locks_immediate Added more sleep time befoe reap to allow query to be executed. --- mysql-test/t/status.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/t/status.test b/mysql-test/t/status.test index 3f7671b18d4..6fcb82e160d 100644 --- a/mysql-test/t/status.test +++ b/mysql-test/t/status.test @@ -25,7 +25,7 @@ connection con1; --send update t1 set n = 3; connection con2; -sleep 0.5; +sleep 1; unlock tables; connection con1; reap; From 31e98955a5aa1da0fbbd8cfcfc9e9c9c74907e60 Mon Sep 17 00:00:00 2001 From: "tnurnberg@sin.intern.azundris.com" <> Date: Wed, 27 Jun 2007 08:18:24 +0200 Subject: [PATCH 027/127] Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.0-maint into mysql.com:/home/ram/work/b29079/b29079.5.0 --- Bug #22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB fix binlog-writing so that end_log_pos is given correctly even within transactions for both SHOW BINLOG and SHOW MASTER STATUS, that is as absolute values (from log start) rather than relative values (from transaction's start). --- Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-maint into sin.intern.azundris.com:/home/tnurnberg/22540/50-22540 --- Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB end_log_pos data within a transaction are relative to the start of the transaction rather than absolute. we fix those groups in situ before writing the log out. additional comments and handling for groups with very large single events, as suggested by Guilhem. --- Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint into amd64.(none):/src/bug24732/my50-bug24732 --- Merge maint1.mysql.com:/data/localhome/tsmith/bk/50 into maint1.mysql.com:/data/localhome/tsmith/bk/maint/50 --- Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB end_log_pos data within a transaction are relative to the start of the transaction rather than absolute. we fix those groups in situ before writing the log out. additional comments and handling for groups with very large single events, as suggested by Guilhem. --- Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-maint into sin.intern.azundris.com:/home/tnurnberg/22540/50-22540 --- Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-maint into sin.intern.azundris.com:/home/tnurnberg/22540/51-22540 --- Merge sin.intern.azundris.com:/home/tnurnberg/22540/50-22540 into sin.intern.azundris.com:/home/tnurnberg/22540/51-22540 --- mysql-test/r/rpl_truncate_7ndb.result | 40 ++++++------ sql/log.cc | 92 ++++++++++++++++++++------- 2 files changed, 89 insertions(+), 43 deletions(-) diff --git a/mysql-test/r/rpl_truncate_7ndb.result b/mysql-test/r/rpl_truncate_7ndb.result index 62ace911e45..602c4d55ac5 100644 --- a/mysql-test/r/rpl_truncate_7ndb.result +++ b/mysql-test/r/rpl_truncate_7ndb.result @@ -32,11 +32,11 @@ Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 4 Format_desc 1 106 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 106 Query 1 223 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB master-bin.000001 223 Query 1 287 BEGIN -master-bin.000001 287 Table_map 1 40 table_id: # (test.t1) -master-bin.000001 327 Table_map 1 98 table_id: # (mysql.ndb_apply_status) -master-bin.000001 385 Write_rows 1 157 table_id: # -master-bin.000001 444 Write_rows 1 195 table_id: # -master-bin.000001 482 Write_rows 1 233 table_id: # flags: STMT_END_F +master-bin.000001 287 Table_map 1 327 table_id: # (test.t1) +master-bin.000001 327 Table_map 1 385 table_id: # (mysql.ndb_apply_status) +master-bin.000001 385 Write_rows 1 444 table_id: # +master-bin.000001 444 Write_rows 1 482 table_id: # +master-bin.000001 482 Write_rows 1 520 table_id: # flags: STMT_END_F master-bin.000001 520 Query 1 585 COMMIT master-bin.000001 585 Query 1 665 use `test`; TRUNCATE TABLE t1 master-bin.000001 665 Query 1 741 use `test`; DROP TABLE t1 @@ -69,27 +69,27 @@ Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 4 Format_desc 1 106 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 106 Query 1 223 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB master-bin.000001 223 Query 1 287 BEGIN -master-bin.000001 287 Table_map 1 40 table_id: # (test.t1) -master-bin.000001 327 Table_map 1 98 table_id: # (mysql.ndb_apply_status) -master-bin.000001 385 Write_rows 1 157 table_id: # -master-bin.000001 444 Write_rows 1 195 table_id: # -master-bin.000001 482 Write_rows 1 233 table_id: # flags: STMT_END_F +master-bin.000001 287 Table_map 1 327 table_id: # (test.t1) +master-bin.000001 327 Table_map 1 385 table_id: # (mysql.ndb_apply_status) +master-bin.000001 385 Write_rows 1 444 table_id: # +master-bin.000001 444 Write_rows 1 482 table_id: # +master-bin.000001 482 Write_rows 1 520 table_id: # flags: STMT_END_F master-bin.000001 520 Query 1 585 COMMIT master-bin.000001 585 Query 1 665 use `test`; TRUNCATE TABLE t1 master-bin.000001 665 Query 1 741 use `test`; DROP TABLE t1 master-bin.000001 741 Query 1 858 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB master-bin.000001 858 Query 1 922 BEGIN -master-bin.000001 922 Table_map 1 40 table_id: # (test.t1) -master-bin.000001 962 Table_map 1 98 table_id: # (mysql.ndb_apply_status) -master-bin.000001 1020 Write_rows 1 157 table_id: # -master-bin.000001 1079 Write_rows 1 195 table_id: # -master-bin.000001 1117 Write_rows 1 233 table_id: # flags: STMT_END_F +master-bin.000001 922 Table_map 1 962 table_id: # (test.t1) +master-bin.000001 962 Table_map 1 1020 table_id: # (mysql.ndb_apply_status) +master-bin.000001 1020 Write_rows 1 1079 table_id: # +master-bin.000001 1079 Write_rows 1 1117 table_id: # +master-bin.000001 1117 Write_rows 1 1155 table_id: # flags: STMT_END_F master-bin.000001 1155 Query 1 1220 COMMIT master-bin.000001 1220 Query 1 1284 BEGIN -master-bin.000001 1284 Table_map 1 40 table_id: # (test.t1) -master-bin.000001 1324 Table_map 1 98 table_id: # (mysql.ndb_apply_status) -master-bin.000001 1382 Write_rows 1 157 table_id: # -master-bin.000001 1441 Delete_rows 1 191 table_id: # -master-bin.000001 1475 Delete_rows 1 225 table_id: # flags: STMT_END_F +master-bin.000001 1284 Table_map 1 1324 table_id: # (test.t1) +master-bin.000001 1324 Table_map 1 1382 table_id: # (mysql.ndb_apply_status) +master-bin.000001 1382 Write_rows 1 1441 table_id: # +master-bin.000001 1441 Delete_rows 1 1475 table_id: # +master-bin.000001 1475 Delete_rows 1 1509 table_id: # flags: STMT_END_F master-bin.000001 1509 Query 1 1574 COMMIT master-bin.000001 1574 Query 1 1650 use `test`; DROP TABLE t1 diff --git a/sql/log.cc b/sql/log.cc index de5d94a2e93..831066ab401 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -3949,65 +3949,111 @@ int MYSQL_BIN_LOG::write_cache(IO_CACHE *cache, bool lock_log, bool sync_log) long val; uchar header[LOG_EVENT_HEADER_LEN]; + /* + The events in the buffer have incorrect end_log_pos data + (relative to beginning of group rather than absolute), + so we'll recalculate them in situ so the binlog is always + correct, even in the middle of a group. This is possible + because we now know the start position of the group (the + offset of this cache in the log, if you will); all we need + to do is to find all event-headers, and add the position of + the group to the end_log_pos of each event. This is pretty + straight forward, except that we read the cache in segments, + so an event-header might end up on the cache-border and get + split. + */ + group= my_b_tell(&log_file); hdr_offs= carry= 0; do { - if (likely(carry > 0)) + + /* + if we only got a partial header in the last iteration, + get the other half now and process a full header. + */ + if (unlikely(carry > 0)) { DBUG_ASSERT(carry < LOG_EVENT_HEADER_LEN); + /* assemble both halves */ memcpy(&header[carry], (char *)cache->read_pos, LOG_EVENT_HEADER_LEN - carry); + /* fix end_log_pos */ val= uint4korr(&header[LOG_POS_OFFSET]) + group; int4store(&header[LOG_POS_OFFSET], val); + /* write the first half of the split header */ if (my_b_write(&log_file, header, carry)) return ER_ERROR_ON_WRITE; + /* + copy fixed second half of header to cache so the correct + version will be written later. + */ memcpy((char *)cache->read_pos, &header[carry], LOG_EVENT_HEADER_LEN - carry); + /* next event header at ... */ hdr_offs = LOG_EVENT_HEADER_LEN - carry + uint4korr(&header[EVENT_LEN_OFFSET]); carry= 0; } + /* if there is anything to write, process it. */ + if(likely(bytes > 0)) { - do { - DBUG_ASSERT((hdr_offs + max(EVENT_LEN_OFFSET, LOG_POS_OFFSET) + 4) <= bytes); + /* + next header beyond current read-buffer? we'll get it later + (though not necessarily in the very next iteration). + */ - val= uint4korr((char *)cache->read_pos + hdr_offs + LOG_POS_OFFSET) + group; - int4store((char *)cache->read_pos + hdr_offs + LOG_POS_OFFSET, val); - hdr_offs += uint4korr((char *)cache->read_pos + hdr_offs + EVENT_LEN_OFFSET); + if (hdr_offs >= bytes) + hdr_offs -= bytes; + else + { - /* header beyond current read-buffer? */ - if (hdr_offs >= bytes) - { - hdr_offs -= bytes; - break; - } + /* process all event-headers in this (partial) cache. */ - /* split header? */ - if (hdr_offs + LOG_EVENT_HEADER_LEN > bytes) - { - carry= bytes - hdr_offs; + do { - memcpy(header, (char *)cache->read_pos + hdr_offs, carry); - bytes -= carry; - } + /* + partial header only? save what we can get, process once + we get the rest. + */ - } while (hdr_offs < bytes); + if (hdr_offs + LOG_EVENT_HEADER_LEN > bytes) + { + carry= bytes - hdr_offs; + memcpy(header, (char *)cache->read_pos + hdr_offs, carry); + bytes= hdr_offs; + } + else + { + /* we've got a full event-header, and it came in one piece */ + + uchar *log_pos= cache->read_pos + hdr_offs + LOG_POS_OFFSET; + + /* fix end_log_pos */ + val= uint4korr(log_pos) + group; + int4store(log_pos, val); + + /* next event header at ... */ + log_pos= (uchar *)cache->read_pos + hdr_offs + EVENT_LEN_OFFSET; + hdr_offs += uint4korr(log_pos); + + } + } while (hdr_offs < bytes); + } } /* Write data to the binary log file */ - if (my_b_write(&log_file, cache->read_pos, bytes)) return ER_ERROR_ON_WRITE; - cache->read_pos= cache->read_end; - } while ((bytes= my_b_fill(cache))); + cache->read_pos=cache->read_end; // Mark buffer used up + } while ((bytes=my_b_fill(cache))); if (sync_log) flush_and_sync(); From 131db8123fc0054db7e46e0e5154623da2d9d537 Mon Sep 17 00:00:00 2001 From: "tnurnberg@sin.intern.azundris.com" <> Date: Wed, 27 Jun 2007 09:30:29 +0200 Subject: [PATCH 028/127] Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB windows fixies --- sql/log.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/log.cc b/sql/log.cc index a5c5f42a393..f682b9b206e 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1886,7 +1886,7 @@ bool MYSQL_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event) split. */ - group= my_b_tell(&log_file); + group= (uint)my_b_tell(&log_file); hdr_offs= carry= 0; do From dadc4c74994d189e12782c7ef6724e2cc17ca263 Mon Sep 17 00:00:00 2001 From: "tnurnberg@sin.intern.azundris.com" <> Date: Wed, 27 Jun 2007 09:31:47 +0200 Subject: [PATCH 029/127] Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB windows fixies --- sql/log.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/log.cc b/sql/log.cc index 831066ab401..6e635ba581c 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -3963,7 +3963,7 @@ int MYSQL_BIN_LOG::write_cache(IO_CACHE *cache, bool lock_log, bool sync_log) split. */ - group= my_b_tell(&log_file); + group= (uint)my_b_tell(&log_file); hdr_offs= carry= 0; do From 6d4033e6249b362cf38dd5f1fce86bd21070bac5 Mon Sep 17 00:00:00 2001 From: "svoj@mysql.com/june.mysql.com" <> Date: Wed, 27 Jun 2007 13:19:34 +0500 Subject: [PATCH 030/127] BUG#29207 - archive table reported as corrupt by check table (P1) CHECK TABLE against ARCHIVE table may falsely report table corruption, or cause server crash. Fixed by using proper buffer for CHECK TABLE. Affects both 5.0 and 5.1. --- mysql-test/r/archive.result | 7 +++++++ mysql-test/t/archive.test | 9 +++++++++ sql/ha_archive.cc | 19 +++---------------- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/mysql-test/r/archive.result b/mysql-test/r/archive.result index d89cecedcdd..b6a313ddf1a 100644 --- a/mysql-test/r/archive.result +++ b/mysql-test/r/archive.result @@ -12364,3 +12364,10 @@ select * from t1; i 1 drop table t1; +create table t1(a longblob) engine=archive; +insert into t1 set a=''; +insert into t1 set a='a'; +check table t1 extended; +Table Op Msg_type Msg_text +test.t1 check status OK +drop table t1; diff --git a/mysql-test/t/archive.test b/mysql-test/t/archive.test index 0ffbfab3d4f..61033fca3f7 100644 --- a/mysql-test/t/archive.test +++ b/mysql-test/t/archive.test @@ -1374,3 +1374,12 @@ insert into t1 values (1); repair table t1 use_frm; select * from t1; drop table t1; + +# +# BUG#29207 - archive table reported as corrupt by check table +# +create table t1(a longblob) engine=archive; +insert into t1 set a=''; +insert into t1 set a='a'; +check table t1 extended; +drop table t1; diff --git a/sql/ha_archive.cc b/sql/ha_archive.cc index 6e18f2e1e01..0c558bf2515 100644 --- a/sql/ha_archive.cc +++ b/sql/ha_archive.cc @@ -1205,7 +1205,6 @@ bool ha_archive::is_crashed() const int ha_archive::check(THD* thd, HA_CHECK_OPT* check_opt) { int rc= 0; - byte *buf; const char *old_proc_info=thd->proc_info; ha_rows count= share->rows_recorded; DBUG_ENTER("ha_archive::check"); @@ -1214,25 +1213,13 @@ int ha_archive::check(THD* thd, HA_CHECK_OPT* check_opt) /* Flush any waiting data */ gzflush(share->archive_write, Z_SYNC_FLUSH); - /* - First we create a buffer that we can use for reading rows, and can pass - to get_row(). - */ - if (!(buf= (byte*) my_malloc(table->s->reclength, MYF(MY_WME)))) - rc= HA_ERR_OUT_OF_MEM; - /* Now we will rewind the archive file so that we are positioned at the start of the file. */ - if (!rc) - read_data_header(archive); - - if (!rc) - while (!(rc= get_row(archive, buf))) - count--; - - my_free((char*)buf, MYF(0)); + read_data_header(archive); + while (!(rc= get_row(archive, table->record[0]))) + count--; thd->proc_info= old_proc_info; From ec22bd2355da5030a5eeb107aa1806fff3935dba Mon Sep 17 00:00:00 2001 From: "tnurnberg@sin.intern.azundris.com" <> Date: Wed, 27 Jun 2007 13:19:28 +0200 Subject: [PATCH 031/127] Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB Windows fixies --- sql/log.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/log.cc b/sql/log.cc index f682b9b206e..af8168c6a46 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1957,7 +1957,7 @@ bool MYSQL_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event) { /* we've got a full event-header, and it came in one piece */ - char *log_pos= cache->read_pos + hdr_offs + LOG_POS_OFFSET; + char *log_pos= (char *)cache->read_pos + hdr_offs + LOG_POS_OFFSET; /* fix end_log_pos */ val= uint4korr(log_pos) + group; From 2ca3289e3e750239c3ff891738e9af0ed0ae10e4 Mon Sep 17 00:00:00 2001 From: "ramil/ram@mysql.com/ramil.myoffice.izhnet.ru" <> Date: Wed, 27 Jun 2007 16:20:00 +0500 Subject: [PATCH 032/127] Fix for bug #29353: inserting a negative value to a csv table leads to the table corruption Problem: we believe a number cannot start with '-' ['+'] sign reading rows. Fix: let field->store() check given values. --- mysql-test/r/csv.result | 31 ++++++++++++++++++ mysql-test/t/csv.test | 25 +++++++++++++++ storage/csv/ha_tina.cc | 70 +++++++++++++++++++++-------------------- 3 files changed, 92 insertions(+), 34 deletions(-) diff --git a/mysql-test/r/csv.result b/mysql-test/r/csv.result index 34dc1cb5b2e..e7cdd612a25 100644 --- a/mysql-test/r/csv.result +++ b/mysql-test/r/csv.result @@ -5261,3 +5261,34 @@ CREATE TABLE `bug21328` ( insert into bug21328 values (1,NULL,NULL); alter table bug21328 engine=myisam; drop table bug21328; +create table t1(a int) engine=csv; +insert into t1 values(-1), (-123.34), (2), (-23); +select * from t1; +a +-1 +-123 +2 +-23 +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +drop table t1; +create table t1(a int, b int) engine=csv; +repair table t1; +Table Op Msg_type Msg_text +test.t1 repair Warning Data truncated for column 'a' at row 1 +test.t1 repair status OK +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +select * from t1; +a b +1 0 +-200 1 +-1 -1 +-1 -100 +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +drop table t1; +End of 5.1 tests diff --git a/mysql-test/t/csv.test b/mysql-test/t/csv.test index c7c7f3e13ab..6d24b38ee10 100644 --- a/mysql-test/t/csv.test +++ b/mysql-test/t/csv.test @@ -1674,3 +1674,28 @@ CREATE TABLE `bug21328` ( insert into bug21328 values (1,NULL,NULL); alter table bug21328 engine=myisam; drop table bug21328; + +# +# Bug #29353: negative values +# +create table t1(a int) engine=csv; +insert into t1 values(-1), (-123.34), (2), (-23); +select * from t1; +check table t1; +drop table t1; + +create table t1(a int, b int) engine=csv; +--write_file $MYSQLTEST_VARDIR/master-data/test/t1.CSV +1, 1E-2 +-2E2, .9 +-10E-1, -.9 +-1, -100.1 +1a, -2b +EOF +repair table t1; +check table t1; +select * from t1; +check table t1; +drop table t1; + +--echo End of 5.1 tests diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc index 6de153c82d7..239d47890ed 100644 --- a/storage/csv/ha_tina.cc +++ b/storage/csv/ha_tina.cc @@ -45,11 +45,12 @@ TODO: #pragma implementation // gcc: Class implementation #endif -#include "mysql_priv.h" +#define MYSQL_SERVER 1 +#include "mysql_priv.h" +#include #include "ha_tina.h" -#include /* uchar + uchar + ulonglong + ulonglong + ulonglong + ulonglong + uchar @@ -609,37 +610,41 @@ int ha_tina::find_current_row(uchar *buf) for (Field **field=table->field ; *field ; field++) { + char curr_char; + buffer.length(0); - if (curr_offset < end_offset && - file_buff->get_value(curr_offset) == '"') + if (curr_offset >= end_offset) + goto err; + curr_char= file_buff->get_value(curr_offset); + if (curr_char == '"') { curr_offset++; // Incrementpast the first quote - for(;curr_offset < end_offset; curr_offset++) + for(; curr_offset < end_offset; curr_offset++) { + curr_char= file_buff->get_value(curr_offset); // Need to convert line feeds! - if (file_buff->get_value(curr_offset) == '"' && - ((file_buff->get_value(curr_offset + 1) == ',') || - (curr_offset == end_offset -1 ))) + if (curr_char == '"' && + (curr_offset == end_offset - 1 || + file_buff->get_value(curr_offset + 1) == ',')) { curr_offset+= 2; // Move past the , and the " break; } - if (file_buff->get_value(curr_offset) == '\\' && - curr_offset != (end_offset - 1)) + if (curr_char == '\\' && curr_offset != (end_offset - 1)) { curr_offset++; - if (file_buff->get_value(curr_offset) == 'r') + curr_char= file_buff->get_value(curr_offset); + if (curr_char == 'r') buffer.append('\r'); - else if (file_buff->get_value(curr_offset) == 'n' ) + else if (curr_char == 'n' ) buffer.append('\n'); - else if ((file_buff->get_value(curr_offset) == '\\') || - (file_buff->get_value(curr_offset) == '"')) - buffer.append(file_buff->get_value(curr_offset)); + else if (curr_char == '\\' || curr_char == '"') + buffer.append(curr_char); else /* This could only happed with an externally created file */ { buffer.append('\\'); - buffer.append(file_buff->get_value(curr_offset)); + buffer.append(curr_char); } } else // ordinary symbol @@ -650,36 +655,29 @@ int ha_tina::find_current_row(uchar *buf) */ if (curr_offset == end_offset - 1) goto err; - buffer.append(file_buff->get_value(curr_offset)); + buffer.append(curr_char); } } } - else if (my_isdigit(system_charset_info, - file_buff->get_value(curr_offset))) + else { - for(;curr_offset < end_offset; curr_offset++) + for(; curr_offset < end_offset; curr_offset++) { - if (file_buff->get_value(curr_offset) == ',') + curr_char= file_buff->get_value(curr_offset); + if (curr_char == ',') { - curr_offset+= 1; // Move past the , + curr_offset++; // Skip the , break; } - - if (my_isdigit(system_charset_info, file_buff->get_value(curr_offset))) - buffer.append(file_buff->get_value(curr_offset)); - else if (file_buff->get_value(curr_offset) == '.') - buffer.append(file_buff->get_value(curr_offset)); - else - goto err; + buffer.append(curr_char); } } - else - { - goto err; - } if (bitmap_is_set(table->read_set, (*field)->field_index)) - (*field)->store(buffer.ptr(), buffer.length(), buffer.charset()); + { + if ((*field)->store(buffer.ptr(), buffer.length(), buffer.charset())) + goto err; + } } next_position= end_offset + eoln_len; error= 0; @@ -1004,6 +1002,7 @@ int ha_tina::delete_row(const uchar * buf) int ha_tina::rnd_init(bool scan) { + THD *thd= table ? table->in_use : current_thd; DBUG_ENTER("ha_tina::rnd_init"); /* set buffer to the beginning of the file */ @@ -1015,6 +1014,7 @@ int ha_tina::rnd_init(bool scan) stats.records= 0; records_is_known= 0; chain_ptr= chain; + thd->count_cuted_fields= CHECK_FIELD_WARN; // To find wrong values DBUG_RETURN(0); } @@ -1298,6 +1298,7 @@ int ha_tina::repair(THD* thd, HA_CHECK_OPT* check_opt) current_position= next_position= 0; /* Read the file row-by-row. If everything is ok, repair is not needed. */ + thd->count_cuted_fields= CHECK_FIELD_WARN; // To find wrong values while (!(rc= find_current_row(buf))) { rows_repaired++; @@ -1463,6 +1464,7 @@ int ha_tina::check(THD* thd, HA_CHECK_OPT* check_opt) /* set current position to the beginning of the file */ current_position= next_position= 0; /* Read the file row-by-row. If everything is ok, repair is not needed. */ + thd->count_cuted_fields= CHECK_FIELD_WARN; // To find wrong values while (!(rc= find_current_row(buf))) { count--; From 3b9e5093a3deb08bea44bb309d76abfe65df21a4 Mon Sep 17 00:00:00 2001 From: "tnurnberg@sin.intern.azundris.com" <> Date: Wed, 27 Jun 2007 13:23:58 +0200 Subject: [PATCH 033/127] Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB windows fixies --- sql/log.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/log.cc b/sql/log.cc index 6e635ba581c..5f3ff9b10f7 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -4034,7 +4034,7 @@ int MYSQL_BIN_LOG::write_cache(IO_CACHE *cache, bool lock_log, bool sync_log) { /* we've got a full event-header, and it came in one piece */ - uchar *log_pos= cache->read_pos + hdr_offs + LOG_POS_OFFSET; + uchar *log_pos= (uchar *)cache->read_pos + hdr_offs + LOG_POS_OFFSET; /* fix end_log_pos */ val= uint4korr(log_pos) + group; From ba63d79e1485c349034283a77683849bcde2d8ec Mon Sep 17 00:00:00 2001 From: "tnurnberg@sin.intern.azundris.com" <> Date: Wed, 27 Jun 2007 14:04:29 +0200 Subject: [PATCH 034/127] Bug#24924: shared-memory-base-name that is too long causes buffer overflow show that shm communication still works on windows, and that we can't overflow the base-name. --- mysql-test/r/windows_shm.result | 2 ++ mysql-test/t/windows_shm-master.opt | 1 + mysql-test/t/windows_shm.test | 9 +++++++++ 3 files changed, 12 insertions(+) create mode 100644 mysql-test/r/windows_shm.result create mode 100644 mysql-test/t/windows_shm-master.opt create mode 100644 mysql-test/t/windows_shm.test diff --git a/mysql-test/r/windows_shm.result b/mysql-test/r/windows_shm.result new file mode 100644 index 00000000000..c60049bece8 --- /dev/null +++ b/mysql-test/r/windows_shm.result @@ -0,0 +1,2 @@ +mysqld is alive +End of 5.0 tests. diff --git a/mysql-test/t/windows_shm-master.opt b/mysql-test/t/windows_shm-master.opt new file mode 100644 index 00000000000..4476ea16360 --- /dev/null +++ b/mysql-test/t/windows_shm-master.opt @@ -0,0 +1 @@ +--skip-grant-tables --loose-shared-memory-base-name=HeyMrBaseNameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --loose-shared-memory=1 diff --git a/mysql-test/t/windows_shm.test b/mysql-test/t/windows_shm.test new file mode 100644 index 00000000000..203471aac56 --- /dev/null +++ b/mysql-test/t/windows_shm.test @@ -0,0 +1,9 @@ +# Windows-specific tests +--source include/windows.inc + +# +# Bug #24924: shared-memory-base-name that is too long causes buffer overflow +# +--exec $MYSQLADMIN --no-defaults --shared-memory-base-name=HeyMrBaseNameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ping + +--echo End of 5.0 tests. From 8661497e9bde1f42674b9789799d81b0ea2ba0d0 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.(none)" <> Date: Wed, 27 Jun 2007 14:28:02 +0200 Subject: [PATCH 035/127] WL#3933 Split main test suite to rpl, rpl_ndb and ndb - Update mysql-test-run.pl to collect tests from several suites - Group test into suites - Add suite.opt file --- mysql-test/lib/mtr_cases.pl | 311 +++++++++++------- mysql-test/lib/mtr_report.pl | 27 +- mysql-test/mysql-test-run.pl | 50 +-- .../{ => suite/binlog}/r/binlog_killed.result | 0 .../binlog}/r/binlog_row_binlog.result | 0 .../binlog}/r/binlog_row_blackhole.result | 0 .../binlog}/r/binlog_row_ctype_cp932.result | 0 .../binlog}/r/binlog_row_ctype_ucs.result | 0 .../binlog}/r/binlog_row_drop_tmp_tbl.result | 0 .../binlog}/r/binlog_row_innodb_stat.result | 0 .../binlog}/r/binlog_row_insert_select.result | 0 .../r/binlog_row_mix_innodb_myisam.result | 0 .../r/binlog_statement_insert_delayed.result | 0 .../binlog}/r/binlog_stm_binlog.result | 0 .../binlog}/r/binlog_stm_blackhole.result | 0 .../binlog}/r/binlog_stm_ctype_cp932.result | 0 .../binlog}/r/binlog_stm_ctype_ucs.result | 0 .../binlog}/r/binlog_stm_drop_tmp_tbl.result | 0 .../binlog}/r/binlog_stm_innodb_stat.result | 0 .../binlog}/r/binlog_stm_insert_select.result | 0 .../r/binlog_stm_mix_innodb_myisam.result | 0 .../{ => suite/binlog}/r/binlog_stm_ps.result | 0 .../{ => suite/binlog}/t/binlog_killed.test | 0 .../binlog}/t/binlog_row_binlog-master.opt | 0 .../binlog}/t/binlog_row_binlog.test | 0 .../binlog}/t/binlog_row_blackhole.test | 0 .../binlog}/t/binlog_row_ctype_cp932.test | 0 .../binlog}/t/binlog_row_ctype_ucs.test | 0 .../binlog}/t/binlog_row_drop_tmp_tbl.test | 0 .../t/binlog_row_innodb_stat-master.opt | 0 .../binlog}/t/binlog_row_innodb_stat.test | 0 .../binlog}/t/binlog_row_insert_select.test | 0 .../t/binlog_row_mix_innodb_myisam-master.opt | 0 .../t/binlog_row_mix_innodb_myisam.test | 0 .../t/binlog_statement_insert_delayed.test | 0 .../binlog}/t/binlog_stm_binlog-master.opt | 0 .../binlog}/t/binlog_stm_binlog.test | 0 .../binlog}/t/binlog_stm_blackhole.test | 0 .../binlog}/t/binlog_stm_ctype_cp932.test | 0 .../binlog}/t/binlog_stm_ctype_ucs.test | 0 .../binlog}/t/binlog_stm_drop_tmp_tbl.test | 0 .../t/binlog_stm_innodb_stat-master.opt | 0 .../binlog}/t/binlog_stm_innodb_stat.test | 0 .../binlog}/t/binlog_stm_insert_select.test | 0 .../t/binlog_stm_mix_innodb_myisam-master.opt | 0 .../t/binlog_stm_mix_innodb_myisam.test | 0 .../{ => suite/binlog}/t/binlog_stm_ps.test | 0 mysql-test/suite/funcs_1/t/suite.opt | 2 + mysql-test/suite/funcs_2/t/suite.opt | 2 + .../ndb}/r/loaddata_autocom_ndb.result | 0 .../{ => suite/ndb}/r/ndb_alter_table.result | 0 .../{ => suite/ndb}/r/ndb_alter_table2.result | 0 .../{ => suite/ndb}/r/ndb_alter_table3.result | 0 .../{ => suite/ndb}/r/ndb_autodiscover.result | 0 .../ndb}/r/ndb_autodiscover2.result | 0 .../ndb}/r/ndb_autodiscover3.result | 0 .../{ => suite/ndb}/r/ndb_backup_print.result | 0 mysql-test/{ => suite/ndb}/r/ndb_basic.result | 0 .../{ => suite/ndb}/r/ndb_binlog_basic.result | 0 .../ndb}/r/ndb_binlog_basic2.result | 0 .../ndb}/r/ndb_binlog_ddl_multi.result | 0 .../ndb}/r/ndb_binlog_discover.result | 0 .../ndb}/r/ndb_binlog_ignore_db.result | 0 .../ndb}/r/ndb_binlog_log_bin.result | 0 .../{ => suite/ndb}/r/ndb_binlog_multi.result | 0 .../{ => suite/ndb}/r/ndb_bitfield.result | 0 mysql-test/{ => suite/ndb}/r/ndb_blob.result | 0 .../ndb}/r/ndb_blob_partition.result | 0 mysql-test/{ => suite/ndb}/r/ndb_cache.result | 0 .../{ => suite/ndb}/r/ndb_cache2.result | 0 .../{ => suite/ndb}/r/ndb_cache_multi.result | 0 .../{ => suite/ndb}/r/ndb_cache_multi2.result | 0 .../{ => suite/ndb}/r/ndb_charset.result | 0 .../ndb}/r/ndb_condition_pushdown.result | 0 .../{ => suite/ndb}/r/ndb_config.result | 0 .../{ => suite/ndb}/r/ndb_config2.result | 0 .../{ => suite/ndb}/r/ndb_cursor.result | 0 .../{ => suite/ndb}/r/ndb_database.result | 0 .../{ => suite/ndb}/r/ndb_dd_alter.result | 0 .../ndb}/r/ndb_dd_backuprestore.result | 0 .../{ => suite/ndb}/r/ndb_dd_basic.result | 0 .../{ => suite/ndb}/r/ndb_dd_ddl.result | 0 .../ndb}/r/ndb_dd_disk2memory.result | 0 .../{ => suite/ndb}/r/ndb_dd_dump.result | 0 .../ndb}/r/ndb_dd_sql_features.result | 0 mysql-test/{ => suite/ndb}/r/ndb_gis.result | 0 mysql-test/{ => suite/ndb}/r/ndb_grant.result | 0 mysql-test/{ => suite/ndb}/r/ndb_index.result | 0 .../ndb}/r/ndb_index_ordered.result | 0 .../{ => suite/ndb}/r/ndb_index_unique.result | 0 .../{ => suite/ndb}/r/ndb_insert.result | 0 mysql-test/{ => suite/ndb}/r/ndb_limit.result | 0 mysql-test/{ => suite/ndb}/r/ndb_load.result | 0 .../ndb}/r/ndb_loaddatalocal.result | 0 mysql-test/{ => suite/ndb}/r/ndb_lock.result | 0 .../{ => suite/ndb}/r/ndb_minmax.result | 0 mysql-test/{ => suite/ndb}/r/ndb_multi.result | 0 .../{ => suite/ndb}/r/ndb_multi_row.result | 0 .../ndb}/r/ndb_partition_error.result | 0 .../ndb}/r/ndb_partition_error2.result | 0 .../ndb}/r/ndb_partition_key.result | 0 .../ndb}/r/ndb_partition_list.result | 0 .../ndb}/r/ndb_partition_range.result | 0 .../ndb}/r/ndb_read_multi_range.result | 0 .../{ => suite/ndb}/r/ndb_rename.result | 0 .../{ => suite/ndb}/r/ndb_replace.result | 0 .../{ => suite/ndb}/r/ndb_restore.result | 0 .../ndb}/r/ndb_restore_compat.result | 0 .../ndb}/r/ndb_restore_partition.result | 0 .../ndb}/r/ndb_restore_print.result | 0 .../{ => suite/ndb}/r/ndb_row_format.result | 0 .../{ => suite/ndb}/r/ndb_single_user.result | 0 mysql-test/{ => suite/ndb}/r/ndb_sp.result | 0 .../{ => suite/ndb}/r/ndb_subquery.result | 0 .../{ => suite/ndb}/r/ndb_temporary.result | 0 .../{ => suite/ndb}/r/ndb_transaction.result | 0 .../{ => suite/ndb}/r/ndb_trigger.result | 0 .../{ => suite/ndb}/r/ndb_truncate.result | 0 mysql-test/{ => suite/ndb}/r/ndb_types.result | 0 .../{ => suite/ndb}/r/ndb_update.result | 0 mysql-test/{ => suite/ndb}/r/ndb_view.result | 0 mysql-test/{ => suite/ndb}/r/ndbapi.result | 0 .../{ => suite/ndb}/r/partition_03ndb.result | 0 mysql-test/{ => suite/ndb}/r/ps_7ndb.result | 0 .../ndb}/r/strict_autoinc_5ndb.result | 0 mysql-test/suite/ndb/t/disabled.def | 23 ++ .../ndb}/t/loaddata_autocom_ndb.test | 0 .../{ => suite/ndb}/t/ndb_alter_table.test | 0 .../{ => suite/ndb}/t/ndb_alter_table2.test | 0 .../{ => suite/ndb}/t/ndb_alter_table3.test | 0 .../{ => suite/ndb}/t/ndb_autodiscover.test | 0 .../ndb}/t/ndb_autodiscover2-master.opt | 0 .../{ => suite/ndb}/t/ndb_autodiscover2.test | 0 .../{ => suite/ndb}/t/ndb_autodiscover3.test | 0 .../{ => suite/ndb}/t/ndb_backup_print.test | 0 mysql-test/{ => suite/ndb}/t/ndb_basic.test | 0 .../{ => suite/ndb}/t/ndb_binlog_basic.test | 0 .../{ => suite/ndb}/t/ndb_binlog_basic2.test | 0 .../ndb}/t/ndb_binlog_ddl_multi.test | 0 .../ndb}/t/ndb_binlog_discover.test | 0 .../ndb}/t/ndb_binlog_ignore_db-master.opt | 0 .../ndb}/t/ndb_binlog_ignore_db.test | 0 .../{ => suite/ndb}/t/ndb_binlog_log_bin.test | 0 .../{ => suite/ndb}/t/ndb_binlog_multi.test | 0 .../{ => suite/ndb}/t/ndb_bitfield.test | 0 mysql-test/{ => suite/ndb}/t/ndb_blob.test | 0 .../{ => suite/ndb}/t/ndb_blob_partition.test | 0 mysql-test/{ => suite/ndb}/t/ndb_cache.test | 0 mysql-test/{ => suite/ndb}/t/ndb_cache2.test | 0 .../{ => suite/ndb}/t/ndb_cache_multi.test | 0 .../{ => suite/ndb}/t/ndb_cache_multi2.test | 0 mysql-test/{ => suite/ndb}/t/ndb_charset.test | 0 .../ndb}/t/ndb_condition_pushdown.test | 0 mysql-test/{ => suite/ndb}/t/ndb_config.test | 0 mysql-test/{ => suite/ndb}/t/ndb_config2.test | 0 mysql-test/{ => suite/ndb}/t/ndb_cursor.test | 0 .../{ => suite/ndb}/t/ndb_database.test | 0 .../{ => suite/ndb}/t/ndb_dd_alter.test | 0 .../ndb}/t/ndb_dd_backuprestore.test | 0 .../{ => suite/ndb}/t/ndb_dd_basic.test | 0 mysql-test/{ => suite/ndb}/t/ndb_dd_ddl.test | 0 .../{ => suite/ndb}/t/ndb_dd_disk2memory.test | 0 mysql-test/{ => suite/ndb}/t/ndb_dd_dump.test | 0 .../ndb}/t/ndb_dd_sql_features.test | 0 mysql-test/{ => suite/ndb}/t/ndb_gis.test | 0 mysql-test/{ => suite/ndb}/t/ndb_grant.later | 0 mysql-test/{ => suite/ndb}/t/ndb_index.test | 0 .../{ => suite/ndb}/t/ndb_index_ordered.test | 0 .../{ => suite/ndb}/t/ndb_index_unique.test | 0 mysql-test/{ => suite/ndb}/t/ndb_insert.test | 0 mysql-test/{ => suite/ndb}/t/ndb_limit.test | 0 mysql-test/{ => suite/ndb}/t/ndb_load.test | 0 .../{ => suite/ndb}/t/ndb_loaddatalocal.test | 0 mysql-test/{ => suite/ndb}/t/ndb_lock.test | 0 mysql-test/{ => suite/ndb}/t/ndb_minmax.test | 0 mysql-test/{ => suite/ndb}/t/ndb_multi.test | 0 .../{ => suite/ndb}/t/ndb_multi_row.test | 0 .../ndb}/t/ndb_partition_error.test | 0 .../ndb}/t/ndb_partition_error2-master.opt | 0 .../ndb}/t/ndb_partition_error2.test | 0 .../{ => suite/ndb}/t/ndb_partition_key.test | 0 .../{ => suite/ndb}/t/ndb_partition_list.test | 0 .../ndb}/t/ndb_partition_range.test | 0 .../ndb}/t/ndb_read_multi_range.test | 0 mysql-test/{ => suite/ndb}/t/ndb_rename.test | 0 mysql-test/{ => suite/ndb}/t/ndb_replace.test | 0 mysql-test/{ => suite/ndb}/t/ndb_restore.test | 0 .../{ => suite/ndb}/t/ndb_restore_compat.test | 0 .../ndb}/t/ndb_restore_partition-master.opt | 0 .../ndb}/t/ndb_restore_partition.test | 0 .../{ => suite/ndb}/t/ndb_restore_print.test | 0 .../{ => suite/ndb}/t/ndb_row_format.test | 0 .../{ => suite/ndb}/t/ndb_single_user.test | 0 mysql-test/{ => suite/ndb}/t/ndb_sp.test | 0 .../{ => suite/ndb}/t/ndb_subquery.test | 0 .../{ => suite/ndb}/t/ndb_temporary.test | 0 .../{ => suite/ndb}/t/ndb_transaction.test | 0 mysql-test/{ => suite/ndb}/t/ndb_trigger.test | 0 .../{ => suite/ndb}/t/ndb_truncate.test | 0 mysql-test/{ => suite/ndb}/t/ndb_types.test | 0 mysql-test/{ => suite/ndb}/t/ndb_update.test | 0 mysql-test/{ => suite/ndb}/t/ndb_view.test | 0 mysql-test/{ => suite/ndb}/t/ndbapi.test | 0 .../{ => suite/ndb}/t/partition_03ndb.test | 0 mysql-test/{ => suite/ndb}/t/ps_7ndb.test | 0 .../ndb}/t/strict_autoinc_5ndb.test | 0 .../{ => suite/rpl}/r/rpl000001.a.result | 0 .../{ => suite/rpl}/r/rpl000001.b.result | 0 mysql-test/{ => suite/rpl}/r/rpl000010.result | 0 mysql-test/{ => suite/rpl}/r/rpl000011.result | 0 mysql-test/{ => suite/rpl}/r/rpl000013.result | 0 mysql-test/{ => suite/rpl}/r/rpl000017.result | 0 .../{ => suite/rpl}/r/rpl_000015.result | 0 .../{ => suite/rpl}/r/rpl_EE_err.result | 0 .../{ => suite/rpl}/r/rpl_LD_INFILE.result | 0 mysql-test/{ => suite/rpl}/r/rpl_alter.result | 0 .../{ => suite/rpl}/r/rpl_alter_db.result | 0 .../rpl}/r/rpl_auto_increment.result | 0 .../rpl}/r/rpl_auto_increment_11932.result | 0 mysql-test/{ => suite/rpl}/r/rpl_bit.result | 0 .../{ => suite/rpl}/r/rpl_bit_npk.result | 0 .../rpl}/r/rpl_change_master.result | 0 .../{ => suite/rpl}/r/rpl_charset_sjis.result | 0 .../rpl}/r/rpl_commit_after_flush.result | 0 .../rpl}/r/rpl_create_database.result | 0 .../rpl}/r/rpl_critical_errors.result | 0 .../rpl}/r/rpl_critical_errors.result.txt | 0 mysql-test/{ => suite/rpl}/r/rpl_ddl.result | 0 .../rpl}/r/rpl_deadlock_innodb.result | 0 .../rpl}/r/rpl_delete_no_where.result | 0 .../{ => suite/rpl}/r/rpl_do_grant.result | 0 mysql-test/{ => suite/rpl}/r/rpl_drop.result | 0 .../{ => suite/rpl}/r/rpl_drop_db.result | 0 .../{ => suite/rpl}/r/rpl_drop_temp.result | 0 .../rpl}/r/rpl_dual_pos_advance.result | 0 .../rpl}/r/rpl_empty_master_crash.result | 0 .../rpl}/r/rpl_err_ignoredtable.result | 0 .../{ => suite/rpl}/r/rpl_events.result | 0 .../rpl}/r/rpl_extraCol_innodb.result | 0 .../rpl}/r/rpl_extraCol_myisam.result | 0 .../rpl}/r/rpl_failed_optimize.result | 0 .../rpl}/r/rpl_flushlog_loop.result | 0 .../rpl}/r/rpl_foreign_key_innodb.result | 0 .../{ => suite/rpl}/r/rpl_free_items.result | 0 .../{ => suite/rpl}/r/rpl_get_lock.result | 0 .../{ => suite/rpl}/r/rpl_ignore_grant.result | 0 .../rpl}/r/rpl_ignore_revoke.result | 0 .../{ => suite/rpl}/r/rpl_ignore_table.result | 0 .../rpl}/r/rpl_ignore_table_update.result | 0 .../{ => suite/rpl}/r/rpl_incident.result | 0 .../{ => suite/rpl}/r/rpl_init_slave.result | 0 .../{ => suite/rpl}/r/rpl_innodb.result | 0 .../{ => suite/rpl}/r/rpl_insert.result | 0 .../{ => suite/rpl}/r/rpl_insert_id.result | 0 .../{ => suite/rpl}/r/rpl_insert_id_pk.result | 0 .../rpl}/r/rpl_insert_ignore.result | 0 .../rpl}/r/rpl_insert_select.result | 0 .../rpl}/r/rpl_known_bugs_detection.result | 0 .../rpl}/r/rpl_load_from_master.result | 0 .../rpl}/r/rpl_load_table_from_master.result | 0 .../{ => suite/rpl}/r/rpl_loaddata.result | 0 .../rpl}/r/rpl_loaddata_charset.result | 0 .../{ => suite/rpl}/r/rpl_loaddata_m.result | 0 .../{ => suite/rpl}/r/rpl_loaddata_s.result | 0 .../rpl}/r/rpl_loaddata_simple.result | 0 .../rpl}/r/rpl_loaddatalocal.result | 0 .../{ => suite/rpl}/r/rpl_loadfile.result | 0 .../{ => suite/rpl}/r/rpl_locale.result | 0 .../{ => suite/rpl}/r/rpl_log_pos.result | 0 .../rpl}/r/rpl_many_optimize.result | 0 .../rpl}/r/rpl_master_pos_wait.result | 0 .../rpl}/r/rpl_misc_functions.result | 0 .../rpl}/r/rpl_mixed_ddl_dml.result | 0 .../{ => suite/rpl}/r/rpl_multi_delete.result | 0 .../rpl}/r/rpl_multi_delete2.result | 0 .../{ => suite/rpl}/r/rpl_multi_engine.result | 0 .../{ => suite/rpl}/r/rpl_multi_update.result | 0 .../rpl}/r/rpl_multi_update2.result | 0 .../rpl}/r/rpl_multi_update3.result | 0 .../rpl}/r/rpl_multi_update4.result | 0 .../{ => suite/rpl}/r/rpl_optimize.result | 0 .../{ => suite/rpl}/r/rpl_packet.result | 0 mysql-test/{ => suite/rpl}/r/rpl_ps.result | 0 .../{ => suite/rpl}/r/rpl_rbr_to_sbr.result | 0 .../{ => suite/rpl}/r/rpl_read_only.result | 0 .../{ => suite/rpl}/r/rpl_redirect.result | 0 .../rpl}/r/rpl_relay_space_innodb.result | 0 .../rpl}/r/rpl_relay_space_myisam.result | 0 .../{ => suite/rpl}/r/rpl_relayrotate.result | 0 .../{ => suite/rpl}/r/rpl_relayspace.result | 0 .../{ => suite/rpl}/r/rpl_replicate_do.result | 0 .../rpl}/r/rpl_replicate_ignore_db.result | 0 .../{ => suite/rpl}/r/rpl_rewrt_db.result | 0 .../{ => suite/rpl}/r/rpl_rotate_logs.result | 0 .../{ => suite/rpl}/r/rpl_row_001.result | 0 .../{ => suite/rpl}/r/rpl_row_4_bytes.result | 0 .../{ => suite/rpl}/r/rpl_row_NOW.result | 0 .../{ => suite/rpl}/r/rpl_row_USER.result | 0 .../{ => suite/rpl}/r/rpl_row_UUID.result | 0 .../rpl}/r/rpl_row_basic_11bugs-master.opt | 0 .../rpl}/r/rpl_row_basic_11bugs-slave.opt | 0 .../rpl}/r/rpl_row_basic_11bugs.result | 0 .../rpl}/r/rpl_row_basic_2myisam.result | 0 .../rpl}/r/rpl_row_basic_3innodb.result | 0 .../rpl}/r/rpl_row_basic_8partition.result | 0 .../rpl}/r/rpl_row_blob_innodb.result | 0 .../rpl}/r/rpl_row_blob_myisam.result | 0 .../{ => suite/rpl}/r/rpl_row_charset.result | 0 .../rpl}/r/rpl_row_create_table.result | 0 .../rpl}/r/rpl_row_delayed_ins.result | 0 .../{ => suite/rpl}/r/rpl_row_drop.result | 0 .../rpl}/r/rpl_row_err_ignoredtable.result | 0 .../rpl}/r/rpl_row_flsh_tbls.result | 0 .../{ => suite/rpl}/r/rpl_row_func001.result | 0 .../{ => suite/rpl}/r/rpl_row_func002.result | 0 .../{ => suite/rpl}/r/rpl_row_func003.result | 0 .../rpl}/r/rpl_row_inexist_tbl.result | 0 .../rpl}/r/rpl_row_insert_delayed.result | 0 .../rpl}/r/rpl_row_loaddata_m.result | 0 .../{ => suite/rpl}/r/rpl_row_log.result | 0 .../rpl}/r/rpl_row_log_innodb.result | 0 .../rpl}/r/rpl_row_max_relay_size.result | 0 .../rpl}/r/rpl_row_multi_query.result | 0 .../rpl}/r/rpl_row_mysqlbinlog.result | 0 .../rpl}/r/rpl_row_mystery22.result | 0 .../rpl}/r/rpl_row_reset_slave.result | 0 .../{ => suite/rpl}/r/rpl_row_sp001.result | 0 .../rpl}/r/rpl_row_sp002_innodb.result | 0 .../{ => suite/rpl}/r/rpl_row_sp003.result | 0 .../{ => suite/rpl}/r/rpl_row_sp005.result | 0 .../rpl}/r/rpl_row_sp006_InnoDB.result | 0 .../rpl}/r/rpl_row_sp007_innodb.result | 0 .../{ => suite/rpl}/r/rpl_row_sp008.result | 0 .../{ => suite/rpl}/r/rpl_row_sp009.result | 0 .../{ => suite/rpl}/r/rpl_row_sp010.result | 0 .../{ => suite/rpl}/r/rpl_row_sp011.result | 0 .../{ => suite/rpl}/r/rpl_row_sp012.result | 0 .../rpl}/r/rpl_row_stop_middle.result | 0 .../rpl}/r/rpl_row_stop_middle_update.result | 0 .../rpl}/r/rpl_row_tabledefs_2myisam.result | 0 .../rpl}/r/rpl_row_tabledefs_3innodb.result | 0 .../rpl}/r/rpl_row_tabledefs_7ndb.result | 0 .../{ => suite/rpl}/r/rpl_row_trig001.result | 0 .../{ => suite/rpl}/r/rpl_row_trig002.result | 0 .../{ => suite/rpl}/r/rpl_row_trig003.result | 0 .../{ => suite/rpl}/r/rpl_row_trig004.result | 0 .../{ => suite/rpl}/r/rpl_row_until.result | 0 .../{ => suite/rpl}/r/rpl_row_view01.result | 0 .../{ => suite/rpl}/r/rpl_server_id1.result | 0 .../{ => suite/rpl}/r/rpl_server_id2.result | 0 .../{ => suite/rpl}/r/rpl_session_var.result | 0 .../{ => suite/rpl}/r/rpl_set_charset.result | 0 mysql-test/{ => suite/rpl}/r/rpl_sf.result | 0 .../{ => suite/rpl}/r/rpl_skip_error.result | 0 .../{ => suite/rpl}/r/rpl_slave_status.result | 0 mysql-test/{ => suite/rpl}/r/rpl_sp.result | 0 mysql-test/{ => suite/rpl}/r/rpl_sp004.result | 0 .../{ => suite/rpl}/r/rpl_sp_effects.result | 0 .../rpl}/r/rpl_sporadic_master.result | 0 mysql-test/{ => suite/rpl}/r/rpl_ssl.result | 0 mysql-test/{ => suite/rpl}/r/rpl_ssl1.result | 0 .../rpl}/r/rpl_start_stop_slave.result | 0 .../{ => suite/rpl}/r/rpl_stm_000001.result | 0 .../{ => suite/rpl}/r/rpl_stm_EE_err2.result | 0 .../{ => suite/rpl}/r/rpl_stm_charset.result | 0 .../rpl}/r/rpl_stm_flsh_tbls.result | 0 .../rpl}/r/rpl_stm_insert_delayed.result | 0 .../{ => suite/rpl}/r/rpl_stm_log.result | 0 .../rpl}/r/rpl_stm_max_relay_size.result | 0 .../rpl}/r/rpl_stm_multi_query.result | 0 .../rpl}/r/rpl_stm_mystery22.result | 0 .../{ => suite/rpl}/r/rpl_stm_no_op.result | 0 .../rpl}/r/rpl_stm_reset_slave.result | 0 .../{ => suite/rpl}/r/rpl_stm_until.result | 0 .../rpl}/r/rpl_switch_stm_row_mixed.result | 0 .../{ => suite/rpl}/r/rpl_temp_table.result | 0 .../{ => suite/rpl}/r/rpl_temporary.result | 0 .../{ => suite/rpl}/r/rpl_timezone.result | 0 .../{ => suite/rpl}/r/rpl_trigger.result | 0 .../{ => suite/rpl}/r/rpl_trunc_temp.result | 0 .../rpl}/r/rpl_truncate_2myisam.result | 0 .../rpl}/r/rpl_truncate_3innodb.result | 0 .../rpl}/r/rpl_truncate_7ndb_2.result | 0 mysql-test/{ => suite/rpl}/r/rpl_udf.result | 0 .../rpl}/r/rpl_user_variables.result | 0 .../{ => suite/rpl}/r/rpl_variables.result | 0 mysql-test/{ => suite/rpl}/r/rpl_view.result | 0 mysql-test/suite/rpl/t/disabled.def | 15 + .../{ => suite/rpl}/t/rpl000010-slave.opt | 0 mysql-test/{ => suite/rpl}/t/rpl000010.test | 0 mysql-test/{ => suite/rpl}/t/rpl000011.test | 0 mysql-test/{ => suite/rpl}/t/rpl000013.test | 0 .../{ => suite/rpl}/t/rpl000017-slave.opt | 0 .../{ => suite/rpl}/t/rpl000017-slave.sh | 0 mysql-test/{ => suite/rpl}/t/rpl000017.test | 0 .../{ => suite/rpl}/t/rpl000018-master.opt | 0 .../{ => suite/rpl}/t/rpl000018-slave.opt | 0 .../{ => suite/rpl}/t/rpl_000015-slave.sh | 0 .../{ => suite/rpl}/t/rpl_000015.slave-mi | 0 mysql-test/{ => suite/rpl}/t/rpl_000015.test | 0 mysql-test/{ => suite/rpl}/t/rpl_EE_err.test | 0 .../{ => suite/rpl}/t/rpl_LD_INFILE.test | 0 mysql-test/{ => suite/rpl}/t/rpl_alter.test | 0 .../{ => suite/rpl}/t/rpl_alter_db.test | 0 .../rpl}/t/rpl_auto_increment-master.opt | 0 .../rpl}/t/rpl_auto_increment-slave.opt | 0 .../{ => suite/rpl}/t/rpl_auto_increment.test | 0 .../rpl}/t/rpl_auto_increment_11932.test | 0 mysql-test/{ => suite/rpl}/t/rpl_bit.test | 0 mysql-test/{ => suite/rpl}/t/rpl_bit_npk.test | 0 .../{ => suite/rpl}/t/rpl_change_master.test | 0 .../{ => suite/rpl}/t/rpl_charset_sjis.test | 0 .../rpl}/t/rpl_commit_after_flush.test | 0 .../rpl}/t/rpl_create_database-master.opt | 0 .../rpl}/t/rpl_create_database-slave.opt | 0 .../rpl}/t/rpl_create_database.test | 0 .../rpl}/t/rpl_critical_errors.test | 0 mysql-test/{ => suite/rpl}/t/rpl_ddl.test | 0 .../rpl}/t/rpl_deadlock_innodb-slave.opt | 0 .../rpl}/t/rpl_deadlock_innodb.test | 0 .../rpl}/t/rpl_delete_no_where.test | 0 .../{ => suite/rpl}/t/rpl_do_grant.test | 0 mysql-test/{ => suite/rpl}/t/rpl_drop.test | 0 mysql-test/{ => suite/rpl}/t/rpl_drop_db.test | 0 .../{ => suite/rpl}/t/rpl_drop_temp-slave.opt | 0 .../{ => suite/rpl}/t/rpl_drop_temp.test | 0 .../rpl}/t/rpl_dual_pos_advance-master.opt | 0 .../rpl}/t/rpl_dual_pos_advance.test | 0 .../rpl}/t/rpl_empty_master_crash-master.opt | 0 .../rpl}/t/rpl_empty_master_crash.test | 0 .../rpl}/t/rpl_err_ignoredtable-slave.opt | 0 .../rpl}/t/rpl_err_ignoredtable.test | 0 mysql-test/{ => suite/rpl}/t/rpl_events.test | 0 .../rpl}/t/rpl_extraCol_innodb-master.opt | 0 .../rpl}/t/rpl_extraCol_innodb-slave.opt | 0 .../rpl}/t/rpl_extraCol_innodb.test | 0 .../rpl}/t/rpl_extraCol_myisam.test | 0 .../rpl}/t/rpl_failed_optimize-master.opt | 0 .../rpl}/t/rpl_failed_optimize.test | 0 .../rpl}/t/rpl_flushlog_loop-master.opt | 0 .../rpl}/t/rpl_flushlog_loop-master.sh | 0 .../rpl}/t/rpl_flushlog_loop-slave.opt | 0 .../rpl}/t/rpl_flushlog_loop-slave.sh | 0 .../{ => suite/rpl}/t/rpl_flushlog_loop.test | 0 .../rpl}/t/rpl_foreign_key_innodb-slave.opt | 0 .../rpl}/t/rpl_foreign_key_innodb.test | 0 .../rpl}/t/rpl_free_items-slave.opt | 0 .../{ => suite/rpl}/t/rpl_free_items.test | 0 .../{ => suite/rpl}/t/rpl_get_lock.test | 0 .../rpl}/t/rpl_ignore_grant-slave.opt | 0 .../{ => suite/rpl}/t/rpl_ignore_grant.test | 0 .../rpl}/t/rpl_ignore_revoke-slave.opt | 0 .../{ => suite/rpl}/t/rpl_ignore_revoke.test | 0 .../rpl}/t/rpl_ignore_table-slave.opt | 0 .../{ => suite/rpl}/t/rpl_ignore_table.test | 0 .../rpl}/t/rpl_ignore_table_update-slave.opt | 0 .../rpl}/t/rpl_ignore_table_update.test | 0 .../{ => suite/rpl}/t/rpl_incident-master.opt | 0 .../{ => suite/rpl}/t/rpl_incident.test | 0 .../rpl}/t/rpl_init_slave-slave.opt | 0 .../{ => suite/rpl}/t/rpl_init_slave.test | 0 mysql-test/{ => suite/rpl}/t/rpl_innodb.test | 0 mysql-test/{ => suite/rpl}/t/rpl_insert.test | 0 .../{ => suite/rpl}/t/rpl_insert_id-slave.opt | 0 .../{ => suite/rpl}/t/rpl_insert_id.test | 0 .../rpl}/t/rpl_insert_id_pk-slave.opt | 0 .../{ => suite/rpl}/t/rpl_insert_id_pk.test | 0 .../rpl}/t/rpl_insert_ignore-slave.opt | 0 .../{ => suite/rpl}/t/rpl_insert_ignore.test | 0 .../{ => suite/rpl}/t/rpl_insert_select.test | 0 .../t/rpl_known_bugs_detection-master.opt | 0 .../rpl}/t/rpl_known_bugs_detection.test | 0 .../rpl}/t/rpl_load_from_master-slave.opt | 0 .../rpl}/t/rpl_load_from_master.test | 0 .../rpl}/t/rpl_load_table_from_master.test | 0 .../{ => suite/rpl}/t/rpl_loaddata.test | 0 .../rpl}/t/rpl_loaddata_charset.test | 0 .../rpl}/t/rpl_loaddata_m-master.opt | 0 .../{ => suite/rpl}/t/rpl_loaddata_m.test | 0 .../rpl}/t/rpl_loaddata_s-slave.opt | 0 .../{ => suite/rpl}/t/rpl_loaddata_s.test | 0 .../rpl}/t/rpl_loaddata_simple.test | 0 .../{ => suite/rpl}/t/rpl_loaddatalocal.test | 0 .../{ => suite/rpl}/t/rpl_loadfile.test | 0 mysql-test/{ => suite/rpl}/t/rpl_locale.test | 0 mysql-test/{ => suite/rpl}/t/rpl_log_pos.test | 0 .../{ => suite/rpl}/t/rpl_many_optimize.test | 0 .../rpl}/t/rpl_master_pos_wait.test | 0 .../rpl}/t/rpl_misc_functions-slave.sh | 0 .../{ => suite/rpl}/t/rpl_misc_functions.test | 0 .../{ => suite/rpl}/t/rpl_mixed_ddl_dml.test | 0 .../rpl}/t/rpl_multi_delete-slave.opt | 0 .../{ => suite/rpl}/t/rpl_multi_delete.test | 0 .../rpl}/t/rpl_multi_delete2-slave.opt | 0 .../{ => suite/rpl}/t/rpl_multi_delete2.test | 0 .../rpl}/t/rpl_multi_engine-slave.opt | 0 .../{ => suite/rpl}/t/rpl_multi_engine.test | 0 .../{ => suite/rpl}/t/rpl_multi_update.test | 0 .../rpl}/t/rpl_multi_update2-slave.opt | 0 .../{ => suite/rpl}/t/rpl_multi_update2.test | 0 .../{ => suite/rpl}/t/rpl_multi_update3.test | 0 .../rpl}/t/rpl_multi_update4-slave.opt | 0 .../{ => suite/rpl}/t/rpl_multi_update4.test | 0 .../{ => suite/rpl}/t/rpl_optimize.test | 0 .../{ => suite/rpl}/t/rpl_packet-master.opt | 0 .../{ => suite/rpl}/t/rpl_packet-slave.opt | 0 mysql-test/{ => suite/rpl}/t/rpl_packet.test | 0 mysql-test/{ => suite/rpl}/t/rpl_ps.test | 0 .../{ => suite/rpl}/t/rpl_rbr_to_sbr.test | 0 .../{ => suite/rpl}/t/rpl_read_only-slave.opt | 0 .../{ => suite/rpl}/t/rpl_read_only.test | 0 .../{ => suite/rpl}/t/rpl_redirect.test | 0 .../rpl}/t/rpl_relay_space_innodb-master.opt | 0 .../rpl}/t/rpl_relay_space_innodb-slave.opt | 0 .../rpl}/t/rpl_relay_space_innodb.test | 0 .../rpl}/t/rpl_relay_space_myisam.test | 0 .../rpl}/t/rpl_relayrotate-slave.opt | 0 .../{ => suite/rpl}/t/rpl_relayrotate.test | 0 .../rpl}/t/rpl_relayspace-slave.opt | 0 .../{ => suite/rpl}/t/rpl_relayspace.test | 0 .../rpl}/t/rpl_replicate_do-slave.opt | 0 .../{ => suite/rpl}/t/rpl_replicate_do.test | 0 .../rpl}/t/rpl_replicate_ignore_db-slave.opt | 0 .../rpl}/t/rpl_replicate_ignore_db.test | 0 .../{ => suite/rpl}/t/rpl_rewrt_db-slave.opt | 0 .../{ => suite/rpl}/t/rpl_rewrt_db.test | 0 .../rpl}/t/rpl_rotate_logs-master.opt | 0 .../rpl}/t/rpl_rotate_logs-slave.sh | 0 .../rpl}/t/rpl_rotate_logs.slave-mi | 0 .../{ => suite/rpl}/t/rpl_rotate_logs.test | 0 mysql-test/{ => suite/rpl}/t/rpl_row_001.test | 0 .../rpl}/t/rpl_row_4_bytes-master.opt | 0 .../{ => suite/rpl}/t/rpl_row_4_bytes.test | 0 mysql-test/{ => suite/rpl}/t/rpl_row_NOW.test | 0 .../{ => suite/rpl}/t/rpl_row_USER.test | 0 .../{ => suite/rpl}/t/rpl_row_UUID.test | 0 .../rpl}/t/rpl_row_basic_11bugs-master.opt | 0 .../rpl}/t/rpl_row_basic_11bugs-slave.opt | 0 .../rpl}/t/rpl_row_basic_11bugs.test | 0 .../rpl}/t/rpl_row_basic_2myisam.test | 0 .../rpl}/t/rpl_row_basic_3innodb-slave.opt | 0 .../rpl}/t/rpl_row_basic_3innodb.test | 0 .../rpl}/t/rpl_row_basic_8partition.test | 0 .../rpl}/t/rpl_row_blob_innodb-slave.opt | 0 .../rpl}/t/rpl_row_blob_innodb.test | 0 .../rpl}/t/rpl_row_blob_myisam.test | 0 .../{ => suite/rpl}/t/rpl_row_charset.test | 0 .../rpl}/t/rpl_row_create_table-slave.opt | 0 .../rpl}/t/rpl_row_create_table.test | 0 .../rpl}/t/rpl_row_delayed_ins.test | 0 .../{ => suite/rpl}/t/rpl_row_drop.test | 0 .../rpl}/t/rpl_row_err_daisychain-master.opt | 0 .../rpl}/t/rpl_row_err_daisychain-slave.opt | 0 .../{ => suite/rpl}/t/rpl_row_flsh_tbls.test | 0 .../{ => suite/rpl}/t/rpl_row_func001.test | 0 .../{ => suite/rpl}/t/rpl_row_func002.test | 0 .../rpl}/t/rpl_row_func003-slave.opt | 0 .../{ => suite/rpl}/t/rpl_row_func003.test | 0 .../rpl}/t/rpl_row_inexist_tbl-slave.opt | 0 .../rpl}/t/rpl_row_inexist_tbl.test | 0 .../rpl}/t/rpl_row_insert_delayed.test | 0 .../{ => suite/rpl}/t/rpl_row_log-master.opt | 0 .../{ => suite/rpl}/t/rpl_row_log-slave.opt | 0 mysql-test/{ => suite/rpl}/t/rpl_row_log.test | 0 .../rpl}/t/rpl_row_log_innodb-master.opt | 0 .../rpl}/t/rpl_row_log_innodb-slave.opt | 0 .../{ => suite/rpl}/t/rpl_row_log_innodb.test | 0 .../rpl}/t/rpl_row_max_relay_size.test | 0 .../rpl}/t/rpl_row_mysqlbinlog-master.opt | 0 .../rpl}/t/rpl_row_mysqlbinlog.test | 0 .../{ => suite/rpl}/t/rpl_row_mystery22.test | 0 .../rpl}/t/rpl_row_reset_slave.test | 0 .../{ => suite/rpl}/t/rpl_row_sp001.test | 0 .../rpl}/t/rpl_row_sp002_innodb-master.opt | 0 .../rpl}/t/rpl_row_sp002_innodb-slave.opt | 0 .../rpl}/t/rpl_row_sp002_innodb.test | 0 .../rpl}/t/rpl_row_sp003-master.opt | 0 .../{ => suite/rpl}/t/rpl_row_sp003-slave.opt | 0 .../{ => suite/rpl}/t/rpl_row_sp003.test | 0 .../{ => suite/rpl}/t/rpl_row_sp005.test | 0 .../rpl}/t/rpl_row_sp006_InnoDB-slave.opt | 0 .../rpl}/t/rpl_row_sp006_InnoDB.test | 0 .../rpl}/t/rpl_row_sp007_innodb-slave.opt | 0 .../rpl}/t/rpl_row_sp007_innodb.test | 0 .../{ => suite/rpl}/t/rpl_row_sp008.test | 0 .../{ => suite/rpl}/t/rpl_row_sp009.test | 0 .../{ => suite/rpl}/t/rpl_row_sp010.test | 0 .../{ => suite/rpl}/t/rpl_row_sp011.test | 0 .../{ => suite/rpl}/t/rpl_row_sp012.test | 0 .../rpl}/t/rpl_row_stop_middle.test | 0 .../t/rpl_row_stop_middle_update-master.opt | 0 .../t/rpl_row_stop_middle_update-slave.opt | 0 .../rpl}/t/rpl_row_stop_middle_update.test | 0 .../rpl}/t/rpl_row_tabledefs_2myisam.test | 0 .../t/rpl_row_tabledefs_3innodb-slave.opt | 0 .../rpl}/t/rpl_row_tabledefs_3innodb.test | 0 .../{ => suite/rpl}/t/rpl_row_trig001.test | 0 .../{ => suite/rpl}/t/rpl_row_trig002.test | 0 .../{ => suite/rpl}/t/rpl_row_trig003.test | 0 .../{ => suite/rpl}/t/rpl_row_trig004.test | 0 .../{ => suite/rpl}/t/rpl_row_until.test | 0 .../{ => suite/rpl}/t/rpl_row_view01.test | 0 .../{ => suite/rpl}/t/rpl_server_id1.test | 0 .../rpl}/t/rpl_server_id2-slave.opt | 0 .../{ => suite/rpl}/t/rpl_server_id2.test | 0 .../{ => suite/rpl}/t/rpl_session_var.test | 0 .../{ => suite/rpl}/t/rpl_set_charset.test | 0 mysql-test/{ => suite/rpl}/t/rpl_sf.test | 0 .../rpl}/t/rpl_skip_error-slave.opt | 0 .../{ => suite/rpl}/t/rpl_skip_error.test | 0 .../{ => suite/rpl}/t/rpl_slave_status.test | 0 .../{ => suite/rpl}/t/rpl_sp-master.opt | 0 mysql-test/{ => suite/rpl}/t/rpl_sp-slave.opt | 0 mysql-test/{ => suite/rpl}/t/rpl_sp.test | 0 mysql-test/{ => suite/rpl}/t/rpl_sp004.test | 0 .../rpl}/t/rpl_sp_effects-master.opt | 0 .../rpl}/t/rpl_sp_effects-slave.opt | 0 .../{ => suite/rpl}/t/rpl_sp_effects.test | 0 .../rpl}/t/rpl_sporadic_master-master.opt | 0 .../rpl}/t/rpl_sporadic_master.test | 0 mysql-test/{ => suite/rpl}/t/rpl_ssl.test | 0 mysql-test/{ => suite/rpl}/t/rpl_ssl1.test | 0 .../rpl}/t/rpl_start_stop_slave.test | 0 .../rpl}/t/rpl_stm_000001-slave.opt | 0 .../{ => suite/rpl}/t/rpl_stm_000001.test | 0 .../{ => suite/rpl}/t/rpl_stm_EE_err2.test | 0 .../{ => suite/rpl}/t/rpl_stm_charset.test | 0 .../{ => suite/rpl}/t/rpl_stm_flsh_tbls.test | 0 .../rpl}/t/rpl_stm_insert_delayed.test | 0 .../{ => suite/rpl}/t/rpl_stm_log-master.opt | 0 .../{ => suite/rpl}/t/rpl_stm_log-slave.opt | 0 mysql-test/{ => suite/rpl}/t/rpl_stm_log.test | 0 .../rpl}/t/rpl_stm_max_relay_size.test | 0 .../rpl}/t/rpl_stm_multi_query.test | 0 .../{ => suite/rpl}/t/rpl_stm_mystery22.test | 0 .../{ => suite/rpl}/t/rpl_stm_no_op.test | 0 .../rpl}/t/rpl_stm_reset_slave.test | 0 .../{ => suite/rpl}/t/rpl_stm_until.test | 0 .../rpl}/t/rpl_switch_stm_row_mixed.test | 0 .../{ => suite/rpl}/t/rpl_temp_table.test | 0 .../{ => suite/rpl}/t/rpl_temporary.test | 0 .../{ => suite/rpl}/t/rpl_timezone-master.opt | 0 .../{ => suite/rpl}/t/rpl_timezone-slave.opt | 0 .../{ => suite/rpl}/t/rpl_timezone.test | 0 mysql-test/{ => suite/rpl}/t/rpl_trigger.test | 0 .../{ => suite/rpl}/t/rpl_trunc_temp.test | 0 .../rpl}/t/rpl_truncate_2myisam.test | 0 .../rpl}/t/rpl_truncate_3innodb.test | 0 .../rpl}/t/rpl_truncate_7ndb_2-master.opt | 0 .../rpl}/t/rpl_truncate_7ndb_2.test | 0 .../{ => suite/rpl}/t/rpl_udf-master.opt | 0 .../{ => suite/rpl}/t/rpl_udf-slave.opt | 0 mysql-test/{ => suite/rpl}/t/rpl_udf.test | 0 .../{ => suite/rpl}/t/rpl_user_variables.test | 0 .../rpl}/t/rpl_variables-master.opt | 0 .../{ => suite/rpl}/t/rpl_variables.test | 0 .../{ => suite/rpl}/t/rpl_view-slave.opt | 0 mysql-test/{ => suite/rpl}/t/rpl_view.test | 0 .../rpl_ndb}/r/rpl_ndb_2innodb.result | 0 .../rpl_ndb}/r/rpl_ndb_2myisam.result | 0 .../{ => suite/rpl_ndb}/r/rpl_ndb_UUID.result | 0 .../rpl_ndb}/r/rpl_ndb_auto_inc.result | 0 .../{ => suite/rpl_ndb}/r/rpl_ndb_bank.result | 0 .../rpl_ndb}/r/rpl_ndb_basic.result | 0 .../{ => suite/rpl_ndb}/r/rpl_ndb_blob.result | 0 .../rpl_ndb}/r/rpl_ndb_blob2.result | 0 .../rpl_ndb}/r/rpl_ndb_charset.result | 0 .../rpl_ndb}/r/rpl_ndb_circular.result | 0 .../r/rpl_ndb_circular_simplex.result | 0 .../r/rpl_ndb_commit_afterflush.result | 0 .../rpl_ndb}/r/rpl_ndb_dd_advance.result | 0 .../rpl_ndb}/r/rpl_ndb_dd_basic.result | 0 .../rpl_ndb}/r/rpl_ndb_dd_partitions.result | 0 .../{ => suite/rpl_ndb}/r/rpl_ndb_ddl.result | 0 .../rpl_ndb}/r/rpl_ndb_delete_nowhere.result | 0 .../rpl_ndb}/r/rpl_ndb_do_db.result | 0 .../rpl_ndb}/r/rpl_ndb_do_table.result | 0 .../rpl_ndb}/r/rpl_ndb_extraCol.result | 0 .../rpl_ndb}/r/rpl_ndb_func003.result | 0 .../rpl_ndb}/r/rpl_ndb_idempotent.result | 0 .../rpl_ndb}/r/rpl_ndb_innodb_trans.result | 0 .../rpl_ndb}/r/rpl_ndb_insert_ignore.result | 0 .../{ => suite/rpl_ndb}/r/rpl_ndb_load.result | 0 .../{ => suite/rpl_ndb}/r/rpl_ndb_log.result | 0 .../rpl_ndb}/r/rpl_ndb_multi.result | 0 .../rpl_ndb}/r/rpl_ndb_multi_update2.result | 0 .../rpl_ndb}/r/rpl_ndb_multi_update3.result | 0 .../rpl_ndb}/r/rpl_ndb_relayrotate.result | 0 .../rpl_ndb}/r/rpl_ndb_rep_ignore.result | 0 .../rpl_ndb}/r/rpl_ndb_row_001.result | 0 .../rpl_ndb}/r/rpl_ndb_sp003.result | 0 .../rpl_ndb}/r/rpl_ndb_sp006.result | 0 .../rpl_ndb}/r/rpl_ndb_stm_innodb.result | 0 .../{ => suite/rpl_ndb}/r/rpl_ndb_sync.result | 0 .../rpl_ndb}/r/rpl_ndb_trig004.result | 0 .../rpl_ndb}/r/rpl_ndbapi_multi.result | 0 .../rpl_ndb}/r/rpl_row_basic_7ndb.result | 0 .../rpl_ndb}/r/rpl_truncate_7ndb.result | 0 mysql-test/suite/rpl_ndb/t/disabled.def | 27 ++ .../rpl_ndb}/t/rpl_ndb_2innodb-master.opt | 0 .../rpl_ndb}/t/rpl_ndb_2innodb-slave.opt | 0 .../rpl_ndb}/t/rpl_ndb_2innodb.test | 0 .../rpl_ndb}/t/rpl_ndb_2myisam-master.opt | 0 .../rpl_ndb}/t/rpl_ndb_2myisam-slave.opt | 0 .../rpl_ndb}/t/rpl_ndb_2myisam.test | 0 .../{ => suite/rpl_ndb}/t/rpl_ndb_UUID.test | 0 .../rpl_ndb}/t/rpl_ndb_auto_inc.test | 0 .../{ => suite/rpl_ndb}/t/rpl_ndb_bank.test | 0 .../{ => suite/rpl_ndb}/t/rpl_ndb_basic.test | 0 .../{ => suite/rpl_ndb}/t/rpl_ndb_blob.test | 0 .../{ => suite/rpl_ndb}/t/rpl_ndb_blob2.test | 0 .../rpl_ndb}/t/rpl_ndb_charset.test | 0 .../rpl_ndb}/t/rpl_ndb_circular.test | 0 .../rpl_ndb}/t/rpl_ndb_circular_simplex.test | 0 .../rpl_ndb}/t/rpl_ndb_commit_afterflush.test | 0 .../rpl_ndb}/t/rpl_ndb_dd_advance.test | 0 .../rpl_ndb}/t/rpl_ndb_dd_basic.test | 0 .../rpl_ndb}/t/rpl_ndb_dd_partitions.test | 0 .../{ => suite/rpl_ndb}/t/rpl_ndb_ddl.test | 0 .../rpl_ndb}/t/rpl_ndb_delete_nowhere.test | 0 .../rpl_ndb}/t/rpl_ndb_do_db-slave.opt | 0 .../{ => suite/rpl_ndb}/t/rpl_ndb_do_db.test | 0 .../rpl_ndb}/t/rpl_ndb_do_table-slave.opt | 0 .../rpl_ndb}/t/rpl_ndb_do_table.test | 0 .../rpl_ndb}/t/rpl_ndb_extraCol.test | 0 .../rpl_ndb}/t/rpl_ndb_func003.test | 0 .../rpl_ndb}/t/rpl_ndb_idempotent.test | 0 .../rpl_ndb}/t/rpl_ndb_innodb2ndb-master.opt | 0 .../rpl_ndb}/t/rpl_ndb_innodb2ndb-slave.opt | 0 .../rpl_ndb}/t/rpl_ndb_innodb2ndb.test | 0 .../rpl_ndb}/t/rpl_ndb_innodb_trans-slave.opt | 0 .../rpl_ndb}/t/rpl_ndb_innodb_trans.test | 0 .../rpl_ndb}/t/rpl_ndb_insert_ignore.test | 0 .../{ => suite/rpl_ndb}/t/rpl_ndb_load.test | 0 .../rpl_ndb}/t/rpl_ndb_log-master.opt | 0 .../{ => suite/rpl_ndb}/t/rpl_ndb_log.test | 0 .../{ => suite/rpl_ndb}/t/rpl_ndb_multi.test | 0 .../t/rpl_ndb_multi_update2-slave.opt | 0 .../rpl_ndb}/t/rpl_ndb_multi_update2.test | 0 .../rpl_ndb}/t/rpl_ndb_multi_update3.test | 0 .../rpl_ndb}/t/rpl_ndb_myisam2ndb-master.opt | 0 .../rpl_ndb}/t/rpl_ndb_myisam2ndb-slave.opt | 0 .../rpl_ndb}/t/rpl_ndb_myisam2ndb.test | 0 .../rpl_ndb}/t/rpl_ndb_relayrotate-slave.opt | 0 .../rpl_ndb}/t/rpl_ndb_relayrotate.test | 0 .../rpl_ndb}/t/rpl_ndb_rep_ignore-slave.opt | 0 .../rpl_ndb}/t/rpl_ndb_rep_ignore.test | 0 .../rpl_ndb}/t/rpl_ndb_row_001.test | 0 .../{ => suite/rpl_ndb}/t/rpl_ndb_sp003.test | 0 .../{ => suite/rpl_ndb}/t/rpl_ndb_sp006.test | 0 .../rpl_ndb}/t/rpl_ndb_stm_innodb-master.opt | 0 .../rpl_ndb}/t/rpl_ndb_stm_innodb.test | 0 .../{ => suite/rpl_ndb}/t/rpl_ndb_sync.test | 0 .../rpl_ndb}/t/rpl_ndb_trig004.test | 0 .../rpl_ndb}/t/rpl_ndbapi_multi.test | 0 .../rpl_ndb}/t/rpl_row_basic_7ndb.test | 0 .../rpl_ndb}/t/rpl_truncate_7ndb.test | 0 mysql-test/t/disabled.def | 23 -- 758 files changed, 278 insertions(+), 202 deletions(-) rename mysql-test/{ => suite/binlog}/r/binlog_killed.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_row_binlog.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_row_blackhole.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_row_ctype_cp932.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_row_ctype_ucs.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_row_drop_tmp_tbl.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_row_innodb_stat.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_row_insert_select.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_row_mix_innodb_myisam.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_statement_insert_delayed.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_stm_binlog.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_stm_blackhole.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_stm_ctype_cp932.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_stm_ctype_ucs.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_stm_drop_tmp_tbl.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_stm_innodb_stat.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_stm_insert_select.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_stm_mix_innodb_myisam.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_stm_ps.result (100%) rename mysql-test/{ => suite/binlog}/t/binlog_killed.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_row_binlog-master.opt (100%) rename mysql-test/{ => suite/binlog}/t/binlog_row_binlog.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_row_blackhole.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_row_ctype_cp932.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_row_ctype_ucs.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_row_drop_tmp_tbl.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_row_innodb_stat-master.opt (100%) rename mysql-test/{ => suite/binlog}/t/binlog_row_innodb_stat.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_row_insert_select.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_row_mix_innodb_myisam-master.opt (100%) rename mysql-test/{ => suite/binlog}/t/binlog_row_mix_innodb_myisam.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_statement_insert_delayed.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_stm_binlog-master.opt (100%) rename mysql-test/{ => suite/binlog}/t/binlog_stm_binlog.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_stm_blackhole.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_stm_ctype_cp932.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_stm_ctype_ucs.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_stm_drop_tmp_tbl.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_stm_innodb_stat-master.opt (100%) rename mysql-test/{ => suite/binlog}/t/binlog_stm_innodb_stat.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_stm_insert_select.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_stm_mix_innodb_myisam-master.opt (100%) rename mysql-test/{ => suite/binlog}/t/binlog_stm_mix_innodb_myisam.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_stm_ps.test (100%) create mode 100644 mysql-test/suite/funcs_1/t/suite.opt create mode 100644 mysql-test/suite/funcs_2/t/suite.opt rename mysql-test/{ => suite/ndb}/r/loaddata_autocom_ndb.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_alter_table.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_alter_table2.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_alter_table3.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_autodiscover.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_autodiscover2.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_autodiscover3.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_backup_print.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_basic.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_binlog_basic.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_binlog_basic2.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_binlog_ddl_multi.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_binlog_discover.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_binlog_ignore_db.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_binlog_log_bin.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_binlog_multi.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_bitfield.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_blob.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_blob_partition.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_cache.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_cache2.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_cache_multi.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_cache_multi2.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_charset.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_condition_pushdown.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_config.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_config2.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_cursor.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_database.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_dd_alter.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_dd_backuprestore.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_dd_basic.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_dd_ddl.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_dd_disk2memory.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_dd_dump.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_dd_sql_features.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_gis.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_grant.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_index.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_index_ordered.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_index_unique.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_insert.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_limit.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_load.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_loaddatalocal.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_lock.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_minmax.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_multi.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_multi_row.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_partition_error.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_partition_error2.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_partition_key.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_partition_list.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_partition_range.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_read_multi_range.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_rename.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_replace.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_restore.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_restore_compat.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_restore_partition.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_restore_print.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_row_format.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_single_user.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_sp.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_subquery.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_temporary.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_transaction.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_trigger.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_truncate.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_types.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_update.result (100%) rename mysql-test/{ => suite/ndb}/r/ndb_view.result (100%) rename mysql-test/{ => suite/ndb}/r/ndbapi.result (100%) rename mysql-test/{ => suite/ndb}/r/partition_03ndb.result (100%) rename mysql-test/{ => suite/ndb}/r/ps_7ndb.result (100%) rename mysql-test/{ => suite/ndb}/r/strict_autoinc_5ndb.result (100%) create mode 100644 mysql-test/suite/ndb/t/disabled.def rename mysql-test/{ => suite/ndb}/t/loaddata_autocom_ndb.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_alter_table.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_alter_table2.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_alter_table3.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_autodiscover.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_autodiscover2-master.opt (100%) rename mysql-test/{ => suite/ndb}/t/ndb_autodiscover2.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_autodiscover3.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_backup_print.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_basic.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_binlog_basic.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_binlog_basic2.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_binlog_ddl_multi.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_binlog_discover.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_binlog_ignore_db-master.opt (100%) rename mysql-test/{ => suite/ndb}/t/ndb_binlog_ignore_db.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_binlog_log_bin.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_binlog_multi.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_bitfield.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_blob.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_blob_partition.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_cache.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_cache2.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_cache_multi.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_cache_multi2.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_charset.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_condition_pushdown.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_config.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_config2.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_cursor.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_database.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_dd_alter.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_dd_backuprestore.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_dd_basic.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_dd_ddl.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_dd_disk2memory.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_dd_dump.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_dd_sql_features.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_gis.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_grant.later (100%) rename mysql-test/{ => suite/ndb}/t/ndb_index.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_index_ordered.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_index_unique.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_insert.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_limit.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_load.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_loaddatalocal.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_lock.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_minmax.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_multi.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_multi_row.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_partition_error.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_partition_error2-master.opt (100%) rename mysql-test/{ => suite/ndb}/t/ndb_partition_error2.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_partition_key.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_partition_list.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_partition_range.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_read_multi_range.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_rename.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_replace.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_restore.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_restore_compat.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_restore_partition-master.opt (100%) rename mysql-test/{ => suite/ndb}/t/ndb_restore_partition.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_restore_print.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_row_format.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_single_user.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_sp.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_subquery.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_temporary.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_transaction.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_trigger.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_truncate.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_types.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_update.test (100%) rename mysql-test/{ => suite/ndb}/t/ndb_view.test (100%) rename mysql-test/{ => suite/ndb}/t/ndbapi.test (100%) rename mysql-test/{ => suite/ndb}/t/partition_03ndb.test (100%) rename mysql-test/{ => suite/ndb}/t/ps_7ndb.test (100%) rename mysql-test/{ => suite/ndb}/t/strict_autoinc_5ndb.test (100%) rename mysql-test/{ => suite/rpl}/r/rpl000001.a.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl000001.b.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl000010.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl000011.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl000013.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl000017.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_000015.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_EE_err.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_LD_INFILE.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_alter.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_alter_db.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_auto_increment.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_auto_increment_11932.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_bit.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_bit_npk.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_change_master.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_charset_sjis.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_commit_after_flush.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_create_database.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_critical_errors.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_critical_errors.result.txt (100%) rename mysql-test/{ => suite/rpl}/r/rpl_ddl.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_deadlock_innodb.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_delete_no_where.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_do_grant.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_drop.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_drop_db.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_drop_temp.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_dual_pos_advance.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_empty_master_crash.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_err_ignoredtable.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_events.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_extraCol_innodb.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_extraCol_myisam.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_failed_optimize.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_flushlog_loop.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_foreign_key_innodb.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_free_items.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_get_lock.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_ignore_grant.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_ignore_revoke.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_ignore_table.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_ignore_table_update.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_incident.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_init_slave.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_innodb.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_insert.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_insert_id.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_insert_id_pk.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_insert_ignore.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_insert_select.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_known_bugs_detection.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_load_from_master.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_load_table_from_master.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_loaddata.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_loaddata_charset.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_loaddata_m.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_loaddata_s.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_loaddata_simple.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_loaddatalocal.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_loadfile.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_locale.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_log_pos.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_many_optimize.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_master_pos_wait.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_misc_functions.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_mixed_ddl_dml.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_multi_delete.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_multi_delete2.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_multi_engine.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_multi_update.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_multi_update2.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_multi_update3.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_multi_update4.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_optimize.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_packet.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_ps.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_rbr_to_sbr.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_read_only.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_redirect.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_relay_space_innodb.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_relay_space_myisam.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_relayrotate.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_relayspace.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_replicate_do.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_replicate_ignore_db.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_rewrt_db.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_rotate_logs.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_001.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_4_bytes.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_NOW.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_USER.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_UUID.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_basic_11bugs-master.opt (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_basic_11bugs-slave.opt (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_basic_11bugs.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_basic_2myisam.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_basic_3innodb.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_basic_8partition.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_blob_innodb.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_blob_myisam.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_charset.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_create_table.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_delayed_ins.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_drop.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_err_ignoredtable.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_flsh_tbls.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_func001.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_func002.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_func003.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_inexist_tbl.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_insert_delayed.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_loaddata_m.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_log.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_log_innodb.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_max_relay_size.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_multi_query.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_mysqlbinlog.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_mystery22.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_reset_slave.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_sp001.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_sp002_innodb.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_sp003.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_sp005.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_sp006_InnoDB.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_sp007_innodb.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_sp008.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_sp009.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_sp010.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_sp011.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_sp012.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_stop_middle.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_stop_middle_update.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_tabledefs_2myisam.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_tabledefs_3innodb.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_tabledefs_7ndb.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_trig001.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_trig002.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_trig003.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_trig004.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_until.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_row_view01.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_server_id1.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_server_id2.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_session_var.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_set_charset.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_sf.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_skip_error.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_slave_status.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_sp.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_sp004.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_sp_effects.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_sporadic_master.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_ssl.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_ssl1.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_start_stop_slave.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_stm_000001.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_stm_EE_err2.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_stm_charset.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_stm_flsh_tbls.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_stm_insert_delayed.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_stm_log.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_stm_max_relay_size.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_stm_multi_query.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_stm_mystery22.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_stm_no_op.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_stm_reset_slave.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_stm_until.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_switch_stm_row_mixed.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_temp_table.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_temporary.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_timezone.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_trigger.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_trunc_temp.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_truncate_2myisam.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_truncate_3innodb.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_truncate_7ndb_2.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_udf.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_user_variables.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_variables.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_view.result (100%) create mode 100644 mysql-test/suite/rpl/t/disabled.def rename mysql-test/{ => suite/rpl}/t/rpl000010-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl000010.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl000011.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl000013.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl000017-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl000017-slave.sh (100%) rename mysql-test/{ => suite/rpl}/t/rpl000017.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl000018-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl000018-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_000015-slave.sh (100%) rename mysql-test/{ => suite/rpl}/t/rpl_000015.slave-mi (100%) rename mysql-test/{ => suite/rpl}/t/rpl_000015.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_EE_err.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_LD_INFILE.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_alter.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_alter_db.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_auto_increment-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_auto_increment-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_auto_increment.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_auto_increment_11932.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_bit.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_bit_npk.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_change_master.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_charset_sjis.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_commit_after_flush.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_create_database-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_create_database-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_create_database.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_critical_errors.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_ddl.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_deadlock_innodb-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_deadlock_innodb.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_delete_no_where.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_do_grant.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_drop.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_drop_db.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_drop_temp-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_drop_temp.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_dual_pos_advance-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_dual_pos_advance.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_empty_master_crash-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_empty_master_crash.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_err_ignoredtable-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_err_ignoredtable.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_events.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_extraCol_innodb-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_extraCol_innodb-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_extraCol_innodb.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_extraCol_myisam.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_failed_optimize-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_failed_optimize.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_flushlog_loop-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_flushlog_loop-master.sh (100%) rename mysql-test/{ => suite/rpl}/t/rpl_flushlog_loop-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_flushlog_loop-slave.sh (100%) rename mysql-test/{ => suite/rpl}/t/rpl_flushlog_loop.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_foreign_key_innodb-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_foreign_key_innodb.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_free_items-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_free_items.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_get_lock.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_ignore_grant-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_ignore_grant.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_ignore_revoke-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_ignore_revoke.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_ignore_table-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_ignore_table.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_ignore_table_update-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_ignore_table_update.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_incident-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_incident.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_init_slave-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_init_slave.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_innodb.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_insert.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_insert_id-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_insert_id.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_insert_id_pk-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_insert_id_pk.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_insert_ignore-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_insert_ignore.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_insert_select.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_known_bugs_detection-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_known_bugs_detection.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_load_from_master-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_load_from_master.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_load_table_from_master.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_loaddata.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_loaddata_charset.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_loaddata_m-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_loaddata_m.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_loaddata_s-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_loaddata_s.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_loaddata_simple.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_loaddatalocal.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_loadfile.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_locale.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_log_pos.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_many_optimize.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_master_pos_wait.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_misc_functions-slave.sh (100%) rename mysql-test/{ => suite/rpl}/t/rpl_misc_functions.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_mixed_ddl_dml.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_multi_delete-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_multi_delete.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_multi_delete2-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_multi_delete2.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_multi_engine-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_multi_engine.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_multi_update.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_multi_update2-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_multi_update2.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_multi_update3.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_multi_update4-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_multi_update4.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_optimize.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_packet-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_packet-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_packet.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_ps.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_rbr_to_sbr.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_read_only-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_read_only.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_redirect.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_relay_space_innodb-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_relay_space_innodb-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_relay_space_innodb.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_relay_space_myisam.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_relayrotate-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_relayrotate.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_relayspace-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_relayspace.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_replicate_do-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_replicate_do.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_replicate_ignore_db-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_replicate_ignore_db.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_rewrt_db-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_rewrt_db.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_rotate_logs-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_rotate_logs-slave.sh (100%) rename mysql-test/{ => suite/rpl}/t/rpl_rotate_logs.slave-mi (100%) rename mysql-test/{ => suite/rpl}/t/rpl_rotate_logs.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_001.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_4_bytes-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_4_bytes.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_NOW.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_USER.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_UUID.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_basic_11bugs-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_basic_11bugs-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_basic_11bugs.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_basic_2myisam.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_basic_3innodb-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_basic_3innodb.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_basic_8partition.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_blob_innodb-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_blob_innodb.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_blob_myisam.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_charset.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_create_table-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_create_table.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_delayed_ins.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_drop.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_err_daisychain-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_err_daisychain-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_flsh_tbls.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_func001.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_func002.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_func003-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_func003.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_inexist_tbl-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_inexist_tbl.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_insert_delayed.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_log-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_log-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_log.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_log_innodb-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_log_innodb-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_log_innodb.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_max_relay_size.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_mysqlbinlog-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_mysqlbinlog.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_mystery22.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_reset_slave.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp001.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp002_innodb-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp002_innodb-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp002_innodb.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp003-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp003-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp003.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp005.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp006_InnoDB-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp006_InnoDB.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp007_innodb-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp007_innodb.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp008.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp009.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp010.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp011.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_sp012.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_stop_middle.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_stop_middle_update-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_stop_middle_update-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_stop_middle_update.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_tabledefs_2myisam.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_tabledefs_3innodb-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_tabledefs_3innodb.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_trig001.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_trig002.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_trig003.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_trig004.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_until.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_row_view01.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_server_id1.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_server_id2-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_server_id2.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_session_var.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_set_charset.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_sf.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_skip_error-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_skip_error.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_slave_status.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_sp-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_sp-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_sp.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_sp004.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_sp_effects-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_sp_effects-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_sp_effects.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_sporadic_master-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_sporadic_master.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_ssl.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_ssl1.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_start_stop_slave.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_stm_000001-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_stm_000001.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_stm_EE_err2.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_stm_charset.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_stm_flsh_tbls.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_stm_insert_delayed.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_stm_log-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_stm_log-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_stm_log.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_stm_max_relay_size.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_stm_multi_query.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_stm_mystery22.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_stm_no_op.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_stm_reset_slave.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_stm_until.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_switch_stm_row_mixed.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_temp_table.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_temporary.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_timezone-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_timezone-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_timezone.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_trigger.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_trunc_temp.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_truncate_2myisam.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_truncate_3innodb.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_truncate_7ndb_2-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_truncate_7ndb_2.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_udf-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_udf-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_udf.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_user_variables.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_variables-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_variables.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_view-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_view.test (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_2innodb.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_2myisam.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_UUID.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_auto_inc.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_bank.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_basic.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_blob.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_blob2.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_charset.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_circular.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_circular_simplex.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_commit_afterflush.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_dd_advance.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_dd_basic.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_dd_partitions.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_ddl.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_delete_nowhere.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_do_db.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_do_table.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_extraCol.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_func003.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_idempotent.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_innodb_trans.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_insert_ignore.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_load.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_log.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_multi.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_multi_update2.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_multi_update3.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_relayrotate.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_rep_ignore.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_row_001.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_sp003.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_sp006.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_stm_innodb.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_sync.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_trig004.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndbapi_multi.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_row_basic_7ndb.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_truncate_7ndb.result (100%) create mode 100644 mysql-test/suite/rpl_ndb/t/disabled.def rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_2innodb-master.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_2innodb-slave.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_2innodb.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_2myisam-master.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_2myisam-slave.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_2myisam.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_UUID.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_auto_inc.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_bank.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_basic.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_blob.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_blob2.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_charset.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_circular.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_circular_simplex.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_commit_afterflush.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_dd_advance.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_dd_basic.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_dd_partitions.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_ddl.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_delete_nowhere.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_do_db-slave.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_do_db.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_do_table-slave.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_do_table.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_extraCol.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_func003.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_idempotent.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_innodb2ndb-master.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_innodb2ndb-slave.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_innodb2ndb.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_innodb_trans-slave.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_innodb_trans.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_insert_ignore.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_load.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_log-master.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_log.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_multi.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_multi_update2-slave.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_multi_update2.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_multi_update3.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_myisam2ndb-master.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_myisam2ndb-slave.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_myisam2ndb.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_relayrotate-slave.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_relayrotate.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_rep_ignore-slave.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_rep_ignore.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_row_001.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_sp003.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_sp006.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_stm_innodb-master.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_stm_innodb.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_sync.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_trig004.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndbapi_multi.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_row_basic_7ndb.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_truncate_7ndb.test (100%) diff --git a/mysql-test/lib/mtr_cases.pl b/mysql-test/lib/mtr_cases.pl index 11ff85818a7..13708a5a3af 100644 --- a/mysql-test/lib/mtr_cases.pl +++ b/mysql-test/lib/mtr_cases.pl @@ -23,7 +23,8 @@ use IO::File(); use strict; sub collect_test_cases ($); -sub collect_one_test_case ($$$$$$$); +sub collect_one_suite ($$); +sub collect_one_test_case ($$$$$$$$$); sub mtr_options_from_test_file($$); @@ -34,147 +35,39 @@ sub mtr_options_from_test_file($$); ############################################################################## sub collect_test_cases ($) { - my $suite= shift; # Test suite name + my $suites= shift; # Semicolon separated list of test suites + my $cases = []; # Array of hash - my $testdir; - my $resdir; - - if ( $suite eq "main" ) + foreach my $suite (split(",", $suites)) { - $testdir= "$::glob_mysql_test_dir/t"; - $resdir= "$::glob_mysql_test_dir/r"; - } - else - { - $testdir= "$::glob_mysql_test_dir/suite/$suite/t"; - $resdir= "$::glob_mysql_test_dir/suite/$suite/r"; + collect_one_suite($suite, $cases); } - my $cases = []; # Array of hash, will be array of C struct - - opendir(TESTDIR, $testdir) or mtr_error("Can't open dir \"$testdir\": $!"); - - # ---------------------------------------------------------------------- - # Disable some tests listed in disabled.def - # ---------------------------------------------------------------------- - my %disabled; - if ( open(DISABLED, "$testdir/disabled.def" ) ) - { - while ( ) - { - chomp; - if ( /^\s*(\S+)\s*:\s*(.*?)\s*$/ ) - { - $disabled{$1}= $2; - } - } - close DISABLED; - } if ( @::opt_cases ) { + # Check that the tests specified was found + # in at least one suite foreach my $tname ( @::opt_cases ) { - # Run in specified order, no sort - my $elem= undef; - my $component_id= undef; - - # Get rid of directory part (path). Leave the extension since it is used - # to understand type of the test. - - $tname = basename($tname); - - # Check if the extenstion has been specified. - - if ( mtr_match_extension($tname, "test") ) + my $found= 0; + foreach my $test ( @$cases ) { - $elem= $tname; - $tname=~ s/\.test$//; - $component_id= 'mysqld'; + if ( mtr_match_extension($test->{'name'}, $tname) ) + { + $found= 1; + } } - elsif ( mtr_match_extension($tname, "imtest") ) + if ( not $found ) { - $elem= $tname; - $tname =~ s/\.imtest$//; - $component_id= 'im'; + mtr_error("Could not find $tname in any suite"); } - - # If target component is known, check that the specified test case - # exists. - # - # Otherwise, try to guess the target component. - - if ( $component_id ) - { - if ( ! -f "$testdir/$elem") - { - mtr_error("Test case $tname ($testdir/$elem) is not found"); - } - } - else - { - my $mysqld_test_exists = -f "$testdir/$tname.test"; - my $im_test_exists = -f "$testdir/$tname.imtest"; - - if ( $mysqld_test_exists and $im_test_exists ) - { - mtr_error("Ambiguous test case name ($tname)"); - } - elsif ( ! $mysqld_test_exists and ! $im_test_exists ) - { - mtr_error("Test case $tname is not found"); - } - elsif ( $mysqld_test_exists ) - { - $elem= "$tname.test"; - $component_id= 'mysqld'; - } - elsif ( $im_test_exists ) - { - $elem= "$tname.imtest"; - $component_id= 'im'; - } - } - - collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%disabled, - $component_id); } - closedir TESTDIR; - } - else - { - foreach my $elem ( sort readdir(TESTDIR) ) - { - my $component_id= undef; - my $tname= undef; - - if ($tname= mtr_match_extension($elem, 'test')) - { - $component_id = 'mysqld'; - } - elsif ($tname= mtr_match_extension($elem, 'imtest')) - { - $component_id = 'im'; - } - else - { - next; - } - - # Skip tests that does not match the --do-test= filter - next if $::opt_do_test and - ! defined mtr_match_prefix($elem,$::opt_do_test); - - collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%disabled, - $component_id); - } - closedir TESTDIR; } - # Reorder the test cases in an order that will make them faster to run if ( $::opt_reorder ) { - + # Reorder the test cases in an order that will make them faster to run my %sort_criteria; # Make a mapping of test name to a string that represents how that test @@ -246,6 +139,160 @@ sub collect_test_cases ($) { } } + return $cases; + +} + +sub collect_one_suite($$) +{ + my $suite= shift; # Test suite name + my $cases= shift; # List of test cases + + mtr_verbose("Collecting: $suite"); + + my $testdir; + my $resdir; + + if ( $suite eq "main" ) + { + $testdir= "$::glob_mysql_test_dir/t"; + $resdir= "$::glob_mysql_test_dir/r"; + } + else + { + $testdir= "$::glob_mysql_test_dir/suite/$suite/t"; + $resdir= "$::glob_mysql_test_dir/suite/$suite/r"; + } + + # ---------------------------------------------------------------------- + # Build a hash of disabled testcases for this suite + # ---------------------------------------------------------------------- + my %disabled; + if ( open(DISABLED, "$testdir/disabled.def" ) ) + { + while ( ) + { + chomp; + if ( /^\s*(\S+)\s*:\s*(.*?)\s*$/ ) + { + $disabled{$1}= $2; + } + } + close DISABLED; + } + + # Read suite.opt file + my $suite_opt_file= "$testdir/suite.opt"; + my $suite_opts= []; + if ( -f $suite_opt_file ) + { + $suite_opts= mtr_get_opts_from_file($suite_opt_file); + } + + if ( @::opt_cases ) + { + # Collect in specified order, no sort + foreach my $tname ( @::opt_cases ) + { + my $elem= undef; + my $component_id= undef; + + # Get rid of directory part (path). Leave the extension since it is used + # to understand type of the test. + + $tname = basename($tname); + + # Check if the extenstion has been specified. + + if ( mtr_match_extension($tname, "test") ) + { + $elem= $tname; + $tname=~ s/\.test$//; + $component_id= 'mysqld'; + } + elsif ( mtr_match_extension($tname, "imtest") ) + { + $elem= $tname; + $tname =~ s/\.imtest$//; + $component_id= 'im'; + } + + # If target component is known, check that the specified test case + # exists. + # + # Otherwise, try to guess the target component. + + if ( $component_id ) + { + if ( ! -f "$testdir/$elem") + { + mtr_error("Test case $tname ($testdir/$elem) is not found"); + } + } + else + { + my $mysqld_test_exists = -f "$testdir/$tname.test"; + my $im_test_exists = -f "$testdir/$tname.imtest"; + + if ( $mysqld_test_exists and $im_test_exists ) + { + mtr_error("Ambiguous test case name ($tname)"); + } + elsif ( ! $mysqld_test_exists and ! $im_test_exists ) + { + # Silently skip, could exist in another suite + next; + } + elsif ( $mysqld_test_exists ) + { + $elem= "$tname.test"; + $component_id= 'mysqld'; + } + elsif ( $im_test_exists ) + { + $elem= "$tname.imtest"; + $component_id= 'im'; + } + } + + collect_one_test_case($testdir,$resdir,$suite,$tname, + $elem,$cases,\%disabled,$component_id, + $suite_opts); + } + } + else + { + opendir(TESTDIR, $testdir) or mtr_error("Can't open dir \"$testdir\": $!"); + + foreach my $elem ( sort readdir(TESTDIR) ) + { + my $component_id= undef; + my $tname= undef; + + if ($tname= mtr_match_extension($elem, 'test')) + { + $component_id = 'mysqld'; + } + elsif ($tname= mtr_match_extension($elem, 'imtest')) + { + $component_id = 'im'; + } + else + { + next; + } + + # Skip tests that does not match the --do-test= filter + next if $::opt_do_test and + ! defined mtr_match_prefix($elem,$::opt_do_test); + + collect_one_test_case($testdir,$resdir,$suite,$tname, + $elem,$cases,\%disabled,$component_id, + $suite_opts); + } + closedir TESTDIR; + } + return $cases; } @@ -257,14 +304,16 @@ sub collect_test_cases ($) { ############################################################################## -sub collect_one_test_case($$$$$$$) { +sub collect_one_test_case($$$$$$$$$) { my $testdir= shift; my $resdir= shift; + my $suite= shift; my $tname= shift; my $elem= shift; my $cases= shift; my $disabled=shift; my $component_id= shift; + my $suite_opts= shift; my $path= "$testdir/$elem"; @@ -279,7 +328,7 @@ sub collect_one_test_case($$$$$$$) { my $tinfo= {}; - $tinfo->{'name'}= $tname; + $tinfo->{'name'}= "$suite.$tname"; $tinfo->{'result_file'}= "$resdir/$tname.result"; $tinfo->{'component_id'} = $component_id; push(@$cases, $tinfo); @@ -334,6 +383,15 @@ sub collect_one_test_case($$$$$$$) { $tinfo->{'slave_opt'}= []; $tinfo->{'slave_mi'}= []; + # Add suite opts + foreach my $opt ( @$suite_opts ) + { + mtr_verbose($opt); + push(@{$tinfo->{'master_opt'}}, $opt); + push(@{$tinfo->{'slave_opt'}}, $opt); + } + + # Add master opts if ( -f $master_opt_file ) { @@ -394,6 +452,7 @@ sub collect_one_test_case($$$$$$$) { } } + # Add slave opts if ( -f $slave_opt_file ) { my $slave_opt= mtr_get_opts_from_file($slave_opt_file); diff --git a/mysql-test/lib/mtr_report.pl b/mysql-test/lib/mtr_report.pl index 096840eb559..d60f8967256 100644 --- a/mysql-test/lib/mtr_report.pl +++ b/mysql-test/lib/mtr_report.pl @@ -48,30 +48,15 @@ sub mtr_verbose (@); # We can't use diff -u or diff -a as these are not portable sub mtr_show_failed_diff ($) { - my $result_file_name= shift; + my $tinfo= shift; # The reject and log files have been dumped to # to filenames based on the result_file's name - my $tname= basename($result_file_name); - $tname=~ s/\..*$//; - - my $reject_file= "r/$tname.reject"; - my $result_file= "r/$tname.result"; - my $log_file= "$::opt_vardir/log/$tname.log"; - my $eval_file= "r/$tname.eval"; - - if ( $::opt_suite ne "main" ) - { - $reject_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$reject_file"; - $result_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$result_file"; - $eval_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$eval_file"; - $log_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$log_file"; - } - - if ( -f $eval_file ) - { - $result_file= $eval_file; - } + my $base_file= mtr_match_extension($tinfo->{'result_file'}, + "result"); # Trim extension + my $reject_file= "$base_file.reject"; + my $result_file= "$base_file.result"; + my $log_file= "$base_file.log"; my $diffopts= $::opt_udiff ? "-u" : "-c"; diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 970790f4141..085feb524c4 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -132,7 +132,7 @@ our $opt_vs_config = $ENV{'MTR_VS_CONFIG'}; our $default_vardir; our $opt_usage; -our $opt_suite; +our $opt_suites= "main,binlog,rpl,rpl_ndb,ndb"; # Default suites to run our $opt_script_debug= 0; # Script debugging, enable with --script-debug our $opt_verbose= 0; # Verbose output, enable with --verbose @@ -404,7 +404,7 @@ sub main () { else { # Figure out which tests we are going to run - my $tests= collect_test_cases($opt_suite); + my $tests= collect_test_cases($opt_suites); # Turn off NDB and other similar options if no tests use it my ($need_ndbcluster,$need_im); @@ -458,7 +458,7 @@ sub main () { run_report_features(); } - run_suite($opt_suite, $tests); + run_tests($tests); } mtr_exit(0); @@ -474,7 +474,6 @@ sub command_line_setup () { # These are defaults for things that are set on the command line - $opt_suite= "main"; # Special default suite my $opt_comment; $opt_master_myport= 9306; @@ -534,7 +533,7 @@ sub command_line_setup () { 'skip-slave-binlog' => \$opt_skip_slave_binlog, 'do-test=s' => \$opt_do_test, 'start-from=s' => \$opt_start_from, - 'suite=s' => \$opt_suite, + 'suite|suites=s' => \$opt_suites, 'skip-rpl' => \$opt_skip_rpl, 'skip-im' => \$opt_skip_im, 'skip-test=s' => \$opt_skip_test, @@ -2797,19 +2796,17 @@ sub run_benchmarks ($) { ############################################################################## # -# Run the test suite +# Run the tests # ############################################################################## -sub run_suite () { - my ($suite, $tests)= @_; +sub run_tests () { + my ($tests)= @_; mtr_print_thick_line(); mtr_timer_start($glob_timers,"suite", 60 * $opt_suite_timeout); - mtr_report("Starting Tests in the '$suite' suite"); - mtr_report_tests_not_skipped_though_disabled($tests); mtr_print_header(); @@ -3272,18 +3269,14 @@ sub run_testcase_check_skip_test($) sub do_before_run_mysqltest($) { my $tinfo= shift; - my $tname= $tinfo->{'name'}; # Remove old files produced by mysqltest - my $result_dir= "r"; - if ( $opt_suite ne "main" ) - { - $result_dir= "suite/$opt_suite/r"; - } - unlink("$result_dir/$tname.reject"); - unlink("$result_dir/$tname.progress"); - unlink("$result_dir/$tname.log"); - unlink("$result_dir/$tname.warnings"); + my $base_file= mtr_match_extension($tinfo->{'result_file'}, + "result"); # Trim extension + unlink("$base_file.reject"); + unlink("$base_file.progress"); + unlink("$base_file.log"); + unlink("$base_file.warnings"); if (!$opt_extern) { @@ -3302,7 +3295,6 @@ sub do_before_run_mysqltest($) sub do_after_run_mysqltest($) { my $tinfo= shift; - my $tname= $tinfo->{'name'}; # Save info from this testcase run to mysqltest.log mtr_appendfile_to_file($path_current_test_log, $path_mysqltest_log) @@ -3626,7 +3618,7 @@ sub report_failure_and_restart ($) { my $tinfo= shift; mtr_report_test_failed($tinfo); - mtr_show_failed_diff($tinfo->{'result_file'}); + mtr_show_failed_diff($tinfo); print "\n"; if ( $opt_force ) { @@ -3766,15 +3758,7 @@ sub mysqld_arguments ($$$$) { if ( $mysql_version_id >= 50036) { # By default, prevent the started mysqld to access files outside of vardir - my $secure_file_dir= $opt_vardir; - if ( $opt_suite ne "main" ) - { - # When running a suite other than default allow the mysqld - # access to subdirs of mysql-test/ in order to make it possible - # to "load data" from the suites data/ directory. - $secure_file_dir= $glob_mysql_test_dir; - } - mtr_add_arg($args, "%s--secure-file-priv=%s", $prefix, $secure_file_dir); + mtr_add_arg($args, "%s--secure-file-priv=%s", $prefix, $opt_vardir); } if ( $mysql_version_id >= 50000 ) @@ -5147,7 +5131,9 @@ Options to control what test suites or cases to run ndb-extra Run extra tests from ndb directory do-test=PREFIX Run test cases which name are prefixed with PREFIX start-from=PREFIX Run test cases starting from test prefixed with PREFIX - suite=NAME Run the test suite named NAME. The default is "main" + suite[s]=NAME1,..,NAMEN Collect tests in suites from the comma separated + list of suite names. + The default is: "$opt_suites" skip-rpl Skip the replication test cases. skip-im Don't start IM, and skip the IM test cases skip-test=PREFIX Skip test cases which name are prefixed with PREFIX diff --git a/mysql-test/r/binlog_killed.result b/mysql-test/suite/binlog/r/binlog_killed.result similarity index 100% rename from mysql-test/r/binlog_killed.result rename to mysql-test/suite/binlog/r/binlog_killed.result diff --git a/mysql-test/r/binlog_row_binlog.result b/mysql-test/suite/binlog/r/binlog_row_binlog.result similarity index 100% rename from mysql-test/r/binlog_row_binlog.result rename to mysql-test/suite/binlog/r/binlog_row_binlog.result diff --git a/mysql-test/r/binlog_row_blackhole.result b/mysql-test/suite/binlog/r/binlog_row_blackhole.result similarity index 100% rename from mysql-test/r/binlog_row_blackhole.result rename to mysql-test/suite/binlog/r/binlog_row_blackhole.result diff --git a/mysql-test/r/binlog_row_ctype_cp932.result b/mysql-test/suite/binlog/r/binlog_row_ctype_cp932.result similarity index 100% rename from mysql-test/r/binlog_row_ctype_cp932.result rename to mysql-test/suite/binlog/r/binlog_row_ctype_cp932.result diff --git a/mysql-test/r/binlog_row_ctype_ucs.result b/mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result similarity index 100% rename from mysql-test/r/binlog_row_ctype_ucs.result rename to mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result diff --git a/mysql-test/r/binlog_row_drop_tmp_tbl.result b/mysql-test/suite/binlog/r/binlog_row_drop_tmp_tbl.result similarity index 100% rename from mysql-test/r/binlog_row_drop_tmp_tbl.result rename to mysql-test/suite/binlog/r/binlog_row_drop_tmp_tbl.result diff --git a/mysql-test/r/binlog_row_innodb_stat.result b/mysql-test/suite/binlog/r/binlog_row_innodb_stat.result similarity index 100% rename from mysql-test/r/binlog_row_innodb_stat.result rename to mysql-test/suite/binlog/r/binlog_row_innodb_stat.result diff --git a/mysql-test/r/binlog_row_insert_select.result b/mysql-test/suite/binlog/r/binlog_row_insert_select.result similarity index 100% rename from mysql-test/r/binlog_row_insert_select.result rename to mysql-test/suite/binlog/r/binlog_row_insert_select.result diff --git a/mysql-test/r/binlog_row_mix_innodb_myisam.result b/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result similarity index 100% rename from mysql-test/r/binlog_row_mix_innodb_myisam.result rename to mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result diff --git a/mysql-test/r/binlog_statement_insert_delayed.result b/mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result similarity index 100% rename from mysql-test/r/binlog_statement_insert_delayed.result rename to mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result diff --git a/mysql-test/r/binlog_stm_binlog.result b/mysql-test/suite/binlog/r/binlog_stm_binlog.result similarity index 100% rename from mysql-test/r/binlog_stm_binlog.result rename to mysql-test/suite/binlog/r/binlog_stm_binlog.result diff --git a/mysql-test/r/binlog_stm_blackhole.result b/mysql-test/suite/binlog/r/binlog_stm_blackhole.result similarity index 100% rename from mysql-test/r/binlog_stm_blackhole.result rename to mysql-test/suite/binlog/r/binlog_stm_blackhole.result diff --git a/mysql-test/r/binlog_stm_ctype_cp932.result b/mysql-test/suite/binlog/r/binlog_stm_ctype_cp932.result similarity index 100% rename from mysql-test/r/binlog_stm_ctype_cp932.result rename to mysql-test/suite/binlog/r/binlog_stm_ctype_cp932.result diff --git a/mysql-test/r/binlog_stm_ctype_ucs.result b/mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result similarity index 100% rename from mysql-test/r/binlog_stm_ctype_ucs.result rename to mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result diff --git a/mysql-test/r/binlog_stm_drop_tmp_tbl.result b/mysql-test/suite/binlog/r/binlog_stm_drop_tmp_tbl.result similarity index 100% rename from mysql-test/r/binlog_stm_drop_tmp_tbl.result rename to mysql-test/suite/binlog/r/binlog_stm_drop_tmp_tbl.result diff --git a/mysql-test/r/binlog_stm_innodb_stat.result b/mysql-test/suite/binlog/r/binlog_stm_innodb_stat.result similarity index 100% rename from mysql-test/r/binlog_stm_innodb_stat.result rename to mysql-test/suite/binlog/r/binlog_stm_innodb_stat.result diff --git a/mysql-test/r/binlog_stm_insert_select.result b/mysql-test/suite/binlog/r/binlog_stm_insert_select.result similarity index 100% rename from mysql-test/r/binlog_stm_insert_select.result rename to mysql-test/suite/binlog/r/binlog_stm_insert_select.result diff --git a/mysql-test/r/binlog_stm_mix_innodb_myisam.result b/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result similarity index 100% rename from mysql-test/r/binlog_stm_mix_innodb_myisam.result rename to mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result diff --git a/mysql-test/r/binlog_stm_ps.result b/mysql-test/suite/binlog/r/binlog_stm_ps.result similarity index 100% rename from mysql-test/r/binlog_stm_ps.result rename to mysql-test/suite/binlog/r/binlog_stm_ps.result diff --git a/mysql-test/t/binlog_killed.test b/mysql-test/suite/binlog/t/binlog_killed.test similarity index 100% rename from mysql-test/t/binlog_killed.test rename to mysql-test/suite/binlog/t/binlog_killed.test diff --git a/mysql-test/t/binlog_row_binlog-master.opt b/mysql-test/suite/binlog/t/binlog_row_binlog-master.opt similarity index 100% rename from mysql-test/t/binlog_row_binlog-master.opt rename to mysql-test/suite/binlog/t/binlog_row_binlog-master.opt diff --git a/mysql-test/t/binlog_row_binlog.test b/mysql-test/suite/binlog/t/binlog_row_binlog.test similarity index 100% rename from mysql-test/t/binlog_row_binlog.test rename to mysql-test/suite/binlog/t/binlog_row_binlog.test diff --git a/mysql-test/t/binlog_row_blackhole.test b/mysql-test/suite/binlog/t/binlog_row_blackhole.test similarity index 100% rename from mysql-test/t/binlog_row_blackhole.test rename to mysql-test/suite/binlog/t/binlog_row_blackhole.test diff --git a/mysql-test/t/binlog_row_ctype_cp932.test b/mysql-test/suite/binlog/t/binlog_row_ctype_cp932.test similarity index 100% rename from mysql-test/t/binlog_row_ctype_cp932.test rename to mysql-test/suite/binlog/t/binlog_row_ctype_cp932.test diff --git a/mysql-test/t/binlog_row_ctype_ucs.test b/mysql-test/suite/binlog/t/binlog_row_ctype_ucs.test similarity index 100% rename from mysql-test/t/binlog_row_ctype_ucs.test rename to mysql-test/suite/binlog/t/binlog_row_ctype_ucs.test diff --git a/mysql-test/t/binlog_row_drop_tmp_tbl.test b/mysql-test/suite/binlog/t/binlog_row_drop_tmp_tbl.test similarity index 100% rename from mysql-test/t/binlog_row_drop_tmp_tbl.test rename to mysql-test/suite/binlog/t/binlog_row_drop_tmp_tbl.test diff --git a/mysql-test/t/binlog_row_innodb_stat-master.opt b/mysql-test/suite/binlog/t/binlog_row_innodb_stat-master.opt similarity index 100% rename from mysql-test/t/binlog_row_innodb_stat-master.opt rename to mysql-test/suite/binlog/t/binlog_row_innodb_stat-master.opt diff --git a/mysql-test/t/binlog_row_innodb_stat.test b/mysql-test/suite/binlog/t/binlog_row_innodb_stat.test similarity index 100% rename from mysql-test/t/binlog_row_innodb_stat.test rename to mysql-test/suite/binlog/t/binlog_row_innodb_stat.test diff --git a/mysql-test/t/binlog_row_insert_select.test b/mysql-test/suite/binlog/t/binlog_row_insert_select.test similarity index 100% rename from mysql-test/t/binlog_row_insert_select.test rename to mysql-test/suite/binlog/t/binlog_row_insert_select.test diff --git a/mysql-test/t/binlog_row_mix_innodb_myisam-master.opt b/mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam-master.opt similarity index 100% rename from mysql-test/t/binlog_row_mix_innodb_myisam-master.opt rename to mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam-master.opt diff --git a/mysql-test/t/binlog_row_mix_innodb_myisam.test b/mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam.test similarity index 100% rename from mysql-test/t/binlog_row_mix_innodb_myisam.test rename to mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam.test diff --git a/mysql-test/t/binlog_statement_insert_delayed.test b/mysql-test/suite/binlog/t/binlog_statement_insert_delayed.test similarity index 100% rename from mysql-test/t/binlog_statement_insert_delayed.test rename to mysql-test/suite/binlog/t/binlog_statement_insert_delayed.test diff --git a/mysql-test/t/binlog_stm_binlog-master.opt b/mysql-test/suite/binlog/t/binlog_stm_binlog-master.opt similarity index 100% rename from mysql-test/t/binlog_stm_binlog-master.opt rename to mysql-test/suite/binlog/t/binlog_stm_binlog-master.opt diff --git a/mysql-test/t/binlog_stm_binlog.test b/mysql-test/suite/binlog/t/binlog_stm_binlog.test similarity index 100% rename from mysql-test/t/binlog_stm_binlog.test rename to mysql-test/suite/binlog/t/binlog_stm_binlog.test diff --git a/mysql-test/t/binlog_stm_blackhole.test b/mysql-test/suite/binlog/t/binlog_stm_blackhole.test similarity index 100% rename from mysql-test/t/binlog_stm_blackhole.test rename to mysql-test/suite/binlog/t/binlog_stm_blackhole.test diff --git a/mysql-test/t/binlog_stm_ctype_cp932.test b/mysql-test/suite/binlog/t/binlog_stm_ctype_cp932.test similarity index 100% rename from mysql-test/t/binlog_stm_ctype_cp932.test rename to mysql-test/suite/binlog/t/binlog_stm_ctype_cp932.test diff --git a/mysql-test/t/binlog_stm_ctype_ucs.test b/mysql-test/suite/binlog/t/binlog_stm_ctype_ucs.test similarity index 100% rename from mysql-test/t/binlog_stm_ctype_ucs.test rename to mysql-test/suite/binlog/t/binlog_stm_ctype_ucs.test diff --git a/mysql-test/t/binlog_stm_drop_tmp_tbl.test b/mysql-test/suite/binlog/t/binlog_stm_drop_tmp_tbl.test similarity index 100% rename from mysql-test/t/binlog_stm_drop_tmp_tbl.test rename to mysql-test/suite/binlog/t/binlog_stm_drop_tmp_tbl.test diff --git a/mysql-test/t/binlog_stm_innodb_stat-master.opt b/mysql-test/suite/binlog/t/binlog_stm_innodb_stat-master.opt similarity index 100% rename from mysql-test/t/binlog_stm_innodb_stat-master.opt rename to mysql-test/suite/binlog/t/binlog_stm_innodb_stat-master.opt diff --git a/mysql-test/t/binlog_stm_innodb_stat.test b/mysql-test/suite/binlog/t/binlog_stm_innodb_stat.test similarity index 100% rename from mysql-test/t/binlog_stm_innodb_stat.test rename to mysql-test/suite/binlog/t/binlog_stm_innodb_stat.test diff --git a/mysql-test/t/binlog_stm_insert_select.test b/mysql-test/suite/binlog/t/binlog_stm_insert_select.test similarity index 100% rename from mysql-test/t/binlog_stm_insert_select.test rename to mysql-test/suite/binlog/t/binlog_stm_insert_select.test diff --git a/mysql-test/t/binlog_stm_mix_innodb_myisam-master.opt b/mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam-master.opt similarity index 100% rename from mysql-test/t/binlog_stm_mix_innodb_myisam-master.opt rename to mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam-master.opt diff --git a/mysql-test/t/binlog_stm_mix_innodb_myisam.test b/mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test similarity index 100% rename from mysql-test/t/binlog_stm_mix_innodb_myisam.test rename to mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test diff --git a/mysql-test/t/binlog_stm_ps.test b/mysql-test/suite/binlog/t/binlog_stm_ps.test similarity index 100% rename from mysql-test/t/binlog_stm_ps.test rename to mysql-test/suite/binlog/t/binlog_stm_ps.test diff --git a/mysql-test/suite/funcs_1/t/suite.opt b/mysql-test/suite/funcs_1/t/suite.opt new file mode 100644 index 00000000000..9b22c677b83 --- /dev/null +++ b/mysql-test/suite/funcs_1/t/suite.opt @@ -0,0 +1,2 @@ +--secure-file-priv=$MYSQL_TEST_DIR + diff --git a/mysql-test/suite/funcs_2/t/suite.opt b/mysql-test/suite/funcs_2/t/suite.opt new file mode 100644 index 00000000000..9b22c677b83 --- /dev/null +++ b/mysql-test/suite/funcs_2/t/suite.opt @@ -0,0 +1,2 @@ +--secure-file-priv=$MYSQL_TEST_DIR + diff --git a/mysql-test/r/loaddata_autocom_ndb.result b/mysql-test/suite/ndb/r/loaddata_autocom_ndb.result similarity index 100% rename from mysql-test/r/loaddata_autocom_ndb.result rename to mysql-test/suite/ndb/r/loaddata_autocom_ndb.result diff --git a/mysql-test/r/ndb_alter_table.result b/mysql-test/suite/ndb/r/ndb_alter_table.result similarity index 100% rename from mysql-test/r/ndb_alter_table.result rename to mysql-test/suite/ndb/r/ndb_alter_table.result diff --git a/mysql-test/r/ndb_alter_table2.result b/mysql-test/suite/ndb/r/ndb_alter_table2.result similarity index 100% rename from mysql-test/r/ndb_alter_table2.result rename to mysql-test/suite/ndb/r/ndb_alter_table2.result diff --git a/mysql-test/r/ndb_alter_table3.result b/mysql-test/suite/ndb/r/ndb_alter_table3.result similarity index 100% rename from mysql-test/r/ndb_alter_table3.result rename to mysql-test/suite/ndb/r/ndb_alter_table3.result diff --git a/mysql-test/r/ndb_autodiscover.result b/mysql-test/suite/ndb/r/ndb_autodiscover.result similarity index 100% rename from mysql-test/r/ndb_autodiscover.result rename to mysql-test/suite/ndb/r/ndb_autodiscover.result diff --git a/mysql-test/r/ndb_autodiscover2.result b/mysql-test/suite/ndb/r/ndb_autodiscover2.result similarity index 100% rename from mysql-test/r/ndb_autodiscover2.result rename to mysql-test/suite/ndb/r/ndb_autodiscover2.result diff --git a/mysql-test/r/ndb_autodiscover3.result b/mysql-test/suite/ndb/r/ndb_autodiscover3.result similarity index 100% rename from mysql-test/r/ndb_autodiscover3.result rename to mysql-test/suite/ndb/r/ndb_autodiscover3.result diff --git a/mysql-test/r/ndb_backup_print.result b/mysql-test/suite/ndb/r/ndb_backup_print.result similarity index 100% rename from mysql-test/r/ndb_backup_print.result rename to mysql-test/suite/ndb/r/ndb_backup_print.result diff --git a/mysql-test/r/ndb_basic.result b/mysql-test/suite/ndb/r/ndb_basic.result similarity index 100% rename from mysql-test/r/ndb_basic.result rename to mysql-test/suite/ndb/r/ndb_basic.result diff --git a/mysql-test/r/ndb_binlog_basic.result b/mysql-test/suite/ndb/r/ndb_binlog_basic.result similarity index 100% rename from mysql-test/r/ndb_binlog_basic.result rename to mysql-test/suite/ndb/r/ndb_binlog_basic.result diff --git a/mysql-test/r/ndb_binlog_basic2.result b/mysql-test/suite/ndb/r/ndb_binlog_basic2.result similarity index 100% rename from mysql-test/r/ndb_binlog_basic2.result rename to mysql-test/suite/ndb/r/ndb_binlog_basic2.result diff --git a/mysql-test/r/ndb_binlog_ddl_multi.result b/mysql-test/suite/ndb/r/ndb_binlog_ddl_multi.result similarity index 100% rename from mysql-test/r/ndb_binlog_ddl_multi.result rename to mysql-test/suite/ndb/r/ndb_binlog_ddl_multi.result diff --git a/mysql-test/r/ndb_binlog_discover.result b/mysql-test/suite/ndb/r/ndb_binlog_discover.result similarity index 100% rename from mysql-test/r/ndb_binlog_discover.result rename to mysql-test/suite/ndb/r/ndb_binlog_discover.result diff --git a/mysql-test/r/ndb_binlog_ignore_db.result b/mysql-test/suite/ndb/r/ndb_binlog_ignore_db.result similarity index 100% rename from mysql-test/r/ndb_binlog_ignore_db.result rename to mysql-test/suite/ndb/r/ndb_binlog_ignore_db.result diff --git a/mysql-test/r/ndb_binlog_log_bin.result b/mysql-test/suite/ndb/r/ndb_binlog_log_bin.result similarity index 100% rename from mysql-test/r/ndb_binlog_log_bin.result rename to mysql-test/suite/ndb/r/ndb_binlog_log_bin.result diff --git a/mysql-test/r/ndb_binlog_multi.result b/mysql-test/suite/ndb/r/ndb_binlog_multi.result similarity index 100% rename from mysql-test/r/ndb_binlog_multi.result rename to mysql-test/suite/ndb/r/ndb_binlog_multi.result diff --git a/mysql-test/r/ndb_bitfield.result b/mysql-test/suite/ndb/r/ndb_bitfield.result similarity index 100% rename from mysql-test/r/ndb_bitfield.result rename to mysql-test/suite/ndb/r/ndb_bitfield.result diff --git a/mysql-test/r/ndb_blob.result b/mysql-test/suite/ndb/r/ndb_blob.result similarity index 100% rename from mysql-test/r/ndb_blob.result rename to mysql-test/suite/ndb/r/ndb_blob.result diff --git a/mysql-test/r/ndb_blob_partition.result b/mysql-test/suite/ndb/r/ndb_blob_partition.result similarity index 100% rename from mysql-test/r/ndb_blob_partition.result rename to mysql-test/suite/ndb/r/ndb_blob_partition.result diff --git a/mysql-test/r/ndb_cache.result b/mysql-test/suite/ndb/r/ndb_cache.result similarity index 100% rename from mysql-test/r/ndb_cache.result rename to mysql-test/suite/ndb/r/ndb_cache.result diff --git a/mysql-test/r/ndb_cache2.result b/mysql-test/suite/ndb/r/ndb_cache2.result similarity index 100% rename from mysql-test/r/ndb_cache2.result rename to mysql-test/suite/ndb/r/ndb_cache2.result diff --git a/mysql-test/r/ndb_cache_multi.result b/mysql-test/suite/ndb/r/ndb_cache_multi.result similarity index 100% rename from mysql-test/r/ndb_cache_multi.result rename to mysql-test/suite/ndb/r/ndb_cache_multi.result diff --git a/mysql-test/r/ndb_cache_multi2.result b/mysql-test/suite/ndb/r/ndb_cache_multi2.result similarity index 100% rename from mysql-test/r/ndb_cache_multi2.result rename to mysql-test/suite/ndb/r/ndb_cache_multi2.result diff --git a/mysql-test/r/ndb_charset.result b/mysql-test/suite/ndb/r/ndb_charset.result similarity index 100% rename from mysql-test/r/ndb_charset.result rename to mysql-test/suite/ndb/r/ndb_charset.result diff --git a/mysql-test/r/ndb_condition_pushdown.result b/mysql-test/suite/ndb/r/ndb_condition_pushdown.result similarity index 100% rename from mysql-test/r/ndb_condition_pushdown.result rename to mysql-test/suite/ndb/r/ndb_condition_pushdown.result diff --git a/mysql-test/r/ndb_config.result b/mysql-test/suite/ndb/r/ndb_config.result similarity index 100% rename from mysql-test/r/ndb_config.result rename to mysql-test/suite/ndb/r/ndb_config.result diff --git a/mysql-test/r/ndb_config2.result b/mysql-test/suite/ndb/r/ndb_config2.result similarity index 100% rename from mysql-test/r/ndb_config2.result rename to mysql-test/suite/ndb/r/ndb_config2.result diff --git a/mysql-test/r/ndb_cursor.result b/mysql-test/suite/ndb/r/ndb_cursor.result similarity index 100% rename from mysql-test/r/ndb_cursor.result rename to mysql-test/suite/ndb/r/ndb_cursor.result diff --git a/mysql-test/r/ndb_database.result b/mysql-test/suite/ndb/r/ndb_database.result similarity index 100% rename from mysql-test/r/ndb_database.result rename to mysql-test/suite/ndb/r/ndb_database.result diff --git a/mysql-test/r/ndb_dd_alter.result b/mysql-test/suite/ndb/r/ndb_dd_alter.result similarity index 100% rename from mysql-test/r/ndb_dd_alter.result rename to mysql-test/suite/ndb/r/ndb_dd_alter.result diff --git a/mysql-test/r/ndb_dd_backuprestore.result b/mysql-test/suite/ndb/r/ndb_dd_backuprestore.result similarity index 100% rename from mysql-test/r/ndb_dd_backuprestore.result rename to mysql-test/suite/ndb/r/ndb_dd_backuprestore.result diff --git a/mysql-test/r/ndb_dd_basic.result b/mysql-test/suite/ndb/r/ndb_dd_basic.result similarity index 100% rename from mysql-test/r/ndb_dd_basic.result rename to mysql-test/suite/ndb/r/ndb_dd_basic.result diff --git a/mysql-test/r/ndb_dd_ddl.result b/mysql-test/suite/ndb/r/ndb_dd_ddl.result similarity index 100% rename from mysql-test/r/ndb_dd_ddl.result rename to mysql-test/suite/ndb/r/ndb_dd_ddl.result diff --git a/mysql-test/r/ndb_dd_disk2memory.result b/mysql-test/suite/ndb/r/ndb_dd_disk2memory.result similarity index 100% rename from mysql-test/r/ndb_dd_disk2memory.result rename to mysql-test/suite/ndb/r/ndb_dd_disk2memory.result diff --git a/mysql-test/r/ndb_dd_dump.result b/mysql-test/suite/ndb/r/ndb_dd_dump.result similarity index 100% rename from mysql-test/r/ndb_dd_dump.result rename to mysql-test/suite/ndb/r/ndb_dd_dump.result diff --git a/mysql-test/r/ndb_dd_sql_features.result b/mysql-test/suite/ndb/r/ndb_dd_sql_features.result similarity index 100% rename from mysql-test/r/ndb_dd_sql_features.result rename to mysql-test/suite/ndb/r/ndb_dd_sql_features.result diff --git a/mysql-test/r/ndb_gis.result b/mysql-test/suite/ndb/r/ndb_gis.result similarity index 100% rename from mysql-test/r/ndb_gis.result rename to mysql-test/suite/ndb/r/ndb_gis.result diff --git a/mysql-test/r/ndb_grant.result b/mysql-test/suite/ndb/r/ndb_grant.result similarity index 100% rename from mysql-test/r/ndb_grant.result rename to mysql-test/suite/ndb/r/ndb_grant.result diff --git a/mysql-test/r/ndb_index.result b/mysql-test/suite/ndb/r/ndb_index.result similarity index 100% rename from mysql-test/r/ndb_index.result rename to mysql-test/suite/ndb/r/ndb_index.result diff --git a/mysql-test/r/ndb_index_ordered.result b/mysql-test/suite/ndb/r/ndb_index_ordered.result similarity index 100% rename from mysql-test/r/ndb_index_ordered.result rename to mysql-test/suite/ndb/r/ndb_index_ordered.result diff --git a/mysql-test/r/ndb_index_unique.result b/mysql-test/suite/ndb/r/ndb_index_unique.result similarity index 100% rename from mysql-test/r/ndb_index_unique.result rename to mysql-test/suite/ndb/r/ndb_index_unique.result diff --git a/mysql-test/r/ndb_insert.result b/mysql-test/suite/ndb/r/ndb_insert.result similarity index 100% rename from mysql-test/r/ndb_insert.result rename to mysql-test/suite/ndb/r/ndb_insert.result diff --git a/mysql-test/r/ndb_limit.result b/mysql-test/suite/ndb/r/ndb_limit.result similarity index 100% rename from mysql-test/r/ndb_limit.result rename to mysql-test/suite/ndb/r/ndb_limit.result diff --git a/mysql-test/r/ndb_load.result b/mysql-test/suite/ndb/r/ndb_load.result similarity index 100% rename from mysql-test/r/ndb_load.result rename to mysql-test/suite/ndb/r/ndb_load.result diff --git a/mysql-test/r/ndb_loaddatalocal.result b/mysql-test/suite/ndb/r/ndb_loaddatalocal.result similarity index 100% rename from mysql-test/r/ndb_loaddatalocal.result rename to mysql-test/suite/ndb/r/ndb_loaddatalocal.result diff --git a/mysql-test/r/ndb_lock.result b/mysql-test/suite/ndb/r/ndb_lock.result similarity index 100% rename from mysql-test/r/ndb_lock.result rename to mysql-test/suite/ndb/r/ndb_lock.result diff --git a/mysql-test/r/ndb_minmax.result b/mysql-test/suite/ndb/r/ndb_minmax.result similarity index 100% rename from mysql-test/r/ndb_minmax.result rename to mysql-test/suite/ndb/r/ndb_minmax.result diff --git a/mysql-test/r/ndb_multi.result b/mysql-test/suite/ndb/r/ndb_multi.result similarity index 100% rename from mysql-test/r/ndb_multi.result rename to mysql-test/suite/ndb/r/ndb_multi.result diff --git a/mysql-test/r/ndb_multi_row.result b/mysql-test/suite/ndb/r/ndb_multi_row.result similarity index 100% rename from mysql-test/r/ndb_multi_row.result rename to mysql-test/suite/ndb/r/ndb_multi_row.result diff --git a/mysql-test/r/ndb_partition_error.result b/mysql-test/suite/ndb/r/ndb_partition_error.result similarity index 100% rename from mysql-test/r/ndb_partition_error.result rename to mysql-test/suite/ndb/r/ndb_partition_error.result diff --git a/mysql-test/r/ndb_partition_error2.result b/mysql-test/suite/ndb/r/ndb_partition_error2.result similarity index 100% rename from mysql-test/r/ndb_partition_error2.result rename to mysql-test/suite/ndb/r/ndb_partition_error2.result diff --git a/mysql-test/r/ndb_partition_key.result b/mysql-test/suite/ndb/r/ndb_partition_key.result similarity index 100% rename from mysql-test/r/ndb_partition_key.result rename to mysql-test/suite/ndb/r/ndb_partition_key.result diff --git a/mysql-test/r/ndb_partition_list.result b/mysql-test/suite/ndb/r/ndb_partition_list.result similarity index 100% rename from mysql-test/r/ndb_partition_list.result rename to mysql-test/suite/ndb/r/ndb_partition_list.result diff --git a/mysql-test/r/ndb_partition_range.result b/mysql-test/suite/ndb/r/ndb_partition_range.result similarity index 100% rename from mysql-test/r/ndb_partition_range.result rename to mysql-test/suite/ndb/r/ndb_partition_range.result diff --git a/mysql-test/r/ndb_read_multi_range.result b/mysql-test/suite/ndb/r/ndb_read_multi_range.result similarity index 100% rename from mysql-test/r/ndb_read_multi_range.result rename to mysql-test/suite/ndb/r/ndb_read_multi_range.result diff --git a/mysql-test/r/ndb_rename.result b/mysql-test/suite/ndb/r/ndb_rename.result similarity index 100% rename from mysql-test/r/ndb_rename.result rename to mysql-test/suite/ndb/r/ndb_rename.result diff --git a/mysql-test/r/ndb_replace.result b/mysql-test/suite/ndb/r/ndb_replace.result similarity index 100% rename from mysql-test/r/ndb_replace.result rename to mysql-test/suite/ndb/r/ndb_replace.result diff --git a/mysql-test/r/ndb_restore.result b/mysql-test/suite/ndb/r/ndb_restore.result similarity index 100% rename from mysql-test/r/ndb_restore.result rename to mysql-test/suite/ndb/r/ndb_restore.result diff --git a/mysql-test/r/ndb_restore_compat.result b/mysql-test/suite/ndb/r/ndb_restore_compat.result similarity index 100% rename from mysql-test/r/ndb_restore_compat.result rename to mysql-test/suite/ndb/r/ndb_restore_compat.result diff --git a/mysql-test/r/ndb_restore_partition.result b/mysql-test/suite/ndb/r/ndb_restore_partition.result similarity index 100% rename from mysql-test/r/ndb_restore_partition.result rename to mysql-test/suite/ndb/r/ndb_restore_partition.result diff --git a/mysql-test/r/ndb_restore_print.result b/mysql-test/suite/ndb/r/ndb_restore_print.result similarity index 100% rename from mysql-test/r/ndb_restore_print.result rename to mysql-test/suite/ndb/r/ndb_restore_print.result diff --git a/mysql-test/r/ndb_row_format.result b/mysql-test/suite/ndb/r/ndb_row_format.result similarity index 100% rename from mysql-test/r/ndb_row_format.result rename to mysql-test/suite/ndb/r/ndb_row_format.result diff --git a/mysql-test/r/ndb_single_user.result b/mysql-test/suite/ndb/r/ndb_single_user.result similarity index 100% rename from mysql-test/r/ndb_single_user.result rename to mysql-test/suite/ndb/r/ndb_single_user.result diff --git a/mysql-test/r/ndb_sp.result b/mysql-test/suite/ndb/r/ndb_sp.result similarity index 100% rename from mysql-test/r/ndb_sp.result rename to mysql-test/suite/ndb/r/ndb_sp.result diff --git a/mysql-test/r/ndb_subquery.result b/mysql-test/suite/ndb/r/ndb_subquery.result similarity index 100% rename from mysql-test/r/ndb_subquery.result rename to mysql-test/suite/ndb/r/ndb_subquery.result diff --git a/mysql-test/r/ndb_temporary.result b/mysql-test/suite/ndb/r/ndb_temporary.result similarity index 100% rename from mysql-test/r/ndb_temporary.result rename to mysql-test/suite/ndb/r/ndb_temporary.result diff --git a/mysql-test/r/ndb_transaction.result b/mysql-test/suite/ndb/r/ndb_transaction.result similarity index 100% rename from mysql-test/r/ndb_transaction.result rename to mysql-test/suite/ndb/r/ndb_transaction.result diff --git a/mysql-test/r/ndb_trigger.result b/mysql-test/suite/ndb/r/ndb_trigger.result similarity index 100% rename from mysql-test/r/ndb_trigger.result rename to mysql-test/suite/ndb/r/ndb_trigger.result diff --git a/mysql-test/r/ndb_truncate.result b/mysql-test/suite/ndb/r/ndb_truncate.result similarity index 100% rename from mysql-test/r/ndb_truncate.result rename to mysql-test/suite/ndb/r/ndb_truncate.result diff --git a/mysql-test/r/ndb_types.result b/mysql-test/suite/ndb/r/ndb_types.result similarity index 100% rename from mysql-test/r/ndb_types.result rename to mysql-test/suite/ndb/r/ndb_types.result diff --git a/mysql-test/r/ndb_update.result b/mysql-test/suite/ndb/r/ndb_update.result similarity index 100% rename from mysql-test/r/ndb_update.result rename to mysql-test/suite/ndb/r/ndb_update.result diff --git a/mysql-test/r/ndb_view.result b/mysql-test/suite/ndb/r/ndb_view.result similarity index 100% rename from mysql-test/r/ndb_view.result rename to mysql-test/suite/ndb/r/ndb_view.result diff --git a/mysql-test/r/ndbapi.result b/mysql-test/suite/ndb/r/ndbapi.result similarity index 100% rename from mysql-test/r/ndbapi.result rename to mysql-test/suite/ndb/r/ndbapi.result diff --git a/mysql-test/r/partition_03ndb.result b/mysql-test/suite/ndb/r/partition_03ndb.result similarity index 100% rename from mysql-test/r/partition_03ndb.result rename to mysql-test/suite/ndb/r/partition_03ndb.result diff --git a/mysql-test/r/ps_7ndb.result b/mysql-test/suite/ndb/r/ps_7ndb.result similarity index 100% rename from mysql-test/r/ps_7ndb.result rename to mysql-test/suite/ndb/r/ps_7ndb.result diff --git a/mysql-test/r/strict_autoinc_5ndb.result b/mysql-test/suite/ndb/r/strict_autoinc_5ndb.result similarity index 100% rename from mysql-test/r/strict_autoinc_5ndb.result rename to mysql-test/suite/ndb/r/strict_autoinc_5ndb.result diff --git a/mysql-test/suite/ndb/t/disabled.def b/mysql-test/suite/ndb/t/disabled.def new file mode 100644 index 00000000000..ec1dc26039f --- /dev/null +++ b/mysql-test/suite/ndb/t/disabled.def @@ -0,0 +1,23 @@ +############################################################################## +# +# List the test cases that are to be disabled temporarily. +# +# Separate the test case name and the comment with ':'. +# +# : BUG# +# +# Do not use any TAB characters for whitespace. +# +############################################################################## +ndb_autodiscover : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog +ndb_autodiscover2 : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog +ndb_load : BUG#17233 2006-05-04 tomas failed load data from infile causes mysqld dbug_assert, binlog not flushed + +partition_03ndb : BUG#16385 2006-03-24 mikael Partitions: crash when updating a range partitioned NDB table + +ndb_partition_error2 : HF is not sure if the test can work as internded on all the platforms + +# the below testcase have been reworked to avoid the bug, test contains comment, keep bug open +#ndb_binlog_ddl_multi : BUG#18976 2006-04-10 kent CRBR: multiple binlog, second binlog may miss schema log events +#ndb_binlog_discover : bug#21806 2006-08-24 +#ndb_autodiscover3 : bug#21806 diff --git a/mysql-test/t/loaddata_autocom_ndb.test b/mysql-test/suite/ndb/t/loaddata_autocom_ndb.test similarity index 100% rename from mysql-test/t/loaddata_autocom_ndb.test rename to mysql-test/suite/ndb/t/loaddata_autocom_ndb.test diff --git a/mysql-test/t/ndb_alter_table.test b/mysql-test/suite/ndb/t/ndb_alter_table.test similarity index 100% rename from mysql-test/t/ndb_alter_table.test rename to mysql-test/suite/ndb/t/ndb_alter_table.test diff --git a/mysql-test/t/ndb_alter_table2.test b/mysql-test/suite/ndb/t/ndb_alter_table2.test similarity index 100% rename from mysql-test/t/ndb_alter_table2.test rename to mysql-test/suite/ndb/t/ndb_alter_table2.test diff --git a/mysql-test/t/ndb_alter_table3.test b/mysql-test/suite/ndb/t/ndb_alter_table3.test similarity index 100% rename from mysql-test/t/ndb_alter_table3.test rename to mysql-test/suite/ndb/t/ndb_alter_table3.test diff --git a/mysql-test/t/ndb_autodiscover.test b/mysql-test/suite/ndb/t/ndb_autodiscover.test similarity index 100% rename from mysql-test/t/ndb_autodiscover.test rename to mysql-test/suite/ndb/t/ndb_autodiscover.test diff --git a/mysql-test/t/ndb_autodiscover2-master.opt b/mysql-test/suite/ndb/t/ndb_autodiscover2-master.opt similarity index 100% rename from mysql-test/t/ndb_autodiscover2-master.opt rename to mysql-test/suite/ndb/t/ndb_autodiscover2-master.opt diff --git a/mysql-test/t/ndb_autodiscover2.test b/mysql-test/suite/ndb/t/ndb_autodiscover2.test similarity index 100% rename from mysql-test/t/ndb_autodiscover2.test rename to mysql-test/suite/ndb/t/ndb_autodiscover2.test diff --git a/mysql-test/t/ndb_autodiscover3.test b/mysql-test/suite/ndb/t/ndb_autodiscover3.test similarity index 100% rename from mysql-test/t/ndb_autodiscover3.test rename to mysql-test/suite/ndb/t/ndb_autodiscover3.test diff --git a/mysql-test/t/ndb_backup_print.test b/mysql-test/suite/ndb/t/ndb_backup_print.test similarity index 100% rename from mysql-test/t/ndb_backup_print.test rename to mysql-test/suite/ndb/t/ndb_backup_print.test diff --git a/mysql-test/t/ndb_basic.test b/mysql-test/suite/ndb/t/ndb_basic.test similarity index 100% rename from mysql-test/t/ndb_basic.test rename to mysql-test/suite/ndb/t/ndb_basic.test diff --git a/mysql-test/t/ndb_binlog_basic.test b/mysql-test/suite/ndb/t/ndb_binlog_basic.test similarity index 100% rename from mysql-test/t/ndb_binlog_basic.test rename to mysql-test/suite/ndb/t/ndb_binlog_basic.test diff --git a/mysql-test/t/ndb_binlog_basic2.test b/mysql-test/suite/ndb/t/ndb_binlog_basic2.test similarity index 100% rename from mysql-test/t/ndb_binlog_basic2.test rename to mysql-test/suite/ndb/t/ndb_binlog_basic2.test diff --git a/mysql-test/t/ndb_binlog_ddl_multi.test b/mysql-test/suite/ndb/t/ndb_binlog_ddl_multi.test similarity index 100% rename from mysql-test/t/ndb_binlog_ddl_multi.test rename to mysql-test/suite/ndb/t/ndb_binlog_ddl_multi.test diff --git a/mysql-test/t/ndb_binlog_discover.test b/mysql-test/suite/ndb/t/ndb_binlog_discover.test similarity index 100% rename from mysql-test/t/ndb_binlog_discover.test rename to mysql-test/suite/ndb/t/ndb_binlog_discover.test diff --git a/mysql-test/t/ndb_binlog_ignore_db-master.opt b/mysql-test/suite/ndb/t/ndb_binlog_ignore_db-master.opt similarity index 100% rename from mysql-test/t/ndb_binlog_ignore_db-master.opt rename to mysql-test/suite/ndb/t/ndb_binlog_ignore_db-master.opt diff --git a/mysql-test/t/ndb_binlog_ignore_db.test b/mysql-test/suite/ndb/t/ndb_binlog_ignore_db.test similarity index 100% rename from mysql-test/t/ndb_binlog_ignore_db.test rename to mysql-test/suite/ndb/t/ndb_binlog_ignore_db.test diff --git a/mysql-test/t/ndb_binlog_log_bin.test b/mysql-test/suite/ndb/t/ndb_binlog_log_bin.test similarity index 100% rename from mysql-test/t/ndb_binlog_log_bin.test rename to mysql-test/suite/ndb/t/ndb_binlog_log_bin.test diff --git a/mysql-test/t/ndb_binlog_multi.test b/mysql-test/suite/ndb/t/ndb_binlog_multi.test similarity index 100% rename from mysql-test/t/ndb_binlog_multi.test rename to mysql-test/suite/ndb/t/ndb_binlog_multi.test diff --git a/mysql-test/t/ndb_bitfield.test b/mysql-test/suite/ndb/t/ndb_bitfield.test similarity index 100% rename from mysql-test/t/ndb_bitfield.test rename to mysql-test/suite/ndb/t/ndb_bitfield.test diff --git a/mysql-test/t/ndb_blob.test b/mysql-test/suite/ndb/t/ndb_blob.test similarity index 100% rename from mysql-test/t/ndb_blob.test rename to mysql-test/suite/ndb/t/ndb_blob.test diff --git a/mysql-test/t/ndb_blob_partition.test b/mysql-test/suite/ndb/t/ndb_blob_partition.test similarity index 100% rename from mysql-test/t/ndb_blob_partition.test rename to mysql-test/suite/ndb/t/ndb_blob_partition.test diff --git a/mysql-test/t/ndb_cache.test b/mysql-test/suite/ndb/t/ndb_cache.test similarity index 100% rename from mysql-test/t/ndb_cache.test rename to mysql-test/suite/ndb/t/ndb_cache.test diff --git a/mysql-test/t/ndb_cache2.test b/mysql-test/suite/ndb/t/ndb_cache2.test similarity index 100% rename from mysql-test/t/ndb_cache2.test rename to mysql-test/suite/ndb/t/ndb_cache2.test diff --git a/mysql-test/t/ndb_cache_multi.test b/mysql-test/suite/ndb/t/ndb_cache_multi.test similarity index 100% rename from mysql-test/t/ndb_cache_multi.test rename to mysql-test/suite/ndb/t/ndb_cache_multi.test diff --git a/mysql-test/t/ndb_cache_multi2.test b/mysql-test/suite/ndb/t/ndb_cache_multi2.test similarity index 100% rename from mysql-test/t/ndb_cache_multi2.test rename to mysql-test/suite/ndb/t/ndb_cache_multi2.test diff --git a/mysql-test/t/ndb_charset.test b/mysql-test/suite/ndb/t/ndb_charset.test similarity index 100% rename from mysql-test/t/ndb_charset.test rename to mysql-test/suite/ndb/t/ndb_charset.test diff --git a/mysql-test/t/ndb_condition_pushdown.test b/mysql-test/suite/ndb/t/ndb_condition_pushdown.test similarity index 100% rename from mysql-test/t/ndb_condition_pushdown.test rename to mysql-test/suite/ndb/t/ndb_condition_pushdown.test diff --git a/mysql-test/t/ndb_config.test b/mysql-test/suite/ndb/t/ndb_config.test similarity index 100% rename from mysql-test/t/ndb_config.test rename to mysql-test/suite/ndb/t/ndb_config.test diff --git a/mysql-test/t/ndb_config2.test b/mysql-test/suite/ndb/t/ndb_config2.test similarity index 100% rename from mysql-test/t/ndb_config2.test rename to mysql-test/suite/ndb/t/ndb_config2.test diff --git a/mysql-test/t/ndb_cursor.test b/mysql-test/suite/ndb/t/ndb_cursor.test similarity index 100% rename from mysql-test/t/ndb_cursor.test rename to mysql-test/suite/ndb/t/ndb_cursor.test diff --git a/mysql-test/t/ndb_database.test b/mysql-test/suite/ndb/t/ndb_database.test similarity index 100% rename from mysql-test/t/ndb_database.test rename to mysql-test/suite/ndb/t/ndb_database.test diff --git a/mysql-test/t/ndb_dd_alter.test b/mysql-test/suite/ndb/t/ndb_dd_alter.test similarity index 100% rename from mysql-test/t/ndb_dd_alter.test rename to mysql-test/suite/ndb/t/ndb_dd_alter.test diff --git a/mysql-test/t/ndb_dd_backuprestore.test b/mysql-test/suite/ndb/t/ndb_dd_backuprestore.test similarity index 100% rename from mysql-test/t/ndb_dd_backuprestore.test rename to mysql-test/suite/ndb/t/ndb_dd_backuprestore.test diff --git a/mysql-test/t/ndb_dd_basic.test b/mysql-test/suite/ndb/t/ndb_dd_basic.test similarity index 100% rename from mysql-test/t/ndb_dd_basic.test rename to mysql-test/suite/ndb/t/ndb_dd_basic.test diff --git a/mysql-test/t/ndb_dd_ddl.test b/mysql-test/suite/ndb/t/ndb_dd_ddl.test similarity index 100% rename from mysql-test/t/ndb_dd_ddl.test rename to mysql-test/suite/ndb/t/ndb_dd_ddl.test diff --git a/mysql-test/t/ndb_dd_disk2memory.test b/mysql-test/suite/ndb/t/ndb_dd_disk2memory.test similarity index 100% rename from mysql-test/t/ndb_dd_disk2memory.test rename to mysql-test/suite/ndb/t/ndb_dd_disk2memory.test diff --git a/mysql-test/t/ndb_dd_dump.test b/mysql-test/suite/ndb/t/ndb_dd_dump.test similarity index 100% rename from mysql-test/t/ndb_dd_dump.test rename to mysql-test/suite/ndb/t/ndb_dd_dump.test diff --git a/mysql-test/t/ndb_dd_sql_features.test b/mysql-test/suite/ndb/t/ndb_dd_sql_features.test similarity index 100% rename from mysql-test/t/ndb_dd_sql_features.test rename to mysql-test/suite/ndb/t/ndb_dd_sql_features.test diff --git a/mysql-test/t/ndb_gis.test b/mysql-test/suite/ndb/t/ndb_gis.test similarity index 100% rename from mysql-test/t/ndb_gis.test rename to mysql-test/suite/ndb/t/ndb_gis.test diff --git a/mysql-test/t/ndb_grant.later b/mysql-test/suite/ndb/t/ndb_grant.later similarity index 100% rename from mysql-test/t/ndb_grant.later rename to mysql-test/suite/ndb/t/ndb_grant.later diff --git a/mysql-test/t/ndb_index.test b/mysql-test/suite/ndb/t/ndb_index.test similarity index 100% rename from mysql-test/t/ndb_index.test rename to mysql-test/suite/ndb/t/ndb_index.test diff --git a/mysql-test/t/ndb_index_ordered.test b/mysql-test/suite/ndb/t/ndb_index_ordered.test similarity index 100% rename from mysql-test/t/ndb_index_ordered.test rename to mysql-test/suite/ndb/t/ndb_index_ordered.test diff --git a/mysql-test/t/ndb_index_unique.test b/mysql-test/suite/ndb/t/ndb_index_unique.test similarity index 100% rename from mysql-test/t/ndb_index_unique.test rename to mysql-test/suite/ndb/t/ndb_index_unique.test diff --git a/mysql-test/t/ndb_insert.test b/mysql-test/suite/ndb/t/ndb_insert.test similarity index 100% rename from mysql-test/t/ndb_insert.test rename to mysql-test/suite/ndb/t/ndb_insert.test diff --git a/mysql-test/t/ndb_limit.test b/mysql-test/suite/ndb/t/ndb_limit.test similarity index 100% rename from mysql-test/t/ndb_limit.test rename to mysql-test/suite/ndb/t/ndb_limit.test diff --git a/mysql-test/t/ndb_load.test b/mysql-test/suite/ndb/t/ndb_load.test similarity index 100% rename from mysql-test/t/ndb_load.test rename to mysql-test/suite/ndb/t/ndb_load.test diff --git a/mysql-test/t/ndb_loaddatalocal.test b/mysql-test/suite/ndb/t/ndb_loaddatalocal.test similarity index 100% rename from mysql-test/t/ndb_loaddatalocal.test rename to mysql-test/suite/ndb/t/ndb_loaddatalocal.test diff --git a/mysql-test/t/ndb_lock.test b/mysql-test/suite/ndb/t/ndb_lock.test similarity index 100% rename from mysql-test/t/ndb_lock.test rename to mysql-test/suite/ndb/t/ndb_lock.test diff --git a/mysql-test/t/ndb_minmax.test b/mysql-test/suite/ndb/t/ndb_minmax.test similarity index 100% rename from mysql-test/t/ndb_minmax.test rename to mysql-test/suite/ndb/t/ndb_minmax.test diff --git a/mysql-test/t/ndb_multi.test b/mysql-test/suite/ndb/t/ndb_multi.test similarity index 100% rename from mysql-test/t/ndb_multi.test rename to mysql-test/suite/ndb/t/ndb_multi.test diff --git a/mysql-test/t/ndb_multi_row.test b/mysql-test/suite/ndb/t/ndb_multi_row.test similarity index 100% rename from mysql-test/t/ndb_multi_row.test rename to mysql-test/suite/ndb/t/ndb_multi_row.test diff --git a/mysql-test/t/ndb_partition_error.test b/mysql-test/suite/ndb/t/ndb_partition_error.test similarity index 100% rename from mysql-test/t/ndb_partition_error.test rename to mysql-test/suite/ndb/t/ndb_partition_error.test diff --git a/mysql-test/t/ndb_partition_error2-master.opt b/mysql-test/suite/ndb/t/ndb_partition_error2-master.opt similarity index 100% rename from mysql-test/t/ndb_partition_error2-master.opt rename to mysql-test/suite/ndb/t/ndb_partition_error2-master.opt diff --git a/mysql-test/t/ndb_partition_error2.test b/mysql-test/suite/ndb/t/ndb_partition_error2.test similarity index 100% rename from mysql-test/t/ndb_partition_error2.test rename to mysql-test/suite/ndb/t/ndb_partition_error2.test diff --git a/mysql-test/t/ndb_partition_key.test b/mysql-test/suite/ndb/t/ndb_partition_key.test similarity index 100% rename from mysql-test/t/ndb_partition_key.test rename to mysql-test/suite/ndb/t/ndb_partition_key.test diff --git a/mysql-test/t/ndb_partition_list.test b/mysql-test/suite/ndb/t/ndb_partition_list.test similarity index 100% rename from mysql-test/t/ndb_partition_list.test rename to mysql-test/suite/ndb/t/ndb_partition_list.test diff --git a/mysql-test/t/ndb_partition_range.test b/mysql-test/suite/ndb/t/ndb_partition_range.test similarity index 100% rename from mysql-test/t/ndb_partition_range.test rename to mysql-test/suite/ndb/t/ndb_partition_range.test diff --git a/mysql-test/t/ndb_read_multi_range.test b/mysql-test/suite/ndb/t/ndb_read_multi_range.test similarity index 100% rename from mysql-test/t/ndb_read_multi_range.test rename to mysql-test/suite/ndb/t/ndb_read_multi_range.test diff --git a/mysql-test/t/ndb_rename.test b/mysql-test/suite/ndb/t/ndb_rename.test similarity index 100% rename from mysql-test/t/ndb_rename.test rename to mysql-test/suite/ndb/t/ndb_rename.test diff --git a/mysql-test/t/ndb_replace.test b/mysql-test/suite/ndb/t/ndb_replace.test similarity index 100% rename from mysql-test/t/ndb_replace.test rename to mysql-test/suite/ndb/t/ndb_replace.test diff --git a/mysql-test/t/ndb_restore.test b/mysql-test/suite/ndb/t/ndb_restore.test similarity index 100% rename from mysql-test/t/ndb_restore.test rename to mysql-test/suite/ndb/t/ndb_restore.test diff --git a/mysql-test/t/ndb_restore_compat.test b/mysql-test/suite/ndb/t/ndb_restore_compat.test similarity index 100% rename from mysql-test/t/ndb_restore_compat.test rename to mysql-test/suite/ndb/t/ndb_restore_compat.test diff --git a/mysql-test/t/ndb_restore_partition-master.opt b/mysql-test/suite/ndb/t/ndb_restore_partition-master.opt similarity index 100% rename from mysql-test/t/ndb_restore_partition-master.opt rename to mysql-test/suite/ndb/t/ndb_restore_partition-master.opt diff --git a/mysql-test/t/ndb_restore_partition.test b/mysql-test/suite/ndb/t/ndb_restore_partition.test similarity index 100% rename from mysql-test/t/ndb_restore_partition.test rename to mysql-test/suite/ndb/t/ndb_restore_partition.test diff --git a/mysql-test/t/ndb_restore_print.test b/mysql-test/suite/ndb/t/ndb_restore_print.test similarity index 100% rename from mysql-test/t/ndb_restore_print.test rename to mysql-test/suite/ndb/t/ndb_restore_print.test diff --git a/mysql-test/t/ndb_row_format.test b/mysql-test/suite/ndb/t/ndb_row_format.test similarity index 100% rename from mysql-test/t/ndb_row_format.test rename to mysql-test/suite/ndb/t/ndb_row_format.test diff --git a/mysql-test/t/ndb_single_user.test b/mysql-test/suite/ndb/t/ndb_single_user.test similarity index 100% rename from mysql-test/t/ndb_single_user.test rename to mysql-test/suite/ndb/t/ndb_single_user.test diff --git a/mysql-test/t/ndb_sp.test b/mysql-test/suite/ndb/t/ndb_sp.test similarity index 100% rename from mysql-test/t/ndb_sp.test rename to mysql-test/suite/ndb/t/ndb_sp.test diff --git a/mysql-test/t/ndb_subquery.test b/mysql-test/suite/ndb/t/ndb_subquery.test similarity index 100% rename from mysql-test/t/ndb_subquery.test rename to mysql-test/suite/ndb/t/ndb_subquery.test diff --git a/mysql-test/t/ndb_temporary.test b/mysql-test/suite/ndb/t/ndb_temporary.test similarity index 100% rename from mysql-test/t/ndb_temporary.test rename to mysql-test/suite/ndb/t/ndb_temporary.test diff --git a/mysql-test/t/ndb_transaction.test b/mysql-test/suite/ndb/t/ndb_transaction.test similarity index 100% rename from mysql-test/t/ndb_transaction.test rename to mysql-test/suite/ndb/t/ndb_transaction.test diff --git a/mysql-test/t/ndb_trigger.test b/mysql-test/suite/ndb/t/ndb_trigger.test similarity index 100% rename from mysql-test/t/ndb_trigger.test rename to mysql-test/suite/ndb/t/ndb_trigger.test diff --git a/mysql-test/t/ndb_truncate.test b/mysql-test/suite/ndb/t/ndb_truncate.test similarity index 100% rename from mysql-test/t/ndb_truncate.test rename to mysql-test/suite/ndb/t/ndb_truncate.test diff --git a/mysql-test/t/ndb_types.test b/mysql-test/suite/ndb/t/ndb_types.test similarity index 100% rename from mysql-test/t/ndb_types.test rename to mysql-test/suite/ndb/t/ndb_types.test diff --git a/mysql-test/t/ndb_update.test b/mysql-test/suite/ndb/t/ndb_update.test similarity index 100% rename from mysql-test/t/ndb_update.test rename to mysql-test/suite/ndb/t/ndb_update.test diff --git a/mysql-test/t/ndb_view.test b/mysql-test/suite/ndb/t/ndb_view.test similarity index 100% rename from mysql-test/t/ndb_view.test rename to mysql-test/suite/ndb/t/ndb_view.test diff --git a/mysql-test/t/ndbapi.test b/mysql-test/suite/ndb/t/ndbapi.test similarity index 100% rename from mysql-test/t/ndbapi.test rename to mysql-test/suite/ndb/t/ndbapi.test diff --git a/mysql-test/t/partition_03ndb.test b/mysql-test/suite/ndb/t/partition_03ndb.test similarity index 100% rename from mysql-test/t/partition_03ndb.test rename to mysql-test/suite/ndb/t/partition_03ndb.test diff --git a/mysql-test/t/ps_7ndb.test b/mysql-test/suite/ndb/t/ps_7ndb.test similarity index 100% rename from mysql-test/t/ps_7ndb.test rename to mysql-test/suite/ndb/t/ps_7ndb.test diff --git a/mysql-test/t/strict_autoinc_5ndb.test b/mysql-test/suite/ndb/t/strict_autoinc_5ndb.test similarity index 100% rename from mysql-test/t/strict_autoinc_5ndb.test rename to mysql-test/suite/ndb/t/strict_autoinc_5ndb.test diff --git a/mysql-test/r/rpl000001.a.result b/mysql-test/suite/rpl/r/rpl000001.a.result similarity index 100% rename from mysql-test/r/rpl000001.a.result rename to mysql-test/suite/rpl/r/rpl000001.a.result diff --git a/mysql-test/r/rpl000001.b.result b/mysql-test/suite/rpl/r/rpl000001.b.result similarity index 100% rename from mysql-test/r/rpl000001.b.result rename to mysql-test/suite/rpl/r/rpl000001.b.result diff --git a/mysql-test/r/rpl000010.result b/mysql-test/suite/rpl/r/rpl000010.result similarity index 100% rename from mysql-test/r/rpl000010.result rename to mysql-test/suite/rpl/r/rpl000010.result diff --git a/mysql-test/r/rpl000011.result b/mysql-test/suite/rpl/r/rpl000011.result similarity index 100% rename from mysql-test/r/rpl000011.result rename to mysql-test/suite/rpl/r/rpl000011.result diff --git a/mysql-test/r/rpl000013.result b/mysql-test/suite/rpl/r/rpl000013.result similarity index 100% rename from mysql-test/r/rpl000013.result rename to mysql-test/suite/rpl/r/rpl000013.result diff --git a/mysql-test/r/rpl000017.result b/mysql-test/suite/rpl/r/rpl000017.result similarity index 100% rename from mysql-test/r/rpl000017.result rename to mysql-test/suite/rpl/r/rpl000017.result diff --git a/mysql-test/r/rpl_000015.result b/mysql-test/suite/rpl/r/rpl_000015.result similarity index 100% rename from mysql-test/r/rpl_000015.result rename to mysql-test/suite/rpl/r/rpl_000015.result diff --git a/mysql-test/r/rpl_EE_err.result b/mysql-test/suite/rpl/r/rpl_EE_err.result similarity index 100% rename from mysql-test/r/rpl_EE_err.result rename to mysql-test/suite/rpl/r/rpl_EE_err.result diff --git a/mysql-test/r/rpl_LD_INFILE.result b/mysql-test/suite/rpl/r/rpl_LD_INFILE.result similarity index 100% rename from mysql-test/r/rpl_LD_INFILE.result rename to mysql-test/suite/rpl/r/rpl_LD_INFILE.result diff --git a/mysql-test/r/rpl_alter.result b/mysql-test/suite/rpl/r/rpl_alter.result similarity index 100% rename from mysql-test/r/rpl_alter.result rename to mysql-test/suite/rpl/r/rpl_alter.result diff --git a/mysql-test/r/rpl_alter_db.result b/mysql-test/suite/rpl/r/rpl_alter_db.result similarity index 100% rename from mysql-test/r/rpl_alter_db.result rename to mysql-test/suite/rpl/r/rpl_alter_db.result diff --git a/mysql-test/r/rpl_auto_increment.result b/mysql-test/suite/rpl/r/rpl_auto_increment.result similarity index 100% rename from mysql-test/r/rpl_auto_increment.result rename to mysql-test/suite/rpl/r/rpl_auto_increment.result diff --git a/mysql-test/r/rpl_auto_increment_11932.result b/mysql-test/suite/rpl/r/rpl_auto_increment_11932.result similarity index 100% rename from mysql-test/r/rpl_auto_increment_11932.result rename to mysql-test/suite/rpl/r/rpl_auto_increment_11932.result diff --git a/mysql-test/r/rpl_bit.result b/mysql-test/suite/rpl/r/rpl_bit.result similarity index 100% rename from mysql-test/r/rpl_bit.result rename to mysql-test/suite/rpl/r/rpl_bit.result diff --git a/mysql-test/r/rpl_bit_npk.result b/mysql-test/suite/rpl/r/rpl_bit_npk.result similarity index 100% rename from mysql-test/r/rpl_bit_npk.result rename to mysql-test/suite/rpl/r/rpl_bit_npk.result diff --git a/mysql-test/r/rpl_change_master.result b/mysql-test/suite/rpl/r/rpl_change_master.result similarity index 100% rename from mysql-test/r/rpl_change_master.result rename to mysql-test/suite/rpl/r/rpl_change_master.result diff --git a/mysql-test/r/rpl_charset_sjis.result b/mysql-test/suite/rpl/r/rpl_charset_sjis.result similarity index 100% rename from mysql-test/r/rpl_charset_sjis.result rename to mysql-test/suite/rpl/r/rpl_charset_sjis.result diff --git a/mysql-test/r/rpl_commit_after_flush.result b/mysql-test/suite/rpl/r/rpl_commit_after_flush.result similarity index 100% rename from mysql-test/r/rpl_commit_after_flush.result rename to mysql-test/suite/rpl/r/rpl_commit_after_flush.result diff --git a/mysql-test/r/rpl_create_database.result b/mysql-test/suite/rpl/r/rpl_create_database.result similarity index 100% rename from mysql-test/r/rpl_create_database.result rename to mysql-test/suite/rpl/r/rpl_create_database.result diff --git a/mysql-test/r/rpl_critical_errors.result b/mysql-test/suite/rpl/r/rpl_critical_errors.result similarity index 100% rename from mysql-test/r/rpl_critical_errors.result rename to mysql-test/suite/rpl/r/rpl_critical_errors.result diff --git a/mysql-test/r/rpl_critical_errors.result.txt b/mysql-test/suite/rpl/r/rpl_critical_errors.result.txt similarity index 100% rename from mysql-test/r/rpl_critical_errors.result.txt rename to mysql-test/suite/rpl/r/rpl_critical_errors.result.txt diff --git a/mysql-test/r/rpl_ddl.result b/mysql-test/suite/rpl/r/rpl_ddl.result similarity index 100% rename from mysql-test/r/rpl_ddl.result rename to mysql-test/suite/rpl/r/rpl_ddl.result diff --git a/mysql-test/r/rpl_deadlock_innodb.result b/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result similarity index 100% rename from mysql-test/r/rpl_deadlock_innodb.result rename to mysql-test/suite/rpl/r/rpl_deadlock_innodb.result diff --git a/mysql-test/r/rpl_delete_no_where.result b/mysql-test/suite/rpl/r/rpl_delete_no_where.result similarity index 100% rename from mysql-test/r/rpl_delete_no_where.result rename to mysql-test/suite/rpl/r/rpl_delete_no_where.result diff --git a/mysql-test/r/rpl_do_grant.result b/mysql-test/suite/rpl/r/rpl_do_grant.result similarity index 100% rename from mysql-test/r/rpl_do_grant.result rename to mysql-test/suite/rpl/r/rpl_do_grant.result diff --git a/mysql-test/r/rpl_drop.result b/mysql-test/suite/rpl/r/rpl_drop.result similarity index 100% rename from mysql-test/r/rpl_drop.result rename to mysql-test/suite/rpl/r/rpl_drop.result diff --git a/mysql-test/r/rpl_drop_db.result b/mysql-test/suite/rpl/r/rpl_drop_db.result similarity index 100% rename from mysql-test/r/rpl_drop_db.result rename to mysql-test/suite/rpl/r/rpl_drop_db.result diff --git a/mysql-test/r/rpl_drop_temp.result b/mysql-test/suite/rpl/r/rpl_drop_temp.result similarity index 100% rename from mysql-test/r/rpl_drop_temp.result rename to mysql-test/suite/rpl/r/rpl_drop_temp.result diff --git a/mysql-test/r/rpl_dual_pos_advance.result b/mysql-test/suite/rpl/r/rpl_dual_pos_advance.result similarity index 100% rename from mysql-test/r/rpl_dual_pos_advance.result rename to mysql-test/suite/rpl/r/rpl_dual_pos_advance.result diff --git a/mysql-test/r/rpl_empty_master_crash.result b/mysql-test/suite/rpl/r/rpl_empty_master_crash.result similarity index 100% rename from mysql-test/r/rpl_empty_master_crash.result rename to mysql-test/suite/rpl/r/rpl_empty_master_crash.result diff --git a/mysql-test/r/rpl_err_ignoredtable.result b/mysql-test/suite/rpl/r/rpl_err_ignoredtable.result similarity index 100% rename from mysql-test/r/rpl_err_ignoredtable.result rename to mysql-test/suite/rpl/r/rpl_err_ignoredtable.result diff --git a/mysql-test/r/rpl_events.result b/mysql-test/suite/rpl/r/rpl_events.result similarity index 100% rename from mysql-test/r/rpl_events.result rename to mysql-test/suite/rpl/r/rpl_events.result diff --git a/mysql-test/r/rpl_extraCol_innodb.result b/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result similarity index 100% rename from mysql-test/r/rpl_extraCol_innodb.result rename to mysql-test/suite/rpl/r/rpl_extraCol_innodb.result diff --git a/mysql-test/r/rpl_extraCol_myisam.result b/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result similarity index 100% rename from mysql-test/r/rpl_extraCol_myisam.result rename to mysql-test/suite/rpl/r/rpl_extraCol_myisam.result diff --git a/mysql-test/r/rpl_failed_optimize.result b/mysql-test/suite/rpl/r/rpl_failed_optimize.result similarity index 100% rename from mysql-test/r/rpl_failed_optimize.result rename to mysql-test/suite/rpl/r/rpl_failed_optimize.result diff --git a/mysql-test/r/rpl_flushlog_loop.result b/mysql-test/suite/rpl/r/rpl_flushlog_loop.result similarity index 100% rename from mysql-test/r/rpl_flushlog_loop.result rename to mysql-test/suite/rpl/r/rpl_flushlog_loop.result diff --git a/mysql-test/r/rpl_foreign_key_innodb.result b/mysql-test/suite/rpl/r/rpl_foreign_key_innodb.result similarity index 100% rename from mysql-test/r/rpl_foreign_key_innodb.result rename to mysql-test/suite/rpl/r/rpl_foreign_key_innodb.result diff --git a/mysql-test/r/rpl_free_items.result b/mysql-test/suite/rpl/r/rpl_free_items.result similarity index 100% rename from mysql-test/r/rpl_free_items.result rename to mysql-test/suite/rpl/r/rpl_free_items.result diff --git a/mysql-test/r/rpl_get_lock.result b/mysql-test/suite/rpl/r/rpl_get_lock.result similarity index 100% rename from mysql-test/r/rpl_get_lock.result rename to mysql-test/suite/rpl/r/rpl_get_lock.result diff --git a/mysql-test/r/rpl_ignore_grant.result b/mysql-test/suite/rpl/r/rpl_ignore_grant.result similarity index 100% rename from mysql-test/r/rpl_ignore_grant.result rename to mysql-test/suite/rpl/r/rpl_ignore_grant.result diff --git a/mysql-test/r/rpl_ignore_revoke.result b/mysql-test/suite/rpl/r/rpl_ignore_revoke.result similarity index 100% rename from mysql-test/r/rpl_ignore_revoke.result rename to mysql-test/suite/rpl/r/rpl_ignore_revoke.result diff --git a/mysql-test/r/rpl_ignore_table.result b/mysql-test/suite/rpl/r/rpl_ignore_table.result similarity index 100% rename from mysql-test/r/rpl_ignore_table.result rename to mysql-test/suite/rpl/r/rpl_ignore_table.result diff --git a/mysql-test/r/rpl_ignore_table_update.result b/mysql-test/suite/rpl/r/rpl_ignore_table_update.result similarity index 100% rename from mysql-test/r/rpl_ignore_table_update.result rename to mysql-test/suite/rpl/r/rpl_ignore_table_update.result diff --git a/mysql-test/r/rpl_incident.result b/mysql-test/suite/rpl/r/rpl_incident.result similarity index 100% rename from mysql-test/r/rpl_incident.result rename to mysql-test/suite/rpl/r/rpl_incident.result diff --git a/mysql-test/r/rpl_init_slave.result b/mysql-test/suite/rpl/r/rpl_init_slave.result similarity index 100% rename from mysql-test/r/rpl_init_slave.result rename to mysql-test/suite/rpl/r/rpl_init_slave.result diff --git a/mysql-test/r/rpl_innodb.result b/mysql-test/suite/rpl/r/rpl_innodb.result similarity index 100% rename from mysql-test/r/rpl_innodb.result rename to mysql-test/suite/rpl/r/rpl_innodb.result diff --git a/mysql-test/r/rpl_insert.result b/mysql-test/suite/rpl/r/rpl_insert.result similarity index 100% rename from mysql-test/r/rpl_insert.result rename to mysql-test/suite/rpl/r/rpl_insert.result diff --git a/mysql-test/r/rpl_insert_id.result b/mysql-test/suite/rpl/r/rpl_insert_id.result similarity index 100% rename from mysql-test/r/rpl_insert_id.result rename to mysql-test/suite/rpl/r/rpl_insert_id.result diff --git a/mysql-test/r/rpl_insert_id_pk.result b/mysql-test/suite/rpl/r/rpl_insert_id_pk.result similarity index 100% rename from mysql-test/r/rpl_insert_id_pk.result rename to mysql-test/suite/rpl/r/rpl_insert_id_pk.result diff --git a/mysql-test/r/rpl_insert_ignore.result b/mysql-test/suite/rpl/r/rpl_insert_ignore.result similarity index 100% rename from mysql-test/r/rpl_insert_ignore.result rename to mysql-test/suite/rpl/r/rpl_insert_ignore.result diff --git a/mysql-test/r/rpl_insert_select.result b/mysql-test/suite/rpl/r/rpl_insert_select.result similarity index 100% rename from mysql-test/r/rpl_insert_select.result rename to mysql-test/suite/rpl/r/rpl_insert_select.result diff --git a/mysql-test/r/rpl_known_bugs_detection.result b/mysql-test/suite/rpl/r/rpl_known_bugs_detection.result similarity index 100% rename from mysql-test/r/rpl_known_bugs_detection.result rename to mysql-test/suite/rpl/r/rpl_known_bugs_detection.result diff --git a/mysql-test/r/rpl_load_from_master.result b/mysql-test/suite/rpl/r/rpl_load_from_master.result similarity index 100% rename from mysql-test/r/rpl_load_from_master.result rename to mysql-test/suite/rpl/r/rpl_load_from_master.result diff --git a/mysql-test/r/rpl_load_table_from_master.result b/mysql-test/suite/rpl/r/rpl_load_table_from_master.result similarity index 100% rename from mysql-test/r/rpl_load_table_from_master.result rename to mysql-test/suite/rpl/r/rpl_load_table_from_master.result diff --git a/mysql-test/r/rpl_loaddata.result b/mysql-test/suite/rpl/r/rpl_loaddata.result similarity index 100% rename from mysql-test/r/rpl_loaddata.result rename to mysql-test/suite/rpl/r/rpl_loaddata.result diff --git a/mysql-test/r/rpl_loaddata_charset.result b/mysql-test/suite/rpl/r/rpl_loaddata_charset.result similarity index 100% rename from mysql-test/r/rpl_loaddata_charset.result rename to mysql-test/suite/rpl/r/rpl_loaddata_charset.result diff --git a/mysql-test/r/rpl_loaddata_m.result b/mysql-test/suite/rpl/r/rpl_loaddata_m.result similarity index 100% rename from mysql-test/r/rpl_loaddata_m.result rename to mysql-test/suite/rpl/r/rpl_loaddata_m.result diff --git a/mysql-test/r/rpl_loaddata_s.result b/mysql-test/suite/rpl/r/rpl_loaddata_s.result similarity index 100% rename from mysql-test/r/rpl_loaddata_s.result rename to mysql-test/suite/rpl/r/rpl_loaddata_s.result diff --git a/mysql-test/r/rpl_loaddata_simple.result b/mysql-test/suite/rpl/r/rpl_loaddata_simple.result similarity index 100% rename from mysql-test/r/rpl_loaddata_simple.result rename to mysql-test/suite/rpl/r/rpl_loaddata_simple.result diff --git a/mysql-test/r/rpl_loaddatalocal.result b/mysql-test/suite/rpl/r/rpl_loaddatalocal.result similarity index 100% rename from mysql-test/r/rpl_loaddatalocal.result rename to mysql-test/suite/rpl/r/rpl_loaddatalocal.result diff --git a/mysql-test/r/rpl_loadfile.result b/mysql-test/suite/rpl/r/rpl_loadfile.result similarity index 100% rename from mysql-test/r/rpl_loadfile.result rename to mysql-test/suite/rpl/r/rpl_loadfile.result diff --git a/mysql-test/r/rpl_locale.result b/mysql-test/suite/rpl/r/rpl_locale.result similarity index 100% rename from mysql-test/r/rpl_locale.result rename to mysql-test/suite/rpl/r/rpl_locale.result diff --git a/mysql-test/r/rpl_log_pos.result b/mysql-test/suite/rpl/r/rpl_log_pos.result similarity index 100% rename from mysql-test/r/rpl_log_pos.result rename to mysql-test/suite/rpl/r/rpl_log_pos.result diff --git a/mysql-test/r/rpl_many_optimize.result b/mysql-test/suite/rpl/r/rpl_many_optimize.result similarity index 100% rename from mysql-test/r/rpl_many_optimize.result rename to mysql-test/suite/rpl/r/rpl_many_optimize.result diff --git a/mysql-test/r/rpl_master_pos_wait.result b/mysql-test/suite/rpl/r/rpl_master_pos_wait.result similarity index 100% rename from mysql-test/r/rpl_master_pos_wait.result rename to mysql-test/suite/rpl/r/rpl_master_pos_wait.result diff --git a/mysql-test/r/rpl_misc_functions.result b/mysql-test/suite/rpl/r/rpl_misc_functions.result similarity index 100% rename from mysql-test/r/rpl_misc_functions.result rename to mysql-test/suite/rpl/r/rpl_misc_functions.result diff --git a/mysql-test/r/rpl_mixed_ddl_dml.result b/mysql-test/suite/rpl/r/rpl_mixed_ddl_dml.result similarity index 100% rename from mysql-test/r/rpl_mixed_ddl_dml.result rename to mysql-test/suite/rpl/r/rpl_mixed_ddl_dml.result diff --git a/mysql-test/r/rpl_multi_delete.result b/mysql-test/suite/rpl/r/rpl_multi_delete.result similarity index 100% rename from mysql-test/r/rpl_multi_delete.result rename to mysql-test/suite/rpl/r/rpl_multi_delete.result diff --git a/mysql-test/r/rpl_multi_delete2.result b/mysql-test/suite/rpl/r/rpl_multi_delete2.result similarity index 100% rename from mysql-test/r/rpl_multi_delete2.result rename to mysql-test/suite/rpl/r/rpl_multi_delete2.result diff --git a/mysql-test/r/rpl_multi_engine.result b/mysql-test/suite/rpl/r/rpl_multi_engine.result similarity index 100% rename from mysql-test/r/rpl_multi_engine.result rename to mysql-test/suite/rpl/r/rpl_multi_engine.result diff --git a/mysql-test/r/rpl_multi_update.result b/mysql-test/suite/rpl/r/rpl_multi_update.result similarity index 100% rename from mysql-test/r/rpl_multi_update.result rename to mysql-test/suite/rpl/r/rpl_multi_update.result diff --git a/mysql-test/r/rpl_multi_update2.result b/mysql-test/suite/rpl/r/rpl_multi_update2.result similarity index 100% rename from mysql-test/r/rpl_multi_update2.result rename to mysql-test/suite/rpl/r/rpl_multi_update2.result diff --git a/mysql-test/r/rpl_multi_update3.result b/mysql-test/suite/rpl/r/rpl_multi_update3.result similarity index 100% rename from mysql-test/r/rpl_multi_update3.result rename to mysql-test/suite/rpl/r/rpl_multi_update3.result diff --git a/mysql-test/r/rpl_multi_update4.result b/mysql-test/suite/rpl/r/rpl_multi_update4.result similarity index 100% rename from mysql-test/r/rpl_multi_update4.result rename to mysql-test/suite/rpl/r/rpl_multi_update4.result diff --git a/mysql-test/r/rpl_optimize.result b/mysql-test/suite/rpl/r/rpl_optimize.result similarity index 100% rename from mysql-test/r/rpl_optimize.result rename to mysql-test/suite/rpl/r/rpl_optimize.result diff --git a/mysql-test/r/rpl_packet.result b/mysql-test/suite/rpl/r/rpl_packet.result similarity index 100% rename from mysql-test/r/rpl_packet.result rename to mysql-test/suite/rpl/r/rpl_packet.result diff --git a/mysql-test/r/rpl_ps.result b/mysql-test/suite/rpl/r/rpl_ps.result similarity index 100% rename from mysql-test/r/rpl_ps.result rename to mysql-test/suite/rpl/r/rpl_ps.result diff --git a/mysql-test/r/rpl_rbr_to_sbr.result b/mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result similarity index 100% rename from mysql-test/r/rpl_rbr_to_sbr.result rename to mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result diff --git a/mysql-test/r/rpl_read_only.result b/mysql-test/suite/rpl/r/rpl_read_only.result similarity index 100% rename from mysql-test/r/rpl_read_only.result rename to mysql-test/suite/rpl/r/rpl_read_only.result diff --git a/mysql-test/r/rpl_redirect.result b/mysql-test/suite/rpl/r/rpl_redirect.result similarity index 100% rename from mysql-test/r/rpl_redirect.result rename to mysql-test/suite/rpl/r/rpl_redirect.result diff --git a/mysql-test/r/rpl_relay_space_innodb.result b/mysql-test/suite/rpl/r/rpl_relay_space_innodb.result similarity index 100% rename from mysql-test/r/rpl_relay_space_innodb.result rename to mysql-test/suite/rpl/r/rpl_relay_space_innodb.result diff --git a/mysql-test/r/rpl_relay_space_myisam.result b/mysql-test/suite/rpl/r/rpl_relay_space_myisam.result similarity index 100% rename from mysql-test/r/rpl_relay_space_myisam.result rename to mysql-test/suite/rpl/r/rpl_relay_space_myisam.result diff --git a/mysql-test/r/rpl_relayrotate.result b/mysql-test/suite/rpl/r/rpl_relayrotate.result similarity index 100% rename from mysql-test/r/rpl_relayrotate.result rename to mysql-test/suite/rpl/r/rpl_relayrotate.result diff --git a/mysql-test/r/rpl_relayspace.result b/mysql-test/suite/rpl/r/rpl_relayspace.result similarity index 100% rename from mysql-test/r/rpl_relayspace.result rename to mysql-test/suite/rpl/r/rpl_relayspace.result diff --git a/mysql-test/r/rpl_replicate_do.result b/mysql-test/suite/rpl/r/rpl_replicate_do.result similarity index 100% rename from mysql-test/r/rpl_replicate_do.result rename to mysql-test/suite/rpl/r/rpl_replicate_do.result diff --git a/mysql-test/r/rpl_replicate_ignore_db.result b/mysql-test/suite/rpl/r/rpl_replicate_ignore_db.result similarity index 100% rename from mysql-test/r/rpl_replicate_ignore_db.result rename to mysql-test/suite/rpl/r/rpl_replicate_ignore_db.result diff --git a/mysql-test/r/rpl_rewrt_db.result b/mysql-test/suite/rpl/r/rpl_rewrt_db.result similarity index 100% rename from mysql-test/r/rpl_rewrt_db.result rename to mysql-test/suite/rpl/r/rpl_rewrt_db.result diff --git a/mysql-test/r/rpl_rotate_logs.result b/mysql-test/suite/rpl/r/rpl_rotate_logs.result similarity index 100% rename from mysql-test/r/rpl_rotate_logs.result rename to mysql-test/suite/rpl/r/rpl_rotate_logs.result diff --git a/mysql-test/r/rpl_row_001.result b/mysql-test/suite/rpl/r/rpl_row_001.result similarity index 100% rename from mysql-test/r/rpl_row_001.result rename to mysql-test/suite/rpl/r/rpl_row_001.result diff --git a/mysql-test/r/rpl_row_4_bytes.result b/mysql-test/suite/rpl/r/rpl_row_4_bytes.result similarity index 100% rename from mysql-test/r/rpl_row_4_bytes.result rename to mysql-test/suite/rpl/r/rpl_row_4_bytes.result diff --git a/mysql-test/r/rpl_row_NOW.result b/mysql-test/suite/rpl/r/rpl_row_NOW.result similarity index 100% rename from mysql-test/r/rpl_row_NOW.result rename to mysql-test/suite/rpl/r/rpl_row_NOW.result diff --git a/mysql-test/r/rpl_row_USER.result b/mysql-test/suite/rpl/r/rpl_row_USER.result similarity index 100% rename from mysql-test/r/rpl_row_USER.result rename to mysql-test/suite/rpl/r/rpl_row_USER.result diff --git a/mysql-test/r/rpl_row_UUID.result b/mysql-test/suite/rpl/r/rpl_row_UUID.result similarity index 100% rename from mysql-test/r/rpl_row_UUID.result rename to mysql-test/suite/rpl/r/rpl_row_UUID.result diff --git a/mysql-test/r/rpl_row_basic_11bugs-master.opt b/mysql-test/suite/rpl/r/rpl_row_basic_11bugs-master.opt similarity index 100% rename from mysql-test/r/rpl_row_basic_11bugs-master.opt rename to mysql-test/suite/rpl/r/rpl_row_basic_11bugs-master.opt diff --git a/mysql-test/r/rpl_row_basic_11bugs-slave.opt b/mysql-test/suite/rpl/r/rpl_row_basic_11bugs-slave.opt similarity index 100% rename from mysql-test/r/rpl_row_basic_11bugs-slave.opt rename to mysql-test/suite/rpl/r/rpl_row_basic_11bugs-slave.opt diff --git a/mysql-test/r/rpl_row_basic_11bugs.result b/mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result similarity index 100% rename from mysql-test/r/rpl_row_basic_11bugs.result rename to mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result diff --git a/mysql-test/r/rpl_row_basic_2myisam.result b/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result similarity index 100% rename from mysql-test/r/rpl_row_basic_2myisam.result rename to mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result diff --git a/mysql-test/r/rpl_row_basic_3innodb.result b/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result similarity index 100% rename from mysql-test/r/rpl_row_basic_3innodb.result rename to mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result diff --git a/mysql-test/r/rpl_row_basic_8partition.result b/mysql-test/suite/rpl/r/rpl_row_basic_8partition.result similarity index 100% rename from mysql-test/r/rpl_row_basic_8partition.result rename to mysql-test/suite/rpl/r/rpl_row_basic_8partition.result diff --git a/mysql-test/r/rpl_row_blob_innodb.result b/mysql-test/suite/rpl/r/rpl_row_blob_innodb.result similarity index 100% rename from mysql-test/r/rpl_row_blob_innodb.result rename to mysql-test/suite/rpl/r/rpl_row_blob_innodb.result diff --git a/mysql-test/r/rpl_row_blob_myisam.result b/mysql-test/suite/rpl/r/rpl_row_blob_myisam.result similarity index 100% rename from mysql-test/r/rpl_row_blob_myisam.result rename to mysql-test/suite/rpl/r/rpl_row_blob_myisam.result diff --git a/mysql-test/r/rpl_row_charset.result b/mysql-test/suite/rpl/r/rpl_row_charset.result similarity index 100% rename from mysql-test/r/rpl_row_charset.result rename to mysql-test/suite/rpl/r/rpl_row_charset.result diff --git a/mysql-test/r/rpl_row_create_table.result b/mysql-test/suite/rpl/r/rpl_row_create_table.result similarity index 100% rename from mysql-test/r/rpl_row_create_table.result rename to mysql-test/suite/rpl/r/rpl_row_create_table.result diff --git a/mysql-test/r/rpl_row_delayed_ins.result b/mysql-test/suite/rpl/r/rpl_row_delayed_ins.result similarity index 100% rename from mysql-test/r/rpl_row_delayed_ins.result rename to mysql-test/suite/rpl/r/rpl_row_delayed_ins.result diff --git a/mysql-test/r/rpl_row_drop.result b/mysql-test/suite/rpl/r/rpl_row_drop.result similarity index 100% rename from mysql-test/r/rpl_row_drop.result rename to mysql-test/suite/rpl/r/rpl_row_drop.result diff --git a/mysql-test/r/rpl_row_err_ignoredtable.result b/mysql-test/suite/rpl/r/rpl_row_err_ignoredtable.result similarity index 100% rename from mysql-test/r/rpl_row_err_ignoredtable.result rename to mysql-test/suite/rpl/r/rpl_row_err_ignoredtable.result diff --git a/mysql-test/r/rpl_row_flsh_tbls.result b/mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result similarity index 100% rename from mysql-test/r/rpl_row_flsh_tbls.result rename to mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result diff --git a/mysql-test/r/rpl_row_func001.result b/mysql-test/suite/rpl/r/rpl_row_func001.result similarity index 100% rename from mysql-test/r/rpl_row_func001.result rename to mysql-test/suite/rpl/r/rpl_row_func001.result diff --git a/mysql-test/r/rpl_row_func002.result b/mysql-test/suite/rpl/r/rpl_row_func002.result similarity index 100% rename from mysql-test/r/rpl_row_func002.result rename to mysql-test/suite/rpl/r/rpl_row_func002.result diff --git a/mysql-test/r/rpl_row_func003.result b/mysql-test/suite/rpl/r/rpl_row_func003.result similarity index 100% rename from mysql-test/r/rpl_row_func003.result rename to mysql-test/suite/rpl/r/rpl_row_func003.result diff --git a/mysql-test/r/rpl_row_inexist_tbl.result b/mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result similarity index 100% rename from mysql-test/r/rpl_row_inexist_tbl.result rename to mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result diff --git a/mysql-test/r/rpl_row_insert_delayed.result b/mysql-test/suite/rpl/r/rpl_row_insert_delayed.result similarity index 100% rename from mysql-test/r/rpl_row_insert_delayed.result rename to mysql-test/suite/rpl/r/rpl_row_insert_delayed.result diff --git a/mysql-test/r/rpl_row_loaddata_m.result b/mysql-test/suite/rpl/r/rpl_row_loaddata_m.result similarity index 100% rename from mysql-test/r/rpl_row_loaddata_m.result rename to mysql-test/suite/rpl/r/rpl_row_loaddata_m.result diff --git a/mysql-test/r/rpl_row_log.result b/mysql-test/suite/rpl/r/rpl_row_log.result similarity index 100% rename from mysql-test/r/rpl_row_log.result rename to mysql-test/suite/rpl/r/rpl_row_log.result diff --git a/mysql-test/r/rpl_row_log_innodb.result b/mysql-test/suite/rpl/r/rpl_row_log_innodb.result similarity index 100% rename from mysql-test/r/rpl_row_log_innodb.result rename to mysql-test/suite/rpl/r/rpl_row_log_innodb.result diff --git a/mysql-test/r/rpl_row_max_relay_size.result b/mysql-test/suite/rpl/r/rpl_row_max_relay_size.result similarity index 100% rename from mysql-test/r/rpl_row_max_relay_size.result rename to mysql-test/suite/rpl/r/rpl_row_max_relay_size.result diff --git a/mysql-test/r/rpl_row_multi_query.result b/mysql-test/suite/rpl/r/rpl_row_multi_query.result similarity index 100% rename from mysql-test/r/rpl_row_multi_query.result rename to mysql-test/suite/rpl/r/rpl_row_multi_query.result diff --git a/mysql-test/r/rpl_row_mysqlbinlog.result b/mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result similarity index 100% rename from mysql-test/r/rpl_row_mysqlbinlog.result rename to mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result diff --git a/mysql-test/r/rpl_row_mystery22.result b/mysql-test/suite/rpl/r/rpl_row_mystery22.result similarity index 100% rename from mysql-test/r/rpl_row_mystery22.result rename to mysql-test/suite/rpl/r/rpl_row_mystery22.result diff --git a/mysql-test/r/rpl_row_reset_slave.result b/mysql-test/suite/rpl/r/rpl_row_reset_slave.result similarity index 100% rename from mysql-test/r/rpl_row_reset_slave.result rename to mysql-test/suite/rpl/r/rpl_row_reset_slave.result diff --git a/mysql-test/r/rpl_row_sp001.result b/mysql-test/suite/rpl/r/rpl_row_sp001.result similarity index 100% rename from mysql-test/r/rpl_row_sp001.result rename to mysql-test/suite/rpl/r/rpl_row_sp001.result diff --git a/mysql-test/r/rpl_row_sp002_innodb.result b/mysql-test/suite/rpl/r/rpl_row_sp002_innodb.result similarity index 100% rename from mysql-test/r/rpl_row_sp002_innodb.result rename to mysql-test/suite/rpl/r/rpl_row_sp002_innodb.result diff --git a/mysql-test/r/rpl_row_sp003.result b/mysql-test/suite/rpl/r/rpl_row_sp003.result similarity index 100% rename from mysql-test/r/rpl_row_sp003.result rename to mysql-test/suite/rpl/r/rpl_row_sp003.result diff --git a/mysql-test/r/rpl_row_sp005.result b/mysql-test/suite/rpl/r/rpl_row_sp005.result similarity index 100% rename from mysql-test/r/rpl_row_sp005.result rename to mysql-test/suite/rpl/r/rpl_row_sp005.result diff --git a/mysql-test/r/rpl_row_sp006_InnoDB.result b/mysql-test/suite/rpl/r/rpl_row_sp006_InnoDB.result similarity index 100% rename from mysql-test/r/rpl_row_sp006_InnoDB.result rename to mysql-test/suite/rpl/r/rpl_row_sp006_InnoDB.result diff --git a/mysql-test/r/rpl_row_sp007_innodb.result b/mysql-test/suite/rpl/r/rpl_row_sp007_innodb.result similarity index 100% rename from mysql-test/r/rpl_row_sp007_innodb.result rename to mysql-test/suite/rpl/r/rpl_row_sp007_innodb.result diff --git a/mysql-test/r/rpl_row_sp008.result b/mysql-test/suite/rpl/r/rpl_row_sp008.result similarity index 100% rename from mysql-test/r/rpl_row_sp008.result rename to mysql-test/suite/rpl/r/rpl_row_sp008.result diff --git a/mysql-test/r/rpl_row_sp009.result b/mysql-test/suite/rpl/r/rpl_row_sp009.result similarity index 100% rename from mysql-test/r/rpl_row_sp009.result rename to mysql-test/suite/rpl/r/rpl_row_sp009.result diff --git a/mysql-test/r/rpl_row_sp010.result b/mysql-test/suite/rpl/r/rpl_row_sp010.result similarity index 100% rename from mysql-test/r/rpl_row_sp010.result rename to mysql-test/suite/rpl/r/rpl_row_sp010.result diff --git a/mysql-test/r/rpl_row_sp011.result b/mysql-test/suite/rpl/r/rpl_row_sp011.result similarity index 100% rename from mysql-test/r/rpl_row_sp011.result rename to mysql-test/suite/rpl/r/rpl_row_sp011.result diff --git a/mysql-test/r/rpl_row_sp012.result b/mysql-test/suite/rpl/r/rpl_row_sp012.result similarity index 100% rename from mysql-test/r/rpl_row_sp012.result rename to mysql-test/suite/rpl/r/rpl_row_sp012.result diff --git a/mysql-test/r/rpl_row_stop_middle.result b/mysql-test/suite/rpl/r/rpl_row_stop_middle.result similarity index 100% rename from mysql-test/r/rpl_row_stop_middle.result rename to mysql-test/suite/rpl/r/rpl_row_stop_middle.result diff --git a/mysql-test/r/rpl_row_stop_middle_update.result b/mysql-test/suite/rpl/r/rpl_row_stop_middle_update.result similarity index 100% rename from mysql-test/r/rpl_row_stop_middle_update.result rename to mysql-test/suite/rpl/r/rpl_row_stop_middle_update.result diff --git a/mysql-test/r/rpl_row_tabledefs_2myisam.result b/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result similarity index 100% rename from mysql-test/r/rpl_row_tabledefs_2myisam.result rename to mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result diff --git a/mysql-test/r/rpl_row_tabledefs_3innodb.result b/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result similarity index 100% rename from mysql-test/r/rpl_row_tabledefs_3innodb.result rename to mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result diff --git a/mysql-test/r/rpl_row_tabledefs_7ndb.result b/mysql-test/suite/rpl/r/rpl_row_tabledefs_7ndb.result similarity index 100% rename from mysql-test/r/rpl_row_tabledefs_7ndb.result rename to mysql-test/suite/rpl/r/rpl_row_tabledefs_7ndb.result diff --git a/mysql-test/r/rpl_row_trig001.result b/mysql-test/suite/rpl/r/rpl_row_trig001.result similarity index 100% rename from mysql-test/r/rpl_row_trig001.result rename to mysql-test/suite/rpl/r/rpl_row_trig001.result diff --git a/mysql-test/r/rpl_row_trig002.result b/mysql-test/suite/rpl/r/rpl_row_trig002.result similarity index 100% rename from mysql-test/r/rpl_row_trig002.result rename to mysql-test/suite/rpl/r/rpl_row_trig002.result diff --git a/mysql-test/r/rpl_row_trig003.result b/mysql-test/suite/rpl/r/rpl_row_trig003.result similarity index 100% rename from mysql-test/r/rpl_row_trig003.result rename to mysql-test/suite/rpl/r/rpl_row_trig003.result diff --git a/mysql-test/r/rpl_row_trig004.result b/mysql-test/suite/rpl/r/rpl_row_trig004.result similarity index 100% rename from mysql-test/r/rpl_row_trig004.result rename to mysql-test/suite/rpl/r/rpl_row_trig004.result diff --git a/mysql-test/r/rpl_row_until.result b/mysql-test/suite/rpl/r/rpl_row_until.result similarity index 100% rename from mysql-test/r/rpl_row_until.result rename to mysql-test/suite/rpl/r/rpl_row_until.result diff --git a/mysql-test/r/rpl_row_view01.result b/mysql-test/suite/rpl/r/rpl_row_view01.result similarity index 100% rename from mysql-test/r/rpl_row_view01.result rename to mysql-test/suite/rpl/r/rpl_row_view01.result diff --git a/mysql-test/r/rpl_server_id1.result b/mysql-test/suite/rpl/r/rpl_server_id1.result similarity index 100% rename from mysql-test/r/rpl_server_id1.result rename to mysql-test/suite/rpl/r/rpl_server_id1.result diff --git a/mysql-test/r/rpl_server_id2.result b/mysql-test/suite/rpl/r/rpl_server_id2.result similarity index 100% rename from mysql-test/r/rpl_server_id2.result rename to mysql-test/suite/rpl/r/rpl_server_id2.result diff --git a/mysql-test/r/rpl_session_var.result b/mysql-test/suite/rpl/r/rpl_session_var.result similarity index 100% rename from mysql-test/r/rpl_session_var.result rename to mysql-test/suite/rpl/r/rpl_session_var.result diff --git a/mysql-test/r/rpl_set_charset.result b/mysql-test/suite/rpl/r/rpl_set_charset.result similarity index 100% rename from mysql-test/r/rpl_set_charset.result rename to mysql-test/suite/rpl/r/rpl_set_charset.result diff --git a/mysql-test/r/rpl_sf.result b/mysql-test/suite/rpl/r/rpl_sf.result similarity index 100% rename from mysql-test/r/rpl_sf.result rename to mysql-test/suite/rpl/r/rpl_sf.result diff --git a/mysql-test/r/rpl_skip_error.result b/mysql-test/suite/rpl/r/rpl_skip_error.result similarity index 100% rename from mysql-test/r/rpl_skip_error.result rename to mysql-test/suite/rpl/r/rpl_skip_error.result diff --git a/mysql-test/r/rpl_slave_status.result b/mysql-test/suite/rpl/r/rpl_slave_status.result similarity index 100% rename from mysql-test/r/rpl_slave_status.result rename to mysql-test/suite/rpl/r/rpl_slave_status.result diff --git a/mysql-test/r/rpl_sp.result b/mysql-test/suite/rpl/r/rpl_sp.result similarity index 100% rename from mysql-test/r/rpl_sp.result rename to mysql-test/suite/rpl/r/rpl_sp.result diff --git a/mysql-test/r/rpl_sp004.result b/mysql-test/suite/rpl/r/rpl_sp004.result similarity index 100% rename from mysql-test/r/rpl_sp004.result rename to mysql-test/suite/rpl/r/rpl_sp004.result diff --git a/mysql-test/r/rpl_sp_effects.result b/mysql-test/suite/rpl/r/rpl_sp_effects.result similarity index 100% rename from mysql-test/r/rpl_sp_effects.result rename to mysql-test/suite/rpl/r/rpl_sp_effects.result diff --git a/mysql-test/r/rpl_sporadic_master.result b/mysql-test/suite/rpl/r/rpl_sporadic_master.result similarity index 100% rename from mysql-test/r/rpl_sporadic_master.result rename to mysql-test/suite/rpl/r/rpl_sporadic_master.result diff --git a/mysql-test/r/rpl_ssl.result b/mysql-test/suite/rpl/r/rpl_ssl.result similarity index 100% rename from mysql-test/r/rpl_ssl.result rename to mysql-test/suite/rpl/r/rpl_ssl.result diff --git a/mysql-test/r/rpl_ssl1.result b/mysql-test/suite/rpl/r/rpl_ssl1.result similarity index 100% rename from mysql-test/r/rpl_ssl1.result rename to mysql-test/suite/rpl/r/rpl_ssl1.result diff --git a/mysql-test/r/rpl_start_stop_slave.result b/mysql-test/suite/rpl/r/rpl_start_stop_slave.result similarity index 100% rename from mysql-test/r/rpl_start_stop_slave.result rename to mysql-test/suite/rpl/r/rpl_start_stop_slave.result diff --git a/mysql-test/r/rpl_stm_000001.result b/mysql-test/suite/rpl/r/rpl_stm_000001.result similarity index 100% rename from mysql-test/r/rpl_stm_000001.result rename to mysql-test/suite/rpl/r/rpl_stm_000001.result diff --git a/mysql-test/r/rpl_stm_EE_err2.result b/mysql-test/suite/rpl/r/rpl_stm_EE_err2.result similarity index 100% rename from mysql-test/r/rpl_stm_EE_err2.result rename to mysql-test/suite/rpl/r/rpl_stm_EE_err2.result diff --git a/mysql-test/r/rpl_stm_charset.result b/mysql-test/suite/rpl/r/rpl_stm_charset.result similarity index 100% rename from mysql-test/r/rpl_stm_charset.result rename to mysql-test/suite/rpl/r/rpl_stm_charset.result diff --git a/mysql-test/r/rpl_stm_flsh_tbls.result b/mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result similarity index 100% rename from mysql-test/r/rpl_stm_flsh_tbls.result rename to mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result diff --git a/mysql-test/r/rpl_stm_insert_delayed.result b/mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result similarity index 100% rename from mysql-test/r/rpl_stm_insert_delayed.result rename to mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result diff --git a/mysql-test/r/rpl_stm_log.result b/mysql-test/suite/rpl/r/rpl_stm_log.result similarity index 100% rename from mysql-test/r/rpl_stm_log.result rename to mysql-test/suite/rpl/r/rpl_stm_log.result diff --git a/mysql-test/r/rpl_stm_max_relay_size.result b/mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result similarity index 100% rename from mysql-test/r/rpl_stm_max_relay_size.result rename to mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result diff --git a/mysql-test/r/rpl_stm_multi_query.result b/mysql-test/suite/rpl/r/rpl_stm_multi_query.result similarity index 100% rename from mysql-test/r/rpl_stm_multi_query.result rename to mysql-test/suite/rpl/r/rpl_stm_multi_query.result diff --git a/mysql-test/r/rpl_stm_mystery22.result b/mysql-test/suite/rpl/r/rpl_stm_mystery22.result similarity index 100% rename from mysql-test/r/rpl_stm_mystery22.result rename to mysql-test/suite/rpl/r/rpl_stm_mystery22.result diff --git a/mysql-test/r/rpl_stm_no_op.result b/mysql-test/suite/rpl/r/rpl_stm_no_op.result similarity index 100% rename from mysql-test/r/rpl_stm_no_op.result rename to mysql-test/suite/rpl/r/rpl_stm_no_op.result diff --git a/mysql-test/r/rpl_stm_reset_slave.result b/mysql-test/suite/rpl/r/rpl_stm_reset_slave.result similarity index 100% rename from mysql-test/r/rpl_stm_reset_slave.result rename to mysql-test/suite/rpl/r/rpl_stm_reset_slave.result diff --git a/mysql-test/r/rpl_stm_until.result b/mysql-test/suite/rpl/r/rpl_stm_until.result similarity index 100% rename from mysql-test/r/rpl_stm_until.result rename to mysql-test/suite/rpl/r/rpl_stm_until.result diff --git a/mysql-test/r/rpl_switch_stm_row_mixed.result b/mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result similarity index 100% rename from mysql-test/r/rpl_switch_stm_row_mixed.result rename to mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result diff --git a/mysql-test/r/rpl_temp_table.result b/mysql-test/suite/rpl/r/rpl_temp_table.result similarity index 100% rename from mysql-test/r/rpl_temp_table.result rename to mysql-test/suite/rpl/r/rpl_temp_table.result diff --git a/mysql-test/r/rpl_temporary.result b/mysql-test/suite/rpl/r/rpl_temporary.result similarity index 100% rename from mysql-test/r/rpl_temporary.result rename to mysql-test/suite/rpl/r/rpl_temporary.result diff --git a/mysql-test/r/rpl_timezone.result b/mysql-test/suite/rpl/r/rpl_timezone.result similarity index 100% rename from mysql-test/r/rpl_timezone.result rename to mysql-test/suite/rpl/r/rpl_timezone.result diff --git a/mysql-test/r/rpl_trigger.result b/mysql-test/suite/rpl/r/rpl_trigger.result similarity index 100% rename from mysql-test/r/rpl_trigger.result rename to mysql-test/suite/rpl/r/rpl_trigger.result diff --git a/mysql-test/r/rpl_trunc_temp.result b/mysql-test/suite/rpl/r/rpl_trunc_temp.result similarity index 100% rename from mysql-test/r/rpl_trunc_temp.result rename to mysql-test/suite/rpl/r/rpl_trunc_temp.result diff --git a/mysql-test/r/rpl_truncate_2myisam.result b/mysql-test/suite/rpl/r/rpl_truncate_2myisam.result similarity index 100% rename from mysql-test/r/rpl_truncate_2myisam.result rename to mysql-test/suite/rpl/r/rpl_truncate_2myisam.result diff --git a/mysql-test/r/rpl_truncate_3innodb.result b/mysql-test/suite/rpl/r/rpl_truncate_3innodb.result similarity index 100% rename from mysql-test/r/rpl_truncate_3innodb.result rename to mysql-test/suite/rpl/r/rpl_truncate_3innodb.result diff --git a/mysql-test/r/rpl_truncate_7ndb_2.result b/mysql-test/suite/rpl/r/rpl_truncate_7ndb_2.result similarity index 100% rename from mysql-test/r/rpl_truncate_7ndb_2.result rename to mysql-test/suite/rpl/r/rpl_truncate_7ndb_2.result diff --git a/mysql-test/r/rpl_udf.result b/mysql-test/suite/rpl/r/rpl_udf.result similarity index 100% rename from mysql-test/r/rpl_udf.result rename to mysql-test/suite/rpl/r/rpl_udf.result diff --git a/mysql-test/r/rpl_user_variables.result b/mysql-test/suite/rpl/r/rpl_user_variables.result similarity index 100% rename from mysql-test/r/rpl_user_variables.result rename to mysql-test/suite/rpl/r/rpl_user_variables.result diff --git a/mysql-test/r/rpl_variables.result b/mysql-test/suite/rpl/r/rpl_variables.result similarity index 100% rename from mysql-test/r/rpl_variables.result rename to mysql-test/suite/rpl/r/rpl_variables.result diff --git a/mysql-test/r/rpl_view.result b/mysql-test/suite/rpl/r/rpl_view.result similarity index 100% rename from mysql-test/r/rpl_view.result rename to mysql-test/suite/rpl/r/rpl_view.result diff --git a/mysql-test/suite/rpl/t/disabled.def b/mysql-test/suite/rpl/t/disabled.def new file mode 100644 index 00000000000..180a700acaf --- /dev/null +++ b/mysql-test/suite/rpl/t/disabled.def @@ -0,0 +1,15 @@ +############################################################################## +# +# List the test cases that are to be disabled temporarily. +# +# Separate the test case name and the comment with ':'. +# +# : BUG# +# +# Do not use any TAB characters for whitespace. +# +############################################################################## + +rpl_ddl : BUG#26418 2007-03-01 mleich Slave out of sync after CREATE/DROP TEMPORARY TABLE + ROLLBACK on master +rpl_innodb_mixed_ddl : Bug #29363 rpl.rpl_innodb_mixed_* test failures +rpl_innodb_mixed_dml : Bug #29363 rpl.rpl_innodb_mixed_* test failures diff --git a/mysql-test/t/rpl000010-slave.opt b/mysql-test/suite/rpl/t/rpl000010-slave.opt similarity index 100% rename from mysql-test/t/rpl000010-slave.opt rename to mysql-test/suite/rpl/t/rpl000010-slave.opt diff --git a/mysql-test/t/rpl000010.test b/mysql-test/suite/rpl/t/rpl000010.test similarity index 100% rename from mysql-test/t/rpl000010.test rename to mysql-test/suite/rpl/t/rpl000010.test diff --git a/mysql-test/t/rpl000011.test b/mysql-test/suite/rpl/t/rpl000011.test similarity index 100% rename from mysql-test/t/rpl000011.test rename to mysql-test/suite/rpl/t/rpl000011.test diff --git a/mysql-test/t/rpl000013.test b/mysql-test/suite/rpl/t/rpl000013.test similarity index 100% rename from mysql-test/t/rpl000013.test rename to mysql-test/suite/rpl/t/rpl000013.test diff --git a/mysql-test/t/rpl000017-slave.opt b/mysql-test/suite/rpl/t/rpl000017-slave.opt similarity index 100% rename from mysql-test/t/rpl000017-slave.opt rename to mysql-test/suite/rpl/t/rpl000017-slave.opt diff --git a/mysql-test/t/rpl000017-slave.sh b/mysql-test/suite/rpl/t/rpl000017-slave.sh similarity index 100% rename from mysql-test/t/rpl000017-slave.sh rename to mysql-test/suite/rpl/t/rpl000017-slave.sh diff --git a/mysql-test/t/rpl000017.test b/mysql-test/suite/rpl/t/rpl000017.test similarity index 100% rename from mysql-test/t/rpl000017.test rename to mysql-test/suite/rpl/t/rpl000017.test diff --git a/mysql-test/t/rpl000018-master.opt b/mysql-test/suite/rpl/t/rpl000018-master.opt similarity index 100% rename from mysql-test/t/rpl000018-master.opt rename to mysql-test/suite/rpl/t/rpl000018-master.opt diff --git a/mysql-test/t/rpl000018-slave.opt b/mysql-test/suite/rpl/t/rpl000018-slave.opt similarity index 100% rename from mysql-test/t/rpl000018-slave.opt rename to mysql-test/suite/rpl/t/rpl000018-slave.opt diff --git a/mysql-test/t/rpl_000015-slave.sh b/mysql-test/suite/rpl/t/rpl_000015-slave.sh similarity index 100% rename from mysql-test/t/rpl_000015-slave.sh rename to mysql-test/suite/rpl/t/rpl_000015-slave.sh diff --git a/mysql-test/t/rpl_000015.slave-mi b/mysql-test/suite/rpl/t/rpl_000015.slave-mi similarity index 100% rename from mysql-test/t/rpl_000015.slave-mi rename to mysql-test/suite/rpl/t/rpl_000015.slave-mi diff --git a/mysql-test/t/rpl_000015.test b/mysql-test/suite/rpl/t/rpl_000015.test similarity index 100% rename from mysql-test/t/rpl_000015.test rename to mysql-test/suite/rpl/t/rpl_000015.test diff --git a/mysql-test/t/rpl_EE_err.test b/mysql-test/suite/rpl/t/rpl_EE_err.test similarity index 100% rename from mysql-test/t/rpl_EE_err.test rename to mysql-test/suite/rpl/t/rpl_EE_err.test diff --git a/mysql-test/t/rpl_LD_INFILE.test b/mysql-test/suite/rpl/t/rpl_LD_INFILE.test similarity index 100% rename from mysql-test/t/rpl_LD_INFILE.test rename to mysql-test/suite/rpl/t/rpl_LD_INFILE.test diff --git a/mysql-test/t/rpl_alter.test b/mysql-test/suite/rpl/t/rpl_alter.test similarity index 100% rename from mysql-test/t/rpl_alter.test rename to mysql-test/suite/rpl/t/rpl_alter.test diff --git a/mysql-test/t/rpl_alter_db.test b/mysql-test/suite/rpl/t/rpl_alter_db.test similarity index 100% rename from mysql-test/t/rpl_alter_db.test rename to mysql-test/suite/rpl/t/rpl_alter_db.test diff --git a/mysql-test/t/rpl_auto_increment-master.opt b/mysql-test/suite/rpl/t/rpl_auto_increment-master.opt similarity index 100% rename from mysql-test/t/rpl_auto_increment-master.opt rename to mysql-test/suite/rpl/t/rpl_auto_increment-master.opt diff --git a/mysql-test/t/rpl_auto_increment-slave.opt b/mysql-test/suite/rpl/t/rpl_auto_increment-slave.opt similarity index 100% rename from mysql-test/t/rpl_auto_increment-slave.opt rename to mysql-test/suite/rpl/t/rpl_auto_increment-slave.opt diff --git a/mysql-test/t/rpl_auto_increment.test b/mysql-test/suite/rpl/t/rpl_auto_increment.test similarity index 100% rename from mysql-test/t/rpl_auto_increment.test rename to mysql-test/suite/rpl/t/rpl_auto_increment.test diff --git a/mysql-test/t/rpl_auto_increment_11932.test b/mysql-test/suite/rpl/t/rpl_auto_increment_11932.test similarity index 100% rename from mysql-test/t/rpl_auto_increment_11932.test rename to mysql-test/suite/rpl/t/rpl_auto_increment_11932.test diff --git a/mysql-test/t/rpl_bit.test b/mysql-test/suite/rpl/t/rpl_bit.test similarity index 100% rename from mysql-test/t/rpl_bit.test rename to mysql-test/suite/rpl/t/rpl_bit.test diff --git a/mysql-test/t/rpl_bit_npk.test b/mysql-test/suite/rpl/t/rpl_bit_npk.test similarity index 100% rename from mysql-test/t/rpl_bit_npk.test rename to mysql-test/suite/rpl/t/rpl_bit_npk.test diff --git a/mysql-test/t/rpl_change_master.test b/mysql-test/suite/rpl/t/rpl_change_master.test similarity index 100% rename from mysql-test/t/rpl_change_master.test rename to mysql-test/suite/rpl/t/rpl_change_master.test diff --git a/mysql-test/t/rpl_charset_sjis.test b/mysql-test/suite/rpl/t/rpl_charset_sjis.test similarity index 100% rename from mysql-test/t/rpl_charset_sjis.test rename to mysql-test/suite/rpl/t/rpl_charset_sjis.test diff --git a/mysql-test/t/rpl_commit_after_flush.test b/mysql-test/suite/rpl/t/rpl_commit_after_flush.test similarity index 100% rename from mysql-test/t/rpl_commit_after_flush.test rename to mysql-test/suite/rpl/t/rpl_commit_after_flush.test diff --git a/mysql-test/t/rpl_create_database-master.opt b/mysql-test/suite/rpl/t/rpl_create_database-master.opt similarity index 100% rename from mysql-test/t/rpl_create_database-master.opt rename to mysql-test/suite/rpl/t/rpl_create_database-master.opt diff --git a/mysql-test/t/rpl_create_database-slave.opt b/mysql-test/suite/rpl/t/rpl_create_database-slave.opt similarity index 100% rename from mysql-test/t/rpl_create_database-slave.opt rename to mysql-test/suite/rpl/t/rpl_create_database-slave.opt diff --git a/mysql-test/t/rpl_create_database.test b/mysql-test/suite/rpl/t/rpl_create_database.test similarity index 100% rename from mysql-test/t/rpl_create_database.test rename to mysql-test/suite/rpl/t/rpl_create_database.test diff --git a/mysql-test/t/rpl_critical_errors.test b/mysql-test/suite/rpl/t/rpl_critical_errors.test similarity index 100% rename from mysql-test/t/rpl_critical_errors.test rename to mysql-test/suite/rpl/t/rpl_critical_errors.test diff --git a/mysql-test/t/rpl_ddl.test b/mysql-test/suite/rpl/t/rpl_ddl.test similarity index 100% rename from mysql-test/t/rpl_ddl.test rename to mysql-test/suite/rpl/t/rpl_ddl.test diff --git a/mysql-test/t/rpl_deadlock_innodb-slave.opt b/mysql-test/suite/rpl/t/rpl_deadlock_innodb-slave.opt similarity index 100% rename from mysql-test/t/rpl_deadlock_innodb-slave.opt rename to mysql-test/suite/rpl/t/rpl_deadlock_innodb-slave.opt diff --git a/mysql-test/t/rpl_deadlock_innodb.test b/mysql-test/suite/rpl/t/rpl_deadlock_innodb.test similarity index 100% rename from mysql-test/t/rpl_deadlock_innodb.test rename to mysql-test/suite/rpl/t/rpl_deadlock_innodb.test diff --git a/mysql-test/t/rpl_delete_no_where.test b/mysql-test/suite/rpl/t/rpl_delete_no_where.test similarity index 100% rename from mysql-test/t/rpl_delete_no_where.test rename to mysql-test/suite/rpl/t/rpl_delete_no_where.test diff --git a/mysql-test/t/rpl_do_grant.test b/mysql-test/suite/rpl/t/rpl_do_grant.test similarity index 100% rename from mysql-test/t/rpl_do_grant.test rename to mysql-test/suite/rpl/t/rpl_do_grant.test diff --git a/mysql-test/t/rpl_drop.test b/mysql-test/suite/rpl/t/rpl_drop.test similarity index 100% rename from mysql-test/t/rpl_drop.test rename to mysql-test/suite/rpl/t/rpl_drop.test diff --git a/mysql-test/t/rpl_drop_db.test b/mysql-test/suite/rpl/t/rpl_drop_db.test similarity index 100% rename from mysql-test/t/rpl_drop_db.test rename to mysql-test/suite/rpl/t/rpl_drop_db.test diff --git a/mysql-test/t/rpl_drop_temp-slave.opt b/mysql-test/suite/rpl/t/rpl_drop_temp-slave.opt similarity index 100% rename from mysql-test/t/rpl_drop_temp-slave.opt rename to mysql-test/suite/rpl/t/rpl_drop_temp-slave.opt diff --git a/mysql-test/t/rpl_drop_temp.test b/mysql-test/suite/rpl/t/rpl_drop_temp.test similarity index 100% rename from mysql-test/t/rpl_drop_temp.test rename to mysql-test/suite/rpl/t/rpl_drop_temp.test diff --git a/mysql-test/t/rpl_dual_pos_advance-master.opt b/mysql-test/suite/rpl/t/rpl_dual_pos_advance-master.opt similarity index 100% rename from mysql-test/t/rpl_dual_pos_advance-master.opt rename to mysql-test/suite/rpl/t/rpl_dual_pos_advance-master.opt diff --git a/mysql-test/t/rpl_dual_pos_advance.test b/mysql-test/suite/rpl/t/rpl_dual_pos_advance.test similarity index 100% rename from mysql-test/t/rpl_dual_pos_advance.test rename to mysql-test/suite/rpl/t/rpl_dual_pos_advance.test diff --git a/mysql-test/t/rpl_empty_master_crash-master.opt b/mysql-test/suite/rpl/t/rpl_empty_master_crash-master.opt similarity index 100% rename from mysql-test/t/rpl_empty_master_crash-master.opt rename to mysql-test/suite/rpl/t/rpl_empty_master_crash-master.opt diff --git a/mysql-test/t/rpl_empty_master_crash.test b/mysql-test/suite/rpl/t/rpl_empty_master_crash.test similarity index 100% rename from mysql-test/t/rpl_empty_master_crash.test rename to mysql-test/suite/rpl/t/rpl_empty_master_crash.test diff --git a/mysql-test/t/rpl_err_ignoredtable-slave.opt b/mysql-test/suite/rpl/t/rpl_err_ignoredtable-slave.opt similarity index 100% rename from mysql-test/t/rpl_err_ignoredtable-slave.opt rename to mysql-test/suite/rpl/t/rpl_err_ignoredtable-slave.opt diff --git a/mysql-test/t/rpl_err_ignoredtable.test b/mysql-test/suite/rpl/t/rpl_err_ignoredtable.test similarity index 100% rename from mysql-test/t/rpl_err_ignoredtable.test rename to mysql-test/suite/rpl/t/rpl_err_ignoredtable.test diff --git a/mysql-test/t/rpl_events.test b/mysql-test/suite/rpl/t/rpl_events.test similarity index 100% rename from mysql-test/t/rpl_events.test rename to mysql-test/suite/rpl/t/rpl_events.test diff --git a/mysql-test/t/rpl_extraCol_innodb-master.opt b/mysql-test/suite/rpl/t/rpl_extraCol_innodb-master.opt similarity index 100% rename from mysql-test/t/rpl_extraCol_innodb-master.opt rename to mysql-test/suite/rpl/t/rpl_extraCol_innodb-master.opt diff --git a/mysql-test/t/rpl_extraCol_innodb-slave.opt b/mysql-test/suite/rpl/t/rpl_extraCol_innodb-slave.opt similarity index 100% rename from mysql-test/t/rpl_extraCol_innodb-slave.opt rename to mysql-test/suite/rpl/t/rpl_extraCol_innodb-slave.opt diff --git a/mysql-test/t/rpl_extraCol_innodb.test b/mysql-test/suite/rpl/t/rpl_extraCol_innodb.test similarity index 100% rename from mysql-test/t/rpl_extraCol_innodb.test rename to mysql-test/suite/rpl/t/rpl_extraCol_innodb.test diff --git a/mysql-test/t/rpl_extraCol_myisam.test b/mysql-test/suite/rpl/t/rpl_extraCol_myisam.test similarity index 100% rename from mysql-test/t/rpl_extraCol_myisam.test rename to mysql-test/suite/rpl/t/rpl_extraCol_myisam.test diff --git a/mysql-test/t/rpl_failed_optimize-master.opt b/mysql-test/suite/rpl/t/rpl_failed_optimize-master.opt similarity index 100% rename from mysql-test/t/rpl_failed_optimize-master.opt rename to mysql-test/suite/rpl/t/rpl_failed_optimize-master.opt diff --git a/mysql-test/t/rpl_failed_optimize.test b/mysql-test/suite/rpl/t/rpl_failed_optimize.test similarity index 100% rename from mysql-test/t/rpl_failed_optimize.test rename to mysql-test/suite/rpl/t/rpl_failed_optimize.test diff --git a/mysql-test/t/rpl_flushlog_loop-master.opt b/mysql-test/suite/rpl/t/rpl_flushlog_loop-master.opt similarity index 100% rename from mysql-test/t/rpl_flushlog_loop-master.opt rename to mysql-test/suite/rpl/t/rpl_flushlog_loop-master.opt diff --git a/mysql-test/t/rpl_flushlog_loop-master.sh b/mysql-test/suite/rpl/t/rpl_flushlog_loop-master.sh similarity index 100% rename from mysql-test/t/rpl_flushlog_loop-master.sh rename to mysql-test/suite/rpl/t/rpl_flushlog_loop-master.sh diff --git a/mysql-test/t/rpl_flushlog_loop-slave.opt b/mysql-test/suite/rpl/t/rpl_flushlog_loop-slave.opt similarity index 100% rename from mysql-test/t/rpl_flushlog_loop-slave.opt rename to mysql-test/suite/rpl/t/rpl_flushlog_loop-slave.opt diff --git a/mysql-test/t/rpl_flushlog_loop-slave.sh b/mysql-test/suite/rpl/t/rpl_flushlog_loop-slave.sh similarity index 100% rename from mysql-test/t/rpl_flushlog_loop-slave.sh rename to mysql-test/suite/rpl/t/rpl_flushlog_loop-slave.sh diff --git a/mysql-test/t/rpl_flushlog_loop.test b/mysql-test/suite/rpl/t/rpl_flushlog_loop.test similarity index 100% rename from mysql-test/t/rpl_flushlog_loop.test rename to mysql-test/suite/rpl/t/rpl_flushlog_loop.test diff --git a/mysql-test/t/rpl_foreign_key_innodb-slave.opt b/mysql-test/suite/rpl/t/rpl_foreign_key_innodb-slave.opt similarity index 100% rename from mysql-test/t/rpl_foreign_key_innodb-slave.opt rename to mysql-test/suite/rpl/t/rpl_foreign_key_innodb-slave.opt diff --git a/mysql-test/t/rpl_foreign_key_innodb.test b/mysql-test/suite/rpl/t/rpl_foreign_key_innodb.test similarity index 100% rename from mysql-test/t/rpl_foreign_key_innodb.test rename to mysql-test/suite/rpl/t/rpl_foreign_key_innodb.test diff --git a/mysql-test/t/rpl_free_items-slave.opt b/mysql-test/suite/rpl/t/rpl_free_items-slave.opt similarity index 100% rename from mysql-test/t/rpl_free_items-slave.opt rename to mysql-test/suite/rpl/t/rpl_free_items-slave.opt diff --git a/mysql-test/t/rpl_free_items.test b/mysql-test/suite/rpl/t/rpl_free_items.test similarity index 100% rename from mysql-test/t/rpl_free_items.test rename to mysql-test/suite/rpl/t/rpl_free_items.test diff --git a/mysql-test/t/rpl_get_lock.test b/mysql-test/suite/rpl/t/rpl_get_lock.test similarity index 100% rename from mysql-test/t/rpl_get_lock.test rename to mysql-test/suite/rpl/t/rpl_get_lock.test diff --git a/mysql-test/t/rpl_ignore_grant-slave.opt b/mysql-test/suite/rpl/t/rpl_ignore_grant-slave.opt similarity index 100% rename from mysql-test/t/rpl_ignore_grant-slave.opt rename to mysql-test/suite/rpl/t/rpl_ignore_grant-slave.opt diff --git a/mysql-test/t/rpl_ignore_grant.test b/mysql-test/suite/rpl/t/rpl_ignore_grant.test similarity index 100% rename from mysql-test/t/rpl_ignore_grant.test rename to mysql-test/suite/rpl/t/rpl_ignore_grant.test diff --git a/mysql-test/t/rpl_ignore_revoke-slave.opt b/mysql-test/suite/rpl/t/rpl_ignore_revoke-slave.opt similarity index 100% rename from mysql-test/t/rpl_ignore_revoke-slave.opt rename to mysql-test/suite/rpl/t/rpl_ignore_revoke-slave.opt diff --git a/mysql-test/t/rpl_ignore_revoke.test b/mysql-test/suite/rpl/t/rpl_ignore_revoke.test similarity index 100% rename from mysql-test/t/rpl_ignore_revoke.test rename to mysql-test/suite/rpl/t/rpl_ignore_revoke.test diff --git a/mysql-test/t/rpl_ignore_table-slave.opt b/mysql-test/suite/rpl/t/rpl_ignore_table-slave.opt similarity index 100% rename from mysql-test/t/rpl_ignore_table-slave.opt rename to mysql-test/suite/rpl/t/rpl_ignore_table-slave.opt diff --git a/mysql-test/t/rpl_ignore_table.test b/mysql-test/suite/rpl/t/rpl_ignore_table.test similarity index 100% rename from mysql-test/t/rpl_ignore_table.test rename to mysql-test/suite/rpl/t/rpl_ignore_table.test diff --git a/mysql-test/t/rpl_ignore_table_update-slave.opt b/mysql-test/suite/rpl/t/rpl_ignore_table_update-slave.opt similarity index 100% rename from mysql-test/t/rpl_ignore_table_update-slave.opt rename to mysql-test/suite/rpl/t/rpl_ignore_table_update-slave.opt diff --git a/mysql-test/t/rpl_ignore_table_update.test b/mysql-test/suite/rpl/t/rpl_ignore_table_update.test similarity index 100% rename from mysql-test/t/rpl_ignore_table_update.test rename to mysql-test/suite/rpl/t/rpl_ignore_table_update.test diff --git a/mysql-test/t/rpl_incident-master.opt b/mysql-test/suite/rpl/t/rpl_incident-master.opt similarity index 100% rename from mysql-test/t/rpl_incident-master.opt rename to mysql-test/suite/rpl/t/rpl_incident-master.opt diff --git a/mysql-test/t/rpl_incident.test b/mysql-test/suite/rpl/t/rpl_incident.test similarity index 100% rename from mysql-test/t/rpl_incident.test rename to mysql-test/suite/rpl/t/rpl_incident.test diff --git a/mysql-test/t/rpl_init_slave-slave.opt b/mysql-test/suite/rpl/t/rpl_init_slave-slave.opt similarity index 100% rename from mysql-test/t/rpl_init_slave-slave.opt rename to mysql-test/suite/rpl/t/rpl_init_slave-slave.opt diff --git a/mysql-test/t/rpl_init_slave.test b/mysql-test/suite/rpl/t/rpl_init_slave.test similarity index 100% rename from mysql-test/t/rpl_init_slave.test rename to mysql-test/suite/rpl/t/rpl_init_slave.test diff --git a/mysql-test/t/rpl_innodb.test b/mysql-test/suite/rpl/t/rpl_innodb.test similarity index 100% rename from mysql-test/t/rpl_innodb.test rename to mysql-test/suite/rpl/t/rpl_innodb.test diff --git a/mysql-test/t/rpl_insert.test b/mysql-test/suite/rpl/t/rpl_insert.test similarity index 100% rename from mysql-test/t/rpl_insert.test rename to mysql-test/suite/rpl/t/rpl_insert.test diff --git a/mysql-test/t/rpl_insert_id-slave.opt b/mysql-test/suite/rpl/t/rpl_insert_id-slave.opt similarity index 100% rename from mysql-test/t/rpl_insert_id-slave.opt rename to mysql-test/suite/rpl/t/rpl_insert_id-slave.opt diff --git a/mysql-test/t/rpl_insert_id.test b/mysql-test/suite/rpl/t/rpl_insert_id.test similarity index 100% rename from mysql-test/t/rpl_insert_id.test rename to mysql-test/suite/rpl/t/rpl_insert_id.test diff --git a/mysql-test/t/rpl_insert_id_pk-slave.opt b/mysql-test/suite/rpl/t/rpl_insert_id_pk-slave.opt similarity index 100% rename from mysql-test/t/rpl_insert_id_pk-slave.opt rename to mysql-test/suite/rpl/t/rpl_insert_id_pk-slave.opt diff --git a/mysql-test/t/rpl_insert_id_pk.test b/mysql-test/suite/rpl/t/rpl_insert_id_pk.test similarity index 100% rename from mysql-test/t/rpl_insert_id_pk.test rename to mysql-test/suite/rpl/t/rpl_insert_id_pk.test diff --git a/mysql-test/t/rpl_insert_ignore-slave.opt b/mysql-test/suite/rpl/t/rpl_insert_ignore-slave.opt similarity index 100% rename from mysql-test/t/rpl_insert_ignore-slave.opt rename to mysql-test/suite/rpl/t/rpl_insert_ignore-slave.opt diff --git a/mysql-test/t/rpl_insert_ignore.test b/mysql-test/suite/rpl/t/rpl_insert_ignore.test similarity index 100% rename from mysql-test/t/rpl_insert_ignore.test rename to mysql-test/suite/rpl/t/rpl_insert_ignore.test diff --git a/mysql-test/t/rpl_insert_select.test b/mysql-test/suite/rpl/t/rpl_insert_select.test similarity index 100% rename from mysql-test/t/rpl_insert_select.test rename to mysql-test/suite/rpl/t/rpl_insert_select.test diff --git a/mysql-test/t/rpl_known_bugs_detection-master.opt b/mysql-test/suite/rpl/t/rpl_known_bugs_detection-master.opt similarity index 100% rename from mysql-test/t/rpl_known_bugs_detection-master.opt rename to mysql-test/suite/rpl/t/rpl_known_bugs_detection-master.opt diff --git a/mysql-test/t/rpl_known_bugs_detection.test b/mysql-test/suite/rpl/t/rpl_known_bugs_detection.test similarity index 100% rename from mysql-test/t/rpl_known_bugs_detection.test rename to mysql-test/suite/rpl/t/rpl_known_bugs_detection.test diff --git a/mysql-test/t/rpl_load_from_master-slave.opt b/mysql-test/suite/rpl/t/rpl_load_from_master-slave.opt similarity index 100% rename from mysql-test/t/rpl_load_from_master-slave.opt rename to mysql-test/suite/rpl/t/rpl_load_from_master-slave.opt diff --git a/mysql-test/t/rpl_load_from_master.test b/mysql-test/suite/rpl/t/rpl_load_from_master.test similarity index 100% rename from mysql-test/t/rpl_load_from_master.test rename to mysql-test/suite/rpl/t/rpl_load_from_master.test diff --git a/mysql-test/t/rpl_load_table_from_master.test b/mysql-test/suite/rpl/t/rpl_load_table_from_master.test similarity index 100% rename from mysql-test/t/rpl_load_table_from_master.test rename to mysql-test/suite/rpl/t/rpl_load_table_from_master.test diff --git a/mysql-test/t/rpl_loaddata.test b/mysql-test/suite/rpl/t/rpl_loaddata.test similarity index 100% rename from mysql-test/t/rpl_loaddata.test rename to mysql-test/suite/rpl/t/rpl_loaddata.test diff --git a/mysql-test/t/rpl_loaddata_charset.test b/mysql-test/suite/rpl/t/rpl_loaddata_charset.test similarity index 100% rename from mysql-test/t/rpl_loaddata_charset.test rename to mysql-test/suite/rpl/t/rpl_loaddata_charset.test diff --git a/mysql-test/t/rpl_loaddata_m-master.opt b/mysql-test/suite/rpl/t/rpl_loaddata_m-master.opt similarity index 100% rename from mysql-test/t/rpl_loaddata_m-master.opt rename to mysql-test/suite/rpl/t/rpl_loaddata_m-master.opt diff --git a/mysql-test/t/rpl_loaddata_m.test b/mysql-test/suite/rpl/t/rpl_loaddata_m.test similarity index 100% rename from mysql-test/t/rpl_loaddata_m.test rename to mysql-test/suite/rpl/t/rpl_loaddata_m.test diff --git a/mysql-test/t/rpl_loaddata_s-slave.opt b/mysql-test/suite/rpl/t/rpl_loaddata_s-slave.opt similarity index 100% rename from mysql-test/t/rpl_loaddata_s-slave.opt rename to mysql-test/suite/rpl/t/rpl_loaddata_s-slave.opt diff --git a/mysql-test/t/rpl_loaddata_s.test b/mysql-test/suite/rpl/t/rpl_loaddata_s.test similarity index 100% rename from mysql-test/t/rpl_loaddata_s.test rename to mysql-test/suite/rpl/t/rpl_loaddata_s.test diff --git a/mysql-test/t/rpl_loaddata_simple.test b/mysql-test/suite/rpl/t/rpl_loaddata_simple.test similarity index 100% rename from mysql-test/t/rpl_loaddata_simple.test rename to mysql-test/suite/rpl/t/rpl_loaddata_simple.test diff --git a/mysql-test/t/rpl_loaddatalocal.test b/mysql-test/suite/rpl/t/rpl_loaddatalocal.test similarity index 100% rename from mysql-test/t/rpl_loaddatalocal.test rename to mysql-test/suite/rpl/t/rpl_loaddatalocal.test diff --git a/mysql-test/t/rpl_loadfile.test b/mysql-test/suite/rpl/t/rpl_loadfile.test similarity index 100% rename from mysql-test/t/rpl_loadfile.test rename to mysql-test/suite/rpl/t/rpl_loadfile.test diff --git a/mysql-test/t/rpl_locale.test b/mysql-test/suite/rpl/t/rpl_locale.test similarity index 100% rename from mysql-test/t/rpl_locale.test rename to mysql-test/suite/rpl/t/rpl_locale.test diff --git a/mysql-test/t/rpl_log_pos.test b/mysql-test/suite/rpl/t/rpl_log_pos.test similarity index 100% rename from mysql-test/t/rpl_log_pos.test rename to mysql-test/suite/rpl/t/rpl_log_pos.test diff --git a/mysql-test/t/rpl_many_optimize.test b/mysql-test/suite/rpl/t/rpl_many_optimize.test similarity index 100% rename from mysql-test/t/rpl_many_optimize.test rename to mysql-test/suite/rpl/t/rpl_many_optimize.test diff --git a/mysql-test/t/rpl_master_pos_wait.test b/mysql-test/suite/rpl/t/rpl_master_pos_wait.test similarity index 100% rename from mysql-test/t/rpl_master_pos_wait.test rename to mysql-test/suite/rpl/t/rpl_master_pos_wait.test diff --git a/mysql-test/t/rpl_misc_functions-slave.sh b/mysql-test/suite/rpl/t/rpl_misc_functions-slave.sh similarity index 100% rename from mysql-test/t/rpl_misc_functions-slave.sh rename to mysql-test/suite/rpl/t/rpl_misc_functions-slave.sh diff --git a/mysql-test/t/rpl_misc_functions.test b/mysql-test/suite/rpl/t/rpl_misc_functions.test similarity index 100% rename from mysql-test/t/rpl_misc_functions.test rename to mysql-test/suite/rpl/t/rpl_misc_functions.test diff --git a/mysql-test/t/rpl_mixed_ddl_dml.test b/mysql-test/suite/rpl/t/rpl_mixed_ddl_dml.test similarity index 100% rename from mysql-test/t/rpl_mixed_ddl_dml.test rename to mysql-test/suite/rpl/t/rpl_mixed_ddl_dml.test diff --git a/mysql-test/t/rpl_multi_delete-slave.opt b/mysql-test/suite/rpl/t/rpl_multi_delete-slave.opt similarity index 100% rename from mysql-test/t/rpl_multi_delete-slave.opt rename to mysql-test/suite/rpl/t/rpl_multi_delete-slave.opt diff --git a/mysql-test/t/rpl_multi_delete.test b/mysql-test/suite/rpl/t/rpl_multi_delete.test similarity index 100% rename from mysql-test/t/rpl_multi_delete.test rename to mysql-test/suite/rpl/t/rpl_multi_delete.test diff --git a/mysql-test/t/rpl_multi_delete2-slave.opt b/mysql-test/suite/rpl/t/rpl_multi_delete2-slave.opt similarity index 100% rename from mysql-test/t/rpl_multi_delete2-slave.opt rename to mysql-test/suite/rpl/t/rpl_multi_delete2-slave.opt diff --git a/mysql-test/t/rpl_multi_delete2.test b/mysql-test/suite/rpl/t/rpl_multi_delete2.test similarity index 100% rename from mysql-test/t/rpl_multi_delete2.test rename to mysql-test/suite/rpl/t/rpl_multi_delete2.test diff --git a/mysql-test/t/rpl_multi_engine-slave.opt b/mysql-test/suite/rpl/t/rpl_multi_engine-slave.opt similarity index 100% rename from mysql-test/t/rpl_multi_engine-slave.opt rename to mysql-test/suite/rpl/t/rpl_multi_engine-slave.opt diff --git a/mysql-test/t/rpl_multi_engine.test b/mysql-test/suite/rpl/t/rpl_multi_engine.test similarity index 100% rename from mysql-test/t/rpl_multi_engine.test rename to mysql-test/suite/rpl/t/rpl_multi_engine.test diff --git a/mysql-test/t/rpl_multi_update.test b/mysql-test/suite/rpl/t/rpl_multi_update.test similarity index 100% rename from mysql-test/t/rpl_multi_update.test rename to mysql-test/suite/rpl/t/rpl_multi_update.test diff --git a/mysql-test/t/rpl_multi_update2-slave.opt b/mysql-test/suite/rpl/t/rpl_multi_update2-slave.opt similarity index 100% rename from mysql-test/t/rpl_multi_update2-slave.opt rename to mysql-test/suite/rpl/t/rpl_multi_update2-slave.opt diff --git a/mysql-test/t/rpl_multi_update2.test b/mysql-test/suite/rpl/t/rpl_multi_update2.test similarity index 100% rename from mysql-test/t/rpl_multi_update2.test rename to mysql-test/suite/rpl/t/rpl_multi_update2.test diff --git a/mysql-test/t/rpl_multi_update3.test b/mysql-test/suite/rpl/t/rpl_multi_update3.test similarity index 100% rename from mysql-test/t/rpl_multi_update3.test rename to mysql-test/suite/rpl/t/rpl_multi_update3.test diff --git a/mysql-test/t/rpl_multi_update4-slave.opt b/mysql-test/suite/rpl/t/rpl_multi_update4-slave.opt similarity index 100% rename from mysql-test/t/rpl_multi_update4-slave.opt rename to mysql-test/suite/rpl/t/rpl_multi_update4-slave.opt diff --git a/mysql-test/t/rpl_multi_update4.test b/mysql-test/suite/rpl/t/rpl_multi_update4.test similarity index 100% rename from mysql-test/t/rpl_multi_update4.test rename to mysql-test/suite/rpl/t/rpl_multi_update4.test diff --git a/mysql-test/t/rpl_optimize.test b/mysql-test/suite/rpl/t/rpl_optimize.test similarity index 100% rename from mysql-test/t/rpl_optimize.test rename to mysql-test/suite/rpl/t/rpl_optimize.test diff --git a/mysql-test/t/rpl_packet-master.opt b/mysql-test/suite/rpl/t/rpl_packet-master.opt similarity index 100% rename from mysql-test/t/rpl_packet-master.opt rename to mysql-test/suite/rpl/t/rpl_packet-master.opt diff --git a/mysql-test/t/rpl_packet-slave.opt b/mysql-test/suite/rpl/t/rpl_packet-slave.opt similarity index 100% rename from mysql-test/t/rpl_packet-slave.opt rename to mysql-test/suite/rpl/t/rpl_packet-slave.opt diff --git a/mysql-test/t/rpl_packet.test b/mysql-test/suite/rpl/t/rpl_packet.test similarity index 100% rename from mysql-test/t/rpl_packet.test rename to mysql-test/suite/rpl/t/rpl_packet.test diff --git a/mysql-test/t/rpl_ps.test b/mysql-test/suite/rpl/t/rpl_ps.test similarity index 100% rename from mysql-test/t/rpl_ps.test rename to mysql-test/suite/rpl/t/rpl_ps.test diff --git a/mysql-test/t/rpl_rbr_to_sbr.test b/mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test similarity index 100% rename from mysql-test/t/rpl_rbr_to_sbr.test rename to mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test diff --git a/mysql-test/t/rpl_read_only-slave.opt b/mysql-test/suite/rpl/t/rpl_read_only-slave.opt similarity index 100% rename from mysql-test/t/rpl_read_only-slave.opt rename to mysql-test/suite/rpl/t/rpl_read_only-slave.opt diff --git a/mysql-test/t/rpl_read_only.test b/mysql-test/suite/rpl/t/rpl_read_only.test similarity index 100% rename from mysql-test/t/rpl_read_only.test rename to mysql-test/suite/rpl/t/rpl_read_only.test diff --git a/mysql-test/t/rpl_redirect.test b/mysql-test/suite/rpl/t/rpl_redirect.test similarity index 100% rename from mysql-test/t/rpl_redirect.test rename to mysql-test/suite/rpl/t/rpl_redirect.test diff --git a/mysql-test/t/rpl_relay_space_innodb-master.opt b/mysql-test/suite/rpl/t/rpl_relay_space_innodb-master.opt similarity index 100% rename from mysql-test/t/rpl_relay_space_innodb-master.opt rename to mysql-test/suite/rpl/t/rpl_relay_space_innodb-master.opt diff --git a/mysql-test/t/rpl_relay_space_innodb-slave.opt b/mysql-test/suite/rpl/t/rpl_relay_space_innodb-slave.opt similarity index 100% rename from mysql-test/t/rpl_relay_space_innodb-slave.opt rename to mysql-test/suite/rpl/t/rpl_relay_space_innodb-slave.opt diff --git a/mysql-test/t/rpl_relay_space_innodb.test b/mysql-test/suite/rpl/t/rpl_relay_space_innodb.test similarity index 100% rename from mysql-test/t/rpl_relay_space_innodb.test rename to mysql-test/suite/rpl/t/rpl_relay_space_innodb.test diff --git a/mysql-test/t/rpl_relay_space_myisam.test b/mysql-test/suite/rpl/t/rpl_relay_space_myisam.test similarity index 100% rename from mysql-test/t/rpl_relay_space_myisam.test rename to mysql-test/suite/rpl/t/rpl_relay_space_myisam.test diff --git a/mysql-test/t/rpl_relayrotate-slave.opt b/mysql-test/suite/rpl/t/rpl_relayrotate-slave.opt similarity index 100% rename from mysql-test/t/rpl_relayrotate-slave.opt rename to mysql-test/suite/rpl/t/rpl_relayrotate-slave.opt diff --git a/mysql-test/t/rpl_relayrotate.test b/mysql-test/suite/rpl/t/rpl_relayrotate.test similarity index 100% rename from mysql-test/t/rpl_relayrotate.test rename to mysql-test/suite/rpl/t/rpl_relayrotate.test diff --git a/mysql-test/t/rpl_relayspace-slave.opt b/mysql-test/suite/rpl/t/rpl_relayspace-slave.opt similarity index 100% rename from mysql-test/t/rpl_relayspace-slave.opt rename to mysql-test/suite/rpl/t/rpl_relayspace-slave.opt diff --git a/mysql-test/t/rpl_relayspace.test b/mysql-test/suite/rpl/t/rpl_relayspace.test similarity index 100% rename from mysql-test/t/rpl_relayspace.test rename to mysql-test/suite/rpl/t/rpl_relayspace.test diff --git a/mysql-test/t/rpl_replicate_do-slave.opt b/mysql-test/suite/rpl/t/rpl_replicate_do-slave.opt similarity index 100% rename from mysql-test/t/rpl_replicate_do-slave.opt rename to mysql-test/suite/rpl/t/rpl_replicate_do-slave.opt diff --git a/mysql-test/t/rpl_replicate_do.test b/mysql-test/suite/rpl/t/rpl_replicate_do.test similarity index 100% rename from mysql-test/t/rpl_replicate_do.test rename to mysql-test/suite/rpl/t/rpl_replicate_do.test diff --git a/mysql-test/t/rpl_replicate_ignore_db-slave.opt b/mysql-test/suite/rpl/t/rpl_replicate_ignore_db-slave.opt similarity index 100% rename from mysql-test/t/rpl_replicate_ignore_db-slave.opt rename to mysql-test/suite/rpl/t/rpl_replicate_ignore_db-slave.opt diff --git a/mysql-test/t/rpl_replicate_ignore_db.test b/mysql-test/suite/rpl/t/rpl_replicate_ignore_db.test similarity index 100% rename from mysql-test/t/rpl_replicate_ignore_db.test rename to mysql-test/suite/rpl/t/rpl_replicate_ignore_db.test diff --git a/mysql-test/t/rpl_rewrt_db-slave.opt b/mysql-test/suite/rpl/t/rpl_rewrt_db-slave.opt similarity index 100% rename from mysql-test/t/rpl_rewrt_db-slave.opt rename to mysql-test/suite/rpl/t/rpl_rewrt_db-slave.opt diff --git a/mysql-test/t/rpl_rewrt_db.test b/mysql-test/suite/rpl/t/rpl_rewrt_db.test similarity index 100% rename from mysql-test/t/rpl_rewrt_db.test rename to mysql-test/suite/rpl/t/rpl_rewrt_db.test diff --git a/mysql-test/t/rpl_rotate_logs-master.opt b/mysql-test/suite/rpl/t/rpl_rotate_logs-master.opt similarity index 100% rename from mysql-test/t/rpl_rotate_logs-master.opt rename to mysql-test/suite/rpl/t/rpl_rotate_logs-master.opt diff --git a/mysql-test/t/rpl_rotate_logs-slave.sh b/mysql-test/suite/rpl/t/rpl_rotate_logs-slave.sh similarity index 100% rename from mysql-test/t/rpl_rotate_logs-slave.sh rename to mysql-test/suite/rpl/t/rpl_rotate_logs-slave.sh diff --git a/mysql-test/t/rpl_rotate_logs.slave-mi b/mysql-test/suite/rpl/t/rpl_rotate_logs.slave-mi similarity index 100% rename from mysql-test/t/rpl_rotate_logs.slave-mi rename to mysql-test/suite/rpl/t/rpl_rotate_logs.slave-mi diff --git a/mysql-test/t/rpl_rotate_logs.test b/mysql-test/suite/rpl/t/rpl_rotate_logs.test similarity index 100% rename from mysql-test/t/rpl_rotate_logs.test rename to mysql-test/suite/rpl/t/rpl_rotate_logs.test diff --git a/mysql-test/t/rpl_row_001.test b/mysql-test/suite/rpl/t/rpl_row_001.test similarity index 100% rename from mysql-test/t/rpl_row_001.test rename to mysql-test/suite/rpl/t/rpl_row_001.test diff --git a/mysql-test/t/rpl_row_4_bytes-master.opt b/mysql-test/suite/rpl/t/rpl_row_4_bytes-master.opt similarity index 100% rename from mysql-test/t/rpl_row_4_bytes-master.opt rename to mysql-test/suite/rpl/t/rpl_row_4_bytes-master.opt diff --git a/mysql-test/t/rpl_row_4_bytes.test b/mysql-test/suite/rpl/t/rpl_row_4_bytes.test similarity index 100% rename from mysql-test/t/rpl_row_4_bytes.test rename to mysql-test/suite/rpl/t/rpl_row_4_bytes.test diff --git a/mysql-test/t/rpl_row_NOW.test b/mysql-test/suite/rpl/t/rpl_row_NOW.test similarity index 100% rename from mysql-test/t/rpl_row_NOW.test rename to mysql-test/suite/rpl/t/rpl_row_NOW.test diff --git a/mysql-test/t/rpl_row_USER.test b/mysql-test/suite/rpl/t/rpl_row_USER.test similarity index 100% rename from mysql-test/t/rpl_row_USER.test rename to mysql-test/suite/rpl/t/rpl_row_USER.test diff --git a/mysql-test/t/rpl_row_UUID.test b/mysql-test/suite/rpl/t/rpl_row_UUID.test similarity index 100% rename from mysql-test/t/rpl_row_UUID.test rename to mysql-test/suite/rpl/t/rpl_row_UUID.test diff --git a/mysql-test/t/rpl_row_basic_11bugs-master.opt b/mysql-test/suite/rpl/t/rpl_row_basic_11bugs-master.opt similarity index 100% rename from mysql-test/t/rpl_row_basic_11bugs-master.opt rename to mysql-test/suite/rpl/t/rpl_row_basic_11bugs-master.opt diff --git a/mysql-test/t/rpl_row_basic_11bugs-slave.opt b/mysql-test/suite/rpl/t/rpl_row_basic_11bugs-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_basic_11bugs-slave.opt rename to mysql-test/suite/rpl/t/rpl_row_basic_11bugs-slave.opt diff --git a/mysql-test/t/rpl_row_basic_11bugs.test b/mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test similarity index 100% rename from mysql-test/t/rpl_row_basic_11bugs.test rename to mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test diff --git a/mysql-test/t/rpl_row_basic_2myisam.test b/mysql-test/suite/rpl/t/rpl_row_basic_2myisam.test similarity index 100% rename from mysql-test/t/rpl_row_basic_2myisam.test rename to mysql-test/suite/rpl/t/rpl_row_basic_2myisam.test diff --git a/mysql-test/t/rpl_row_basic_3innodb-slave.opt b/mysql-test/suite/rpl/t/rpl_row_basic_3innodb-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_basic_3innodb-slave.opt rename to mysql-test/suite/rpl/t/rpl_row_basic_3innodb-slave.opt diff --git a/mysql-test/t/rpl_row_basic_3innodb.test b/mysql-test/suite/rpl/t/rpl_row_basic_3innodb.test similarity index 100% rename from mysql-test/t/rpl_row_basic_3innodb.test rename to mysql-test/suite/rpl/t/rpl_row_basic_3innodb.test diff --git a/mysql-test/t/rpl_row_basic_8partition.test b/mysql-test/suite/rpl/t/rpl_row_basic_8partition.test similarity index 100% rename from mysql-test/t/rpl_row_basic_8partition.test rename to mysql-test/suite/rpl/t/rpl_row_basic_8partition.test diff --git a/mysql-test/t/rpl_row_blob_innodb-slave.opt b/mysql-test/suite/rpl/t/rpl_row_blob_innodb-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_blob_innodb-slave.opt rename to mysql-test/suite/rpl/t/rpl_row_blob_innodb-slave.opt diff --git a/mysql-test/t/rpl_row_blob_innodb.test b/mysql-test/suite/rpl/t/rpl_row_blob_innodb.test similarity index 100% rename from mysql-test/t/rpl_row_blob_innodb.test rename to mysql-test/suite/rpl/t/rpl_row_blob_innodb.test diff --git a/mysql-test/t/rpl_row_blob_myisam.test b/mysql-test/suite/rpl/t/rpl_row_blob_myisam.test similarity index 100% rename from mysql-test/t/rpl_row_blob_myisam.test rename to mysql-test/suite/rpl/t/rpl_row_blob_myisam.test diff --git a/mysql-test/t/rpl_row_charset.test b/mysql-test/suite/rpl/t/rpl_row_charset.test similarity index 100% rename from mysql-test/t/rpl_row_charset.test rename to mysql-test/suite/rpl/t/rpl_row_charset.test diff --git a/mysql-test/t/rpl_row_create_table-slave.opt b/mysql-test/suite/rpl/t/rpl_row_create_table-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_create_table-slave.opt rename to mysql-test/suite/rpl/t/rpl_row_create_table-slave.opt diff --git a/mysql-test/t/rpl_row_create_table.test b/mysql-test/suite/rpl/t/rpl_row_create_table.test similarity index 100% rename from mysql-test/t/rpl_row_create_table.test rename to mysql-test/suite/rpl/t/rpl_row_create_table.test diff --git a/mysql-test/t/rpl_row_delayed_ins.test b/mysql-test/suite/rpl/t/rpl_row_delayed_ins.test similarity index 100% rename from mysql-test/t/rpl_row_delayed_ins.test rename to mysql-test/suite/rpl/t/rpl_row_delayed_ins.test diff --git a/mysql-test/t/rpl_row_drop.test b/mysql-test/suite/rpl/t/rpl_row_drop.test similarity index 100% rename from mysql-test/t/rpl_row_drop.test rename to mysql-test/suite/rpl/t/rpl_row_drop.test diff --git a/mysql-test/t/rpl_row_err_daisychain-master.opt b/mysql-test/suite/rpl/t/rpl_row_err_daisychain-master.opt similarity index 100% rename from mysql-test/t/rpl_row_err_daisychain-master.opt rename to mysql-test/suite/rpl/t/rpl_row_err_daisychain-master.opt diff --git a/mysql-test/t/rpl_row_err_daisychain-slave.opt b/mysql-test/suite/rpl/t/rpl_row_err_daisychain-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_err_daisychain-slave.opt rename to mysql-test/suite/rpl/t/rpl_row_err_daisychain-slave.opt diff --git a/mysql-test/t/rpl_row_flsh_tbls.test b/mysql-test/suite/rpl/t/rpl_row_flsh_tbls.test similarity index 100% rename from mysql-test/t/rpl_row_flsh_tbls.test rename to mysql-test/suite/rpl/t/rpl_row_flsh_tbls.test diff --git a/mysql-test/t/rpl_row_func001.test b/mysql-test/suite/rpl/t/rpl_row_func001.test similarity index 100% rename from mysql-test/t/rpl_row_func001.test rename to mysql-test/suite/rpl/t/rpl_row_func001.test diff --git a/mysql-test/t/rpl_row_func002.test b/mysql-test/suite/rpl/t/rpl_row_func002.test similarity index 100% rename from mysql-test/t/rpl_row_func002.test rename to mysql-test/suite/rpl/t/rpl_row_func002.test diff --git a/mysql-test/t/rpl_row_func003-slave.opt b/mysql-test/suite/rpl/t/rpl_row_func003-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_func003-slave.opt rename to mysql-test/suite/rpl/t/rpl_row_func003-slave.opt diff --git a/mysql-test/t/rpl_row_func003.test b/mysql-test/suite/rpl/t/rpl_row_func003.test similarity index 100% rename from mysql-test/t/rpl_row_func003.test rename to mysql-test/suite/rpl/t/rpl_row_func003.test diff --git a/mysql-test/t/rpl_row_inexist_tbl-slave.opt b/mysql-test/suite/rpl/t/rpl_row_inexist_tbl-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_inexist_tbl-slave.opt rename to mysql-test/suite/rpl/t/rpl_row_inexist_tbl-slave.opt diff --git a/mysql-test/t/rpl_row_inexist_tbl.test b/mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test similarity index 100% rename from mysql-test/t/rpl_row_inexist_tbl.test rename to mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test diff --git a/mysql-test/t/rpl_row_insert_delayed.test b/mysql-test/suite/rpl/t/rpl_row_insert_delayed.test similarity index 100% rename from mysql-test/t/rpl_row_insert_delayed.test rename to mysql-test/suite/rpl/t/rpl_row_insert_delayed.test diff --git a/mysql-test/t/rpl_row_log-master.opt b/mysql-test/suite/rpl/t/rpl_row_log-master.opt similarity index 100% rename from mysql-test/t/rpl_row_log-master.opt rename to mysql-test/suite/rpl/t/rpl_row_log-master.opt diff --git a/mysql-test/t/rpl_row_log-slave.opt b/mysql-test/suite/rpl/t/rpl_row_log-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_log-slave.opt rename to mysql-test/suite/rpl/t/rpl_row_log-slave.opt diff --git a/mysql-test/t/rpl_row_log.test b/mysql-test/suite/rpl/t/rpl_row_log.test similarity index 100% rename from mysql-test/t/rpl_row_log.test rename to mysql-test/suite/rpl/t/rpl_row_log.test diff --git a/mysql-test/t/rpl_row_log_innodb-master.opt b/mysql-test/suite/rpl/t/rpl_row_log_innodb-master.opt similarity index 100% rename from mysql-test/t/rpl_row_log_innodb-master.opt rename to mysql-test/suite/rpl/t/rpl_row_log_innodb-master.opt diff --git a/mysql-test/t/rpl_row_log_innodb-slave.opt b/mysql-test/suite/rpl/t/rpl_row_log_innodb-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_log_innodb-slave.opt rename to mysql-test/suite/rpl/t/rpl_row_log_innodb-slave.opt diff --git a/mysql-test/t/rpl_row_log_innodb.test b/mysql-test/suite/rpl/t/rpl_row_log_innodb.test similarity index 100% rename from mysql-test/t/rpl_row_log_innodb.test rename to mysql-test/suite/rpl/t/rpl_row_log_innodb.test diff --git a/mysql-test/t/rpl_row_max_relay_size.test b/mysql-test/suite/rpl/t/rpl_row_max_relay_size.test similarity index 100% rename from mysql-test/t/rpl_row_max_relay_size.test rename to mysql-test/suite/rpl/t/rpl_row_max_relay_size.test diff --git a/mysql-test/t/rpl_row_mysqlbinlog-master.opt b/mysql-test/suite/rpl/t/rpl_row_mysqlbinlog-master.opt similarity index 100% rename from mysql-test/t/rpl_row_mysqlbinlog-master.opt rename to mysql-test/suite/rpl/t/rpl_row_mysqlbinlog-master.opt diff --git a/mysql-test/t/rpl_row_mysqlbinlog.test b/mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test similarity index 100% rename from mysql-test/t/rpl_row_mysqlbinlog.test rename to mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test diff --git a/mysql-test/t/rpl_row_mystery22.test b/mysql-test/suite/rpl/t/rpl_row_mystery22.test similarity index 100% rename from mysql-test/t/rpl_row_mystery22.test rename to mysql-test/suite/rpl/t/rpl_row_mystery22.test diff --git a/mysql-test/t/rpl_row_reset_slave.test b/mysql-test/suite/rpl/t/rpl_row_reset_slave.test similarity index 100% rename from mysql-test/t/rpl_row_reset_slave.test rename to mysql-test/suite/rpl/t/rpl_row_reset_slave.test diff --git a/mysql-test/t/rpl_row_sp001.test b/mysql-test/suite/rpl/t/rpl_row_sp001.test similarity index 100% rename from mysql-test/t/rpl_row_sp001.test rename to mysql-test/suite/rpl/t/rpl_row_sp001.test diff --git a/mysql-test/t/rpl_row_sp002_innodb-master.opt b/mysql-test/suite/rpl/t/rpl_row_sp002_innodb-master.opt similarity index 100% rename from mysql-test/t/rpl_row_sp002_innodb-master.opt rename to mysql-test/suite/rpl/t/rpl_row_sp002_innodb-master.opt diff --git a/mysql-test/t/rpl_row_sp002_innodb-slave.opt b/mysql-test/suite/rpl/t/rpl_row_sp002_innodb-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_sp002_innodb-slave.opt rename to mysql-test/suite/rpl/t/rpl_row_sp002_innodb-slave.opt diff --git a/mysql-test/t/rpl_row_sp002_innodb.test b/mysql-test/suite/rpl/t/rpl_row_sp002_innodb.test similarity index 100% rename from mysql-test/t/rpl_row_sp002_innodb.test rename to mysql-test/suite/rpl/t/rpl_row_sp002_innodb.test diff --git a/mysql-test/t/rpl_row_sp003-master.opt b/mysql-test/suite/rpl/t/rpl_row_sp003-master.opt similarity index 100% rename from mysql-test/t/rpl_row_sp003-master.opt rename to mysql-test/suite/rpl/t/rpl_row_sp003-master.opt diff --git a/mysql-test/t/rpl_row_sp003-slave.opt b/mysql-test/suite/rpl/t/rpl_row_sp003-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_sp003-slave.opt rename to mysql-test/suite/rpl/t/rpl_row_sp003-slave.opt diff --git a/mysql-test/t/rpl_row_sp003.test b/mysql-test/suite/rpl/t/rpl_row_sp003.test similarity index 100% rename from mysql-test/t/rpl_row_sp003.test rename to mysql-test/suite/rpl/t/rpl_row_sp003.test diff --git a/mysql-test/t/rpl_row_sp005.test b/mysql-test/suite/rpl/t/rpl_row_sp005.test similarity index 100% rename from mysql-test/t/rpl_row_sp005.test rename to mysql-test/suite/rpl/t/rpl_row_sp005.test diff --git a/mysql-test/t/rpl_row_sp006_InnoDB-slave.opt b/mysql-test/suite/rpl/t/rpl_row_sp006_InnoDB-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_sp006_InnoDB-slave.opt rename to mysql-test/suite/rpl/t/rpl_row_sp006_InnoDB-slave.opt diff --git a/mysql-test/t/rpl_row_sp006_InnoDB.test b/mysql-test/suite/rpl/t/rpl_row_sp006_InnoDB.test similarity index 100% rename from mysql-test/t/rpl_row_sp006_InnoDB.test rename to mysql-test/suite/rpl/t/rpl_row_sp006_InnoDB.test diff --git a/mysql-test/t/rpl_row_sp007_innodb-slave.opt b/mysql-test/suite/rpl/t/rpl_row_sp007_innodb-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_sp007_innodb-slave.opt rename to mysql-test/suite/rpl/t/rpl_row_sp007_innodb-slave.opt diff --git a/mysql-test/t/rpl_row_sp007_innodb.test b/mysql-test/suite/rpl/t/rpl_row_sp007_innodb.test similarity index 100% rename from mysql-test/t/rpl_row_sp007_innodb.test rename to mysql-test/suite/rpl/t/rpl_row_sp007_innodb.test diff --git a/mysql-test/t/rpl_row_sp008.test b/mysql-test/suite/rpl/t/rpl_row_sp008.test similarity index 100% rename from mysql-test/t/rpl_row_sp008.test rename to mysql-test/suite/rpl/t/rpl_row_sp008.test diff --git a/mysql-test/t/rpl_row_sp009.test b/mysql-test/suite/rpl/t/rpl_row_sp009.test similarity index 100% rename from mysql-test/t/rpl_row_sp009.test rename to mysql-test/suite/rpl/t/rpl_row_sp009.test diff --git a/mysql-test/t/rpl_row_sp010.test b/mysql-test/suite/rpl/t/rpl_row_sp010.test similarity index 100% rename from mysql-test/t/rpl_row_sp010.test rename to mysql-test/suite/rpl/t/rpl_row_sp010.test diff --git a/mysql-test/t/rpl_row_sp011.test b/mysql-test/suite/rpl/t/rpl_row_sp011.test similarity index 100% rename from mysql-test/t/rpl_row_sp011.test rename to mysql-test/suite/rpl/t/rpl_row_sp011.test diff --git a/mysql-test/t/rpl_row_sp012.test b/mysql-test/suite/rpl/t/rpl_row_sp012.test similarity index 100% rename from mysql-test/t/rpl_row_sp012.test rename to mysql-test/suite/rpl/t/rpl_row_sp012.test diff --git a/mysql-test/t/rpl_row_stop_middle.test b/mysql-test/suite/rpl/t/rpl_row_stop_middle.test similarity index 100% rename from mysql-test/t/rpl_row_stop_middle.test rename to mysql-test/suite/rpl/t/rpl_row_stop_middle.test diff --git a/mysql-test/t/rpl_row_stop_middle_update-master.opt b/mysql-test/suite/rpl/t/rpl_row_stop_middle_update-master.opt similarity index 100% rename from mysql-test/t/rpl_row_stop_middle_update-master.opt rename to mysql-test/suite/rpl/t/rpl_row_stop_middle_update-master.opt diff --git a/mysql-test/t/rpl_row_stop_middle_update-slave.opt b/mysql-test/suite/rpl/t/rpl_row_stop_middle_update-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_stop_middle_update-slave.opt rename to mysql-test/suite/rpl/t/rpl_row_stop_middle_update-slave.opt diff --git a/mysql-test/t/rpl_row_stop_middle_update.test b/mysql-test/suite/rpl/t/rpl_row_stop_middle_update.test similarity index 100% rename from mysql-test/t/rpl_row_stop_middle_update.test rename to mysql-test/suite/rpl/t/rpl_row_stop_middle_update.test diff --git a/mysql-test/t/rpl_row_tabledefs_2myisam.test b/mysql-test/suite/rpl/t/rpl_row_tabledefs_2myisam.test similarity index 100% rename from mysql-test/t/rpl_row_tabledefs_2myisam.test rename to mysql-test/suite/rpl/t/rpl_row_tabledefs_2myisam.test diff --git a/mysql-test/t/rpl_row_tabledefs_3innodb-slave.opt b/mysql-test/suite/rpl/t/rpl_row_tabledefs_3innodb-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_tabledefs_3innodb-slave.opt rename to mysql-test/suite/rpl/t/rpl_row_tabledefs_3innodb-slave.opt diff --git a/mysql-test/t/rpl_row_tabledefs_3innodb.test b/mysql-test/suite/rpl/t/rpl_row_tabledefs_3innodb.test similarity index 100% rename from mysql-test/t/rpl_row_tabledefs_3innodb.test rename to mysql-test/suite/rpl/t/rpl_row_tabledefs_3innodb.test diff --git a/mysql-test/t/rpl_row_trig001.test b/mysql-test/suite/rpl/t/rpl_row_trig001.test similarity index 100% rename from mysql-test/t/rpl_row_trig001.test rename to mysql-test/suite/rpl/t/rpl_row_trig001.test diff --git a/mysql-test/t/rpl_row_trig002.test b/mysql-test/suite/rpl/t/rpl_row_trig002.test similarity index 100% rename from mysql-test/t/rpl_row_trig002.test rename to mysql-test/suite/rpl/t/rpl_row_trig002.test diff --git a/mysql-test/t/rpl_row_trig003.test b/mysql-test/suite/rpl/t/rpl_row_trig003.test similarity index 100% rename from mysql-test/t/rpl_row_trig003.test rename to mysql-test/suite/rpl/t/rpl_row_trig003.test diff --git a/mysql-test/t/rpl_row_trig004.test b/mysql-test/suite/rpl/t/rpl_row_trig004.test similarity index 100% rename from mysql-test/t/rpl_row_trig004.test rename to mysql-test/suite/rpl/t/rpl_row_trig004.test diff --git a/mysql-test/t/rpl_row_until.test b/mysql-test/suite/rpl/t/rpl_row_until.test similarity index 100% rename from mysql-test/t/rpl_row_until.test rename to mysql-test/suite/rpl/t/rpl_row_until.test diff --git a/mysql-test/t/rpl_row_view01.test b/mysql-test/suite/rpl/t/rpl_row_view01.test similarity index 100% rename from mysql-test/t/rpl_row_view01.test rename to mysql-test/suite/rpl/t/rpl_row_view01.test diff --git a/mysql-test/t/rpl_server_id1.test b/mysql-test/suite/rpl/t/rpl_server_id1.test similarity index 100% rename from mysql-test/t/rpl_server_id1.test rename to mysql-test/suite/rpl/t/rpl_server_id1.test diff --git a/mysql-test/t/rpl_server_id2-slave.opt b/mysql-test/suite/rpl/t/rpl_server_id2-slave.opt similarity index 100% rename from mysql-test/t/rpl_server_id2-slave.opt rename to mysql-test/suite/rpl/t/rpl_server_id2-slave.opt diff --git a/mysql-test/t/rpl_server_id2.test b/mysql-test/suite/rpl/t/rpl_server_id2.test similarity index 100% rename from mysql-test/t/rpl_server_id2.test rename to mysql-test/suite/rpl/t/rpl_server_id2.test diff --git a/mysql-test/t/rpl_session_var.test b/mysql-test/suite/rpl/t/rpl_session_var.test similarity index 100% rename from mysql-test/t/rpl_session_var.test rename to mysql-test/suite/rpl/t/rpl_session_var.test diff --git a/mysql-test/t/rpl_set_charset.test b/mysql-test/suite/rpl/t/rpl_set_charset.test similarity index 100% rename from mysql-test/t/rpl_set_charset.test rename to mysql-test/suite/rpl/t/rpl_set_charset.test diff --git a/mysql-test/t/rpl_sf.test b/mysql-test/suite/rpl/t/rpl_sf.test similarity index 100% rename from mysql-test/t/rpl_sf.test rename to mysql-test/suite/rpl/t/rpl_sf.test diff --git a/mysql-test/t/rpl_skip_error-slave.opt b/mysql-test/suite/rpl/t/rpl_skip_error-slave.opt similarity index 100% rename from mysql-test/t/rpl_skip_error-slave.opt rename to mysql-test/suite/rpl/t/rpl_skip_error-slave.opt diff --git a/mysql-test/t/rpl_skip_error.test b/mysql-test/suite/rpl/t/rpl_skip_error.test similarity index 100% rename from mysql-test/t/rpl_skip_error.test rename to mysql-test/suite/rpl/t/rpl_skip_error.test diff --git a/mysql-test/t/rpl_slave_status.test b/mysql-test/suite/rpl/t/rpl_slave_status.test similarity index 100% rename from mysql-test/t/rpl_slave_status.test rename to mysql-test/suite/rpl/t/rpl_slave_status.test diff --git a/mysql-test/t/rpl_sp-master.opt b/mysql-test/suite/rpl/t/rpl_sp-master.opt similarity index 100% rename from mysql-test/t/rpl_sp-master.opt rename to mysql-test/suite/rpl/t/rpl_sp-master.opt diff --git a/mysql-test/t/rpl_sp-slave.opt b/mysql-test/suite/rpl/t/rpl_sp-slave.opt similarity index 100% rename from mysql-test/t/rpl_sp-slave.opt rename to mysql-test/suite/rpl/t/rpl_sp-slave.opt diff --git a/mysql-test/t/rpl_sp.test b/mysql-test/suite/rpl/t/rpl_sp.test similarity index 100% rename from mysql-test/t/rpl_sp.test rename to mysql-test/suite/rpl/t/rpl_sp.test diff --git a/mysql-test/t/rpl_sp004.test b/mysql-test/suite/rpl/t/rpl_sp004.test similarity index 100% rename from mysql-test/t/rpl_sp004.test rename to mysql-test/suite/rpl/t/rpl_sp004.test diff --git a/mysql-test/t/rpl_sp_effects-master.opt b/mysql-test/suite/rpl/t/rpl_sp_effects-master.opt similarity index 100% rename from mysql-test/t/rpl_sp_effects-master.opt rename to mysql-test/suite/rpl/t/rpl_sp_effects-master.opt diff --git a/mysql-test/t/rpl_sp_effects-slave.opt b/mysql-test/suite/rpl/t/rpl_sp_effects-slave.opt similarity index 100% rename from mysql-test/t/rpl_sp_effects-slave.opt rename to mysql-test/suite/rpl/t/rpl_sp_effects-slave.opt diff --git a/mysql-test/t/rpl_sp_effects.test b/mysql-test/suite/rpl/t/rpl_sp_effects.test similarity index 100% rename from mysql-test/t/rpl_sp_effects.test rename to mysql-test/suite/rpl/t/rpl_sp_effects.test diff --git a/mysql-test/t/rpl_sporadic_master-master.opt b/mysql-test/suite/rpl/t/rpl_sporadic_master-master.opt similarity index 100% rename from mysql-test/t/rpl_sporadic_master-master.opt rename to mysql-test/suite/rpl/t/rpl_sporadic_master-master.opt diff --git a/mysql-test/t/rpl_sporadic_master.test b/mysql-test/suite/rpl/t/rpl_sporadic_master.test similarity index 100% rename from mysql-test/t/rpl_sporadic_master.test rename to mysql-test/suite/rpl/t/rpl_sporadic_master.test diff --git a/mysql-test/t/rpl_ssl.test b/mysql-test/suite/rpl/t/rpl_ssl.test similarity index 100% rename from mysql-test/t/rpl_ssl.test rename to mysql-test/suite/rpl/t/rpl_ssl.test diff --git a/mysql-test/t/rpl_ssl1.test b/mysql-test/suite/rpl/t/rpl_ssl1.test similarity index 100% rename from mysql-test/t/rpl_ssl1.test rename to mysql-test/suite/rpl/t/rpl_ssl1.test diff --git a/mysql-test/t/rpl_start_stop_slave.test b/mysql-test/suite/rpl/t/rpl_start_stop_slave.test similarity index 100% rename from mysql-test/t/rpl_start_stop_slave.test rename to mysql-test/suite/rpl/t/rpl_start_stop_slave.test diff --git a/mysql-test/t/rpl_stm_000001-slave.opt b/mysql-test/suite/rpl/t/rpl_stm_000001-slave.opt similarity index 100% rename from mysql-test/t/rpl_stm_000001-slave.opt rename to mysql-test/suite/rpl/t/rpl_stm_000001-slave.opt diff --git a/mysql-test/t/rpl_stm_000001.test b/mysql-test/suite/rpl/t/rpl_stm_000001.test similarity index 100% rename from mysql-test/t/rpl_stm_000001.test rename to mysql-test/suite/rpl/t/rpl_stm_000001.test diff --git a/mysql-test/t/rpl_stm_EE_err2.test b/mysql-test/suite/rpl/t/rpl_stm_EE_err2.test similarity index 100% rename from mysql-test/t/rpl_stm_EE_err2.test rename to mysql-test/suite/rpl/t/rpl_stm_EE_err2.test diff --git a/mysql-test/t/rpl_stm_charset.test b/mysql-test/suite/rpl/t/rpl_stm_charset.test similarity index 100% rename from mysql-test/t/rpl_stm_charset.test rename to mysql-test/suite/rpl/t/rpl_stm_charset.test diff --git a/mysql-test/t/rpl_stm_flsh_tbls.test b/mysql-test/suite/rpl/t/rpl_stm_flsh_tbls.test similarity index 100% rename from mysql-test/t/rpl_stm_flsh_tbls.test rename to mysql-test/suite/rpl/t/rpl_stm_flsh_tbls.test diff --git a/mysql-test/t/rpl_stm_insert_delayed.test b/mysql-test/suite/rpl/t/rpl_stm_insert_delayed.test similarity index 100% rename from mysql-test/t/rpl_stm_insert_delayed.test rename to mysql-test/suite/rpl/t/rpl_stm_insert_delayed.test diff --git a/mysql-test/t/rpl_stm_log-master.opt b/mysql-test/suite/rpl/t/rpl_stm_log-master.opt similarity index 100% rename from mysql-test/t/rpl_stm_log-master.opt rename to mysql-test/suite/rpl/t/rpl_stm_log-master.opt diff --git a/mysql-test/t/rpl_stm_log-slave.opt b/mysql-test/suite/rpl/t/rpl_stm_log-slave.opt similarity index 100% rename from mysql-test/t/rpl_stm_log-slave.opt rename to mysql-test/suite/rpl/t/rpl_stm_log-slave.opt diff --git a/mysql-test/t/rpl_stm_log.test b/mysql-test/suite/rpl/t/rpl_stm_log.test similarity index 100% rename from mysql-test/t/rpl_stm_log.test rename to mysql-test/suite/rpl/t/rpl_stm_log.test diff --git a/mysql-test/t/rpl_stm_max_relay_size.test b/mysql-test/suite/rpl/t/rpl_stm_max_relay_size.test similarity index 100% rename from mysql-test/t/rpl_stm_max_relay_size.test rename to mysql-test/suite/rpl/t/rpl_stm_max_relay_size.test diff --git a/mysql-test/t/rpl_stm_multi_query.test b/mysql-test/suite/rpl/t/rpl_stm_multi_query.test similarity index 100% rename from mysql-test/t/rpl_stm_multi_query.test rename to mysql-test/suite/rpl/t/rpl_stm_multi_query.test diff --git a/mysql-test/t/rpl_stm_mystery22.test b/mysql-test/suite/rpl/t/rpl_stm_mystery22.test similarity index 100% rename from mysql-test/t/rpl_stm_mystery22.test rename to mysql-test/suite/rpl/t/rpl_stm_mystery22.test diff --git a/mysql-test/t/rpl_stm_no_op.test b/mysql-test/suite/rpl/t/rpl_stm_no_op.test similarity index 100% rename from mysql-test/t/rpl_stm_no_op.test rename to mysql-test/suite/rpl/t/rpl_stm_no_op.test diff --git a/mysql-test/t/rpl_stm_reset_slave.test b/mysql-test/suite/rpl/t/rpl_stm_reset_slave.test similarity index 100% rename from mysql-test/t/rpl_stm_reset_slave.test rename to mysql-test/suite/rpl/t/rpl_stm_reset_slave.test diff --git a/mysql-test/t/rpl_stm_until.test b/mysql-test/suite/rpl/t/rpl_stm_until.test similarity index 100% rename from mysql-test/t/rpl_stm_until.test rename to mysql-test/suite/rpl/t/rpl_stm_until.test diff --git a/mysql-test/t/rpl_switch_stm_row_mixed.test b/mysql-test/suite/rpl/t/rpl_switch_stm_row_mixed.test similarity index 100% rename from mysql-test/t/rpl_switch_stm_row_mixed.test rename to mysql-test/suite/rpl/t/rpl_switch_stm_row_mixed.test diff --git a/mysql-test/t/rpl_temp_table.test b/mysql-test/suite/rpl/t/rpl_temp_table.test similarity index 100% rename from mysql-test/t/rpl_temp_table.test rename to mysql-test/suite/rpl/t/rpl_temp_table.test diff --git a/mysql-test/t/rpl_temporary.test b/mysql-test/suite/rpl/t/rpl_temporary.test similarity index 100% rename from mysql-test/t/rpl_temporary.test rename to mysql-test/suite/rpl/t/rpl_temporary.test diff --git a/mysql-test/t/rpl_timezone-master.opt b/mysql-test/suite/rpl/t/rpl_timezone-master.opt similarity index 100% rename from mysql-test/t/rpl_timezone-master.opt rename to mysql-test/suite/rpl/t/rpl_timezone-master.opt diff --git a/mysql-test/t/rpl_timezone-slave.opt b/mysql-test/suite/rpl/t/rpl_timezone-slave.opt similarity index 100% rename from mysql-test/t/rpl_timezone-slave.opt rename to mysql-test/suite/rpl/t/rpl_timezone-slave.opt diff --git a/mysql-test/t/rpl_timezone.test b/mysql-test/suite/rpl/t/rpl_timezone.test similarity index 100% rename from mysql-test/t/rpl_timezone.test rename to mysql-test/suite/rpl/t/rpl_timezone.test diff --git a/mysql-test/t/rpl_trigger.test b/mysql-test/suite/rpl/t/rpl_trigger.test similarity index 100% rename from mysql-test/t/rpl_trigger.test rename to mysql-test/suite/rpl/t/rpl_trigger.test diff --git a/mysql-test/t/rpl_trunc_temp.test b/mysql-test/suite/rpl/t/rpl_trunc_temp.test similarity index 100% rename from mysql-test/t/rpl_trunc_temp.test rename to mysql-test/suite/rpl/t/rpl_trunc_temp.test diff --git a/mysql-test/t/rpl_truncate_2myisam.test b/mysql-test/suite/rpl/t/rpl_truncate_2myisam.test similarity index 100% rename from mysql-test/t/rpl_truncate_2myisam.test rename to mysql-test/suite/rpl/t/rpl_truncate_2myisam.test diff --git a/mysql-test/t/rpl_truncate_3innodb.test b/mysql-test/suite/rpl/t/rpl_truncate_3innodb.test similarity index 100% rename from mysql-test/t/rpl_truncate_3innodb.test rename to mysql-test/suite/rpl/t/rpl_truncate_3innodb.test diff --git a/mysql-test/t/rpl_truncate_7ndb_2-master.opt b/mysql-test/suite/rpl/t/rpl_truncate_7ndb_2-master.opt similarity index 100% rename from mysql-test/t/rpl_truncate_7ndb_2-master.opt rename to mysql-test/suite/rpl/t/rpl_truncate_7ndb_2-master.opt diff --git a/mysql-test/t/rpl_truncate_7ndb_2.test b/mysql-test/suite/rpl/t/rpl_truncate_7ndb_2.test similarity index 100% rename from mysql-test/t/rpl_truncate_7ndb_2.test rename to mysql-test/suite/rpl/t/rpl_truncate_7ndb_2.test diff --git a/mysql-test/t/rpl_udf-master.opt b/mysql-test/suite/rpl/t/rpl_udf-master.opt similarity index 100% rename from mysql-test/t/rpl_udf-master.opt rename to mysql-test/suite/rpl/t/rpl_udf-master.opt diff --git a/mysql-test/t/rpl_udf-slave.opt b/mysql-test/suite/rpl/t/rpl_udf-slave.opt similarity index 100% rename from mysql-test/t/rpl_udf-slave.opt rename to mysql-test/suite/rpl/t/rpl_udf-slave.opt diff --git a/mysql-test/t/rpl_udf.test b/mysql-test/suite/rpl/t/rpl_udf.test similarity index 100% rename from mysql-test/t/rpl_udf.test rename to mysql-test/suite/rpl/t/rpl_udf.test diff --git a/mysql-test/t/rpl_user_variables.test b/mysql-test/suite/rpl/t/rpl_user_variables.test similarity index 100% rename from mysql-test/t/rpl_user_variables.test rename to mysql-test/suite/rpl/t/rpl_user_variables.test diff --git a/mysql-test/t/rpl_variables-master.opt b/mysql-test/suite/rpl/t/rpl_variables-master.opt similarity index 100% rename from mysql-test/t/rpl_variables-master.opt rename to mysql-test/suite/rpl/t/rpl_variables-master.opt diff --git a/mysql-test/t/rpl_variables.test b/mysql-test/suite/rpl/t/rpl_variables.test similarity index 100% rename from mysql-test/t/rpl_variables.test rename to mysql-test/suite/rpl/t/rpl_variables.test diff --git a/mysql-test/t/rpl_view-slave.opt b/mysql-test/suite/rpl/t/rpl_view-slave.opt similarity index 100% rename from mysql-test/t/rpl_view-slave.opt rename to mysql-test/suite/rpl/t/rpl_view-slave.opt diff --git a/mysql-test/t/rpl_view.test b/mysql-test/suite/rpl/t/rpl_view.test similarity index 100% rename from mysql-test/t/rpl_view.test rename to mysql-test/suite/rpl/t/rpl_view.test diff --git a/mysql-test/r/rpl_ndb_2innodb.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_2innodb.result similarity index 100% rename from mysql-test/r/rpl_ndb_2innodb.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_2innodb.result diff --git a/mysql-test/r/rpl_ndb_2myisam.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_2myisam.result similarity index 100% rename from mysql-test/r/rpl_ndb_2myisam.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_2myisam.result diff --git a/mysql-test/r/rpl_ndb_UUID.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_UUID.result similarity index 100% rename from mysql-test/r/rpl_ndb_UUID.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_UUID.result diff --git a/mysql-test/r/rpl_ndb_auto_inc.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_auto_inc.result similarity index 100% rename from mysql-test/r/rpl_ndb_auto_inc.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_auto_inc.result diff --git a/mysql-test/r/rpl_ndb_bank.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_bank.result similarity index 100% rename from mysql-test/r/rpl_ndb_bank.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_bank.result diff --git a/mysql-test/r/rpl_ndb_basic.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_basic.result similarity index 100% rename from mysql-test/r/rpl_ndb_basic.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_basic.result diff --git a/mysql-test/r/rpl_ndb_blob.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_blob.result similarity index 100% rename from mysql-test/r/rpl_ndb_blob.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_blob.result diff --git a/mysql-test/r/rpl_ndb_blob2.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_blob2.result similarity index 100% rename from mysql-test/r/rpl_ndb_blob2.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_blob2.result diff --git a/mysql-test/r/rpl_ndb_charset.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_charset.result similarity index 100% rename from mysql-test/r/rpl_ndb_charset.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_charset.result diff --git a/mysql-test/r/rpl_ndb_circular.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular.result similarity index 100% rename from mysql-test/r/rpl_ndb_circular.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_circular.result diff --git a/mysql-test/r/rpl_ndb_circular_simplex.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result similarity index 100% rename from mysql-test/r/rpl_ndb_circular_simplex.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result diff --git a/mysql-test/r/rpl_ndb_commit_afterflush.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_commit_afterflush.result similarity index 100% rename from mysql-test/r/rpl_ndb_commit_afterflush.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_commit_afterflush.result diff --git a/mysql-test/r/rpl_ndb_dd_advance.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_advance.result similarity index 100% rename from mysql-test/r/rpl_ndb_dd_advance.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_advance.result diff --git a/mysql-test/r/rpl_ndb_dd_basic.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_basic.result similarity index 100% rename from mysql-test/r/rpl_ndb_dd_basic.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_basic.result diff --git a/mysql-test/r/rpl_ndb_dd_partitions.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_partitions.result similarity index 100% rename from mysql-test/r/rpl_ndb_dd_partitions.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_partitions.result diff --git a/mysql-test/r/rpl_ndb_ddl.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_ddl.result similarity index 100% rename from mysql-test/r/rpl_ndb_ddl.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_ddl.result diff --git a/mysql-test/r/rpl_ndb_delete_nowhere.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_delete_nowhere.result similarity index 100% rename from mysql-test/r/rpl_ndb_delete_nowhere.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_delete_nowhere.result diff --git a/mysql-test/r/rpl_ndb_do_db.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_do_db.result similarity index 100% rename from mysql-test/r/rpl_ndb_do_db.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_do_db.result diff --git a/mysql-test/r/rpl_ndb_do_table.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_do_table.result similarity index 100% rename from mysql-test/r/rpl_ndb_do_table.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_do_table.result diff --git a/mysql-test/r/rpl_ndb_extraCol.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result similarity index 100% rename from mysql-test/r/rpl_ndb_extraCol.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result diff --git a/mysql-test/r/rpl_ndb_func003.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_func003.result similarity index 100% rename from mysql-test/r/rpl_ndb_func003.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_func003.result diff --git a/mysql-test/r/rpl_ndb_idempotent.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_idempotent.result similarity index 100% rename from mysql-test/r/rpl_ndb_idempotent.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_idempotent.result diff --git a/mysql-test/r/rpl_ndb_innodb_trans.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_innodb_trans.result similarity index 100% rename from mysql-test/r/rpl_ndb_innodb_trans.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_innodb_trans.result diff --git a/mysql-test/r/rpl_ndb_insert_ignore.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_insert_ignore.result similarity index 100% rename from mysql-test/r/rpl_ndb_insert_ignore.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_insert_ignore.result diff --git a/mysql-test/r/rpl_ndb_load.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_load.result similarity index 100% rename from mysql-test/r/rpl_ndb_load.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_load.result diff --git a/mysql-test/r/rpl_ndb_log.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result similarity index 100% rename from mysql-test/r/rpl_ndb_log.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result diff --git a/mysql-test/r/rpl_ndb_multi.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result similarity index 100% rename from mysql-test/r/rpl_ndb_multi.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result diff --git a/mysql-test/r/rpl_ndb_multi_update2.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_multi_update2.result similarity index 100% rename from mysql-test/r/rpl_ndb_multi_update2.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_multi_update2.result diff --git a/mysql-test/r/rpl_ndb_multi_update3.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_multi_update3.result similarity index 100% rename from mysql-test/r/rpl_ndb_multi_update3.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_multi_update3.result diff --git a/mysql-test/r/rpl_ndb_relayrotate.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_relayrotate.result similarity index 100% rename from mysql-test/r/rpl_ndb_relayrotate.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_relayrotate.result diff --git a/mysql-test/r/rpl_ndb_rep_ignore.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_rep_ignore.result similarity index 100% rename from mysql-test/r/rpl_ndb_rep_ignore.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_rep_ignore.result diff --git a/mysql-test/r/rpl_ndb_row_001.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_row_001.result similarity index 100% rename from mysql-test/r/rpl_ndb_row_001.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_row_001.result diff --git a/mysql-test/r/rpl_ndb_sp003.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_sp003.result similarity index 100% rename from mysql-test/r/rpl_ndb_sp003.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_sp003.result diff --git a/mysql-test/r/rpl_ndb_sp006.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_sp006.result similarity index 100% rename from mysql-test/r/rpl_ndb_sp006.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_sp006.result diff --git a/mysql-test/r/rpl_ndb_stm_innodb.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result similarity index 100% rename from mysql-test/r/rpl_ndb_stm_innodb.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result diff --git a/mysql-test/r/rpl_ndb_sync.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result similarity index 100% rename from mysql-test/r/rpl_ndb_sync.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result diff --git a/mysql-test/r/rpl_ndb_trig004.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_trig004.result similarity index 100% rename from mysql-test/r/rpl_ndb_trig004.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_trig004.result diff --git a/mysql-test/r/rpl_ndbapi_multi.result b/mysql-test/suite/rpl_ndb/r/rpl_ndbapi_multi.result similarity index 100% rename from mysql-test/r/rpl_ndbapi_multi.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndbapi_multi.result diff --git a/mysql-test/r/rpl_row_basic_7ndb.result b/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result similarity index 100% rename from mysql-test/r/rpl_row_basic_7ndb.result rename to mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result diff --git a/mysql-test/r/rpl_truncate_7ndb.result b/mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result similarity index 100% rename from mysql-test/r/rpl_truncate_7ndb.result rename to mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result diff --git a/mysql-test/suite/rpl_ndb/t/disabled.def b/mysql-test/suite/rpl_ndb/t/disabled.def new file mode 100644 index 00000000000..b238c8ac9c5 --- /dev/null +++ b/mysql-test/suite/rpl_ndb/t/disabled.def @@ -0,0 +1,27 @@ +############################################################################## +# +# List the test cases that are to be disabled temporarily. +# +# Separate the test case name and the comment with ':'. +# +# : BUG# +# +# Do not use any TAB characters for whitespace. +# +############################################################################## + + +rpl_ndb_circular_simplex : BUG#27972 2007-04-20 mats Slave cannot start where it stopped +rpl_ndb_2innodb : BUG#19227 2006-04-20 pekka pk delete apparently not replicated +rpl_ndb_2myisam : BUG#19227 Seems to pass currently +rpl_ndb_dd_partitions : BUG#19259 2006-04-21 rpl_ndb_dd_partitions fails on s/AMD +rpl_ddl : BUG#26418 2007-03-01 mleich Slave out of sync after CREATE/DROP TEMPORARY TABLE + ROLLBACK on master +rpl_ndb_innodb2ndb : Bug #19710 Cluster replication to partition table fails on DELETE FROM statement +rpl_ndb_myisam2ndb : Bug #19710 Cluster replication to partition table fails on DELETE FROM statement +#rpl_row_blob_innodb : BUG#18980 2006-04-10 kent Test fails randomly +rpl_ndb_ddl : BUG#28798 2007-05-31 lars Valgrind failure in NDB + + +# the below testcase have been reworked to avoid the bug, test contains comment, keep bug open + +#rpl_ndb_dd_advance : Bug#25913 rpl_ndb_dd_advance fails randomly diff --git a/mysql-test/t/rpl_ndb_2innodb-master.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb-master.opt similarity index 100% rename from mysql-test/t/rpl_ndb_2innodb-master.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb-master.opt diff --git a/mysql-test/t/rpl_ndb_2innodb-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb-slave.opt similarity index 100% rename from mysql-test/t/rpl_ndb_2innodb-slave.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb-slave.opt diff --git a/mysql-test/t/rpl_ndb_2innodb.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb.test similarity index 100% rename from mysql-test/t/rpl_ndb_2innodb.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb.test diff --git a/mysql-test/t/rpl_ndb_2myisam-master.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_2myisam-master.opt similarity index 100% rename from mysql-test/t/rpl_ndb_2myisam-master.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_2myisam-master.opt diff --git a/mysql-test/t/rpl_ndb_2myisam-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_2myisam-slave.opt similarity index 100% rename from mysql-test/t/rpl_ndb_2myisam-slave.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_2myisam-slave.opt diff --git a/mysql-test/t/rpl_ndb_2myisam.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_2myisam.test similarity index 100% rename from mysql-test/t/rpl_ndb_2myisam.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_2myisam.test diff --git a/mysql-test/t/rpl_ndb_UUID.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_UUID.test similarity index 100% rename from mysql-test/t/rpl_ndb_UUID.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_UUID.test diff --git a/mysql-test/t/rpl_ndb_auto_inc.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_auto_inc.test similarity index 100% rename from mysql-test/t/rpl_ndb_auto_inc.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_auto_inc.test diff --git a/mysql-test/t/rpl_ndb_bank.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_bank.test similarity index 100% rename from mysql-test/t/rpl_ndb_bank.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_bank.test diff --git a/mysql-test/t/rpl_ndb_basic.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test similarity index 100% rename from mysql-test/t/rpl_ndb_basic.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test diff --git a/mysql-test/t/rpl_ndb_blob.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_blob.test similarity index 100% rename from mysql-test/t/rpl_ndb_blob.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_blob.test diff --git a/mysql-test/t/rpl_ndb_blob2.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_blob2.test similarity index 100% rename from mysql-test/t/rpl_ndb_blob2.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_blob2.test diff --git a/mysql-test/t/rpl_ndb_charset.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_charset.test similarity index 100% rename from mysql-test/t/rpl_ndb_charset.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_charset.test diff --git a/mysql-test/t/rpl_ndb_circular.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test similarity index 100% rename from mysql-test/t/rpl_ndb_circular.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test diff --git a/mysql-test/t/rpl_ndb_circular_simplex.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test similarity index 100% rename from mysql-test/t/rpl_ndb_circular_simplex.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test diff --git a/mysql-test/t/rpl_ndb_commit_afterflush.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_commit_afterflush.test similarity index 100% rename from mysql-test/t/rpl_ndb_commit_afterflush.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_commit_afterflush.test diff --git a/mysql-test/t/rpl_ndb_dd_advance.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_advance.test similarity index 100% rename from mysql-test/t/rpl_ndb_dd_advance.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_advance.test diff --git a/mysql-test/t/rpl_ndb_dd_basic.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_basic.test similarity index 100% rename from mysql-test/t/rpl_ndb_dd_basic.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_basic.test diff --git a/mysql-test/t/rpl_ndb_dd_partitions.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions.test similarity index 100% rename from mysql-test/t/rpl_ndb_dd_partitions.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions.test diff --git a/mysql-test/t/rpl_ndb_ddl.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_ddl.test similarity index 100% rename from mysql-test/t/rpl_ndb_ddl.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_ddl.test diff --git a/mysql-test/t/rpl_ndb_delete_nowhere.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_delete_nowhere.test similarity index 100% rename from mysql-test/t/rpl_ndb_delete_nowhere.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_delete_nowhere.test diff --git a/mysql-test/t/rpl_ndb_do_db-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_do_db-slave.opt similarity index 100% rename from mysql-test/t/rpl_ndb_do_db-slave.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_do_db-slave.opt diff --git a/mysql-test/t/rpl_ndb_do_db.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_do_db.test similarity index 100% rename from mysql-test/t/rpl_ndb_do_db.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_do_db.test diff --git a/mysql-test/t/rpl_ndb_do_table-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_do_table-slave.opt similarity index 100% rename from mysql-test/t/rpl_ndb_do_table-slave.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_do_table-slave.opt diff --git a/mysql-test/t/rpl_ndb_do_table.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_do_table.test similarity index 100% rename from mysql-test/t/rpl_ndb_do_table.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_do_table.test diff --git a/mysql-test/t/rpl_ndb_extraCol.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_extraCol.test similarity index 100% rename from mysql-test/t/rpl_ndb_extraCol.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_extraCol.test diff --git a/mysql-test/t/rpl_ndb_func003.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_func003.test similarity index 100% rename from mysql-test/t/rpl_ndb_func003.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_func003.test diff --git a/mysql-test/t/rpl_ndb_idempotent.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test similarity index 100% rename from mysql-test/t/rpl_ndb_idempotent.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test diff --git a/mysql-test/t/rpl_ndb_innodb2ndb-master.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb-master.opt similarity index 100% rename from mysql-test/t/rpl_ndb_innodb2ndb-master.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb-master.opt diff --git a/mysql-test/t/rpl_ndb_innodb2ndb-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb-slave.opt similarity index 100% rename from mysql-test/t/rpl_ndb_innodb2ndb-slave.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb-slave.opt diff --git a/mysql-test/t/rpl_ndb_innodb2ndb.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb.test similarity index 100% rename from mysql-test/t/rpl_ndb_innodb2ndb.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb.test diff --git a/mysql-test/t/rpl_ndb_innodb_trans-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans-slave.opt similarity index 100% rename from mysql-test/t/rpl_ndb_innodb_trans-slave.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans-slave.opt diff --git a/mysql-test/t/rpl_ndb_innodb_trans.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans.test similarity index 100% rename from mysql-test/t/rpl_ndb_innodb_trans.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans.test diff --git a/mysql-test/t/rpl_ndb_insert_ignore.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_insert_ignore.test similarity index 100% rename from mysql-test/t/rpl_ndb_insert_ignore.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_insert_ignore.test diff --git a/mysql-test/t/rpl_ndb_load.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_load.test similarity index 100% rename from mysql-test/t/rpl_ndb_load.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_load.test diff --git a/mysql-test/t/rpl_ndb_log-master.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_log-master.opt similarity index 100% rename from mysql-test/t/rpl_ndb_log-master.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_log-master.opt diff --git a/mysql-test/t/rpl_ndb_log.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_log.test similarity index 100% rename from mysql-test/t/rpl_ndb_log.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_log.test diff --git a/mysql-test/t/rpl_ndb_multi.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test similarity index 100% rename from mysql-test/t/rpl_ndb_multi.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test diff --git a/mysql-test/t/rpl_ndb_multi_update2-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update2-slave.opt similarity index 100% rename from mysql-test/t/rpl_ndb_multi_update2-slave.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update2-slave.opt diff --git a/mysql-test/t/rpl_ndb_multi_update2.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update2.test similarity index 100% rename from mysql-test/t/rpl_ndb_multi_update2.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update2.test diff --git a/mysql-test/t/rpl_ndb_multi_update3.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update3.test similarity index 100% rename from mysql-test/t/rpl_ndb_multi_update3.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update3.test diff --git a/mysql-test/t/rpl_ndb_myisam2ndb-master.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_myisam2ndb-master.opt similarity index 100% rename from mysql-test/t/rpl_ndb_myisam2ndb-master.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_myisam2ndb-master.opt diff --git a/mysql-test/t/rpl_ndb_myisam2ndb-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_myisam2ndb-slave.opt similarity index 100% rename from mysql-test/t/rpl_ndb_myisam2ndb-slave.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_myisam2ndb-slave.opt diff --git a/mysql-test/t/rpl_ndb_myisam2ndb.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_myisam2ndb.test similarity index 100% rename from mysql-test/t/rpl_ndb_myisam2ndb.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_myisam2ndb.test diff --git a/mysql-test/t/rpl_ndb_relayrotate-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_relayrotate-slave.opt similarity index 100% rename from mysql-test/t/rpl_ndb_relayrotate-slave.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_relayrotate-slave.opt diff --git a/mysql-test/t/rpl_ndb_relayrotate.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_relayrotate.test similarity index 100% rename from mysql-test/t/rpl_ndb_relayrotate.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_relayrotate.test diff --git a/mysql-test/t/rpl_ndb_rep_ignore-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_rep_ignore-slave.opt similarity index 100% rename from mysql-test/t/rpl_ndb_rep_ignore-slave.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_rep_ignore-slave.opt diff --git a/mysql-test/t/rpl_ndb_rep_ignore.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_rep_ignore.test similarity index 100% rename from mysql-test/t/rpl_ndb_rep_ignore.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_rep_ignore.test diff --git a/mysql-test/t/rpl_ndb_row_001.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_row_001.test similarity index 100% rename from mysql-test/t/rpl_ndb_row_001.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_row_001.test diff --git a/mysql-test/t/rpl_ndb_sp003.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_sp003.test similarity index 100% rename from mysql-test/t/rpl_ndb_sp003.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_sp003.test diff --git a/mysql-test/t/rpl_ndb_sp006.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_sp006.test similarity index 100% rename from mysql-test/t/rpl_ndb_sp006.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_sp006.test diff --git a/mysql-test/t/rpl_ndb_stm_innodb-master.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb-master.opt similarity index 100% rename from mysql-test/t/rpl_ndb_stm_innodb-master.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb-master.opt diff --git a/mysql-test/t/rpl_ndb_stm_innodb.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test similarity index 100% rename from mysql-test/t/rpl_ndb_stm_innodb.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test diff --git a/mysql-test/t/rpl_ndb_sync.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test similarity index 100% rename from mysql-test/t/rpl_ndb_sync.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test diff --git a/mysql-test/t/rpl_ndb_trig004.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_trig004.test similarity index 100% rename from mysql-test/t/rpl_ndb_trig004.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_trig004.test diff --git a/mysql-test/t/rpl_ndbapi_multi.test b/mysql-test/suite/rpl_ndb/t/rpl_ndbapi_multi.test similarity index 100% rename from mysql-test/t/rpl_ndbapi_multi.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndbapi_multi.test diff --git a/mysql-test/t/rpl_row_basic_7ndb.test b/mysql-test/suite/rpl_ndb/t/rpl_row_basic_7ndb.test similarity index 100% rename from mysql-test/t/rpl_row_basic_7ndb.test rename to mysql-test/suite/rpl_ndb/t/rpl_row_basic_7ndb.test diff --git a/mysql-test/t/rpl_truncate_7ndb.test b/mysql-test/suite/rpl_ndb/t/rpl_truncate_7ndb.test similarity index 100% rename from mysql-test/t/rpl_truncate_7ndb.test rename to mysql-test/suite/rpl_ndb/t/rpl_truncate_7ndb.test diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 27e3b9bc614..31ff0d58477 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -21,29 +21,6 @@ im_instance_conf : BUG#28743 Instance manager generates warnings in test im_utils : BUG#28743 Instance manager generates warnings in test suite concurrent_innodb : BUG#21579 2006-08-11 mleich innodb_concurrent random failures with varying differences -ndb_autodiscover : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog -ndb_autodiscover2 : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog -ndb_load : BUG#17233 2006-05-04 tomas failed load data from infile causes mysqld dbug_assert, binlog not flushed - -partition_03ndb : BUG#16385 2006-03-24 mikael Partitions: crash when updating a range partitioned NDB table -rpl_ndb_circular_simplex : BUG#27972 2007-04-20 mats Slave cannot start where it stopped -rpl_ndb_2innodb : BUG#19227 2006-04-20 pekka pk delete apparently not replicated -rpl_ndb_2myisam : BUG#19227 Seems to pass currently -rpl_ndb_dd_partitions : BUG#19259 2006-04-21 rpl_ndb_dd_partitions fails on s/AMD -rpl_ddl : BUG#26418 2007-03-01 mleich Slave out of sync after CREATE/DROP TEMPORARY TABLE + ROLLBACK on master -rpl_ndb_innodb2ndb : Bug #19710 Cluster replication to partition table fails on DELETE FROM statement -rpl_ndb_myisam2ndb : Bug #19710 Cluster replication to partition table fails on DELETE FROM statement -#rpl_row_blob_innodb : BUG#18980 2006-04-10 kent Test fails randomly -rpl_ndb_ddl : BUG#28798 2007-05-31 lars Valgrind failure in NDB - -# the below testcase have been reworked to avoid the bug, test contains comment, keep bug open -#ndb_binlog_ddl_multi : BUG#18976 2006-04-10 kent CRBR: multiple binlog, second binlog may miss schema log events -#ndb_binlog_discover : bug#21806 2006-08-24 -#ndb_autodiscover3 : bug#21806 - -#rpl_ndb_dd_advance : Bug#25913 rpl_ndb_dd_advance fails randomly - -ndb_partition_error2 : HF is not sure if the test can work as internded on all the platforms im_options_set : Bug#20294: Instance manager tests fail randomly im_options_unset : Bug#20294: Instance manager tests fail randomly From ff9aeb560c2dd96c95d552184097b74b5f1bc886 Mon Sep 17 00:00:00 2001 From: "svoj@mysql.com/june.mysql.com" <> Date: Wed, 27 Jun 2007 18:10:19 +0500 Subject: [PATCH 036/127] BUG#29299 - repeatable myisam fulltext index corruption Fulltext index may get corrupt by certain gbk characters. The problem was that when skipping leading non-true-word-characters, we assumed that these characters are always 1 byte long. This is not the case with gbk character set, since non-true-word-characters may be 2 bytes long. Affects 5.0 only. --- myisam/ft_parser.c | 6 ++++-- mysql-test/r/fulltext2.result | 12 ++++++++++++ mysql-test/t/fulltext2.test | 12 ++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/myisam/ft_parser.c b/myisam/ft_parser.c index 6c79f9249cf..6d68542e4e2 100644 --- a/myisam/ft_parser.c +++ b/myisam/ft_parser.c @@ -111,7 +111,7 @@ byte ft_get_word(CHARSET_INFO *cs, byte **start, byte *end, while (docquot) @@ -120,6 +120,7 @@ byte ft_get_word(CHARSET_INFO *cs, byte **start, byte *end, *start=doc+1; return 3; /* FTB_RBR */ } + mbl= my_mbcharlen(cs, *(uchar *)doc); if (!param->quot) { if (*doc == FTB_LBR || *doc == FTB_RBR || *doc == FTB_LQUOT) @@ -187,10 +188,11 @@ byte ft_simple_get_word(CHARSET_INFO *cs, byte **start, const byte *end, do { - for (;; doc++) + for (;; doc+= mbl) { if (doc >= end) DBUG_RETURN(0); if (true_word_char(cs, *doc)) break; + mbl= my_mbcharlen(cs, *(uchar *)doc); } mwc= length= 0; diff --git a/mysql-test/r/fulltext2.result b/mysql-test/r/fulltext2.result index f6a4b20bc22..f6bb4e4965a 100644 --- a/mysql-test/r/fulltext2.result +++ b/mysql-test/r/fulltext2.result @@ -241,3 +241,15 @@ select * from t1 where match a against('ab c' in boolean mode); a drop table t1; set names latin1; +CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a)); +SET NAMES utf8; +INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161); +SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE); +HEX(a) +BEF361616197C22061616161 +DELETE FROM t1 LIMIT 1; +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +SET NAMES latin1; +DROP TABLE t1; diff --git a/mysql-test/t/fulltext2.test b/mysql-test/t/fulltext2.test index fd97f795534..99209dc8543 100644 --- a/mysql-test/t/fulltext2.test +++ b/mysql-test/t/fulltext2.test @@ -220,4 +220,16 @@ select * from t1 where match a against('ab c' in boolean mode); drop table t1; set names latin1; +# +# BUG#29299 - repeatable myisam fulltext index corruption +# +CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a)); +SET NAMES utf8; +INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161); +SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE); +DELETE FROM t1 LIMIT 1; +CHECK TABLE t1; +SET NAMES latin1; +DROP TABLE t1; + # End of 4.1 tests From e86225b908ebf9d648a18bb3fe4d0795b1420136 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.(none)" <> Date: Wed, 27 Jun 2007 16:49:32 +0200 Subject: [PATCH 037/127] Move disabling of rpl_invoked_features to suite/rpl/t/disabled.def Move tests to their respective suite --- mysql-test/{ => suite/binlog}/r/binlog_innodb.result | 0 mysql-test/{ => suite/binlog}/r/binlog_multi_engine.result | 0 mysql-test/{ => suite/binlog}/t/binlog_innodb.test | 0 mysql-test/{ => suite/binlog}/t/binlog_multi_engine.test | 0 mysql-test/{ => suite/rpl}/r/rpl_grant.result | 0 mysql-test/{ => suite/rpl}/r/rpl_invoked_features.result | 0 mysql-test/{ => suite/rpl}/r/rpl_loaddata_fatal.result | 0 mysql-test/{ => suite/rpl}/r/rpl_slave_skip.result | 0 mysql-test/suite/rpl/t/disabled.def | 1 + mysql-test/{ => suite/rpl}/t/rpl_grant.test | 0 mysql-test/{ => suite/rpl}/t/rpl_invoked_features-master.opt | 0 mysql-test/{ => suite/rpl}/t/rpl_invoked_features-slave.opt | 0 mysql-test/{ => suite/rpl}/t/rpl_invoked_features.test | 0 mysql-test/{ => suite/rpl}/t/rpl_loaddata_fatal-slave.opt | 0 mysql-test/{ => suite/rpl}/t/rpl_loaddata_fatal.test | 0 mysql-test/{ => suite/rpl}/t/rpl_slave_skip.test | 0 mysql-test/t/disabled.def | 1 - 17 files changed, 1 insertion(+), 1 deletion(-) rename mysql-test/{ => suite/binlog}/r/binlog_innodb.result (100%) rename mysql-test/{ => suite/binlog}/r/binlog_multi_engine.result (100%) rename mysql-test/{ => suite/binlog}/t/binlog_innodb.test (100%) rename mysql-test/{ => suite/binlog}/t/binlog_multi_engine.test (100%) rename mysql-test/{ => suite/rpl}/r/rpl_grant.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_invoked_features.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_loaddata_fatal.result (100%) rename mysql-test/{ => suite/rpl}/r/rpl_slave_skip.result (100%) rename mysql-test/{ => suite/rpl}/t/rpl_grant.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_invoked_features-master.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_invoked_features-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_invoked_features.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_loaddata_fatal-slave.opt (100%) rename mysql-test/{ => suite/rpl}/t/rpl_loaddata_fatal.test (100%) rename mysql-test/{ => suite/rpl}/t/rpl_slave_skip.test (100%) diff --git a/mysql-test/r/binlog_innodb.result b/mysql-test/suite/binlog/r/binlog_innodb.result similarity index 100% rename from mysql-test/r/binlog_innodb.result rename to mysql-test/suite/binlog/r/binlog_innodb.result diff --git a/mysql-test/r/binlog_multi_engine.result b/mysql-test/suite/binlog/r/binlog_multi_engine.result similarity index 100% rename from mysql-test/r/binlog_multi_engine.result rename to mysql-test/suite/binlog/r/binlog_multi_engine.result diff --git a/mysql-test/t/binlog_innodb.test b/mysql-test/suite/binlog/t/binlog_innodb.test similarity index 100% rename from mysql-test/t/binlog_innodb.test rename to mysql-test/suite/binlog/t/binlog_innodb.test diff --git a/mysql-test/t/binlog_multi_engine.test b/mysql-test/suite/binlog/t/binlog_multi_engine.test similarity index 100% rename from mysql-test/t/binlog_multi_engine.test rename to mysql-test/suite/binlog/t/binlog_multi_engine.test diff --git a/mysql-test/r/rpl_grant.result b/mysql-test/suite/rpl/r/rpl_grant.result similarity index 100% rename from mysql-test/r/rpl_grant.result rename to mysql-test/suite/rpl/r/rpl_grant.result diff --git a/mysql-test/r/rpl_invoked_features.result b/mysql-test/suite/rpl/r/rpl_invoked_features.result similarity index 100% rename from mysql-test/r/rpl_invoked_features.result rename to mysql-test/suite/rpl/r/rpl_invoked_features.result diff --git a/mysql-test/r/rpl_loaddata_fatal.result b/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result similarity index 100% rename from mysql-test/r/rpl_loaddata_fatal.result rename to mysql-test/suite/rpl/r/rpl_loaddata_fatal.result diff --git a/mysql-test/r/rpl_slave_skip.result b/mysql-test/suite/rpl/r/rpl_slave_skip.result similarity index 100% rename from mysql-test/r/rpl_slave_skip.result rename to mysql-test/suite/rpl/r/rpl_slave_skip.result diff --git a/mysql-test/suite/rpl/t/disabled.def b/mysql-test/suite/rpl/t/disabled.def index 180a700acaf..fda40c30340 100644 --- a/mysql-test/suite/rpl/t/disabled.def +++ b/mysql-test/suite/rpl/t/disabled.def @@ -13,3 +13,4 @@ rpl_ddl : BUG#26418 2007-03-01 mleich Slave out of sync after CREATE/DROP TEMPORARY TABLE + ROLLBACK on master rpl_innodb_mixed_ddl : Bug #29363 rpl.rpl_innodb_mixed_* test failures rpl_innodb_mixed_dml : Bug #29363 rpl.rpl_innodb_mixed_* test failures +rpl_invoked_features : BUG#29020 2007-06-21 Lars Non-deterministic test case diff --git a/mysql-test/t/rpl_grant.test b/mysql-test/suite/rpl/t/rpl_grant.test similarity index 100% rename from mysql-test/t/rpl_grant.test rename to mysql-test/suite/rpl/t/rpl_grant.test diff --git a/mysql-test/t/rpl_invoked_features-master.opt b/mysql-test/suite/rpl/t/rpl_invoked_features-master.opt similarity index 100% rename from mysql-test/t/rpl_invoked_features-master.opt rename to mysql-test/suite/rpl/t/rpl_invoked_features-master.opt diff --git a/mysql-test/t/rpl_invoked_features-slave.opt b/mysql-test/suite/rpl/t/rpl_invoked_features-slave.opt similarity index 100% rename from mysql-test/t/rpl_invoked_features-slave.opt rename to mysql-test/suite/rpl/t/rpl_invoked_features-slave.opt diff --git a/mysql-test/t/rpl_invoked_features.test b/mysql-test/suite/rpl/t/rpl_invoked_features.test similarity index 100% rename from mysql-test/t/rpl_invoked_features.test rename to mysql-test/suite/rpl/t/rpl_invoked_features.test diff --git a/mysql-test/t/rpl_loaddata_fatal-slave.opt b/mysql-test/suite/rpl/t/rpl_loaddata_fatal-slave.opt similarity index 100% rename from mysql-test/t/rpl_loaddata_fatal-slave.opt rename to mysql-test/suite/rpl/t/rpl_loaddata_fatal-slave.opt diff --git a/mysql-test/t/rpl_loaddata_fatal.test b/mysql-test/suite/rpl/t/rpl_loaddata_fatal.test similarity index 100% rename from mysql-test/t/rpl_loaddata_fatal.test rename to mysql-test/suite/rpl/t/rpl_loaddata_fatal.test diff --git a/mysql-test/t/rpl_slave_skip.test b/mysql-test/suite/rpl/t/rpl_slave_skip.test similarity index 100% rename from mysql-test/t/rpl_slave_skip.test rename to mysql-test/suite/rpl/t/rpl_slave_skip.test diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 61d81811ec1..5d31a8060e8 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -21,7 +21,6 @@ im_instance_conf : BUG#28743 Instance manager generates warnings in test im_utils : BUG#28743 Instance manager generates warnings in test suite innodb : Disabling test case awaiting reply from Innobase concurrent_innodb : BUG#21579 2006-08-11 mleich innodb_concurrent random failures with varying differences -rpl_invoked_features : BUG#29020 2007-06-21 Lars Non-deterministic test case ctype_big5 : BUG#26711 2007-06-21 Lars Test has never worked on Double Whopper From b9d2e744b0a5ffe20ac347318621761fbc60246d Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.(none)" <> Date: Wed, 27 Jun 2007 18:21:20 +0200 Subject: [PATCH 038/127] Change "exec rm" to "remove_file" --- mysql-test/include/have_outfile.inc | 2 +- mysql-test/t/sp.test | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/mysql-test/include/have_outfile.inc b/mysql-test/include/have_outfile.inc index 10f093ec3ef..ae4a2723840 100644 --- a/mysql-test/include/have_outfile.inc +++ b/mysql-test/include/have_outfile.inc @@ -1,5 +1,5 @@ -- require r/have_outfile.require disable_query_log; select load_file(concat(@tmpdir,"/outfile.test")); ---exec rm $MYSQLTEST_VARDIR/tmp/outfile.test +--remove_file $MYSQLTEST_VARDIR/tmp/outfile.test enable_query_log; diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test index c94a526e10c..460c10d88d0 100644 --- a/mysql-test/t/sp.test +++ b/mysql-test/t/sp.test @@ -705,9 +705,11 @@ begin insert into test.t1 values (concat(x, "2"), y+2); end| ---system rm -f $MYSQLTEST_VARDIR/tmp/spout +# Check that file does not exists +--error 1 +--file_exists $MYSQLTEST_VARDIR/tmp/spout call into_outfile("ofile", 1)| ---system rm -f $MYSQLTEST_VARDIR/tmp/spout +--remove_file $MYSQLTEST_VARDIR/tmp/spout delete from t1| drop procedure into_outfile| @@ -722,9 +724,11 @@ begin insert into test.t1 values (concat(x, "2"), y+2); end| ---system rm -f $MYSQLTEST_VARDIR/tmp/spdump +# Check that file does not exists +--error 1 +--file_exists $MYSQLTEST_VARDIR/tmp/spdump call into_dumpfile("dfile", 1)| ---system rm -f $MYSQLTEST_VARDIR/tmp/spdump +--remove_file $MYSQLTEST_VARDIR/tmp/spdump delete from t1| drop procedure into_dumpfile| From b3e29fbd1de8a067ad5994775f870d76ef2f84e7 Mon Sep 17 00:00:00 2001 From: "antony@ppcg5.local" <> Date: Thu, 28 Jun 2007 00:23:14 -0700 Subject: [PATCH 039/127] Bug#29019 "REPLACE/INSERT IGNORE/UPDATE IGNORE doesn't work" Federated does not record neccessary HA_EXTRA flags in order to support REPLACE/INSERT IGNORE/UPDATE IGNORE. Implement ::extra() to capture flags neccessary for functionality. New function append_ident() to better escape identifiers consistantly. --- mysql-test/r/federated.result | 24 ++++ mysql-test/t/federated.test | 27 +++++ sql/ha_federated.cc | 211 +++++++++++++++++++++++----------- sql/ha_federated.h | 2 + 4 files changed, 200 insertions(+), 64 deletions(-) diff --git a/mysql-test/r/federated.result b/mysql-test/r/federated.result index cecffbb1471..52304de7609 100644 --- a/mysql-test/r/federated.result +++ b/mysql-test/r/federated.result @@ -1843,6 +1843,30 @@ C3A4C3B6C3BCC39F D18DD184D184D0B5D0BAD182D0B8D0B2D0BDD183D18E drop table federated.t1; drop table federated.t1; +create table federated.t1 (a int primary key, b varchar(64)) +DEFAULT CHARSET=utf8; +create table federated.t1 (a int primary key, b varchar(64)) +ENGINE=FEDERATED +connection='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1' + DEFAULT CHARSET=utf8; +insert ignore into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe"); +select * from federated.t1; +a b +1 Larry +2 Curly +truncate federated.t1; +replace into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe"); +select * from federated.t1; +a b +1 Moe +2 Curly +update ignore federated.t1 set a=a+1; +select * from federated.t1; +a b +1 Moe +3 Curly +drop table federated.t1; +drop table federated.t1; DROP TABLE IF EXISTS federated.t1; DROP DATABASE IF EXISTS federated; DROP TABLE IF EXISTS federated.t1; diff --git a/mysql-test/t/federated.test b/mysql-test/t/federated.test index 894cd513914..bdd6076064a 100644 --- a/mysql-test/t/federated.test +++ b/mysql-test/t/federated.test @@ -1576,4 +1576,31 @@ connection slave; drop table federated.t1; +# +# BUG#21019 Federated Engine does not support REPLACE/INSERT IGNORE/UPDATE IGNORE +# +connection slave; +create table federated.t1 (a int primary key, b varchar(64)) + DEFAULT CHARSET=utf8; +connection master; +--replace_result $SLAVE_MYPORT SLAVE_PORT +eval create table federated.t1 (a int primary key, b varchar(64)) + ENGINE=FEDERATED + connection='mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/t1' + DEFAULT CHARSET=utf8; + +insert ignore into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe"); +select * from federated.t1; + +truncate federated.t1; +replace into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe"); +select * from federated.t1; + +update ignore federated.t1 set a=a+1; +select * from federated.t1; + +drop table federated.t1; +connection slave; +drop table federated.t1; + source include/federated_cleanup.inc; diff --git a/sql/ha_federated.cc b/sql/ha_federated.cc index dd4dd725be4..9412db4b6a6 100644 --- a/sql/ha_federated.cc +++ b/sql/ha_federated.cc @@ -348,6 +348,10 @@ pthread_mutex_t federated_mutex; // This is the mutex we use to // init the hash static int federated_init= FALSE; // Variable for checking the // init state of hash +static char ident_quote_char= '`'; // Character for quoting + // identifiers +static char value_quote_char= '\''; // Character for quoting + // literals /* Federated storage engine handlerton */ @@ -440,6 +444,58 @@ bool federated_db_end() return FALSE; } + +/** + @brief Append identifiers to the string. + + @param[in,out] string The target string. + @param[in] name Identifier name + @param[in] length Length of identifier name in bytes + @param[in] quote_char Quote char to use for quoting identifier. + + @return Operation Status + @retval FALSE OK + @retval TRUE There was an error appending to the string. + + @note This function is based upon the append_identifier() function + in sql_show.cc except that quoting always occurs. +*/ + +static bool append_ident(String *string, const char *name, uint length, + const char quote_char) +{ + bool result; + uint clen; + const char *name_end; + DBUG_ENTER("append_ident"); + + if (quote_char) + { + string->reserve(length * 2 + 2); + if ((result= string->append("e_char, 1, system_charset_info))) + goto err; + + for (name_end= name+length; name < name_end; name+= clen) + { + uchar c= *(uchar *) name; + if (!(clen= my_mbcharlen(system_charset_info, c))) + clen= 1; + if (clen == 1 && c == (uchar) quote_char && + (result= string->append("e_char, 1, system_charset_info))) + goto err; + if ((result= string->append(name, clen, string->charset()))) + goto err; + } + result= string->append("e_char, 1, system_charset_info); + } + else + result= string->append(name, length, system_charset_info); + +err: + DBUG_RETURN(result); +} + + /* Check (in create) whether the tables exists, and that it can be connected to @@ -458,7 +514,6 @@ bool federated_db_end() static int check_foreign_data_source(FEDERATED_SHARE *share, bool table_create_flag) { - char escaped_table_name[NAME_LEN*2]; char query_buffer[FEDERATED_QUERY_BUFFER_SIZE]; char error_buffer[FEDERATED_QUERY_BUFFER_SIZE]; uint error_code; @@ -499,7 +554,6 @@ static int check_foreign_data_source(FEDERATED_SHARE *share, } else { - int escaped_table_name_length= 0; /* Since we do not support transactions at this version, we can let the client API silently reconnect. For future versions, we will need more @@ -517,14 +571,8 @@ static int check_foreign_data_source(FEDERATED_SHARE *share, query.append(FEDERATED_SELECT); query.append(FEDERATED_STAR); query.append(FEDERATED_FROM); - query.append(FEDERATED_BTICK); - escaped_table_name_length= - escape_string_for_mysql(&my_charset_bin, (char*)escaped_table_name, - sizeof(escaped_table_name), - share->table_name, - share->table_name_length); - query.append(escaped_table_name, escaped_table_name_length); - query.append(FEDERATED_BTICK); + append_ident(&query, share->table_name, share->table_name_length, + ident_quote_char); query.append(FEDERATED_WHERE); query.append(FEDERATED_FALSE); @@ -784,9 +832,8 @@ uint ha_federated::convert_row_to_internal_format(byte *record, static bool emit_key_part_name(String *to, KEY_PART_INFO *part) { DBUG_ENTER("emit_key_part_name"); - if (to->append(FEDERATED_BTICK) || - to->append(part->field->field_name) || - to->append(FEDERATED_BTICK)) + if (append_ident(to, part->field->field_name, + strlen(part->field->field_name), ident_quote_char)) DBUG_RETURN(1); // Out of memory DBUG_RETURN(0); } @@ -1309,31 +1356,28 @@ static FEDERATED_SHARE *get_share(const char *table_name, TABLE *table) query.append(FEDERATED_SELECT); for (field= table->field; *field; field++) { - query.append(FEDERATED_BTICK); - query.append((*field)->field_name); - query.append(FEDERATED_BTICK); + append_ident(&query, (*field)->field_name, + strlen((*field)->field_name), ident_quote_char); query.append(FEDERATED_COMMA); } query.length(query.length()- strlen(FEDERATED_COMMA)); query.append(FEDERATED_FROM); - query.append(FEDERATED_BTICK); + + tmp_share.table_name_length= strlen(tmp_share.table_name); + append_ident(&query, tmp_share.table_name, + tmp_share.table_name_length, ident_quote_char); if (!(share= (FEDERATED_SHARE *) my_multi_malloc(MYF(MY_WME), &share, sizeof(*share), - &select_query, - query.length()+table->s->connect_string.length+1, + &select_query, query.length()+1, NullS))) goto error; memcpy(share, &tmp_share, sizeof(tmp_share)); + memcpy(select_query, query.ptr(), query.length()+1); - share->table_name_length= strlen(share->table_name); - /* TODO: share->table_name to LEX_STRING object */ - query.append(share->table_name, share->table_name_length); - query.append(FEDERATED_BTICK); share->select_query= select_query; - strmov(share->select_query, query.ptr()); share->use_count= 0; DBUG_PRINT("info", ("share->select_query %s", share->select_query)); @@ -1467,6 +1511,8 @@ int ha_federated::open(const char *name, int mode, uint test_if_locked) table->s->reclength); DBUG_PRINT("info", ("ref_length: %u", ref_length)); + reset(); + DBUG_RETURN(0); } @@ -1579,10 +1625,14 @@ int ha_federated::write_row(byte *buf) /* start both our field and field values strings */ - insert_string.append(FEDERATED_INSERT); - insert_string.append(FEDERATED_BTICK); - insert_string.append(share->table_name, share->table_name_length); - insert_string.append(FEDERATED_BTICK); + if (replace_duplicates) + insert_string.append(STRING_WITH_LEN("REPLACE INTO ")); + else if (ignore_duplicates) + insert_string.append(STRING_WITH_LEN("INSERT IGNORE INTO ")); + else + insert_string.append(STRING_WITH_LEN("INSERT INTO ")); + append_ident(&insert_string, share->table_name, + share->table_name_length, ident_quote_char); insert_string.append(FEDERATED_OPENPAREN); values_string.append(FEDERATED_VALUES); @@ -1599,14 +1649,15 @@ int ha_federated::write_row(byte *buf) else { (*field)->val_str(&insert_field_value_string); - values_string.append('\''); + values_string.append(value_quote_char); insert_field_value_string.print(&values_string); - values_string.append('\''); + values_string.append(value_quote_char); insert_field_value_string.length(0); } /* append the field name */ - insert_string.append((*field)->field_name); + append_ident(&insert_string, (*field)->field_name, + strlen((*field)->field_name), ident_quote_char); /* append the value */ values_string.append(insert_field_value_string); @@ -1688,9 +1739,8 @@ int ha_federated::optimize(THD* thd, HA_CHECK_OPT* check_opt) query.set_charset(system_charset_info); query.append(FEDERATED_OPTIMIZE); - query.append(FEDERATED_BTICK); - query.append(share->table_name, share->table_name_length); - query.append(FEDERATED_BTICK); + append_ident(&query, share->table_name, share->table_name_length, + ident_quote_char); if (mysql_real_query(mysql, query.ptr(), query.length())) { @@ -1711,9 +1761,8 @@ int ha_federated::repair(THD* thd, HA_CHECK_OPT* check_opt) query.set_charset(system_charset_info); query.append(FEDERATED_REPAIR); - query.append(FEDERATED_BTICK); - query.append(share->table_name, share->table_name_length); - query.append(FEDERATED_BTICK); + append_ident(&query, share->table_name, share->table_name_length, + ident_quote_char); if (check_opt->flags & T_QUICK) query.append(FEDERATED_QUICK); if (check_opt->flags & T_EXTEND) @@ -1788,10 +1837,12 @@ int ha_federated::update_row(const byte *old_data, byte *new_data) update_string.length(0); where_string.length(0); - update_string.append(FEDERATED_UPDATE); - update_string.append(FEDERATED_BTICK); - update_string.append(share->table_name); - update_string.append(FEDERATED_BTICK); + if (ignore_duplicates) + update_string.append(STRING_WITH_LEN("UPDATE IGNORE ")); + else + update_string.append(STRING_WITH_LEN("UPDATE ")); + append_ident(&update_string, share->table_name, + share->table_name_length, ident_quote_char); update_string.append(FEDERATED_SET); /* @@ -1806,8 +1857,11 @@ int ha_federated::update_row(const byte *old_data, byte *new_data) for (Field **field= table->field; *field; field++) { - where_string.append((*field)->field_name); - update_string.append((*field)->field_name); + uint field_name_length= strlen((*field)->field_name); + append_ident(&where_string, (*field)->field_name, field_name_length, + ident_quote_char); + append_ident(&update_string, (*field)->field_name, field_name_length, + ident_quote_char); update_string.append(FEDERATED_EQ); if ((*field)->is_null()) @@ -1816,9 +1870,9 @@ int ha_federated::update_row(const byte *old_data, byte *new_data) { /* otherwise = */ (*field)->val_str(&field_value); - update_string.append('\''); + update_string.append(value_quote_char); field_value.print(&update_string); - update_string.append('\''); + update_string.append(value_quote_char); field_value.length(0); } @@ -1829,9 +1883,9 @@ int ha_federated::update_row(const byte *old_data, byte *new_data) where_string.append(FEDERATED_EQ); (*field)->val_str(&field_value, (char*) (old_data + (*field)->offset())); - where_string.append('\''); + where_string.append(value_quote_char); field_value.print(&where_string); - where_string.append('\''); + where_string.append(value_quote_char); field_value.length(0); } @@ -1888,16 +1942,16 @@ int ha_federated::delete_row(const byte *buf) delete_string.length(0); delete_string.append(FEDERATED_DELETE); delete_string.append(FEDERATED_FROM); - delete_string.append(FEDERATED_BTICK); - delete_string.append(share->table_name); - delete_string.append(FEDERATED_BTICK); + append_ident(&delete_string, share->table_name, + share->table_name_length, ident_quote_char); delete_string.append(FEDERATED_WHERE); for (Field **field= table->field; *field; field++) { Field *cur_field= *field; data_string.length(0); - delete_string.append(cur_field->field_name); + append_ident(&delete_string, (*field)->field_name, + strlen((*field)->field_name), ident_quote_char); if (cur_field->is_null()) { @@ -1907,9 +1961,9 @@ int ha_federated::delete_row(const byte *buf) { delete_string.append(FEDERATED_EQ); cur_field->val_str(&data_string); - delete_string.append('\''); + delete_string.append(value_quote_char); data_string.print(&delete_string); - delete_string.append('\''); + delete_string.append(value_quote_char); } delete_string.append(FEDERATED_AND); @@ -2411,14 +2465,8 @@ int ha_federated::info(uint flag) { status_query_string.length(0); status_query_string.append(FEDERATED_INFO); - status_query_string.append(FEDERATED_SQUOTE); - - escape_string_for_mysql(&my_charset_bin, (char *)escaped_table_name, - sizeof(escaped_table_name), - share->table_name, - share->table_name_length); - status_query_string.append(escaped_table_name); - status_query_string.append(FEDERATED_SQUOTE); + append_ident(&status_query_string, share->table_name, + share->table_name_length, value_quote_char); if (mysql_real_query(mysql, status_query_string.ptr(), status_query_string.length())) @@ -2484,6 +2532,42 @@ error: } +/** + @brief Handles extra signals from MySQL server + + @param[in] operation Hint for storage engine + + @return Operation Status + @retval 0 OK + */ +int ha_federated::extra(ha_extra_function operation) +{ + DBUG_ENTER("ha_federated::extra"); + switch (operation) { + case HA_EXTRA_IGNORE_DUP_KEY: + ignore_duplicates= TRUE; + break; + case HA_EXTRA_NO_IGNORE_DUP_KEY: + ignore_duplicates= FALSE; + break; + case HA_EXTRA_WRITE_CAN_REPLACE: + replace_duplicates= TRUE; + break; + case HA_EXTRA_WRITE_CANNOT_REPLACE: + replace_duplicates= FALSE; + break; + case HA_EXTRA_RESET: + ignore_duplicates= FALSE; + replace_duplicates= FALSE; + break; + default: + /* do nothing */ + DBUG_PRINT("info",("unhandled operation: %d", (uint) operation)); + } + DBUG_RETURN(0); +} + + /* Used to delete all rows in a table. Both for cases of truncate and for cases where the optimizer realizes that all rows will be @@ -2506,9 +2590,8 @@ int ha_federated::delete_all_rows() query.set_charset(system_charset_info); query.append(FEDERATED_TRUNCATE); - query.append(FEDERATED_BTICK); - query.append(share->table_name); - query.append(FEDERATED_BTICK); + append_ident(&query, share->table_name, share->table_name_length, + ident_quote_char); /* TRUNCATE won't return anything in mysql_affected_rows diff --git a/sql/ha_federated.h b/sql/ha_federated.h index 09c934cb493..11a7547880a 100644 --- a/sql/ha_federated.h +++ b/sql/ha_federated.h @@ -157,6 +157,7 @@ class ha_federated: public handler MYSQL_ROW_OFFSET current_position; // Current position used by ::position() int remote_error_number; char remote_error_buf[FEDERATED_QUERY_BUFFER_SIZE]; + bool ignore_duplicates, replace_duplicates; private: /* @@ -284,6 +285,7 @@ public: int rnd_pos(byte *buf, byte *pos); //required void position(const byte *record); //required int info(uint); //required + int extra(ha_extra_function operation); void update_auto_increment(void); int repair(THD* thd, HA_CHECK_OPT* check_opt); From 6edc4dccdc930161dde1aaee27429c6b7891d825 Mon Sep 17 00:00:00 2001 From: "svoj@mysql.com/june.mysql.com" <> Date: Thu, 28 Jun 2007 14:04:20 +0500 Subject: [PATCH 040/127] BUG#29207 - archive table reported as corrupt by check table After merge fix. --- mysql-test/r/archive.result | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mysql-test/r/archive.result b/mysql-test/r/archive.result index 59462e848d2..36b013703d8 100644 --- a/mysql-test/r/archive.result +++ b/mysql-test/r/archive.result @@ -12675,3 +12675,10 @@ select * from t1; i 1 drop table t1; +create table t1(a longblob) engine=archive; +insert into t1 set a=''; +insert into t1 set a='a'; +check table t1 extended; +Table Op Msg_type Msg_text +test.t1 check status OK +drop table t1; From 78349b2494fb1f00bfb58e29da776f84d9e52add Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.(none)" <> Date: Thu, 28 Jun 2007 11:13:18 +0200 Subject: [PATCH 041/127] Bug#29414 HPUX build fails - 'noinst_HEADERS' does not exist --- sql/Makefile.am | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sql/Makefile.am b/sql/Makefile.am index fae35222128..52a4c96f451 100644 --- a/sql/Makefile.am +++ b/sql/Makefile.am @@ -43,8 +43,7 @@ mysqld_LDADD = @MYSQLD_EXTRA_LDFLAGS@ \ @innodb_system_libs@ \ @ndbcluster_libs@ @ndbcluster_system_libs@ \ $(LDADD) $(CXXLDFLAGS) $(WRAPLIBS) @LIBDL@ \ - $(yassl_libs) $(openssl_libs) \ - @MYSQLD_EXTRA_LIBS@ + $(yassl_libs) $(openssl_libs) @MYSQLD_EXTRA_LIBS@ noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \ item_strfunc.h item_timefunc.h item_uniq.h \ From 119f6cb0002115198631ed1cfb9eb4d21f5002d6 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.(none)" <> Date: Thu, 28 Jun 2007 11:18:15 +0200 Subject: [PATCH 042/127] WL#3933 Split main test suite to rpl, rpl_ndb and ndb - Cleaup Makefile.am in mysql-test making it easier to add new test files and suite directories --- mysql-test/Makefile.am | 126 +++++++---------------------------------- 1 file changed, 21 insertions(+), 105 deletions(-) diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index 0a6dbc3663a..549a9b8ac7d 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -18,125 +18,41 @@ ## Process this file with automake to create Makefile.in SUBDIRS = ndb -DIST_SUBDIRS=ndb -benchdir_root= $(prefix) -testdir = $(benchdir_root)/mysql-test -EXTRA_SCRIPTS = mysql-test-run-shell.sh install_test_db.sh \ - valgrind.supp $(PRESCRIPTS) -EXTRA_DIST = $(EXTRA_SCRIPTS) suite -GENSCRIPTS = mysql-test-run-shell install_test_db mtr mysql-test-run PRESCRIPTS = mysql-test-run.pl + +GENSCRIPTS = mysql-test-run-shell \ + install_test_db \ + mtr \ + mysql-test-run + +EXTRA_SCRIPTS = mysql-test-run-shell.sh \ + install_test_db.sh \ + valgrind.supp $(PRESCRIPTS) + +EXTRA_DIST_DIRS = t r include lib std_data suite extra + +EXTRA_DIST = $(EXTRA_DIST_DIRS) $(EXTRA_SCRIPTS) README + test_SCRIPTS = $(GENSCRIPTS) $(PRESCRIPTS) -test_DATA = std_data/client-key.pem std_data/client-cert.pem \ - std_data/cacert.pem std_data/server-cert.pem \ - std_data/server-key.pem + CLEANFILES = $(GENSCRIPTS) -INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I.. - - -dist-hook: - mkdir -p \ - $(distdir)/t \ - $(distdir)/extra/binlog_tests \ - $(distdir)/extra/rpl_tests \ - $(distdir)/r \ - $(distdir)/include \ - $(distdir)/std_data \ - $(distdir)/std_data/ndb_backup50 \ - $(distdir)/std_data/ndb_backup51 \ - $(distdir)/lib - -$(INSTALL_DATA) $(srcdir)/t/*.def $(distdir)/t - $(INSTALL_DATA) $(srcdir)/t/*.test $(distdir)/t - -$(INSTALL_DATA) $(srcdir)/t/*.imtest $(distdir)/t - $(INSTALL_DATA) $(srcdir)/t/*.sql $(distdir)/t - -$(INSTALL_DATA) $(srcdir)/t/*.disabled $(distdir)/t - $(INSTALL_DATA) $(srcdir)/t/*.opt $(srcdir)/t/*.slave-mi $(distdir)/t - $(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(distdir)/t - $(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.test $(distdir)/extra/binlog_tests - $(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.test $(distdir)/extra/rpl_tests - -$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.opt $(distdir)/extra/binlog_tests - -$(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.opt $(distdir)/extra/rpl_tests - $(INSTALL_DATA) $(srcdir)/include/*.inc $(distdir)/include - $(INSTALL_DATA) $(srcdir)/include/*.test $(distdir)/include - $(INSTALL_DATA) $(srcdir)/r/*.result $(srcdir)/r/*.require $(distdir)/r - $(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(distdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/Index.xml $(distdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/*.dat $(srcdir)/std_data/*.000001 $(distdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(distdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/*.pem $(distdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/*.frm $(distdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(distdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(distdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50/BACKUP* $(distdir)/std_data/ndb_backup50 - $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51/BACKUP* $(distdir)/std_data/ndb_backup51 - $(INSTALL_DATA) $(srcdir)/lib/*.pl $(distdir)/lib - -rm -rf `find $(distdir)/suite -type d -name SCCS` $(distdir)/suite/row_lock - -install-data-local: - $(mkinstalldirs) \ - $(DESTDIR)$(testdir)/t \ - $(DESTDIR)$(testdir)/extra/binlog_tests \ - $(DESTDIR)$(testdir)/extra/rpl_tests \ - $(DESTDIR)$(testdir)/r \ - $(DESTDIR)$(testdir)/include \ - $(DESTDIR)$(testdir)/std_data \ - $(DESTDIR)$(testdir)/std_data/ndb_backup50 \ - $(DESTDIR)$(testdir)/std_data/ndb_backup51 \ - $(DESTDIR)$(testdir)/lib - $(INSTALL_DATA) $(srcdir)/README $(DESTDIR)$(testdir) - -$(INSTALL_DATA) $(srcdir)/t/*.def $(DESTDIR)$(testdir)/t - $(INSTALL_DATA) $(srcdir)/t/*.test $(DESTDIR)$(testdir)/t - -$(INSTALL_DATA) $(srcdir)/t/*.imtest $(DESTDIR)$(testdir)/t - $(INSTALL_DATA) $(srcdir)/t/*.sql $(DESTDIR)$(testdir)/t - -$(INSTALL_DATA) $(srcdir)/t/*.disabled $(DESTDIR)$(testdir)/t - $(INSTALL_DATA) $(srcdir)/t/*.opt $(DESTDIR)$(testdir)/t - $(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(DESTDIR)$(testdir)/t - $(INSTALL_DATA) $(srcdir)/t/*.slave-mi $(DESTDIR)$(testdir)/t - $(INSTALL_DATA) $(srcdir)/r/*.result $(DESTDIR)$(testdir)/r - $(INSTALL_DATA) $(srcdir)/r/*.require $(DESTDIR)$(testdir)/r - $(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.test $(DESTDIR)$(testdir)/extra/binlog_tests - $(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.test $(DESTDIR)$(testdir)/extra/rpl_tests - -$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.opt $(DESTDIR)$(testdir)/extra/binlog_tests - -$(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.opt $(DESTDIR)$(testdir)/extra/rpl_tests - $(INSTALL_DATA) $(srcdir)/include/*.inc $(DESTDIR)$(testdir)/include - $(INSTALL_DATA) $(srcdir)/include/*.test $(DESTDIR)$(testdir)/include - $(INSTALL_DATA) $(srcdir)/std_data/*.dat $(DESTDIR)$(testdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/*.*001 $(DESTDIR)$(testdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(DESTDIR)$(testdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(DESTDIR)$(testdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/Index.xml $(DESTDIR)$(testdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/*.pem $(DESTDIR)$(testdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/*.frm $(DESTDIR)$(testdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(DESTDIR)$(testdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup50 - $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup51 - $(INSTALL_DATA) $(srcdir)/lib/*.pl $(DESTDIR)$(testdir)/lib - for f in `(cd $(srcdir); find suite -type f | egrep -v 'SCCS|row_lock')`; \ - do \ - d=$(DESTDIR)$(testdir)/`dirname $$f`; \ - mkdir -p $$d ; \ - $(INSTALL_DATA) $(srcdir)/$$f $$d ; \ - done - -uninstall-local: - @RM@ -f -r $(DESTDIR)$(testdir) # mtr - a shortcut for executing mysql-test-run.pl mtr: - $(RM) -f mtr - $(LN_S) mysql-test-run.pl mtr + @RM@ -f mtr + @LN_S@ mysql-test-run.pl mtr # mysql-test-run - a shortcut for executing mysql-test-run.pl mysql-test-run: - $(RM) -f mysql-test-run - $(LN_S) mysql-test-run.pl mysql-test-run + @RM@ -f mysql-test-run + @LN_S@ mysql-test-run.pl mysql-test-run SUFFIXES = .sh +testdir = $(prefix)/mysql-test + .sh: @RM@ -f $@ $@-t @SED@ \ From a1a1dbc753f2dff31bd6e8c9e787658343ba6714 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.(none)" <> Date: Thu, 28 Jun 2007 11:23:59 +0200 Subject: [PATCH 043/127] Bug#29361 mysqldump creates stray file when too long path name is passed - Move the check of too long path to 'get_one_option' --- client/mysqldump.c | 23 ++++++++++++----------- mysql-test/r/mysqldump.result | 2 +- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/client/mysqldump.c b/client/mysqldump.c index fc461a5f559..1a024a923f5 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -686,6 +686,18 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), break; case 'T': opt_disable_keys=0; + + if (strlen(argument) >= FN_REFLEN) + { + /* + This check is made because the some the file functions below + have FN_REFLEN sized stack allocated buffers and will cause + a crash even if the input destination buffer is large enough + to hold the output. + */ + die(EX_USAGE, "Input filename too long: %s", argument); + } + break; case '#': DBUG_PUSH(argument ? argument : default_dbug_option); @@ -2324,17 +2336,6 @@ static void dump_table(char *table, char *db) { char filename[FN_REFLEN], tmp_path[FN_REFLEN]; - if (strlen(path) >= FN_REFLEN) - { - /* - This check is made because the some the file functions below - have FN_REFLEN sized stack allocated buffers and will cause - a crash even if the input destination buffer is large enough - to hold the output. - */ - die(EX_USAGE, "Input filename or options too long: %s", path); - } - /* Convert the path to native os format and resolve to the full filepath. diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index 7865148905e..8eac7c7e715 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -3206,7 +3206,7 @@ DROP TABLE t1; # CREATE TABLE t1(a int); INSERT INTO t1 VALUES (1), (2); -mysqldump: Input filename or options too long: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +mysqldump: Input filename too long: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa DROP TABLE t1; CREATE TABLE t2 (a int); CREATE TABLE t3 (a int); From b0b0b0fbc4c679f0ae9e0159ad26eb49ae484ab3 Mon Sep 17 00:00:00 2001 From: "antony@ppcg5.local" <> Date: Thu, 28 Jun 2007 13:36:26 -0700 Subject: [PATCH 044/127] Bug#25511 "Federated INSERT failures" Federated does not correctly handle "INSERT...ON DUPLICATE KEY UPDATE" However, implementing such support is not reasonably possible without increasing complexity of the storage engine: checking that constraints on remote server match local server and parsing error messages. This patch causes 'ON DUPLICATE KEY' to fail with ER_DUP_KEY message if a conflict occurs and not to fail silently. --- include/my_base.h | 8 +++++++- mysql-test/r/federated.result | 15 +++++++++++++++ mysql-test/t/federated.test | 26 ++++++++++++++++++++++++++ sql/ha_federated.cc | 10 +++++++++- sql/ha_federated.h | 1 + sql/sql_insert.cc | 8 ++++++++ 6 files changed, 66 insertions(+), 2 deletions(-) diff --git a/include/my_base.h b/include/my_base.h index d07a4de8e6a..a26217f8050 100644 --- a/include/my_base.h +++ b/include/my_base.h @@ -168,7 +168,13 @@ enum ha_extra_function { These flags are reset by the handler::extra(HA_EXTRA_RESET) call. */ HA_EXTRA_DELETE_CANNOT_BATCH, - HA_EXTRA_UPDATE_CANNOT_BATCH + HA_EXTRA_UPDATE_CANNOT_BATCH, + /* + Inform handler that write_row() should immediately report constraint + violations because a INSERT...ON DUPLICATE KEY UPDATE is in being + performed. + */ + HA_EXTRA_INSERT_WITH_UPDATE }; /* The following is parameter to ha_panic() */ diff --git a/mysql-test/r/federated.result b/mysql-test/r/federated.result index 52304de7609..4bef92319fb 100644 --- a/mysql-test/r/federated.result +++ b/mysql-test/r/federated.result @@ -1867,6 +1867,21 @@ a b 3 Curly drop table federated.t1; drop table federated.t1; +create table federated.t1 (a int primary key, b varchar(64)) +DEFAULT CHARSET=utf8; +create table federated.t1 (a int primary key, b varchar(64)) +ENGINE=FEDERATED +connection='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1' + DEFAULT CHARSET=utf8; +insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe") +on duplicate key update a=a+100; +ERROR 23000: Can't write; duplicate key in table 't1' +select * from federated.t1; +a b +1 Larry +2 Curly +drop table federated.t1; +drop table federated.t1; DROP TABLE IF EXISTS federated.t1; DROP DATABASE IF EXISTS federated; DROP TABLE IF EXISTS federated.t1; diff --git a/mysql-test/t/federated.test b/mysql-test/t/federated.test index bdd6076064a..bedb6b36d61 100644 --- a/mysql-test/t/federated.test +++ b/mysql-test/t/federated.test @@ -1603,4 +1603,30 @@ drop table federated.t1; connection slave; drop table federated.t1; +# +# BUG#25511 Federated Insert failures. +# +# When the user performs a INSERT...ON DUPLICATE KEY UPDATE, we want +# it to fail if a duplicate key exists instead of ignoring it. +# +connection slave; +create table federated.t1 (a int primary key, b varchar(64)) + DEFAULT CHARSET=utf8; +connection master; +--replace_result $SLAVE_MYPORT SLAVE_PORT +eval create table federated.t1 (a int primary key, b varchar(64)) + ENGINE=FEDERATED + connection='mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/t1' + DEFAULT CHARSET=utf8; + +--error ER_DUP_KEY +insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe") +on duplicate key update a=a+100; +select * from federated.t1; + +drop table federated.t1; +connection slave; +drop table federated.t1; + + source include/federated_cleanup.inc; diff --git a/sql/ha_federated.cc b/sql/ha_federated.cc index 9412db4b6a6..e691831bbc9 100644 --- a/sql/ha_federated.cc +++ b/sql/ha_federated.cc @@ -1627,7 +1627,7 @@ int ha_federated::write_row(byte *buf) */ if (replace_duplicates) insert_string.append(STRING_WITH_LEN("REPLACE INTO ")); - else if (ignore_duplicates) + else if (ignore_duplicates && !insert_dup_update) insert_string.append(STRING_WITH_LEN("INSERT IGNORE INTO ")); else insert_string.append(STRING_WITH_LEN("INSERT INTO ")); @@ -2548,6 +2548,7 @@ int ha_federated::extra(ha_extra_function operation) ignore_duplicates= TRUE; break; case HA_EXTRA_NO_IGNORE_DUP_KEY: + insert_dup_update= FALSE; ignore_duplicates= FALSE; break; case HA_EXTRA_WRITE_CAN_REPLACE: @@ -2556,7 +2557,11 @@ int ha_federated::extra(ha_extra_function operation) case HA_EXTRA_WRITE_CANNOT_REPLACE: replace_duplicates= FALSE; break; + case HA_EXTRA_INSERT_WITH_UPDATE: + insert_dup_update= TRUE; + break; case HA_EXTRA_RESET: + insert_dup_update= FALSE; ignore_duplicates= FALSE; replace_duplicates= FALSE; break; @@ -2699,6 +2704,9 @@ int ha_federated::stash_remote_error() DBUG_ENTER("ha_federated::stash_remote_error()"); remote_error_number= mysql_errno(mysql); strmake(remote_error_buf, mysql_error(mysql), sizeof(remote_error_buf)-1); + if (remote_error_number == ER_DUP_ENTRY || + remote_error_number == ER_DUP_KEY) + DBUG_RETURN(HA_ERR_FOUND_DUPP_KEY); DBUG_RETURN(HA_FEDERATED_ERROR_WITH_REMOTE_SYSTEM); } diff --git a/sql/ha_federated.h b/sql/ha_federated.h index 11a7547880a..28c89561b2c 100644 --- a/sql/ha_federated.h +++ b/sql/ha_federated.h @@ -158,6 +158,7 @@ class ha_federated: public handler int remote_error_number; char remote_error_buf[FEDERATED_QUERY_BUFFER_SIZE]; bool ignore_duplicates, replace_duplicates; + bool insert_dup_update; private: /* diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 228fc8860ae..3bfd84b324b 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -715,6 +715,8 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list, */ table->file->extra(HA_EXTRA_RETRIEVE_ALL_COLS); } + if (duplic == DUP_UPDATE) + table->file->extra(HA_EXTRA_INSERT_WITH_UPDATE); /* let's *try* to start bulk inserts. It won't necessary start them as values_list.elements should be greater than @@ -2434,6 +2436,8 @@ bool Delayed_insert::handle_inserts(void) table->file->extra(HA_EXTRA_WRITE_CAN_REPLACE); using_opt_replace= 1; } + if (info.handle_duplicates == DUP_UPDATE) + table->file->extra(HA_EXTRA_INSERT_WITH_UPDATE); thd.clear_error(); // reset error for binlog if (write_record(&thd, table, &info)) { @@ -2761,6 +2765,8 @@ select_insert::prepare(List &values, SELECT_LEX_UNIT *u) table->file->extra(HA_EXTRA_WRITE_CAN_REPLACE); table->file->extra(HA_EXTRA_RETRIEVE_ALL_COLS); } + if (info.handle_duplicates == DUP_UPDATE) + table->file->extra(HA_EXTRA_INSERT_WITH_UPDATE); thd->no_trans_update.stmt= FALSE; thd->abort_on_warning= (!info.ignore && (thd->variables.sql_mode & @@ -3218,6 +3224,8 @@ select_create::prepare(List &values, SELECT_LEX_UNIT *u) table->file->extra(HA_EXTRA_WRITE_CAN_REPLACE); table->file->extra(HA_EXTRA_RETRIEVE_ALL_COLS); } + if (info.handle_duplicates == DUP_UPDATE) + table->file->extra(HA_EXTRA_INSERT_WITH_UPDATE); if (!thd->prelocked_mode) table->file->start_bulk_insert((ha_rows) 0); thd->no_trans_update.stmt= FALSE; From fc241de333b049f46f462696376d607d7f8b7260 Mon Sep 17 00:00:00 2001 From: "antony@ppcg5.local" <> Date: Thu, 28 Jun 2007 16:03:01 -0700 Subject: [PATCH 045/127] Bug#25513 "Federared Transactions Failure" Bug occurs when the user performs an operation which inserts more than one row into the federated table and the federated table references a remote table stored within a transactional storage engine. When the insert operation for any one row in the statement fails due to constraint violation, the federated engine is unable to perform statement rollback and so the remote table contains a partial commit. The user would expect a statement to perform the same so a statement rollback is expected. This bug was fixed by implementing bulk-insert handling into the federated storage engine. This will relieve the bug for most common situations by enabling the generation of a multi-row insert into the remote table and thus permitting the remote table to perform statement rollback when neccessary. The multi-row insert is limited to the maximum packet size between servers and should the size overflow, more than one insert statement will be sent and this bug will reappear. Multi-row insert is disabled when an "INSERT...ON DUPLICATE KEY UPDATE" is being performed. The bulk-insert handling will offer a significant performance boost when inserting a large number of small rows. This patch builds on Bug29019 and Bug25511 --- mysql-test/r/federated_innodb.result | 34 ++++ mysql-test/t/federated_innodb-slave.opt | 1 + mysql-test/t/federated_innodb.test | 34 ++++ sql/ha_federated.cc | 232 +++++++++++++++++++++--- sql/ha_federated.h | 20 +- 5 files changed, 283 insertions(+), 38 deletions(-) create mode 100644 mysql-test/r/federated_innodb.result create mode 100644 mysql-test/t/federated_innodb-slave.opt create mode 100644 mysql-test/t/federated_innodb.test diff --git a/mysql-test/r/federated_innodb.result b/mysql-test/r/federated_innodb.result new file mode 100644 index 00000000000..70ba3acb279 --- /dev/null +++ b/mysql-test/r/federated_innodb.result @@ -0,0 +1,34 @@ +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; +stop slave; +DROP DATABASE IF EXISTS federated; +CREATE DATABASE federated; +DROP DATABASE IF EXISTS federated; +CREATE DATABASE federated; +create table federated.t1 (a int primary key, b varchar(64)) +engine=myisam; +create table federated.t1 (a int primary key, b varchar(64)) +engine=federated +connection='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1'; +insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe"); +ERROR 23000: Can't write; duplicate key in table 't1' +select * from federated.t1; +a b +1 Larry +2 Curly +truncate federated.t1; +alter table federated.t1 engine=innodb; +insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe"); +ERROR 23000: Can't write; duplicate key in table 't1' +select * from federated.t1; +a b +drop table federated.t1; +drop table federated.t1; +DROP TABLE IF EXISTS federated.t1; +DROP DATABASE IF EXISTS federated; +DROP TABLE IF EXISTS federated.t1; +DROP DATABASE IF EXISTS federated; diff --git a/mysql-test/t/federated_innodb-slave.opt b/mysql-test/t/federated_innodb-slave.opt new file mode 100644 index 00000000000..627becdbfb5 --- /dev/null +++ b/mysql-test/t/federated_innodb-slave.opt @@ -0,0 +1 @@ +--innodb diff --git a/mysql-test/t/federated_innodb.test b/mysql-test/t/federated_innodb.test new file mode 100644 index 00000000000..772e37a2929 --- /dev/null +++ b/mysql-test/t/federated_innodb.test @@ -0,0 +1,34 @@ +source include/federated.inc; +source include/have_innodb.inc; + +# +# Bug#25513 Federated transaction failures +# +connection slave; +create table federated.t1 (a int primary key, b varchar(64)) + engine=myisam; +connection master; +--replace_result $SLAVE_MYPORT SLAVE_PORT +eval create table federated.t1 (a int primary key, b varchar(64)) + engine=federated + connection='mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/t1'; + +--error ER_DUP_KEY +insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe"); +select * from federated.t1; + +connection slave; +truncate federated.t1; +alter table federated.t1 engine=innodb; +connection master; + +--error ER_DUP_KEY +insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe"); +select * from federated.t1; + +drop table federated.t1; +connection slave; +drop table federated.t1; + + +source include/federated_cleanup.inc; diff --git a/sql/ha_federated.cc b/sql/ha_federated.cc index e691831bbc9..8551db6be16 100644 --- a/sql/ha_federated.cc +++ b/sql/ha_federated.cc @@ -352,6 +352,7 @@ static char ident_quote_char= '`'; // Character for quoting // identifiers static char value_quote_char= '\''; // Character for quoting // literals +static const int bulk_padding= 64; // bytes "overhead" in packet /* Federated storage engine handlerton */ @@ -773,7 +774,9 @@ error: ha_federated::ha_federated(TABLE *table_arg) :handler(&federated_hton, table_arg), mysql(0), stored_result(0) -{} +{ + bzero(&bulk_insert, sizeof(bulk_insert)); +} /* @@ -1584,6 +1587,83 @@ inline uint field_in_record_is_null(TABLE *table, DBUG_RETURN(0); } + +/** + @brief Construct the INSERT statement. + + @details This method will construct the INSERT statement and appends it to + the supplied query string buffer. + + @return + @retval FALSE No error + @retval TRUE Failure +*/ + +bool ha_federated::append_stmt_insert(String *query) +{ + char insert_buffer[FEDERATED_QUERY_BUFFER_SIZE]; + Field **field; + uint tmp_length; + + /* The main insert query string */ + String insert_string(insert_buffer, sizeof(insert_buffer), &my_charset_bin); + DBUG_ENTER("ha_federated::append_stmt_insert"); + + insert_string.length(0); + + if (replace_duplicates) + insert_string.append(STRING_WITH_LEN("REPLACE INTO ")); + else if (ignore_duplicates && !insert_dup_update) + insert_string.append(STRING_WITH_LEN("INSERT IGNORE INTO ")); + else + insert_string.append(STRING_WITH_LEN("INSERT INTO ")); + append_ident(&insert_string, share->table_name, share->table_name_length, + ident_quote_char); + insert_string.append(FEDERATED_OPENPAREN); + tmp_length= insert_string.length() - strlen(FEDERATED_COMMA); + + /* + loop through the field pointer array, add any fields to both the values + list and the fields list that match the current query id + */ + for (field= table->field; *field; field++) + { + /* append the field name */ + append_ident(&insert_string, (*field)->field_name, + strlen((*field)->field_name), ident_quote_char); + + /* append commas between both fields and fieldnames */ + /* + unfortunately, we can't use the logic + if *(fields + 1) to make the following + appends conditional because we may not append + if the next field doesn't match the condition: + (((*field)->query_id && (*field)->query_id == current_query_id) + */ + insert_string.append(FEDERATED_COMMA); + } + + /* + remove trailing comma + */ + insert_string.length(insert_string.length() - strlen(FEDERATED_COMMA)); + + /* + if there were no fields, we don't want to add a closing paren + AND, we don't want to chop off the last char '(' + insert will be "INSERT INTO t1 VALUES ();" + */ + if (insert_string.length() > tmp_length) + { + insert_string.append(FEDERATED_CLOSEPAREN); + } + + insert_string.append(FEDERATED_VALUES); + + DBUG_RETURN(query->append(insert_string)); +} + + /* write_row() inserts a row. No extra() hint is given currently if a bulk load is happeneding. buf() is a byte array of data. You can use the field @@ -1600,13 +1680,14 @@ inline uint field_in_record_is_null(TABLE *table, int ha_federated::write_row(byte *buf) { - char insert_buffer[FEDERATED_QUERY_BUFFER_SIZE]; char values_buffer[FEDERATED_QUERY_BUFFER_SIZE]; char insert_field_value_buffer[STRING_BUFFER_USUAL_SIZE]; Field **field; + uint tmp_length; + int error= 0; + bool use_bulk_insert; + bool auto_increment_update_required= table->next_number_field; - /* The main insert query string */ - String insert_string(insert_buffer, sizeof(insert_buffer), &my_charset_bin); /* The string containing the values to be added to the insert */ String values_string(values_buffer, sizeof(values_buffer), &my_charset_bin); /* The actual value of the field, to be added to the values_string */ @@ -1614,7 +1695,6 @@ int ha_federated::write_row(byte *buf) sizeof(insert_field_value_buffer), &my_charset_bin); values_string.length(0); - insert_string.length(0); insert_field_value_string.length(0); DBUG_ENTER("ha_federated::write_row"); @@ -1624,19 +1704,19 @@ int ha_federated::write_row(byte *buf) /* start both our field and field values strings + We must disable multi-row insert for "INSERT...ON DUPLICATE KEY UPDATE" + Ignore duplicates is always true when insert_dup_update is true. + When replace_duplicates == TRUE, we can safely enable multi-row insert. + When performing multi-row insert, we only collect the columns values for + the row. The start of the statement is only created when the first + row is copied in to the bulk_insert string. */ - if (replace_duplicates) - insert_string.append(STRING_WITH_LEN("REPLACE INTO ")); - else if (ignore_duplicates && !insert_dup_update) - insert_string.append(STRING_WITH_LEN("INSERT IGNORE INTO ")); - else - insert_string.append(STRING_WITH_LEN("INSERT INTO ")); - append_ident(&insert_string, share->table_name, - share->table_name_length, ident_quote_char); - insert_string.append(FEDERATED_OPENPAREN); + if (!(use_bulk_insert= bulk_insert.str && + (!insert_dup_update || replace_duplicates))) + append_stmt_insert(&values_string); - values_string.append(FEDERATED_VALUES); values_string.append(FEDERATED_OPENPAREN); + tmp_length= values_string.length(); /* loop through the field pointer array, add any fields to both the values @@ -1655,9 +1735,6 @@ int ha_federated::write_row(byte *buf) insert_field_value_string.length(0); } - /* append the field name */ - append_ident(&insert_string, (*field)->field_name, - strlen((*field)->field_name), ident_quote_char); /* append the value */ values_string.append(insert_field_value_string); @@ -1671,32 +1748,61 @@ int ha_federated::write_row(byte *buf) if the next field doesn't match the condition: (((*field)->query_id && (*field)->query_id == current_query_id) */ - insert_string.append(FEDERATED_COMMA); values_string.append(FEDERATED_COMMA); } - /* - remove trailing comma - */ - insert_string.length(insert_string.length() - strlen(FEDERATED_COMMA)); /* if there were no fields, we don't want to add a closing paren AND, we don't want to chop off the last char '(' insert will be "INSERT INTO t1 VALUES ();" */ - if (table->s->fields) + if (values_string.length() > tmp_length) { /* chops off leading commas */ values_string.length(values_string.length() - strlen(FEDERATED_COMMA)); - insert_string.append(FEDERATED_CLOSEPAREN); } /* we always want to append this, even if there aren't any fields */ values_string.append(FEDERATED_CLOSEPAREN); - /* add the values */ - insert_string.append(values_string); + if (use_bulk_insert) + { + /* + Send the current bulk insert out if appending the current row would + cause the statement to overflow the packet size, otherwise set + auto_increment_update_required to FALSE as no query was executed. + */ + if (bulk_insert.length + values_string.length() + bulk_padding > + mysql->net.max_packet_size && bulk_insert.length) + { + error= mysql_real_query(mysql, bulk_insert.str, bulk_insert.length); + bulk_insert.length= 0; + } + else + auto_increment_update_required= FALSE; + + if (bulk_insert.length == 0) + { + char insert_buffer[FEDERATED_QUERY_BUFFER_SIZE]; + String insert_string(insert_buffer, sizeof(insert_buffer), + &my_charset_bin); + insert_string.length(0); + append_stmt_insert(&insert_string); + dynstr_append_mem(&bulk_insert, insert_string.ptr(), + insert_string.length()); + } + else + dynstr_append_mem(&bulk_insert, ",", 1); - if (mysql_real_query(mysql, insert_string.ptr(), insert_string.length())) + dynstr_append_mem(&bulk_insert, values_string.ptr(), + values_string.length()); + } + else + { + error= mysql_real_query(mysql, values_string.ptr(), + values_string.length()); + } + + if (error) { DBUG_RETURN(stash_remote_error()); } @@ -1704,12 +1810,79 @@ int ha_federated::write_row(byte *buf) If the table we've just written a record to contains an auto_increment field, then store the last_insert_id() value from the foreign server */ - if (table->next_number_field) + if (auto_increment_update_required) update_auto_increment(); DBUG_RETURN(0); } + +/** + @brief Prepares the storage engine for bulk inserts. + + @param[in] rows estimated number of rows in bulk insert + or 0 if unknown. + + @details Initializes memory structures required for bulk insert. +*/ + +void ha_federated::start_bulk_insert(ha_rows rows) +{ + uint page_size; + DBUG_ENTER("ha_federated::start_bulk_insert"); + + dynstr_free(&bulk_insert); + + /** + We don't bother with bulk-insert semantics when the estimated rows == 1 + The rows value will be 0 if the server does not know how many rows + would be inserted. This can occur when performing INSERT...SELECT + */ + + if (rows == 1) + DBUG_VOID_RETURN; + + page_size= (uint) my_getpagesize(); + + if (init_dynamic_string(&bulk_insert, NULL, page_size, page_size)) + DBUG_VOID_RETURN; + + bulk_insert.length= 0; + DBUG_VOID_RETURN; +} + + +/** + @brief End bulk insert. + + @details This method will send any remaining rows to the remote server. + Finally, it will deinitialize the bulk insert data structure. + + @return Operation status + @retval 0 No error + @retval != 0 Error occured at remote server. Also sets my_errno. +*/ + +int ha_federated::end_bulk_insert() +{ + int error= 0; + DBUG_ENTER("ha_federated::end_bulk_insert"); + + if (bulk_insert.str && bulk_insert.length) + { + if (mysql_real_query(mysql, bulk_insert.str, bulk_insert.length)) + error= stash_remote_error(); + else + if (table->next_number_field) + update_auto_increment(); + } + + dynstr_free(&bulk_insert); + + DBUG_RETURN(my_errno= error); +} + + /* ha_federated::update_auto_increment @@ -2451,7 +2624,6 @@ int ha_federated::info(uint flag) { char error_buffer[FEDERATED_QUERY_BUFFER_SIZE]; char status_buf[FEDERATED_QUERY_BUFFER_SIZE]; - char escaped_table_name[FEDERATED_QUERY_BUFFER_SIZE]; int error; uint error_code; MYSQL_RES *result= 0; diff --git a/sql/ha_federated.h b/sql/ha_federated.h index 28c89561b2c..b5e1c217eb5 100644 --- a/sql/ha_federated.h +++ b/sql/ha_federated.h @@ -159,6 +159,7 @@ class ha_federated: public handler char remote_error_buf[FEDERATED_QUERY_BUFFER_SIZE]; bool ignore_duplicates, replace_duplicates; bool insert_dup_update; + DYNAMIC_STRING bulk_insert; private: /* @@ -173,6 +174,14 @@ private: bool records_in_range); int stash_remote_error(); + bool append_stmt_insert(String *query); + + int read_next(byte *buf, MYSQL_RES *result); + int index_read_idx_with_result_set(byte *buf, uint index, + const byte *key, + uint key_len, + ha_rkey_function find_flag, + MYSQL_RES **result); public: ha_federated(TABLE *table_arg); ~ha_federated() @@ -258,6 +267,8 @@ public: int open(const char *name, int mode, uint test_if_locked); // required int close(void); // required + void start_bulk_insert(ha_rows rows); + int end_bulk_insert(); int write_row(byte *buf); int update_row(const byte *old_data, byte *new_data); int delete_row(const byte *buf); @@ -301,14 +312,7 @@ public: THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to, enum thr_lock_type lock_type); //required - virtual bool get_error_message(int error, String *buf); - - int read_next(byte *buf, MYSQL_RES *result); - int index_read_idx_with_result_set(byte *buf, uint index, - const byte *key, - uint key_len, - ha_rkey_function find_flag, - MYSQL_RES **result); + bool get_error_message(int error, String *buf); }; bool federated_db_init(void); From f4b9d297947e1741ae67f07fa1b6cfc7f94b411e Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.(none)" <> Date: Fri, 29 Jun 2007 09:00:52 +0200 Subject: [PATCH 046/127] Cset exclude: msvensson@pilot.(none)|ChangeSet|20070628091815|48577 --- mysql-test/Makefile.am | 126 ++++++++++++++++++++++++++++++++++------- 1 file changed, 105 insertions(+), 21 deletions(-) diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index 549a9b8ac7d..0a6dbc3663a 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -18,41 +18,125 @@ ## Process this file with automake to create Makefile.in SUBDIRS = ndb +DIST_SUBDIRS=ndb -PRESCRIPTS = mysql-test-run.pl - -GENSCRIPTS = mysql-test-run-shell \ - install_test_db \ - mtr \ - mysql-test-run - -EXTRA_SCRIPTS = mysql-test-run-shell.sh \ - install_test_db.sh \ +benchdir_root= $(prefix) +testdir = $(benchdir_root)/mysql-test +EXTRA_SCRIPTS = mysql-test-run-shell.sh install_test_db.sh \ valgrind.supp $(PRESCRIPTS) - -EXTRA_DIST_DIRS = t r include lib std_data suite extra - -EXTRA_DIST = $(EXTRA_DIST_DIRS) $(EXTRA_SCRIPTS) README - +EXTRA_DIST = $(EXTRA_SCRIPTS) suite +GENSCRIPTS = mysql-test-run-shell install_test_db mtr mysql-test-run +PRESCRIPTS = mysql-test-run.pl test_SCRIPTS = $(GENSCRIPTS) $(PRESCRIPTS) - +test_DATA = std_data/client-key.pem std_data/client-cert.pem \ + std_data/cacert.pem std_data/server-cert.pem \ + std_data/server-key.pem CLEANFILES = $(GENSCRIPTS) +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I.. + + +dist-hook: + mkdir -p \ + $(distdir)/t \ + $(distdir)/extra/binlog_tests \ + $(distdir)/extra/rpl_tests \ + $(distdir)/r \ + $(distdir)/include \ + $(distdir)/std_data \ + $(distdir)/std_data/ndb_backup50 \ + $(distdir)/std_data/ndb_backup51 \ + $(distdir)/lib + -$(INSTALL_DATA) $(srcdir)/t/*.def $(distdir)/t + $(INSTALL_DATA) $(srcdir)/t/*.test $(distdir)/t + -$(INSTALL_DATA) $(srcdir)/t/*.imtest $(distdir)/t + $(INSTALL_DATA) $(srcdir)/t/*.sql $(distdir)/t + -$(INSTALL_DATA) $(srcdir)/t/*.disabled $(distdir)/t + $(INSTALL_DATA) $(srcdir)/t/*.opt $(srcdir)/t/*.slave-mi $(distdir)/t + $(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(distdir)/t + $(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.test $(distdir)/extra/binlog_tests + $(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.test $(distdir)/extra/rpl_tests + -$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.opt $(distdir)/extra/binlog_tests + -$(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.opt $(distdir)/extra/rpl_tests + $(INSTALL_DATA) $(srcdir)/include/*.inc $(distdir)/include + $(INSTALL_DATA) $(srcdir)/include/*.test $(distdir)/include + $(INSTALL_DATA) $(srcdir)/r/*.result $(srcdir)/r/*.require $(distdir)/r + $(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(distdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/Index.xml $(distdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/*.dat $(srcdir)/std_data/*.000001 $(distdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(distdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/*.pem $(distdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/*.frm $(distdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(distdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(distdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50/BACKUP* $(distdir)/std_data/ndb_backup50 + $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51/BACKUP* $(distdir)/std_data/ndb_backup51 + $(INSTALL_DATA) $(srcdir)/lib/*.pl $(distdir)/lib + -rm -rf `find $(distdir)/suite -type d -name SCCS` $(distdir)/suite/row_lock + +install-data-local: + $(mkinstalldirs) \ + $(DESTDIR)$(testdir)/t \ + $(DESTDIR)$(testdir)/extra/binlog_tests \ + $(DESTDIR)$(testdir)/extra/rpl_tests \ + $(DESTDIR)$(testdir)/r \ + $(DESTDIR)$(testdir)/include \ + $(DESTDIR)$(testdir)/std_data \ + $(DESTDIR)$(testdir)/std_data/ndb_backup50 \ + $(DESTDIR)$(testdir)/std_data/ndb_backup51 \ + $(DESTDIR)$(testdir)/lib + $(INSTALL_DATA) $(srcdir)/README $(DESTDIR)$(testdir) + -$(INSTALL_DATA) $(srcdir)/t/*.def $(DESTDIR)$(testdir)/t + $(INSTALL_DATA) $(srcdir)/t/*.test $(DESTDIR)$(testdir)/t + -$(INSTALL_DATA) $(srcdir)/t/*.imtest $(DESTDIR)$(testdir)/t + $(INSTALL_DATA) $(srcdir)/t/*.sql $(DESTDIR)$(testdir)/t + -$(INSTALL_DATA) $(srcdir)/t/*.disabled $(DESTDIR)$(testdir)/t + $(INSTALL_DATA) $(srcdir)/t/*.opt $(DESTDIR)$(testdir)/t + $(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(DESTDIR)$(testdir)/t + $(INSTALL_DATA) $(srcdir)/t/*.slave-mi $(DESTDIR)$(testdir)/t + $(INSTALL_DATA) $(srcdir)/r/*.result $(DESTDIR)$(testdir)/r + $(INSTALL_DATA) $(srcdir)/r/*.require $(DESTDIR)$(testdir)/r + $(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.test $(DESTDIR)$(testdir)/extra/binlog_tests + $(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.test $(DESTDIR)$(testdir)/extra/rpl_tests + -$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.opt $(DESTDIR)$(testdir)/extra/binlog_tests + -$(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.opt $(DESTDIR)$(testdir)/extra/rpl_tests + $(INSTALL_DATA) $(srcdir)/include/*.inc $(DESTDIR)$(testdir)/include + $(INSTALL_DATA) $(srcdir)/include/*.test $(DESTDIR)$(testdir)/include + $(INSTALL_DATA) $(srcdir)/std_data/*.dat $(DESTDIR)$(testdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/*.*001 $(DESTDIR)$(testdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(DESTDIR)$(testdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(DESTDIR)$(testdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/Index.xml $(DESTDIR)$(testdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/*.pem $(DESTDIR)$(testdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/*.frm $(DESTDIR)$(testdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(DESTDIR)$(testdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup50 + $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup51 + $(INSTALL_DATA) $(srcdir)/lib/*.pl $(DESTDIR)$(testdir)/lib + for f in `(cd $(srcdir); find suite -type f | egrep -v 'SCCS|row_lock')`; \ + do \ + d=$(DESTDIR)$(testdir)/`dirname $$f`; \ + mkdir -p $$d ; \ + $(INSTALL_DATA) $(srcdir)/$$f $$d ; \ + done + +uninstall-local: + @RM@ -f -r $(DESTDIR)$(testdir) # mtr - a shortcut for executing mysql-test-run.pl mtr: - @RM@ -f mtr - @LN_S@ mysql-test-run.pl mtr + $(RM) -f mtr + $(LN_S) mysql-test-run.pl mtr # mysql-test-run - a shortcut for executing mysql-test-run.pl mysql-test-run: - @RM@ -f mysql-test-run - @LN_S@ mysql-test-run.pl mysql-test-run + $(RM) -f mysql-test-run + $(LN_S) mysql-test-run.pl mysql-test-run SUFFIXES = .sh -testdir = $(prefix)/mysql-test - .sh: @RM@ -f $@ $@-t @SED@ \ From 5885034469f3d08340144a59be966ae90e220bc6 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.(none)" <> Date: Fri, 29 Jun 2007 09:23:42 +0200 Subject: [PATCH 047/127] WL3933 - Don't fail if mysql-test/t/ doesn't have some files --- mysql-test/Makefile.am | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index 0a6dbc3663a..acb9ba36bda 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -52,8 +52,8 @@ dist-hook: -$(INSTALL_DATA) $(srcdir)/t/*.imtest $(distdir)/t $(INSTALL_DATA) $(srcdir)/t/*.sql $(distdir)/t -$(INSTALL_DATA) $(srcdir)/t/*.disabled $(distdir)/t - $(INSTALL_DATA) $(srcdir)/t/*.opt $(srcdir)/t/*.slave-mi $(distdir)/t - $(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(distdir)/t + -$(INSTALL_DATA) $(srcdir)/t/*.opt $(srcdir)/t/*.slave-mi $(distdir)/t + -$(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(distdir)/t $(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.test $(distdir)/extra/binlog_tests $(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.test $(distdir)/extra/rpl_tests -$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.opt $(distdir)/extra/binlog_tests @@ -91,9 +91,9 @@ install-data-local: -$(INSTALL_DATA) $(srcdir)/t/*.imtest $(DESTDIR)$(testdir)/t $(INSTALL_DATA) $(srcdir)/t/*.sql $(DESTDIR)$(testdir)/t -$(INSTALL_DATA) $(srcdir)/t/*.disabled $(DESTDIR)$(testdir)/t - $(INSTALL_DATA) $(srcdir)/t/*.opt $(DESTDIR)$(testdir)/t - $(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(DESTDIR)$(testdir)/t - $(INSTALL_DATA) $(srcdir)/t/*.slave-mi $(DESTDIR)$(testdir)/t + -$(INSTALL_DATA) $(srcdir)/t/*.opt $(DESTDIR)$(testdir)/t + -$(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(DESTDIR)$(testdir)/t + -$(INSTALL_DATA) $(srcdir)/t/*.slave-mi $(DESTDIR)$(testdir)/t $(INSTALL_DATA) $(srcdir)/r/*.result $(DESTDIR)$(testdir)/r $(INSTALL_DATA) $(srcdir)/r/*.require $(DESTDIR)$(testdir)/r $(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.test $(DESTDIR)$(testdir)/extra/binlog_tests From 68c7cc2af4a301999c6f2764ef173cc4b3fdd447 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.(none)" <> Date: Fri, 29 Jun 2007 09:28:51 +0200 Subject: [PATCH 048/127] Bug#22540 Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB - Update test results for --binlog-format=row --- .../suite/binlog/r/binlog_row_binlog.result | 131 ++++++++++++++++++ .../suite/rpl/r/rpl_row_create_table.result | 28 ++-- 2 files changed, 145 insertions(+), 14 deletions(-) diff --git a/mysql-test/suite/binlog/r/binlog_row_binlog.result b/mysql-test/suite/binlog/r/binlog_row_binlog.result index 6fcaad010d2..88d403c2f68 100644 --- a/mysql-test/suite/binlog/r/binlog_row_binlog.result +++ b/mysql-test/suite/binlog/r/binlog_row_binlog.result @@ -235,6 +235,137 @@ master-bin.000001 # Rotate 1 # master-bin.000002;pos=4 show binlog events in 'master-bin.000002' from 106; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000002 # Query 1 # use `test`; drop table t1 +set @ac = @@autocommit; +set autocommit= 0; +reset master; +create table t1(n int) engine=innodb; +begin; +insert into t1 values (1); +insert into t1 values (2); +insert into t1 values (3); +commit; +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 +master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=innodb +master-bin.000001 205 Query 1 273 use `test`; BEGIN +master-bin.000001 273 Table_map 1 312 table_id: # (test.t1) +master-bin.000001 312 Write_rows 1 346 table_id: # flags: STMT_END_F +master-bin.000001 346 Table_map 1 385 table_id: # (test.t1) +master-bin.000001 385 Write_rows 1 419 table_id: # flags: STMT_END_F +master-bin.000001 419 Table_map 1 458 table_id: # (test.t1) +master-bin.000001 458 Write_rows 1 492 table_id: # flags: STMT_END_F +master-bin.000001 492 Xid 1 519 COMMIT /* XID */ +master-bin.000001 519 Query 1 595 use `test`; drop table t1 +set autocommit= 1; +reset master; +create table t1(n int) engine=innodb; +insert into t1 values (1); +insert into t1 values (2); +insert into t1 values (3); +commit; +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 +master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=innodb +master-bin.000001 205 Table_map 1 244 table_id: # (test.t1) +master-bin.000001 244 Write_rows 1 278 table_id: # flags: STMT_END_F +master-bin.000001 278 Xid 1 305 COMMIT /* XID */ +master-bin.000001 305 Table_map 1 344 table_id: # (test.t1) +master-bin.000001 344 Write_rows 1 378 table_id: # flags: STMT_END_F +master-bin.000001 378 Xid 1 405 COMMIT /* XID */ +master-bin.000001 405 Table_map 1 444 table_id: # (test.t1) +master-bin.000001 444 Write_rows 1 478 table_id: # flags: STMT_END_F +master-bin.000001 478 Xid 1 505 COMMIT /* XID */ +master-bin.000001 505 Query 1 581 use `test`; drop table t1 +reset master; +create table t1(n int) engine=myisam; +begin; +insert into t1 values (4); +insert into t1 values (5); +insert into t1 values (6); +commit; +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 +master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=myisam +master-bin.000001 205 Table_map 1 244 table_id: # (test.t1) +master-bin.000001 244 Write_rows 1 278 table_id: # flags: STMT_END_F +master-bin.000001 278 Table_map 1 317 table_id: # (test.t1) +master-bin.000001 317 Write_rows 1 351 table_id: # flags: STMT_END_F +master-bin.000001 351 Table_map 1 390 table_id: # (test.t1) +master-bin.000001 390 Write_rows 1 424 table_id: # flags: STMT_END_F +master-bin.000001 424 Query 1 500 use `test`; drop table t1 +set autocommit= 1; +reset master; +create table t1(n int) engine=innodb; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 205 +insert into t1 values (1); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 305 +insert into t1 values (2); +insert into t1 values (3); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 505 +commit; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 505 +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 +master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=innodb +master-bin.000001 205 Table_map 1 244 table_id: # (test.t1) +master-bin.000001 244 Write_rows 1 278 table_id: # flags: STMT_END_F +master-bin.000001 278 Xid 1 305 COMMIT /* XID */ +master-bin.000001 305 Table_map 1 344 table_id: # (test.t1) +master-bin.000001 344 Write_rows 1 378 table_id: # flags: STMT_END_F +master-bin.000001 378 Xid 1 405 COMMIT /* XID */ +master-bin.000001 405 Table_map 1 444 table_id: # (test.t1) +master-bin.000001 444 Write_rows 1 478 table_id: # flags: STMT_END_F +master-bin.000001 478 Xid 1 505 COMMIT /* XID */ +master-bin.000001 505 Query 1 581 use `test`; drop table t1 +set autocommit= 0; +reset master; +create table t1(n int) engine=myisam; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 205 +insert into t1 values (4); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 278 +insert into t1 values (5); +insert into t1 values (6); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 424 +commit; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 424 +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 +master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=myisam +master-bin.000001 205 Table_map 1 244 table_id: # (test.t1) +master-bin.000001 244 Write_rows 1 278 table_id: # flags: STMT_END_F +master-bin.000001 278 Table_map 1 317 table_id: # (test.t1) +master-bin.000001 317 Write_rows 1 351 table_id: # flags: STMT_END_F +master-bin.000001 351 Table_map 1 390 table_id: # (test.t1) +master-bin.000001 390 Write_rows 1 424 table_id: # flags: STMT_END_F +master-bin.000001 424 Query 1 500 use `test`; drop table t1 +set session autocommit = @ac; +End of 5.0 tests reset master; create table t1 (id tinyint auto_increment primary key); set insert_id=128; diff --git a/mysql-test/suite/rpl/r/rpl_row_create_table.result b/mysql-test/suite/rpl/r/rpl_row_create_table.result index e76ce5b962d..f22881bd4a9 100644 --- a/mysql-test/suite/rpl/r/rpl_row_create_table.result +++ b/mysql-test/suite/rpl/r/rpl_row_create_table.result @@ -279,25 +279,25 @@ Log_name Pos Event_type Server_id End_log_pos Info # 192 Table_map # 231 table_id: # (test.t1) # 231 Write_rows # 275 table_id: # flags: STMT_END_F # 275 Query # 343 use `test`; BEGIN -# 343 Query # 125 use `test`; CREATE TABLE `t2` ( +# 343 Query # 468 use `test`; CREATE TABLE `t2` ( `a` int(11) DEFAULT NULL ) ENGINE=InnoDB -# 468 Table_map # 164 table_id: # (test.t2) -# 507 Write_rows # 208 table_id: # flags: STMT_END_F +# 468 Table_map # 507 table_id: # (test.t2) +# 507 Write_rows # 551 table_id: # flags: STMT_END_F # 551 Xid # 578 COMMIT /* XID */ # 578 Query # 646 use `test`; BEGIN -# 646 Query # 125 use `test`; CREATE TABLE `t3` ( +# 646 Query # 771 use `test`; CREATE TABLE `t3` ( `a` int(11) DEFAULT NULL ) ENGINE=InnoDB -# 771 Table_map # 164 table_id: # (test.t3) -# 810 Write_rows # 208 table_id: # flags: STMT_END_F +# 771 Table_map # 810 table_id: # (test.t3) +# 810 Write_rows # 854 table_id: # flags: STMT_END_F # 854 Xid # 881 COMMIT /* XID */ # 881 Query # 949 use `test`; BEGIN -# 949 Query # 125 use `test`; CREATE TABLE `t4` ( +# 949 Query # 1074 use `test`; CREATE TABLE `t4` ( `a` int(11) DEFAULT NULL ) ENGINE=InnoDB -# 1074 Table_map # 164 table_id: # (test.t4) -# 1113 Write_rows # 208 table_id: # flags: STMT_END_F +# 1074 Table_map # 1113 table_id: # (test.t4) +# 1113 Write_rows # 1157 table_id: # flags: STMT_END_F # 1157 Xid # 1184 COMMIT /* XID */ # 1184 Table_map # 1223 table_id: # (test.t1) # 1223 Write_rows # 1267 table_id: # flags: STMT_END_F @@ -371,10 +371,10 @@ Log_name Pos Event_type Server_id End_log_pos Info # 231 Write_rows # 275 table_id: # flags: STMT_END_F # 275 Query # 375 use `test`; CREATE TABLE t2 (a INT) ENGINE=INNODB # 375 Query # 443 use `test`; BEGIN -# 443 Table_map # 39 table_id: # (test.t2) -# 482 Write_rows # 83 table_id: # flags: STMT_END_F -# 526 Table_map # 122 table_id: # (test.t2) -# 565 Write_rows # 161 table_id: # flags: STMT_END_F +# 443 Table_map # 482 table_id: # (test.t2) +# 482 Write_rows # 526 table_id: # flags: STMT_END_F +# 526 Table_map # 565 table_id: # (test.t2) +# 565 Write_rows # 604 table_id: # flags: STMT_END_F # 604 Xid # 631 COMMIT /* XID */ SELECT * FROM t2 ORDER BY a; a @@ -396,7 +396,7 @@ SELECT * FROM t2 ORDER BY a; a SHOW BINLOG EVENTS FROM 631; Log_name Pos Event_type Server_id End_log_pos Info -# 631 Query # 80 use `test`; TRUNCATE TABLE t2 +# 631 Query # 711 use `test`; TRUNCATE TABLE t2 # 711 Xid # 738 COMMIT /* XID */ SELECT * FROM t2 ORDER BY a; a From effb7f890a1ad63cc0cc8976ea69d64e73c68acc Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.(none)" <> Date: Fri, 29 Jun 2007 10:26:20 +0200 Subject: [PATCH 049/127] Bug#28356 Exec'ing "diff" from "mysqltest" loses the output, no information available - Use SQL for diffing master and slave --- mysql-test/r/rpl_misc_functions.result | 16 +++++++--- mysql-test/t/rpl_misc_functions.test | 42 ++++++++++++++++---------- 2 files changed, 38 insertions(+), 20 deletions(-) diff --git a/mysql-test/r/rpl_misc_functions.result b/mysql-test/r/rpl_misc_functions.result index 526414cec9c..ca7403316b1 100644 --- a/mysql-test/r/rpl_misc_functions.result +++ b/mysql-test/r/rpl_misc_functions.result @@ -40,7 +40,15 @@ CALL test_replication_sp2(); INSERT INTO t1 VALUES (test_replication_sf()); INSERT INTO t1 VALUES (test_replication_sf()); INSERT INTO t1 VALUES (test_replication_sf()); -DROP PROCEDURE IF EXISTS test_replication_sp1; -DROP PROCEDURE IF EXISTS test_replication_sp2; -DROP FUNCTION IF EXISTS test_replication_sf; -DROP TABLE IF EXISTS t1; +select * from t1 into outfile "../tmp/t1_slave.txt"; +create temporary table t1_slave select * from t1 where 1=0; +load data infile '../tmp/t1_slave.txt' into table t1_slave; +select count(*) into @aux from t1, t1_slave +where ABS(t1.col_a - t1_slave.col_a) < 0.0001 ; +SELECT @aux; +@aux +12 +DROP PROCEDURE test_replication_sp1; +DROP PROCEDURE test_replication_sp2; +DROP FUNCTION test_replication_sf; +DROP TABLE t1, t1_slave; diff --git a/mysql-test/t/rpl_misc_functions.test b/mysql-test/t/rpl_misc_functions.test index f00beff583a..b87fff919b2 100644 --- a/mysql-test/t/rpl_misc_functions.test +++ b/mysql-test/t/rpl_misc_functions.test @@ -77,27 +77,37 @@ INSERT INTO t1 VALUES (test_replication_sf()); INSERT INTO t1 VALUES (test_replication_sf()); INSERT INTO t1 VALUES (test_replication_sf()); -# Record the results of the query on the master ---exec $MYSQL --port=$MASTER_MYPORT test -e "SELECT * FROM test.t1" > $MYSQLTEST_VARDIR/tmp/rpl_rand_master.sql - --sync_slave_with_master -# Record the results of the query on the slave ---exec $MYSQL --port=$SLAVE_MYPORT test -e "SELECT * FROM test.t1" > $MYSQLTEST_VARDIR/tmp/rpl_rand_slave.sql +# Dump table on slave +select * from t1 into outfile "../tmp/t1_slave.txt"; -# Compare the results from the master to the slave. ---exec diff $MYSQLTEST_VARDIR/tmp/rpl_rand_master.sql $MYSQLTEST_VARDIR/tmp/rpl_rand_slave.sql +# Load data from slave into temp table on master +connection master; +create temporary table t1_slave select * from t1 where 1=0; +load data infile '../tmp/t1_slave.txt' into table t1_slave; +--remove_file $MYSQLTEST_VARDIR/tmp/t1_slave.txt + +# Compare master and slave temp table, use subtraction +# for floating point comparison of "double" +select count(*) into @aux from t1, t1_slave +where ABS(t1.col_a - t1_slave.col_a) < 0.0001 ; +SELECT @aux; +if (`SELECT @aux <> 12 OR @aux IS NULL`) +{ + --echo # ERROR: We expected to get count(*) = 12. + SELECT col_a FROM t1; + SELECT col_a FROM t1_slave; + --echo # abort + exit; +} # Cleanup connection master; ---disable_warnings -DROP PROCEDURE IF EXISTS test_replication_sp1; -DROP PROCEDURE IF EXISTS test_replication_sp2; -DROP FUNCTION IF EXISTS test_replication_sf; -DROP TABLE IF EXISTS t1; ---enable_warnings +DROP PROCEDURE test_replication_sp1; +DROP PROCEDURE test_replication_sp2; +DROP FUNCTION test_replication_sf; +DROP TABLE t1, t1_slave; --sync_slave_with_master -# If all is good, when can cleanup our dump files. ---system rm $MYSQLTEST_VARDIR/tmp/rpl_rand_master.sql ---system rm $MYSQLTEST_VARDIR/tmp/rpl_rand_slave.sql + From db84337b37b7cc5ebf0e93147d30058628e5d217 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.(none)" <> Date: Fri, 29 Jun 2007 14:18:20 +0200 Subject: [PATCH 050/127] Reduce time for mysqladmin to try to shutdown servers from 70 to 20 seconds --- mysql-test/lib/mtr_process.pl | 2 +- mysql-test/mysql-test-run.pl | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mysql-test/lib/mtr_process.pl b/mysql-test/lib/mtr_process.pl index 7ac75829a28..69026d2c72f 100644 --- a/mysql-test/lib/mtr_process.pl +++ b/mysql-test/lib/mtr_process.pl @@ -359,7 +359,7 @@ sub mtr_kill_leftovers () { "socket: '$srv->{path_sock}'; ". "port: $srv->{port})"); - my $pid= mtr_mysqladmin_start($srv, "shutdown", 70); + my $pid= mtr_mysqladmin_start($srv, "shutdown", 20); # Save the pid of the mysqladmin process $admin_pids{$pid}= 1; diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 0908eda061c..6ec4045bb43 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -4328,7 +4328,7 @@ sub run_testcase_stop_servers($$$) { { if ( $mysqld->{'pid'} ) { - $pid= mtr_mysqladmin_start($mysqld, "shutdown", 70); + $pid= mtr_mysqladmin_start($mysqld, "shutdown", 20); $admin_pids{$pid}= 1; @@ -4380,7 +4380,7 @@ sub run_testcase_stop_servers($$$) { { if ( $mysqld->{'pid'} ) { - $pid= mtr_mysqladmin_start($mysqld, "shutdown", 70); + $pid= mtr_mysqladmin_start($mysqld, "shutdown", 20); $admin_pids{$pid}= 1; From ef80d45d0d11ad82dfc07d976878e9da624b02a2 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.(none)" <> Date: Fri, 29 Jun 2007 14:43:54 +0200 Subject: [PATCH 051/127] Update make_win_bin_dist to also copy mysql-test/suite directory --- scripts/make_win_bin_dist | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/scripts/make_win_bin_dist b/scripts/make_win_bin_dist index 6593e2c6039..480ea39b2cf 100755 --- a/scripts/make_win_bin_dist +++ b/scripts/make_win_bin_dist @@ -304,7 +304,7 @@ cp mysys/$TARGET/mysys.lib $DESTDIR/lib/opt/mysys_tls.lib mkdir -p $DESTDIR/mysql-test/include $DESTDIR/mysql-test/lib \ $DESTDIR/mysql-test/r $DESTDIR/mysql-test/std_data \ - $DESTDIR/mysql-test/t + $DESTDIR/mysql-test/t $DESTDIR/mysql-test/suite cp mysql-test/mysql-test-run.pl $DESTDIR/mysql-test/ cp mysql-test/README $DESTDIR/mysql-test/ cp mysql-test/install_test_db.sh $DESTDIR/mysql-test/install_test_db @@ -324,7 +324,7 @@ cp mysql-test/std_data/*.pem $DESTDIR/mysql-test/std_data/ cp mysql-test/std_data/*.MY* $DESTDIR/mysql-test/std_data/ cp mysql-test/t/*.opt $DESTDIR/mysql-test/t/ cp mysql-test/t/*.sh $DESTDIR/mysql-test/t/ -cp mysql-test/t/*.slave-mi $DESTDIR/mysql-test/t/ +cp mysql-test/t/*.slave-mi $DESTDIR/mysql-test/t/ || /bin/true cp mysql-test/t/*.sql $DESTDIR/mysql-test/t/ cp mysql-test/t/*.def $DESTDIR/mysql-test/t/ (cd mysql-test/t/ && cp *.test $ABS_DST/mysql-test/t/) @@ -335,6 +335,12 @@ if [ -d mysql-test/extra ] ; then cp -pR mysql-test/extra/* $DESTDIR/mysql-test/extra/ fi +# Copy all directories in mysql-test/suite/ +for i in `cd mysql-test/suite && ls`; do \ + mkdir -p $DESTDIR/mysql-test/suite/$i; \ + cp -R mysql-test/suite/$i $DESTDIR/mysql-test/suite/; \ +done + # ---------------------------------------------------------------------- # Copy what could be usable in the "scripts" directory. Currently # only SQL files, others are Bourne shell scripts or Perl scripts From 99630cb901879134c801c1c781a904cd1af9702c Mon Sep 17 00:00:00 2001 From: "ramil/ram@mysql.com/ramil.myoffice.izhnet.ru" <> Date: Fri, 29 Jun 2007 21:48:22 +0500 Subject: [PATCH 052/127] Fix for bug #19328: Slave timeout with COM_REGISTER_SLAVE error causing stop Problem: "Under high load, the slave registering to the master can timeout during the COM_REGISTER_SLAVE execution. This causes an error, which prevents the slave from connecting at all." Fix: Do not abort immediately, but retry registering on master. --- sql/slave.cc | 308 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 208 insertions(+), 100 deletions(-) diff --git a/sql/slave.cc b/sql/slave.cc index 6c7968c2b3f..d2c5b4fd254 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -59,6 +59,58 @@ ulonglong relay_log_space_limit = 0; int disconnect_slave_event_count = 0, abort_slave_event_count = 0; int events_till_abort = -1; +enum enum_slave_reconnect_actions +{ + SLAVE_RECON_ACT_REG= 0, + SLAVE_RECON_ACT_DUMP= 1, + SLAVE_RECON_ACT_EVENT= 2, + SLAVE_RECON_ACT_MAX +}; + +enum enum_slave_reconnect_messages +{ + SLAVE_RECON_MSG_WAIT= 0, + SLAVE_RECON_MSG_KILLED_WAITING= 1, + SLAVE_RECON_MSG_AFTER= 2, + SLAVE_RECON_MSG_FAILED= 3, + SLAVE_RECON_MSG_COMMAND= 4, + SLAVE_RECON_MSG_KILLED_AFTER= 5, + SLAVE_RECON_MSG_MAX +}; + +static const char *reconnect_messages[SLAVE_RECON_ACT_MAX][SLAVE_RECON_MSG_MAX]= +{ + { + "Waiting to reconnect after a failed registration on master", + "Slave I/O thread killed while waitnig to reconnect after a failed \ +registration on master", + "Reconnecting after a failed registration on master", + "failed registering on master, reconnecting to try again, \ +log '%s' at postion %s", + "COM_REGISTER_SLAVE", + "Slave I/O thread killed during or after reconnect" + }, + { + "Waiting to reconnect after a failed binlog dump request", + "Slave I/O thread killed while retrying master dump", + "Reconnecting after a failed binlog dump request", + "failed dump request, reconnecting to try again, log '%s' at postion %s", + "COM_BINLOG_DUMP", + "Slave I/O thread killed during or after reconnect" + }, + { + "Waiting to reconnect after a failed master event read", + "Slave I/O thread killed while waiting to reconnect after a failed read", + "Reconnecting after a failed master event read", + "Slave I/O thread: Failed reading log event, reconnecting to retry, \ +log '%s' at postion %s", + "", + "Slave I/O thread killed during or after a reconnect done to recover from \ +failed read" + } +}; + + typedef enum { SLAVE_THD_IO, SLAVE_THD_SQL} SLAVE_THD_TYPE; static int process_io_rotate(MASTER_INFO* mi, Rotate_log_event* rev); @@ -1098,12 +1150,14 @@ static void write_ignored_events_info_to_relay_log(THD *thd, MASTER_INFO *mi) } -int register_slave_on_master(MYSQL* mysql, MASTER_INFO *mi) +int register_slave_on_master(MYSQL* mysql, MASTER_INFO *mi, + bool *suppress_warnings) { uchar buf[1024], *pos= buf; uint report_host_len, report_user_len=0, report_password_len=0; DBUG_ENTER("register_slave_on_master"); + *suppress_warnings= FALSE; if (!report_host) DBUG_RETURN(0); report_host_len= strlen(report_host); @@ -1127,11 +1181,18 @@ int register_slave_on_master(MYSQL* mysql, MASTER_INFO *mi) if (simple_command(mysql, COM_REGISTER_SLAVE, buf, (size_t) (pos- buf), 0)) { - char buf[256]; - my_snprintf(buf, sizeof(buf), - "%s (Errno: %d)", mysql_error(mysql), mysql_errno(mysql)); - mi->report(ERROR_LEVEL, ER_SLAVE_MASTER_COM_FAILURE, - ER(ER_SLAVE_MASTER_COM_FAILURE), "COM_REGISTER_SLAVE", buf); + if (mysql_errno(mysql) == ER_NET_READ_INTERRUPTED) + { + *suppress_warnings= TRUE; // Suppress reconnect warning + } + else + { + char buf[256]; + my_snprintf(buf, sizeof(buf), "%s (Errno: %d)", mysql_error(mysql), + mysql_errno(mysql)); + mi->report(ERROR_LEVEL, ER_SLAVE_MASTER_COM_FAILURE, + ER(ER_SLAVE_MASTER_COM_FAILURE), "COM_REGISTER_SLAVE", buf); + } DBUG_RETURN(1); } DBUG_RETURN(0); @@ -1460,6 +1521,8 @@ static int request_dump(MYSQL* mysql, MASTER_INFO* mi, int binlog_flags = 0; // for now char* logname = mi->master_log_name; DBUG_ENTER("request_dump"); + + *suppress_warnings= FALSE; // TODO if big log files: Change next to int8store() int4store(buf, (ulong) mi->master_log_pos); @@ -1475,7 +1538,7 @@ static int request_dump(MYSQL* mysql, MASTER_INFO* mi, now we just fill up the error log :-) */ if (mysql_errno(mysql) == ER_NET_READ_INTERRUPTED) - *suppress_warnings= 1; // Suppress reconnect warning + *suppress_warnings= TRUE; // Suppress reconnect warning else sql_print_error("Error on COM_BINLOG_DUMP: %d %s, will retry in %d secs", mysql_errno(mysql), mysql_error(mysql), @@ -1539,7 +1602,7 @@ static ulong read_event(MYSQL* mysql, MASTER_INFO *mi, bool* suppress_warnings) ulong len; DBUG_ENTER("read_event"); - *suppress_warnings= 0; + *suppress_warnings= FALSE; /* my_real_read() will time us out We check if we were told to die, and if not, try reading again @@ -1879,6 +1942,94 @@ on this slave.\ } +static bool check_io_slave_killed(THD *thd, MASTER_INFO *mi, const char *info) +{ + if (io_slave_killed(thd, mi)) + { + if (global_system_variables.log_warnings) + sql_print_information(info); + return TRUE; + } + return FALSE; +} + + +/** + @brief Try to reconnect slave IO thread. + + @details Terminates current connection to master, sleeps for + @c mi->connect_retry msecs and initiates new connection with + @c safe_reconnect(). Variable pointed by @c retry_count is increased - + if it exceeds @c master_retry_count then connection is not re-established + and function signals error. + Unless @c suppres_warnings is TRUE, a warning is put in the server error log + when reconnecting. The warning message and messages used to report errors + are taken from @c messages array. In case @c master_retry_count is exceeded, + no messages are added to the log. + + @param[in] thd Thread context. + @param[in] mysql MySQL connection. + @param[in] mi Master connection information. + @param[in,out] retry_count Number of attempts to reconnect. + @param[in] suppress_warnings TRUE when a normal net read timeout + has caused to reconnecting. + @param[in] messages Messages to print/log, see + reconnect_messages[] array. + + @retval 0 OK. + @retval 1 There was an error. +*/ + +static int try_to_reconnect(THD *thd, MYSQL *mysql, MASTER_INFO *mi, + uint *retry_count, bool suppress_warnings, + const char *messages[SLAVE_RECON_MSG_MAX]) +{ + mi->slave_running= MYSQL_SLAVE_RUN_NOT_CONNECT; + thd->proc_info= messages[SLAVE_RECON_MSG_WAIT]; +#ifdef SIGNAL_WITH_VIO_CLOSE + thd->clear_active_vio(); +#endif + end_server(mysql); + if ((*retry_count)++) + { + if (*retry_count > master_retry_count) + return 1; // Don't retry forever + safe_sleep(thd, mi->connect_retry, (CHECK_KILLED_FUNC) io_slave_killed, + (void *) mi); + } + if (check_io_slave_killed(thd, mi, messages[SLAVE_RECON_MSG_KILLED_WAITING])) + return 1; + thd->proc_info = messages[SLAVE_RECON_MSG_AFTER]; + if (!suppress_warnings) + { + char buf[256], llbuff[22]; + my_snprintf(buf, sizeof(buf), messages[SLAVE_RECON_MSG_FAILED], + IO_RPL_LOG_NAME, llstr(mi->master_log_pos, llbuff)); + /* + Raise a warining during registering on master/requesting dump. + Log a message reading event. + */ + if (messages[SLAVE_RECON_MSG_COMMAND][0]) + { + mi->report(WARNING_LEVEL, ER_SLAVE_MASTER_COM_FAILURE, + ER(ER_SLAVE_MASTER_COM_FAILURE), + messages[SLAVE_RECON_MSG_COMMAND], buf); + } + else + { + sql_print_information(buf); + } + } + if (safe_reconnect(thd, mysql, mi, 1) || io_slave_killed(thd, mi)) + { + if (global_system_variables.log_warnings) + sql_print_information(messages[SLAVE_RECON_MSG_KILLED_AFTER]); + return 1; + } + return 0; +} + + /* Slave I/O Thread entry point */ pthread_handler_t handle_slave_io(void *arg) @@ -1889,7 +2040,10 @@ pthread_handler_t handle_slave_io(void *arg) RELAY_LOG_INFO *rli= &mi->rli; char llbuff[22]; uint retry_count; - + bool suppress_warnings; +#ifndef DBUG_OFF + uint retry_count_reg= 0, retry_count_dump= 0, retry_count_event= 0; +#endif // needs to call my_thread_init(), otherwise we get a coredump in DBUG_ stuff my_thread_init(); DBUG_ENTER("handle_slave_io"); @@ -1975,79 +2129,56 @@ connected: Register ourselves with the master. */ thd->proc_info = "Registering slave on master"; - if (register_slave_on_master(mysql, mi)) + if (register_slave_on_master(mysql, mi, &suppress_warnings)) { sql_print_error("Slave I/O thread couldn't register on master"); - goto err; + if (check_io_slave_killed(thd, mi, "Slave I/O thread killed while \ +registering slave on master") || + try_to_reconnect(thd, mysql, mi, &retry_count, suppress_warnings, + reconnect_messages[SLAVE_RECON_ACT_REG])) + goto err; + goto connected; } + DBUG_EXECUTE_IF("FORCE_SLAVE_TO_RECONNECT_REG", + if (!retry_count_reg) + { + retry_count_reg++; + sql_print_information("Forcing to reconnect slave I/O thread"); + if (try_to_reconnect(thd, mysql, mi, &retry_count, suppress_warnings, + reconnect_messages[SLAVE_RECON_ACT_REG])) + goto err; + goto connected; + }); } DBUG_PRINT("info",("Starting reading binary log from master")); while (!io_slave_killed(thd,mi)) { - bool suppress_warnings= 0; thd->proc_info = "Requesting binlog dump"; if (request_dump(mysql, mi, &suppress_warnings)) { sql_print_error("Failed on request_dump()"); - if (io_slave_killed(thd,mi)) - { - sql_print_information("Slave I/O thread killed while requesting master \ -dump"); + if (check_io_slave_killed(thd, mi, "Slave I/O thread killed while \ +requesting master dump") || + try_to_reconnect(thd, mysql, mi, &retry_count, suppress_warnings, + reconnect_messages[SLAVE_RECON_ACT_DUMP])) goto err; - } - - mi->slave_running= MYSQL_SLAVE_RUN_NOT_CONNECT; - thd->proc_info= "Waiting to reconnect after a failed binlog dump request"; -#ifdef SIGNAL_WITH_VIO_CLOSE - thd->clear_active_vio(); -#endif - end_server(mysql); - /* - First time retry immediately, assuming that we can recover - right away - if first time fails, sleep between re-tries - hopefuly the admin can fix the problem sometime - */ - if (retry_count++) - { - if (retry_count > master_retry_count) - goto err; // Don't retry forever - safe_sleep(thd,mi->connect_retry,(CHECK_KILLED_FUNC)io_slave_killed, - (void*)mi); - } - if (io_slave_killed(thd,mi)) - { - sql_print_information("Slave I/O thread killed while retrying master \ -dump"); - goto err; - } - - thd->proc_info = "Reconnecting after a failed binlog dump request"; - if (!suppress_warnings) { - char buf[256]; - my_snprintf(buf, sizeof(buf), - "failed dump request, reconnecting to try again," - " log '%s' at postion %s", - IO_RPL_LOG_NAME, - llstr(mi->master_log_pos,llbuff)); - mi->report(WARNING_LEVEL, ER_SLAVE_MASTER_COM_FAILURE, - ER(ER_SLAVE_MASTER_COM_FAILURE), "COM_BINLOG_DUMP", buf); - } - if (safe_reconnect(thd, mysql, mi, suppress_warnings) || - io_slave_killed(thd,mi)) - { - sql_print_information("Slave I/O thread killed during or \ -after reconnect"); - goto err; - } - goto connected; } + DBUG_EXECUTE_IF("FORCE_SLAVE_TO_RECONNECT_DUMP", + if (!retry_count_dump) + { + retry_count_dump++; + sql_print_information("Forcing to reconnect slave I/O thread"); + if (try_to_reconnect(thd, mysql, mi, &retry_count, suppress_warnings, + reconnect_messages[SLAVE_RECON_ACT_DUMP])) + goto err; + goto connected; + }); while (!io_slave_killed(thd,mi)) { ulong event_len; - suppress_warnings= 0; /* We say "waiting" because read_event() will wait if there's nothing to read. But if there's something to read, it will not wait. The @@ -2056,12 +2187,19 @@ after reconnect"); */ thd->proc_info= "Waiting for master to send event"; event_len= read_event(mysql, mi, &suppress_warnings); - if (io_slave_killed(thd,mi)) - { - if (global_system_variables.log_warnings) - sql_print_information("Slave I/O thread killed while reading event"); + if (check_io_slave_killed(thd, mi, "Slave I/O thread killed while \ +reading event")) goto err; - } + DBUG_EXECUTE_IF("FORCE_SLAVE_TO_RECONNECT_EVENT", + if (!retry_count_event) + { + retry_count_event++; + sql_print_information("Forcing to reconnect slave I/O thread"); + if (try_to_reconnect(thd, mysql, mi, &retry_count, suppress_warnings, + reconnect_messages[SLAVE_RECON_ACT_EVENT])) + goto err; + goto connected; + }); if (event_len == packet_error) { @@ -2081,39 +2219,9 @@ max_allowed_packet", mysql_error(mysql)); goto err; } - mi->slave_running= MYSQL_SLAVE_RUN_NOT_CONNECT; - thd->proc_info = "Waiting to reconnect after a failed master event read"; -#ifdef SIGNAL_WITH_VIO_CLOSE - thd->clear_active_vio(); -#endif - end_server(mysql); - if (retry_count++) - { - if (retry_count > master_retry_count) - goto err; // Don't retry forever - safe_sleep(thd,mi->connect_retry,(CHECK_KILLED_FUNC)io_slave_killed, - (void*) mi); - } - if (io_slave_killed(thd,mi)) - { - if (global_system_variables.log_warnings) - sql_print_information("Slave I/O thread killed while waiting to \ -reconnect after a failed read"); + if (try_to_reconnect(thd, mysql, mi, &retry_count, suppress_warnings, + reconnect_messages[SLAVE_RECON_ACT_EVENT])) goto err; - } - thd->proc_info = "Reconnecting after a failed master event read"; - if (!suppress_warnings) - sql_print_information("Slave I/O thread: Failed reading log event, \ -reconnecting to retry, log '%s' position %s", IO_RPL_LOG_NAME, - llstr(mi->master_log_pos, llbuff)); - if (safe_reconnect(thd, mysql, mi, suppress_warnings) || - io_slave_killed(thd,mi)) - { - if (global_system_variables.log_warnings) - sql_print_information("Slave I/O thread killed during or after a \ -reconnect done to recover from failed read"); - goto err; - } goto connected; } // if (event_len == packet_error) From 68af862c77c8038e4f9b385433bfedb682fbec69 Mon Sep 17 00:00:00 2001 From: "antony@ppcg5.local" <> Date: Fri, 29 Jun 2007 13:55:16 -0700 Subject: [PATCH 053/127] add and amend comments for clarity --- include/my_base.h | 5 ++--- sql/ha_federated.cc | 4 ++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/include/my_base.h b/include/my_base.h index a26217f8050..4ce7a87105d 100644 --- a/include/my_base.h +++ b/include/my_base.h @@ -170,9 +170,8 @@ enum ha_extra_function { HA_EXTRA_DELETE_CANNOT_BATCH, HA_EXTRA_UPDATE_CANNOT_BATCH, /* - Inform handler that write_row() should immediately report constraint - violations because a INSERT...ON DUPLICATE KEY UPDATE is in being - performed. + Inform handler that an "INSERT...ON DUPLICATE KEY UPDATE" will be + executed. This condition is unset by HA_EXTRA_NO_IGNORE_DUP_KEY. */ HA_EXTRA_INSERT_WITH_UPDATE }; diff --git a/sql/ha_federated.cc b/sql/ha_federated.cc index e691831bbc9..8db091669c3 100644 --- a/sql/ha_federated.cc +++ b/sql/ha_federated.cc @@ -2555,6 +2555,10 @@ int ha_federated::extra(ha_extra_function operation) replace_duplicates= TRUE; break; case HA_EXTRA_WRITE_CANNOT_REPLACE: + /* + We use this flag to ensure that we do not create an "INSERT IGNORE" + statement when inserting new rows into the remote table. + */ replace_duplicates= FALSE; break; case HA_EXTRA_INSERT_WITH_UPDATE: From c84faaa571d3b76f05fdbfa097c7caf92266d67c Mon Sep 17 00:00:00 2001 From: "antony@ppcg5.local" <> Date: Fri, 29 Jun 2007 15:14:08 -0700 Subject: [PATCH 054/127] fix Visual Studio build - strictness of compiler could not cast pointer into a BOOL type. --- sql/ha_federated.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/ha_federated.cc b/sql/ha_federated.cc index b981af7d8cf..3cf9c2a8b99 100644 --- a/sql/ha_federated.cc +++ b/sql/ha_federated.cc @@ -1686,7 +1686,7 @@ int ha_federated::write_row(byte *buf) uint tmp_length; int error= 0; bool use_bulk_insert; - bool auto_increment_update_required= table->next_number_field; + bool auto_increment_update_required= (table->next_number_field != NULL); /* The string containing the values to be added to the insert */ String values_string(values_buffer, sizeof(values_buffer), &my_charset_bin); From 1ac88a2b41037bf2f9d5f91faae9fe5ca3c1ad00 Mon Sep 17 00:00:00 2001 From: "tnurnberg@sin.intern.azundris.com" <> Date: Sat, 30 Jun 2007 02:30:42 +0200 Subject: [PATCH 055/127] Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB previous correction didn't. make sure "tail" is fixed up when filling cache several times; rework formulae. --- mysql-test/r/binlog.result | 416 +++++++++++++++++++++++++++++++++++++ mysql-test/t/binlog.test | 31 ++- sql/log.cc | 73 +++---- 3 files changed, 484 insertions(+), 36 deletions(-) diff --git a/mysql-test/r/binlog.result b/mysql-test/r/binlog.result index 41c75a2067b..77b015a4688 100644 --- a/mysql-test/r/binlog.result +++ b/mysql-test/r/binlog.result @@ -248,4 +248,420 @@ master-bin.000001 285 Query 1 373 use `test`; insert into t1 values (5) master-bin.000001 373 Query 1 461 use `test`; insert into t1 values (6) master-bin.000001 461 Query 1 537 use `test`; drop table t1 set session autocommit = @ac; +set @bcs = @@binlog_cache_size; +set @ac = @@autocommit; +set global binlog_cache_size=4096; +set autocommit= 0; +reset master; +create table t1 (a int) engine=innodb; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 98 Server ver: 5.0.46-debug-log, Binlog ver: 4 +master-bin.000001 98 Query 1 198 use `test`; create table t1 (a int) engine=innodb +master-bin.000001 198 Query 1 266 use `test`; BEGIN +master-bin.000001 266 Query 1 357 use `test`; insert into t1 values( 400 ) +master-bin.000001 357 Query 1 448 use `test`; insert into t1 values( 399 ) +master-bin.000001 448 Query 1 539 use `test`; insert into t1 values( 398 ) +master-bin.000001 539 Query 1 630 use `test`; insert into t1 values( 397 ) +master-bin.000001 630 Query 1 721 use `test`; insert into t1 values( 396 ) +master-bin.000001 721 Query 1 812 use `test`; insert into t1 values( 395 ) +master-bin.000001 812 Query 1 903 use `test`; insert into t1 values( 394 ) +master-bin.000001 903 Query 1 994 use `test`; insert into t1 values( 393 ) +master-bin.000001 994 Query 1 1085 use `test`; insert into t1 values( 392 ) +master-bin.000001 1085 Query 1 1176 use `test`; insert into t1 values( 391 ) +master-bin.000001 1176 Query 1 1267 use `test`; insert into t1 values( 390 ) +master-bin.000001 1267 Query 1 1358 use `test`; insert into t1 values( 389 ) +master-bin.000001 1358 Query 1 1449 use `test`; insert into t1 values( 388 ) +master-bin.000001 1449 Query 1 1540 use `test`; insert into t1 values( 387 ) +master-bin.000001 1540 Query 1 1631 use `test`; insert into t1 values( 386 ) +master-bin.000001 1631 Query 1 1722 use `test`; insert into t1 values( 385 ) +master-bin.000001 1722 Query 1 1813 use `test`; insert into t1 values( 384 ) +master-bin.000001 1813 Query 1 1904 use `test`; insert into t1 values( 383 ) +master-bin.000001 1904 Query 1 1995 use `test`; insert into t1 values( 382 ) +master-bin.000001 1995 Query 1 2086 use `test`; insert into t1 values( 381 ) +master-bin.000001 2086 Query 1 2177 use `test`; insert into t1 values( 380 ) +master-bin.000001 2177 Query 1 2268 use `test`; insert into t1 values( 379 ) +master-bin.000001 2268 Query 1 2359 use `test`; insert into t1 values( 378 ) +master-bin.000001 2359 Query 1 2450 use `test`; insert into t1 values( 377 ) +master-bin.000001 2450 Query 1 2541 use `test`; insert into t1 values( 376 ) +master-bin.000001 2541 Query 1 2632 use `test`; insert into t1 values( 375 ) +master-bin.000001 2632 Query 1 2723 use `test`; insert into t1 values( 374 ) +master-bin.000001 2723 Query 1 2814 use `test`; insert into t1 values( 373 ) +master-bin.000001 2814 Query 1 2905 use `test`; insert into t1 values( 372 ) +master-bin.000001 2905 Query 1 2996 use `test`; insert into t1 values( 371 ) +master-bin.000001 2996 Query 1 3087 use `test`; insert into t1 values( 370 ) +master-bin.000001 3087 Query 1 3178 use `test`; insert into t1 values( 369 ) +master-bin.000001 3178 Query 1 3269 use `test`; insert into t1 values( 368 ) +master-bin.000001 3269 Query 1 3360 use `test`; insert into t1 values( 367 ) +master-bin.000001 3360 Query 1 3451 use `test`; insert into t1 values( 366 ) +master-bin.000001 3451 Query 1 3542 use `test`; insert into t1 values( 365 ) +master-bin.000001 3542 Query 1 3633 use `test`; insert into t1 values( 364 ) +master-bin.000001 3633 Query 1 3724 use `test`; insert into t1 values( 363 ) +master-bin.000001 3724 Query 1 3815 use `test`; insert into t1 values( 362 ) +master-bin.000001 3815 Query 1 3906 use `test`; insert into t1 values( 361 ) +master-bin.000001 3906 Query 1 3997 use `test`; insert into t1 values( 360 ) +master-bin.000001 3997 Query 1 4088 use `test`; insert into t1 values( 359 ) +master-bin.000001 4088 Query 1 4179 use `test`; insert into t1 values( 358 ) +master-bin.000001 4179 Query 1 4270 use `test`; insert into t1 values( 357 ) +master-bin.000001 4270 Query 1 4361 use `test`; insert into t1 values( 356 ) +master-bin.000001 4361 Query 1 4452 use `test`; insert into t1 values( 355 ) +master-bin.000001 4452 Query 1 4543 use `test`; insert into t1 values( 354 ) +master-bin.000001 4543 Query 1 4634 use `test`; insert into t1 values( 353 ) +master-bin.000001 4634 Query 1 4725 use `test`; insert into t1 values( 352 ) +master-bin.000001 4725 Query 1 4816 use `test`; insert into t1 values( 351 ) +master-bin.000001 4816 Query 1 4907 use `test`; insert into t1 values( 350 ) +master-bin.000001 4907 Query 1 4998 use `test`; insert into t1 values( 349 ) +master-bin.000001 4998 Query 1 5089 use `test`; insert into t1 values( 348 ) +master-bin.000001 5089 Query 1 5180 use `test`; insert into t1 values( 347 ) +master-bin.000001 5180 Query 1 5271 use `test`; insert into t1 values( 346 ) +master-bin.000001 5271 Query 1 5362 use `test`; insert into t1 values( 345 ) +master-bin.000001 5362 Query 1 5453 use `test`; insert into t1 values( 344 ) +master-bin.000001 5453 Query 1 5544 use `test`; insert into t1 values( 343 ) +master-bin.000001 5544 Query 1 5635 use `test`; insert into t1 values( 342 ) +master-bin.000001 5635 Query 1 5726 use `test`; insert into t1 values( 341 ) +master-bin.000001 5726 Query 1 5817 use `test`; insert into t1 values( 340 ) +master-bin.000001 5817 Query 1 5908 use `test`; insert into t1 values( 339 ) +master-bin.000001 5908 Query 1 5999 use `test`; insert into t1 values( 338 ) +master-bin.000001 5999 Query 1 6090 use `test`; insert into t1 values( 337 ) +master-bin.000001 6090 Query 1 6181 use `test`; insert into t1 values( 336 ) +master-bin.000001 6181 Query 1 6272 use `test`; insert into t1 values( 335 ) +master-bin.000001 6272 Query 1 6363 use `test`; insert into t1 values( 334 ) +master-bin.000001 6363 Query 1 6454 use `test`; insert into t1 values( 333 ) +master-bin.000001 6454 Query 1 6545 use `test`; insert into t1 values( 332 ) +master-bin.000001 6545 Query 1 6636 use `test`; insert into t1 values( 331 ) +master-bin.000001 6636 Query 1 6727 use `test`; insert into t1 values( 330 ) +master-bin.000001 6727 Query 1 6818 use `test`; insert into t1 values( 329 ) +master-bin.000001 6818 Query 1 6909 use `test`; insert into t1 values( 328 ) +master-bin.000001 6909 Query 1 7000 use `test`; insert into t1 values( 327 ) +master-bin.000001 7000 Query 1 7091 use `test`; insert into t1 values( 326 ) +master-bin.000001 7091 Query 1 7182 use `test`; insert into t1 values( 325 ) +master-bin.000001 7182 Query 1 7273 use `test`; insert into t1 values( 324 ) +master-bin.000001 7273 Query 1 7364 use `test`; insert into t1 values( 323 ) +master-bin.000001 7364 Query 1 7455 use `test`; insert into t1 values( 322 ) +master-bin.000001 7455 Query 1 7546 use `test`; insert into t1 values( 321 ) +master-bin.000001 7546 Query 1 7637 use `test`; insert into t1 values( 320 ) +master-bin.000001 7637 Query 1 7728 use `test`; insert into t1 values( 319 ) +master-bin.000001 7728 Query 1 7819 use `test`; insert into t1 values( 318 ) +master-bin.000001 7819 Query 1 7910 use `test`; insert into t1 values( 317 ) +master-bin.000001 7910 Query 1 8001 use `test`; insert into t1 values( 316 ) +master-bin.000001 8001 Query 1 8092 use `test`; insert into t1 values( 315 ) +master-bin.000001 8092 Query 1 8183 use `test`; insert into t1 values( 314 ) +master-bin.000001 8183 Query 1 8274 use `test`; insert into t1 values( 313 ) +master-bin.000001 8274 Query 1 8365 use `test`; insert into t1 values( 312 ) +master-bin.000001 8365 Query 1 8456 use `test`; insert into t1 values( 311 ) +master-bin.000001 8456 Query 1 8547 use `test`; insert into t1 values( 310 ) +master-bin.000001 8547 Query 1 8638 use `test`; insert into t1 values( 309 ) +master-bin.000001 8638 Query 1 8729 use `test`; insert into t1 values( 308 ) +master-bin.000001 8729 Query 1 8820 use `test`; insert into t1 values( 307 ) +master-bin.000001 8820 Query 1 8911 use `test`; insert into t1 values( 306 ) +master-bin.000001 8911 Query 1 9002 use `test`; insert into t1 values( 305 ) +master-bin.000001 9002 Query 1 9093 use `test`; insert into t1 values( 304 ) +master-bin.000001 9093 Query 1 9184 use `test`; insert into t1 values( 303 ) +master-bin.000001 9184 Query 1 9275 use `test`; insert into t1 values( 302 ) +master-bin.000001 9275 Query 1 9366 use `test`; insert into t1 values( 301 ) +master-bin.000001 9366 Query 1 9457 use `test`; insert into t1 values( 300 ) +master-bin.000001 9457 Query 1 9548 use `test`; insert into t1 values( 299 ) +master-bin.000001 9548 Query 1 9639 use `test`; insert into t1 values( 298 ) +master-bin.000001 9639 Query 1 9730 use `test`; insert into t1 values( 297 ) +master-bin.000001 9730 Query 1 9821 use `test`; insert into t1 values( 296 ) +master-bin.000001 9821 Query 1 9912 use `test`; insert into t1 values( 295 ) +master-bin.000001 9912 Query 1 10003 use `test`; insert into t1 values( 294 ) +master-bin.000001 10003 Query 1 10094 use `test`; insert into t1 values( 293 ) +master-bin.000001 10094 Query 1 10185 use `test`; insert into t1 values( 292 ) +master-bin.000001 10185 Query 1 10276 use `test`; insert into t1 values( 291 ) +master-bin.000001 10276 Query 1 10367 use `test`; insert into t1 values( 290 ) +master-bin.000001 10367 Query 1 10458 use `test`; insert into t1 values( 289 ) +master-bin.000001 10458 Query 1 10549 use `test`; insert into t1 values( 288 ) +master-bin.000001 10549 Query 1 10640 use `test`; insert into t1 values( 287 ) +master-bin.000001 10640 Query 1 10731 use `test`; insert into t1 values( 286 ) +master-bin.000001 10731 Query 1 10822 use `test`; insert into t1 values( 285 ) +master-bin.000001 10822 Query 1 10913 use `test`; insert into t1 values( 284 ) +master-bin.000001 10913 Query 1 11004 use `test`; insert into t1 values( 283 ) +master-bin.000001 11004 Query 1 11095 use `test`; insert into t1 values( 282 ) +master-bin.000001 11095 Query 1 11186 use `test`; insert into t1 values( 281 ) +master-bin.000001 11186 Query 1 11277 use `test`; insert into t1 values( 280 ) +master-bin.000001 11277 Query 1 11368 use `test`; insert into t1 values( 279 ) +master-bin.000001 11368 Query 1 11459 use `test`; insert into t1 values( 278 ) +master-bin.000001 11459 Query 1 11550 use `test`; insert into t1 values( 277 ) +master-bin.000001 11550 Query 1 11641 use `test`; insert into t1 values( 276 ) +master-bin.000001 11641 Query 1 11732 use `test`; insert into t1 values( 275 ) +master-bin.000001 11732 Query 1 11823 use `test`; insert into t1 values( 274 ) +master-bin.000001 11823 Query 1 11914 use `test`; insert into t1 values( 273 ) +master-bin.000001 11914 Query 1 12005 use `test`; insert into t1 values( 272 ) +master-bin.000001 12005 Query 1 12096 use `test`; insert into t1 values( 271 ) +master-bin.000001 12096 Query 1 12187 use `test`; insert into t1 values( 270 ) +master-bin.000001 12187 Query 1 12278 use `test`; insert into t1 values( 269 ) +master-bin.000001 12278 Query 1 12369 use `test`; insert into t1 values( 268 ) +master-bin.000001 12369 Query 1 12460 use `test`; insert into t1 values( 267 ) +master-bin.000001 12460 Query 1 12551 use `test`; insert into t1 values( 266 ) +master-bin.000001 12551 Query 1 12642 use `test`; insert into t1 values( 265 ) +master-bin.000001 12642 Query 1 12733 use `test`; insert into t1 values( 264 ) +master-bin.000001 12733 Query 1 12824 use `test`; insert into t1 values( 263 ) +master-bin.000001 12824 Query 1 12915 use `test`; insert into t1 values( 262 ) +master-bin.000001 12915 Query 1 13006 use `test`; insert into t1 values( 261 ) +master-bin.000001 13006 Query 1 13097 use `test`; insert into t1 values( 260 ) +master-bin.000001 13097 Query 1 13188 use `test`; insert into t1 values( 259 ) +master-bin.000001 13188 Query 1 13279 use `test`; insert into t1 values( 258 ) +master-bin.000001 13279 Query 1 13370 use `test`; insert into t1 values( 257 ) +master-bin.000001 13370 Query 1 13461 use `test`; insert into t1 values( 256 ) +master-bin.000001 13461 Query 1 13552 use `test`; insert into t1 values( 255 ) +master-bin.000001 13552 Query 1 13643 use `test`; insert into t1 values( 254 ) +master-bin.000001 13643 Query 1 13734 use `test`; insert into t1 values( 253 ) +master-bin.000001 13734 Query 1 13825 use `test`; insert into t1 values( 252 ) +master-bin.000001 13825 Query 1 13916 use `test`; insert into t1 values( 251 ) +master-bin.000001 13916 Query 1 14007 use `test`; insert into t1 values( 250 ) +master-bin.000001 14007 Query 1 14098 use `test`; insert into t1 values( 249 ) +master-bin.000001 14098 Query 1 14189 use `test`; insert into t1 values( 248 ) +master-bin.000001 14189 Query 1 14280 use `test`; insert into t1 values( 247 ) +master-bin.000001 14280 Query 1 14371 use `test`; insert into t1 values( 246 ) +master-bin.000001 14371 Query 1 14462 use `test`; insert into t1 values( 245 ) +master-bin.000001 14462 Query 1 14553 use `test`; insert into t1 values( 244 ) +master-bin.000001 14553 Query 1 14644 use `test`; insert into t1 values( 243 ) +master-bin.000001 14644 Query 1 14735 use `test`; insert into t1 values( 242 ) +master-bin.000001 14735 Query 1 14826 use `test`; insert into t1 values( 241 ) +master-bin.000001 14826 Query 1 14917 use `test`; insert into t1 values( 240 ) +master-bin.000001 14917 Query 1 15008 use `test`; insert into t1 values( 239 ) +master-bin.000001 15008 Query 1 15099 use `test`; insert into t1 values( 238 ) +master-bin.000001 15099 Query 1 15190 use `test`; insert into t1 values( 237 ) +master-bin.000001 15190 Query 1 15281 use `test`; insert into t1 values( 236 ) +master-bin.000001 15281 Query 1 15372 use `test`; insert into t1 values( 235 ) +master-bin.000001 15372 Query 1 15463 use `test`; insert into t1 values( 234 ) +master-bin.000001 15463 Query 1 15554 use `test`; insert into t1 values( 233 ) +master-bin.000001 15554 Query 1 15645 use `test`; insert into t1 values( 232 ) +master-bin.000001 15645 Query 1 15736 use `test`; insert into t1 values( 231 ) +master-bin.000001 15736 Query 1 15827 use `test`; insert into t1 values( 230 ) +master-bin.000001 15827 Query 1 15918 use `test`; insert into t1 values( 229 ) +master-bin.000001 15918 Query 1 16009 use `test`; insert into t1 values( 228 ) +master-bin.000001 16009 Query 1 16100 use `test`; insert into t1 values( 227 ) +master-bin.000001 16100 Query 1 16191 use `test`; insert into t1 values( 226 ) +master-bin.000001 16191 Query 1 16282 use `test`; insert into t1 values( 225 ) +master-bin.000001 16282 Query 1 16373 use `test`; insert into t1 values( 224 ) +master-bin.000001 16373 Query 1 16464 use `test`; insert into t1 values( 223 ) +master-bin.000001 16464 Query 1 16555 use `test`; insert into t1 values( 222 ) +master-bin.000001 16555 Query 1 16646 use `test`; insert into t1 values( 221 ) +master-bin.000001 16646 Query 1 16737 use `test`; insert into t1 values( 220 ) +master-bin.000001 16737 Query 1 16828 use `test`; insert into t1 values( 219 ) +master-bin.000001 16828 Query 1 16919 use `test`; insert into t1 values( 218 ) +master-bin.000001 16919 Query 1 17010 use `test`; insert into t1 values( 217 ) +master-bin.000001 17010 Query 1 17101 use `test`; insert into t1 values( 216 ) +master-bin.000001 17101 Query 1 17192 use `test`; insert into t1 values( 215 ) +master-bin.000001 17192 Query 1 17283 use `test`; insert into t1 values( 214 ) +master-bin.000001 17283 Query 1 17374 use `test`; insert into t1 values( 213 ) +master-bin.000001 17374 Query 1 17465 use `test`; insert into t1 values( 212 ) +master-bin.000001 17465 Query 1 17556 use `test`; insert into t1 values( 211 ) +master-bin.000001 17556 Query 1 17647 use `test`; insert into t1 values( 210 ) +master-bin.000001 17647 Query 1 17738 use `test`; insert into t1 values( 209 ) +master-bin.000001 17738 Query 1 17829 use `test`; insert into t1 values( 208 ) +master-bin.000001 17829 Query 1 17920 use `test`; insert into t1 values( 207 ) +master-bin.000001 17920 Query 1 18011 use `test`; insert into t1 values( 206 ) +master-bin.000001 18011 Query 1 18102 use `test`; insert into t1 values( 205 ) +master-bin.000001 18102 Query 1 18193 use `test`; insert into t1 values( 204 ) +master-bin.000001 18193 Query 1 18284 use `test`; insert into t1 values( 203 ) +master-bin.000001 18284 Query 1 18375 use `test`; insert into t1 values( 202 ) +master-bin.000001 18375 Query 1 18466 use `test`; insert into t1 values( 201 ) +master-bin.000001 18466 Query 1 18557 use `test`; insert into t1 values( 200 ) +master-bin.000001 18557 Query 1 18648 use `test`; insert into t1 values( 199 ) +master-bin.000001 18648 Query 1 18739 use `test`; insert into t1 values( 198 ) +master-bin.000001 18739 Query 1 18830 use `test`; insert into t1 values( 197 ) +master-bin.000001 18830 Query 1 18921 use `test`; insert into t1 values( 196 ) +master-bin.000001 18921 Query 1 19012 use `test`; insert into t1 values( 195 ) +master-bin.000001 19012 Query 1 19103 use `test`; insert into t1 values( 194 ) +master-bin.000001 19103 Query 1 19194 use `test`; insert into t1 values( 193 ) +master-bin.000001 19194 Query 1 19285 use `test`; insert into t1 values( 192 ) +master-bin.000001 19285 Query 1 19376 use `test`; insert into t1 values( 191 ) +master-bin.000001 19376 Query 1 19467 use `test`; insert into t1 values( 190 ) +master-bin.000001 19467 Query 1 19558 use `test`; insert into t1 values( 189 ) +master-bin.000001 19558 Query 1 19649 use `test`; insert into t1 values( 188 ) +master-bin.000001 19649 Query 1 19740 use `test`; insert into t1 values( 187 ) +master-bin.000001 19740 Query 1 19831 use `test`; insert into t1 values( 186 ) +master-bin.000001 19831 Query 1 19922 use `test`; insert into t1 values( 185 ) +master-bin.000001 19922 Query 1 20013 use `test`; insert into t1 values( 184 ) +master-bin.000001 20013 Query 1 20104 use `test`; insert into t1 values( 183 ) +master-bin.000001 20104 Query 1 20195 use `test`; insert into t1 values( 182 ) +master-bin.000001 20195 Query 1 20286 use `test`; insert into t1 values( 181 ) +master-bin.000001 20286 Query 1 20377 use `test`; insert into t1 values( 180 ) +master-bin.000001 20377 Query 1 20468 use `test`; insert into t1 values( 179 ) +master-bin.000001 20468 Query 1 20559 use `test`; insert into t1 values( 178 ) +master-bin.000001 20559 Query 1 20650 use `test`; insert into t1 values( 177 ) +master-bin.000001 20650 Query 1 20741 use `test`; insert into t1 values( 176 ) +master-bin.000001 20741 Query 1 20832 use `test`; insert into t1 values( 175 ) +master-bin.000001 20832 Query 1 20923 use `test`; insert into t1 values( 174 ) +master-bin.000001 20923 Query 1 21014 use `test`; insert into t1 values( 173 ) +master-bin.000001 21014 Query 1 21105 use `test`; insert into t1 values( 172 ) +master-bin.000001 21105 Query 1 21196 use `test`; insert into t1 values( 171 ) +master-bin.000001 21196 Query 1 21287 use `test`; insert into t1 values( 170 ) +master-bin.000001 21287 Query 1 21378 use `test`; insert into t1 values( 169 ) +master-bin.000001 21378 Query 1 21469 use `test`; insert into t1 values( 168 ) +master-bin.000001 21469 Query 1 21560 use `test`; insert into t1 values( 167 ) +master-bin.000001 21560 Query 1 21651 use `test`; insert into t1 values( 166 ) +master-bin.000001 21651 Query 1 21742 use `test`; insert into t1 values( 165 ) +master-bin.000001 21742 Query 1 21833 use `test`; insert into t1 values( 164 ) +master-bin.000001 21833 Query 1 21924 use `test`; insert into t1 values( 163 ) +master-bin.000001 21924 Query 1 22015 use `test`; insert into t1 values( 162 ) +master-bin.000001 22015 Query 1 22106 use `test`; insert into t1 values( 161 ) +master-bin.000001 22106 Query 1 22197 use `test`; insert into t1 values( 160 ) +master-bin.000001 22197 Query 1 22288 use `test`; insert into t1 values( 159 ) +master-bin.000001 22288 Query 1 22379 use `test`; insert into t1 values( 158 ) +master-bin.000001 22379 Query 1 22470 use `test`; insert into t1 values( 157 ) +master-bin.000001 22470 Query 1 22561 use `test`; insert into t1 values( 156 ) +master-bin.000001 22561 Query 1 22652 use `test`; insert into t1 values( 155 ) +master-bin.000001 22652 Query 1 22743 use `test`; insert into t1 values( 154 ) +master-bin.000001 22743 Query 1 22834 use `test`; insert into t1 values( 153 ) +master-bin.000001 22834 Query 1 22925 use `test`; insert into t1 values( 152 ) +master-bin.000001 22925 Query 1 23016 use `test`; insert into t1 values( 151 ) +master-bin.000001 23016 Query 1 23107 use `test`; insert into t1 values( 150 ) +master-bin.000001 23107 Query 1 23198 use `test`; insert into t1 values( 149 ) +master-bin.000001 23198 Query 1 23289 use `test`; insert into t1 values( 148 ) +master-bin.000001 23289 Query 1 23380 use `test`; insert into t1 values( 147 ) +master-bin.000001 23380 Query 1 23471 use `test`; insert into t1 values( 146 ) +master-bin.000001 23471 Query 1 23562 use `test`; insert into t1 values( 145 ) +master-bin.000001 23562 Query 1 23653 use `test`; insert into t1 values( 144 ) +master-bin.000001 23653 Query 1 23744 use `test`; insert into t1 values( 143 ) +master-bin.000001 23744 Query 1 23835 use `test`; insert into t1 values( 142 ) +master-bin.000001 23835 Query 1 23926 use `test`; insert into t1 values( 141 ) +master-bin.000001 23926 Query 1 24017 use `test`; insert into t1 values( 140 ) +master-bin.000001 24017 Query 1 24108 use `test`; insert into t1 values( 139 ) +master-bin.000001 24108 Query 1 24199 use `test`; insert into t1 values( 138 ) +master-bin.000001 24199 Query 1 24290 use `test`; insert into t1 values( 137 ) +master-bin.000001 24290 Query 1 24381 use `test`; insert into t1 values( 136 ) +master-bin.000001 24381 Query 1 24472 use `test`; insert into t1 values( 135 ) +master-bin.000001 24472 Query 1 24563 use `test`; insert into t1 values( 134 ) +master-bin.000001 24563 Query 1 24654 use `test`; insert into t1 values( 133 ) +master-bin.000001 24654 Query 1 24745 use `test`; insert into t1 values( 132 ) +master-bin.000001 24745 Query 1 24836 use `test`; insert into t1 values( 131 ) +master-bin.000001 24836 Query 1 24927 use `test`; insert into t1 values( 130 ) +master-bin.000001 24927 Query 1 25018 use `test`; insert into t1 values( 129 ) +master-bin.000001 25018 Query 1 25109 use `test`; insert into t1 values( 128 ) +master-bin.000001 25109 Query 1 25200 use `test`; insert into t1 values( 127 ) +master-bin.000001 25200 Query 1 25291 use `test`; insert into t1 values( 126 ) +master-bin.000001 25291 Query 1 25382 use `test`; insert into t1 values( 125 ) +master-bin.000001 25382 Query 1 25473 use `test`; insert into t1 values( 124 ) +master-bin.000001 25473 Query 1 25564 use `test`; insert into t1 values( 123 ) +master-bin.000001 25564 Query 1 25655 use `test`; insert into t1 values( 122 ) +master-bin.000001 25655 Query 1 25746 use `test`; insert into t1 values( 121 ) +master-bin.000001 25746 Query 1 25837 use `test`; insert into t1 values( 120 ) +master-bin.000001 25837 Query 1 25928 use `test`; insert into t1 values( 119 ) +master-bin.000001 25928 Query 1 26019 use `test`; insert into t1 values( 118 ) +master-bin.000001 26019 Query 1 26110 use `test`; insert into t1 values( 117 ) +master-bin.000001 26110 Query 1 26201 use `test`; insert into t1 values( 116 ) +master-bin.000001 26201 Query 1 26292 use `test`; insert into t1 values( 115 ) +master-bin.000001 26292 Query 1 26383 use `test`; insert into t1 values( 114 ) +master-bin.000001 26383 Query 1 26474 use `test`; insert into t1 values( 113 ) +master-bin.000001 26474 Query 1 26565 use `test`; insert into t1 values( 112 ) +master-bin.000001 26565 Query 1 26656 use `test`; insert into t1 values( 111 ) +master-bin.000001 26656 Query 1 26747 use `test`; insert into t1 values( 110 ) +master-bin.000001 26747 Query 1 26838 use `test`; insert into t1 values( 109 ) +master-bin.000001 26838 Query 1 26929 use `test`; insert into t1 values( 108 ) +master-bin.000001 26929 Query 1 27020 use `test`; insert into t1 values( 107 ) +master-bin.000001 27020 Query 1 27111 use `test`; insert into t1 values( 106 ) +master-bin.000001 27111 Query 1 27202 use `test`; insert into t1 values( 105 ) +master-bin.000001 27202 Query 1 27293 use `test`; insert into t1 values( 104 ) +master-bin.000001 27293 Query 1 27384 use `test`; insert into t1 values( 103 ) +master-bin.000001 27384 Query 1 27475 use `test`; insert into t1 values( 102 ) +master-bin.000001 27475 Query 1 27566 use `test`; insert into t1 values( 101 ) +master-bin.000001 27566 Query 1 27657 use `test`; insert into t1 values( 100 ) +master-bin.000001 27657 Query 1 27747 use `test`; insert into t1 values( 99 ) +master-bin.000001 27747 Query 1 27837 use `test`; insert into t1 values( 98 ) +master-bin.000001 27837 Query 1 27927 use `test`; insert into t1 values( 97 ) +master-bin.000001 27927 Query 1 28017 use `test`; insert into t1 values( 96 ) +master-bin.000001 28017 Query 1 28107 use `test`; insert into t1 values( 95 ) +master-bin.000001 28107 Query 1 28197 use `test`; insert into t1 values( 94 ) +master-bin.000001 28197 Query 1 28287 use `test`; insert into t1 values( 93 ) +master-bin.000001 28287 Query 1 28377 use `test`; insert into t1 values( 92 ) +master-bin.000001 28377 Query 1 28467 use `test`; insert into t1 values( 91 ) +master-bin.000001 28467 Query 1 28557 use `test`; insert into t1 values( 90 ) +master-bin.000001 28557 Query 1 28647 use `test`; insert into t1 values( 89 ) +master-bin.000001 28647 Query 1 28737 use `test`; insert into t1 values( 88 ) +master-bin.000001 28737 Query 1 28827 use `test`; insert into t1 values( 87 ) +master-bin.000001 28827 Query 1 28917 use `test`; insert into t1 values( 86 ) +master-bin.000001 28917 Query 1 29007 use `test`; insert into t1 values( 85 ) +master-bin.000001 29007 Query 1 29097 use `test`; insert into t1 values( 84 ) +master-bin.000001 29097 Query 1 29187 use `test`; insert into t1 values( 83 ) +master-bin.000001 29187 Query 1 29277 use `test`; insert into t1 values( 82 ) +master-bin.000001 29277 Query 1 29367 use `test`; insert into t1 values( 81 ) +master-bin.000001 29367 Query 1 29457 use `test`; insert into t1 values( 80 ) +master-bin.000001 29457 Query 1 29547 use `test`; insert into t1 values( 79 ) +master-bin.000001 29547 Query 1 29637 use `test`; insert into t1 values( 78 ) +master-bin.000001 29637 Query 1 29727 use `test`; insert into t1 values( 77 ) +master-bin.000001 29727 Query 1 29817 use `test`; insert into t1 values( 76 ) +master-bin.000001 29817 Query 1 29907 use `test`; insert into t1 values( 75 ) +master-bin.000001 29907 Query 1 29997 use `test`; insert into t1 values( 74 ) +master-bin.000001 29997 Query 1 30087 use `test`; insert into t1 values( 73 ) +master-bin.000001 30087 Query 1 30177 use `test`; insert into t1 values( 72 ) +master-bin.000001 30177 Query 1 30267 use `test`; insert into t1 values( 71 ) +master-bin.000001 30267 Query 1 30357 use `test`; insert into t1 values( 70 ) +master-bin.000001 30357 Query 1 30447 use `test`; insert into t1 values( 69 ) +master-bin.000001 30447 Query 1 30537 use `test`; insert into t1 values( 68 ) +master-bin.000001 30537 Query 1 30627 use `test`; insert into t1 values( 67 ) +master-bin.000001 30627 Query 1 30717 use `test`; insert into t1 values( 66 ) +master-bin.000001 30717 Query 1 30807 use `test`; insert into t1 values( 65 ) +master-bin.000001 30807 Query 1 30897 use `test`; insert into t1 values( 64 ) +master-bin.000001 30897 Query 1 30987 use `test`; insert into t1 values( 63 ) +master-bin.000001 30987 Query 1 31077 use `test`; insert into t1 values( 62 ) +master-bin.000001 31077 Query 1 31167 use `test`; insert into t1 values( 61 ) +master-bin.000001 31167 Query 1 31257 use `test`; insert into t1 values( 60 ) +master-bin.000001 31257 Query 1 31347 use `test`; insert into t1 values( 59 ) +master-bin.000001 31347 Query 1 31437 use `test`; insert into t1 values( 58 ) +master-bin.000001 31437 Query 1 31527 use `test`; insert into t1 values( 57 ) +master-bin.000001 31527 Query 1 31617 use `test`; insert into t1 values( 56 ) +master-bin.000001 31617 Query 1 31707 use `test`; insert into t1 values( 55 ) +master-bin.000001 31707 Query 1 31797 use `test`; insert into t1 values( 54 ) +master-bin.000001 31797 Query 1 31887 use `test`; insert into t1 values( 53 ) +master-bin.000001 31887 Query 1 31977 use `test`; insert into t1 values( 52 ) +master-bin.000001 31977 Query 1 32067 use `test`; insert into t1 values( 51 ) +master-bin.000001 32067 Query 1 32157 use `test`; insert into t1 values( 50 ) +master-bin.000001 32157 Query 1 32247 use `test`; insert into t1 values( 49 ) +master-bin.000001 32247 Query 1 32337 use `test`; insert into t1 values( 48 ) +master-bin.000001 32337 Query 1 32427 use `test`; insert into t1 values( 47 ) +master-bin.000001 32427 Query 1 32517 use `test`; insert into t1 values( 46 ) +master-bin.000001 32517 Query 1 32607 use `test`; insert into t1 values( 45 ) +master-bin.000001 32607 Query 1 32697 use `test`; insert into t1 values( 44 ) +master-bin.000001 32697 Query 1 32787 use `test`; insert into t1 values( 43 ) +master-bin.000001 32787 Query 1 32877 use `test`; insert into t1 values( 42 ) +master-bin.000001 32877 Query 1 32967 use `test`; insert into t1 values( 41 ) +master-bin.000001 32967 Query 1 33057 use `test`; insert into t1 values( 40 ) +master-bin.000001 33057 Query 1 33147 use `test`; insert into t1 values( 39 ) +master-bin.000001 33147 Query 1 33237 use `test`; insert into t1 values( 38 ) +master-bin.000001 33237 Query 1 33327 use `test`; insert into t1 values( 37 ) +master-bin.000001 33327 Query 1 33417 use `test`; insert into t1 values( 36 ) +master-bin.000001 33417 Query 1 33507 use `test`; insert into t1 values( 35 ) +master-bin.000001 33507 Query 1 33597 use `test`; insert into t1 values( 34 ) +master-bin.000001 33597 Query 1 33687 use `test`; insert into t1 values( 33 ) +master-bin.000001 33687 Query 1 33777 use `test`; insert into t1 values( 32 ) +master-bin.000001 33777 Query 1 33867 use `test`; insert into t1 values( 31 ) +master-bin.000001 33867 Query 1 33957 use `test`; insert into t1 values( 30 ) +master-bin.000001 33957 Query 1 34047 use `test`; insert into t1 values( 29 ) +master-bin.000001 34047 Query 1 34137 use `test`; insert into t1 values( 28 ) +master-bin.000001 34137 Query 1 34227 use `test`; insert into t1 values( 27 ) +master-bin.000001 34227 Query 1 34317 use `test`; insert into t1 values( 26 ) +master-bin.000001 34317 Query 1 34407 use `test`; insert into t1 values( 25 ) +master-bin.000001 34407 Query 1 34497 use `test`; insert into t1 values( 24 ) +master-bin.000001 34497 Query 1 34587 use `test`; insert into t1 values( 23 ) +master-bin.000001 34587 Query 1 34677 use `test`; insert into t1 values( 22 ) +master-bin.000001 34677 Query 1 34767 use `test`; insert into t1 values( 21 ) +master-bin.000001 34767 Query 1 34857 use `test`; insert into t1 values( 20 ) +master-bin.000001 34857 Query 1 34947 use `test`; insert into t1 values( 19 ) +master-bin.000001 34947 Query 1 35037 use `test`; insert into t1 values( 18 ) +master-bin.000001 35037 Query 1 35127 use `test`; insert into t1 values( 17 ) +master-bin.000001 35127 Query 1 35217 use `test`; insert into t1 values( 16 ) +master-bin.000001 35217 Query 1 35307 use `test`; insert into t1 values( 15 ) +master-bin.000001 35307 Query 1 35397 use `test`; insert into t1 values( 14 ) +master-bin.000001 35397 Query 1 35487 use `test`; insert into t1 values( 13 ) +master-bin.000001 35487 Query 1 35577 use `test`; insert into t1 values( 12 ) +master-bin.000001 35577 Query 1 35667 use `test`; insert into t1 values( 11 ) +master-bin.000001 35667 Query 1 35757 use `test`; insert into t1 values( 10 ) +master-bin.000001 35757 Query 1 35846 use `test`; insert into t1 values( 9 ) +master-bin.000001 35846 Query 1 35935 use `test`; insert into t1 values( 8 ) +master-bin.000001 35935 Query 1 36024 use `test`; insert into t1 values( 7 ) +master-bin.000001 36024 Query 1 36113 use `test`; insert into t1 values( 6 ) +master-bin.000001 36113 Query 1 36202 use `test`; insert into t1 values( 5 ) +master-bin.000001 36202 Query 1 36291 use `test`; insert into t1 values( 4 ) +master-bin.000001 36291 Query 1 36380 use `test`; insert into t1 values( 3 ) +master-bin.000001 36380 Query 1 36469 use `test`; insert into t1 values( 2 ) +master-bin.000001 36469 Query 1 36558 use `test`; insert into t1 values( 1 ) +master-bin.000001 36558 Xid 1 36585 COMMIT /* xid=186 */ +master-bin.000001 36585 Rotate 1 36629 master-bin.000002;pos=4 +drop table t1; +set global binlog_cache_size=@bcs; +set session autocommit = @ac; End of 5.0 tests diff --git a/mysql-test/t/binlog.test b/mysql-test/t/binlog.test index 6271a8f95a8..d5479a45226 100644 --- a/mysql-test/t/binlog.test +++ b/mysql-test/t/binlog.test @@ -4,7 +4,6 @@ -- source include/have_log_bin.inc -- source include/not_embedded.inc -- source include/have_innodb.inc --- source include/have_log_bin.inc --disable_warnings drop table if exists t1, t2; @@ -137,4 +136,34 @@ show binlog events from 0; set session autocommit = @ac; +# now show that nothing breaks if we need to read from the cache more +# than once, resulting in split event-headers + +set @bcs = @@binlog_cache_size; +set @ac = @@autocommit; + +set global binlog_cache_size=4096; +set autocommit= 0; +reset master; + +create table t1 (a int) engine=innodb; + +let $1=400; +disable_query_log; +begin; +while ($1) +{ + eval insert into t1 values( $1 ); + dec $1; +} +commit; +enable_query_log; + +show binlog events from 0; + +drop table t1; + +set global binlog_cache_size=@bcs; +set session autocommit = @ac; + --echo End of 5.0 tests diff --git a/sql/log.cc b/sql/log.cc index af8168c6a46..289d98e63d3 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1918,58 +1918,61 @@ bool MYSQL_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event) memcpy((char *)cache->read_pos, &header[carry], LOG_EVENT_HEADER_LEN - carry); /* next event header at ... */ - hdr_offs = LOG_EVENT_HEADER_LEN - carry + - uint4korr(&header[EVENT_LEN_OFFSET]); + hdr_offs = uint4korr(&header[EVENT_LEN_OFFSET]) - carry; carry= 0; } /* if there is anything to write, process it. */ - if(likely(length > 0)) + if (likely(length > 0)) { /* - next header beyond current read-buffer? we'll get it later - (though not necessarily in the very next iteration). + process all event-headers in this (partial) cache. + if next header is beyond current read-buffer, + we'll get it later (though not necessarily in the + very next iteration, just "eventually"). */ - if (hdr_offs >= length) - hdr_offs -= length; - else + while (hdr_offs < length) { + /* + partial header only? save what we can get, process once + we get the rest. + */ - /* process all event-headers in this (partial) cache. */ + if (hdr_offs + LOG_EVENT_HEADER_LEN > length) + { + carry= length - hdr_offs; + memcpy(header, (char *)cache->read_pos + hdr_offs, carry); + length= hdr_offs; + } + else + { + /* we've got a full event-header, and it came in one piece */ - do { + char *log_pos= (char *)cache->read_pos + hdr_offs + LOG_POS_OFFSET; - /* - partial header only? save what we can get, process once - we get the rest. - */ + /* fix end_log_pos */ + val= uint4korr(log_pos) + group; + int4store(log_pos, val); - if (hdr_offs + LOG_EVENT_HEADER_LEN > length) - { - carry= length - hdr_offs; - memcpy(header, (char *)cache->read_pos + hdr_offs, carry); - length= hdr_offs; - } - else - { - /* we've got a full event-header, and it came in one piece */ + /* next event header at ... */ + log_pos= (char *)cache->read_pos + hdr_offs + EVENT_LEN_OFFSET; + hdr_offs += uint4korr(log_pos); - char *log_pos= (char *)cache->read_pos + hdr_offs + LOG_POS_OFFSET; - - /* fix end_log_pos */ - val= uint4korr(log_pos) + group; - int4store(log_pos, val); - - /* next event header at ... */ - log_pos= (char *)cache->read_pos + hdr_offs + EVENT_LEN_OFFSET; - hdr_offs += uint4korr(log_pos); - - } - } while (hdr_offs < length); + } } + + /* + Adjust hdr_offs. Note that this doesn't mean it will necessarily + be valid in the next iteration; if the current event is very long, + it may take a couple of read-iterations (and subsequent fixings + of hdr_offs) for it to become valid again. + if we had a split header, hdr_offs was already fixed above. + */ + if (carry == 0) + hdr_offs -= length; } /* Write data to the binary log file */ From 5b98b71db609403ce16c9a133b3866cb403feb1e Mon Sep 17 00:00:00 2001 From: "tnurnberg@sin.intern.azundris.com" <> Date: Sat, 30 Jun 2007 03:32:33 +0200 Subject: [PATCH 056/127] Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB previous correction didn't. make sure "tail" is fixed up when filling cache several times; rework formulae. --- Merge sin.intern.azundris.com:/home/tnurnberg/22540/50-22540 into sin.intern.azundris.com:/home/tnurnberg/22540/51-22540 --- mysql-test/extra/binlog_tests/binlog.test | 31 +- mysql-test/r/binlog_row_binlog.result | 947 ++++++++++++++++++++++ mysql-test/r/binlog_stm_binlog.result | 416 ++++++++++ mysql-test/r/rpl_row_create_table.result | 28 +- sql/log.cc | 73 +- 5 files changed, 1445 insertions(+), 50 deletions(-) diff --git a/mysql-test/extra/binlog_tests/binlog.test b/mysql-test/extra/binlog_tests/binlog.test index 02d5a92ea38..0a2b84e055b 100644 --- a/mysql-test/extra/binlog_tests/binlog.test +++ b/mysql-test/extra/binlog_tests/binlog.test @@ -5,7 +5,6 @@ -- source include/have_log_bin.inc -- source include/not_embedded.inc -- source include/have_innodb.inc --- source include/have_log_bin.inc -- source include/have_debug.inc --disable_warnings @@ -139,6 +138,36 @@ show binlog events from 0; set session autocommit = @ac; +# now show that nothing breaks if we need to read from the cache more +# than once, resulting in split event-headers + +set @bcs = @@binlog_cache_size; +set @ac = @@autocommit; + +set global binlog_cache_size=4096; +set autocommit= 0; +reset master; + +create table t1 (a int) engine=innodb; + +let $1=400; +disable_query_log; +begin; +while ($1) +{ + eval insert into t1 values( $1 ); + dec $1; +} +commit; +enable_query_log; + +show binlog events from 0; + +drop table t1; + +set global binlog_cache_size=@bcs; +set session autocommit = @ac; + --echo End of 5.0 tests # Test of a too big SET INSERT_ID: see if the truncated value goes diff --git a/mysql-test/r/binlog_row_binlog.result b/mysql-test/r/binlog_row_binlog.result index 6fcaad010d2..89618d37cc1 100644 --- a/mysql-test/r/binlog_row_binlog.result +++ b/mysql-test/r/binlog_row_binlog.result @@ -235,6 +235,953 @@ master-bin.000001 # Rotate 1 # master-bin.000002;pos=4 show binlog events in 'master-bin.000002' from 106; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000002 # Query 1 # use `test`; drop table t1 +set @ac = @@autocommit; +set autocommit= 0; +reset master; +create table t1(n int) engine=innodb; +begin; +insert into t1 values (1); +insert into t1 values (2); +insert into t1 values (3); +commit; +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 +master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=innodb +master-bin.000001 205 Query 1 273 use `test`; BEGIN +master-bin.000001 273 Table_map 1 312 table_id: # (test.t1) +master-bin.000001 312 Write_rows 1 346 table_id: # flags: STMT_END_F +master-bin.000001 346 Table_map 1 385 table_id: # (test.t1) +master-bin.000001 385 Write_rows 1 419 table_id: # flags: STMT_END_F +master-bin.000001 419 Table_map 1 458 table_id: # (test.t1) +master-bin.000001 458 Write_rows 1 492 table_id: # flags: STMT_END_F +master-bin.000001 492 Xid 1 519 COMMIT /* XID */ +master-bin.000001 519 Query 1 595 use `test`; drop table t1 +set autocommit= 1; +reset master; +create table t1(n int) engine=innodb; +insert into t1 values (1); +insert into t1 values (2); +insert into t1 values (3); +commit; +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 +master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=innodb +master-bin.000001 205 Table_map 1 244 table_id: # (test.t1) +master-bin.000001 244 Write_rows 1 278 table_id: # flags: STMT_END_F +master-bin.000001 278 Xid 1 305 COMMIT /* XID */ +master-bin.000001 305 Table_map 1 344 table_id: # (test.t1) +master-bin.000001 344 Write_rows 1 378 table_id: # flags: STMT_END_F +master-bin.000001 378 Xid 1 405 COMMIT /* XID */ +master-bin.000001 405 Table_map 1 444 table_id: # (test.t1) +master-bin.000001 444 Write_rows 1 478 table_id: # flags: STMT_END_F +master-bin.000001 478 Xid 1 505 COMMIT /* XID */ +master-bin.000001 505 Query 1 581 use `test`; drop table t1 +reset master; +create table t1(n int) engine=myisam; +begin; +insert into t1 values (4); +insert into t1 values (5); +insert into t1 values (6); +commit; +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 +master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=myisam +master-bin.000001 205 Table_map 1 244 table_id: # (test.t1) +master-bin.000001 244 Write_rows 1 278 table_id: # flags: STMT_END_F +master-bin.000001 278 Table_map 1 317 table_id: # (test.t1) +master-bin.000001 317 Write_rows 1 351 table_id: # flags: STMT_END_F +master-bin.000001 351 Table_map 1 390 table_id: # (test.t1) +master-bin.000001 390 Write_rows 1 424 table_id: # flags: STMT_END_F +master-bin.000001 424 Query 1 500 use `test`; drop table t1 +set autocommit= 1; +reset master; +create table t1(n int) engine=innodb; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 205 +insert into t1 values (1); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 305 +insert into t1 values (2); +insert into t1 values (3); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 505 +commit; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 505 +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 +master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=innodb +master-bin.000001 205 Table_map 1 244 table_id: # (test.t1) +master-bin.000001 244 Write_rows 1 278 table_id: # flags: STMT_END_F +master-bin.000001 278 Xid 1 305 COMMIT /* XID */ +master-bin.000001 305 Table_map 1 344 table_id: # (test.t1) +master-bin.000001 344 Write_rows 1 378 table_id: # flags: STMT_END_F +master-bin.000001 378 Xid 1 405 COMMIT /* XID */ +master-bin.000001 405 Table_map 1 444 table_id: # (test.t1) +master-bin.000001 444 Write_rows 1 478 table_id: # flags: STMT_END_F +master-bin.000001 478 Xid 1 505 COMMIT /* XID */ +master-bin.000001 505 Query 1 581 use `test`; drop table t1 +set autocommit= 0; +reset master; +create table t1(n int) engine=myisam; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 205 +insert into t1 values (4); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 278 +insert into t1 values (5); +insert into t1 values (6); +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 424 +commit; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 424 +drop table t1; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 +master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=myisam +master-bin.000001 205 Table_map 1 244 table_id: # (test.t1) +master-bin.000001 244 Write_rows 1 278 table_id: # flags: STMT_END_F +master-bin.000001 278 Table_map 1 317 table_id: # (test.t1) +master-bin.000001 317 Write_rows 1 351 table_id: # flags: STMT_END_F +master-bin.000001 351 Table_map 1 390 table_id: # (test.t1) +master-bin.000001 390 Write_rows 1 424 table_id: # flags: STMT_END_F +master-bin.000001 424 Query 1 500 use `test`; drop table t1 +set session autocommit = @ac; +set @bcs = @@binlog_cache_size; +set @ac = @@autocommit; +set global binlog_cache_size=4096; +set autocommit= 0; +reset master; +create table t1 (a int) engine=innodb; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server ver: 5.1.21-beta-debug-log, Binlog ver: 4 +master-bin.000001 106 Query 1 206 use `test`; create table t1 (a int) engine=innodb +master-bin.000001 206 Query 1 274 use `test`; BEGIN +master-bin.000001 274 Table_map 1 313 table_id: 25 (test.t1) +master-bin.000001 313 Write_rows 1 347 table_id: 25 flags: STMT_END_F +master-bin.000001 347 Table_map 1 386 table_id: 25 (test.t1) +master-bin.000001 386 Write_rows 1 420 table_id: 25 flags: STMT_END_F +master-bin.000001 420 Table_map 1 459 table_id: 25 (test.t1) +master-bin.000001 459 Write_rows 1 493 table_id: 25 flags: STMT_END_F +master-bin.000001 493 Table_map 1 532 table_id: 25 (test.t1) +master-bin.000001 532 Write_rows 1 566 table_id: 25 flags: STMT_END_F +master-bin.000001 566 Table_map 1 605 table_id: 25 (test.t1) +master-bin.000001 605 Write_rows 1 639 table_id: 25 flags: STMT_END_F +master-bin.000001 639 Table_map 1 678 table_id: 25 (test.t1) +master-bin.000001 678 Write_rows 1 712 table_id: 25 flags: STMT_END_F +master-bin.000001 712 Table_map 1 751 table_id: 25 (test.t1) +master-bin.000001 751 Write_rows 1 785 table_id: 25 flags: STMT_END_F +master-bin.000001 785 Table_map 1 824 table_id: 25 (test.t1) +master-bin.000001 824 Write_rows 1 858 table_id: 25 flags: STMT_END_F +master-bin.000001 858 Table_map 1 897 table_id: 25 (test.t1) +master-bin.000001 897 Write_rows 1 931 table_id: 25 flags: STMT_END_F +master-bin.000001 931 Table_map 1 970 table_id: 25 (test.t1) +master-bin.000001 970 Write_rows 1 1004 table_id: 25 flags: STMT_END_F +master-bin.000001 1004 Table_map 1 1043 table_id: 25 (test.t1) +master-bin.000001 1043 Write_rows 1 1077 table_id: 25 flags: STMT_END_F +master-bin.000001 1077 Table_map 1 1116 table_id: 25 (test.t1) +master-bin.000001 1116 Write_rows 1 1150 table_id: 25 flags: STMT_END_F +master-bin.000001 1150 Table_map 1 1189 table_id: 25 (test.t1) +master-bin.000001 1189 Write_rows 1 1223 table_id: 25 flags: STMT_END_F +master-bin.000001 1223 Table_map 1 1262 table_id: 25 (test.t1) +master-bin.000001 1262 Write_rows 1 1296 table_id: 25 flags: STMT_END_F +master-bin.000001 1296 Table_map 1 1335 table_id: 25 (test.t1) +master-bin.000001 1335 Write_rows 1 1369 table_id: 25 flags: STMT_END_F +master-bin.000001 1369 Table_map 1 1408 table_id: 25 (test.t1) +master-bin.000001 1408 Write_rows 1 1442 table_id: 25 flags: STMT_END_F +master-bin.000001 1442 Table_map 1 1481 table_id: 25 (test.t1) +master-bin.000001 1481 Write_rows 1 1515 table_id: 25 flags: STMT_END_F +master-bin.000001 1515 Table_map 1 1554 table_id: 25 (test.t1) +master-bin.000001 1554 Write_rows 1 1588 table_id: 25 flags: STMT_END_F +master-bin.000001 1588 Table_map 1 1627 table_id: 25 (test.t1) +master-bin.000001 1627 Write_rows 1 1661 table_id: 25 flags: STMT_END_F +master-bin.000001 1661 Table_map 1 1700 table_id: 25 (test.t1) +master-bin.000001 1700 Write_rows 1 1734 table_id: 25 flags: STMT_END_F +master-bin.000001 1734 Table_map 1 1773 table_id: 25 (test.t1) +master-bin.000001 1773 Write_rows 1 1807 table_id: 25 flags: STMT_END_F +master-bin.000001 1807 Table_map 1 1846 table_id: 25 (test.t1) +master-bin.000001 1846 Write_rows 1 1880 table_id: 25 flags: STMT_END_F +master-bin.000001 1880 Table_map 1 1919 table_id: 25 (test.t1) +master-bin.000001 1919 Write_rows 1 1953 table_id: 25 flags: STMT_END_F +master-bin.000001 1953 Table_map 1 1992 table_id: 25 (test.t1) +master-bin.000001 1992 Write_rows 1 2026 table_id: 25 flags: STMT_END_F +master-bin.000001 2026 Table_map 1 2065 table_id: 25 (test.t1) +master-bin.000001 2065 Write_rows 1 2099 table_id: 25 flags: STMT_END_F +master-bin.000001 2099 Table_map 1 2138 table_id: 25 (test.t1) +master-bin.000001 2138 Write_rows 1 2172 table_id: 25 flags: STMT_END_F +master-bin.000001 2172 Table_map 1 2211 table_id: 25 (test.t1) +master-bin.000001 2211 Write_rows 1 2245 table_id: 25 flags: STMT_END_F +master-bin.000001 2245 Table_map 1 2284 table_id: 25 (test.t1) +master-bin.000001 2284 Write_rows 1 2318 table_id: 25 flags: STMT_END_F +master-bin.000001 2318 Table_map 1 2357 table_id: 25 (test.t1) +master-bin.000001 2357 Write_rows 1 2391 table_id: 25 flags: STMT_END_F +master-bin.000001 2391 Table_map 1 2430 table_id: 25 (test.t1) +master-bin.000001 2430 Write_rows 1 2464 table_id: 25 flags: STMT_END_F +master-bin.000001 2464 Table_map 1 2503 table_id: 25 (test.t1) +master-bin.000001 2503 Write_rows 1 2537 table_id: 25 flags: STMT_END_F +master-bin.000001 2537 Table_map 1 2576 table_id: 25 (test.t1) +master-bin.000001 2576 Write_rows 1 2610 table_id: 25 flags: STMT_END_F +master-bin.000001 2610 Table_map 1 2649 table_id: 25 (test.t1) +master-bin.000001 2649 Write_rows 1 2683 table_id: 25 flags: STMT_END_F +master-bin.000001 2683 Table_map 1 2722 table_id: 25 (test.t1) +master-bin.000001 2722 Write_rows 1 2756 table_id: 25 flags: STMT_END_F +master-bin.000001 2756 Table_map 1 2795 table_id: 25 (test.t1) +master-bin.000001 2795 Write_rows 1 2829 table_id: 25 flags: STMT_END_F +master-bin.000001 2829 Table_map 1 2868 table_id: 25 (test.t1) +master-bin.000001 2868 Write_rows 1 2902 table_id: 25 flags: STMT_END_F +master-bin.000001 2902 Table_map 1 2941 table_id: 25 (test.t1) +master-bin.000001 2941 Write_rows 1 2975 table_id: 25 flags: STMT_END_F +master-bin.000001 2975 Table_map 1 3014 table_id: 25 (test.t1) +master-bin.000001 3014 Write_rows 1 3048 table_id: 25 flags: STMT_END_F +master-bin.000001 3048 Table_map 1 3087 table_id: 25 (test.t1) +master-bin.000001 3087 Write_rows 1 3121 table_id: 25 flags: STMT_END_F +master-bin.000001 3121 Table_map 1 3160 table_id: 25 (test.t1) +master-bin.000001 3160 Write_rows 1 3194 table_id: 25 flags: STMT_END_F +master-bin.000001 3194 Table_map 1 3233 table_id: 25 (test.t1) +master-bin.000001 3233 Write_rows 1 3267 table_id: 25 flags: STMT_END_F +master-bin.000001 3267 Table_map 1 3306 table_id: 25 (test.t1) +master-bin.000001 3306 Write_rows 1 3340 table_id: 25 flags: STMT_END_F +master-bin.000001 3340 Table_map 1 3379 table_id: 25 (test.t1) +master-bin.000001 3379 Write_rows 1 3413 table_id: 25 flags: STMT_END_F +master-bin.000001 3413 Table_map 1 3452 table_id: 25 (test.t1) +master-bin.000001 3452 Write_rows 1 3486 table_id: 25 flags: STMT_END_F +master-bin.000001 3486 Table_map 1 3525 table_id: 25 (test.t1) +master-bin.000001 3525 Write_rows 1 3559 table_id: 25 flags: STMT_END_F +master-bin.000001 3559 Table_map 1 3598 table_id: 25 (test.t1) +master-bin.000001 3598 Write_rows 1 3632 table_id: 25 flags: STMT_END_F +master-bin.000001 3632 Table_map 1 3671 table_id: 25 (test.t1) +master-bin.000001 3671 Write_rows 1 3705 table_id: 25 flags: STMT_END_F +master-bin.000001 3705 Table_map 1 3744 table_id: 25 (test.t1) +master-bin.000001 3744 Write_rows 1 3778 table_id: 25 flags: STMT_END_F +master-bin.000001 3778 Table_map 1 3817 table_id: 25 (test.t1) +master-bin.000001 3817 Write_rows 1 3851 table_id: 25 flags: STMT_END_F +master-bin.000001 3851 Table_map 1 3890 table_id: 25 (test.t1) +master-bin.000001 3890 Write_rows 1 3924 table_id: 25 flags: STMT_END_F +master-bin.000001 3924 Table_map 1 3963 table_id: 25 (test.t1) +master-bin.000001 3963 Write_rows 1 3997 table_id: 25 flags: STMT_END_F +master-bin.000001 3997 Table_map 1 4036 table_id: 25 (test.t1) +master-bin.000001 4036 Write_rows 1 4070 table_id: 25 flags: STMT_END_F +master-bin.000001 4070 Table_map 1 4109 table_id: 25 (test.t1) +master-bin.000001 4109 Write_rows 1 4143 table_id: 25 flags: STMT_END_F +master-bin.000001 4143 Table_map 1 4182 table_id: 25 (test.t1) +master-bin.000001 4182 Write_rows 1 4216 table_id: 25 flags: STMT_END_F +master-bin.000001 4216 Table_map 1 4255 table_id: 25 (test.t1) +master-bin.000001 4255 Write_rows 1 4289 table_id: 25 flags: STMT_END_F +master-bin.000001 4289 Table_map 1 4328 table_id: 25 (test.t1) +master-bin.000001 4328 Write_rows 1 4362 table_id: 25 flags: STMT_END_F +master-bin.000001 4362 Table_map 1 4401 table_id: 25 (test.t1) +master-bin.000001 4401 Write_rows 1 4435 table_id: 25 flags: STMT_END_F +master-bin.000001 4435 Table_map 1 4474 table_id: 25 (test.t1) +master-bin.000001 4474 Write_rows 1 4508 table_id: 25 flags: STMT_END_F +master-bin.000001 4508 Table_map 1 4547 table_id: 25 (test.t1) +master-bin.000001 4547 Write_rows 1 4581 table_id: 25 flags: STMT_END_F +master-bin.000001 4581 Table_map 1 4620 table_id: 25 (test.t1) +master-bin.000001 4620 Write_rows 1 4654 table_id: 25 flags: STMT_END_F +master-bin.000001 4654 Table_map 1 4693 table_id: 25 (test.t1) +master-bin.000001 4693 Write_rows 1 4727 table_id: 25 flags: STMT_END_F +master-bin.000001 4727 Table_map 1 4766 table_id: 25 (test.t1) +master-bin.000001 4766 Write_rows 1 4800 table_id: 25 flags: STMT_END_F +master-bin.000001 4800 Table_map 1 4839 table_id: 25 (test.t1) +master-bin.000001 4839 Write_rows 1 4873 table_id: 25 flags: STMT_END_F +master-bin.000001 4873 Table_map 1 4912 table_id: 25 (test.t1) +master-bin.000001 4912 Write_rows 1 4946 table_id: 25 flags: STMT_END_F +master-bin.000001 4946 Table_map 1 4985 table_id: 25 (test.t1) +master-bin.000001 4985 Write_rows 1 5019 table_id: 25 flags: STMT_END_F +master-bin.000001 5019 Table_map 1 5058 table_id: 25 (test.t1) +master-bin.000001 5058 Write_rows 1 5092 table_id: 25 flags: STMT_END_F +master-bin.000001 5092 Table_map 1 5131 table_id: 25 (test.t1) +master-bin.000001 5131 Write_rows 1 5165 table_id: 25 flags: STMT_END_F +master-bin.000001 5165 Table_map 1 5204 table_id: 25 (test.t1) +master-bin.000001 5204 Write_rows 1 5238 table_id: 25 flags: STMT_END_F +master-bin.000001 5238 Table_map 1 5277 table_id: 25 (test.t1) +master-bin.000001 5277 Write_rows 1 5311 table_id: 25 flags: STMT_END_F +master-bin.000001 5311 Table_map 1 5350 table_id: 25 (test.t1) +master-bin.000001 5350 Write_rows 1 5384 table_id: 25 flags: STMT_END_F +master-bin.000001 5384 Table_map 1 5423 table_id: 25 (test.t1) +master-bin.000001 5423 Write_rows 1 5457 table_id: 25 flags: STMT_END_F +master-bin.000001 5457 Table_map 1 5496 table_id: 25 (test.t1) +master-bin.000001 5496 Write_rows 1 5530 table_id: 25 flags: STMT_END_F +master-bin.000001 5530 Table_map 1 5569 table_id: 25 (test.t1) +master-bin.000001 5569 Write_rows 1 5603 table_id: 25 flags: STMT_END_F +master-bin.000001 5603 Table_map 1 5642 table_id: 25 (test.t1) +master-bin.000001 5642 Write_rows 1 5676 table_id: 25 flags: STMT_END_F +master-bin.000001 5676 Table_map 1 5715 table_id: 25 (test.t1) +master-bin.000001 5715 Write_rows 1 5749 table_id: 25 flags: STMT_END_F +master-bin.000001 5749 Table_map 1 5788 table_id: 25 (test.t1) +master-bin.000001 5788 Write_rows 1 5822 table_id: 25 flags: STMT_END_F +master-bin.000001 5822 Table_map 1 5861 table_id: 25 (test.t1) +master-bin.000001 5861 Write_rows 1 5895 table_id: 25 flags: STMT_END_F +master-bin.000001 5895 Table_map 1 5934 table_id: 25 (test.t1) +master-bin.000001 5934 Write_rows 1 5968 table_id: 25 flags: STMT_END_F +master-bin.000001 5968 Table_map 1 6007 table_id: 25 (test.t1) +master-bin.000001 6007 Write_rows 1 6041 table_id: 25 flags: STMT_END_F +master-bin.000001 6041 Table_map 1 6080 table_id: 25 (test.t1) +master-bin.000001 6080 Write_rows 1 6114 table_id: 25 flags: STMT_END_F +master-bin.000001 6114 Table_map 1 6153 table_id: 25 (test.t1) +master-bin.000001 6153 Write_rows 1 6187 table_id: 25 flags: STMT_END_F +master-bin.000001 6187 Table_map 1 6226 table_id: 25 (test.t1) +master-bin.000001 6226 Write_rows 1 6260 table_id: 25 flags: STMT_END_F +master-bin.000001 6260 Table_map 1 6299 table_id: 25 (test.t1) +master-bin.000001 6299 Write_rows 1 6333 table_id: 25 flags: STMT_END_F +master-bin.000001 6333 Table_map 1 6372 table_id: 25 (test.t1) +master-bin.000001 6372 Write_rows 1 6406 table_id: 25 flags: STMT_END_F +master-bin.000001 6406 Table_map 1 6445 table_id: 25 (test.t1) +master-bin.000001 6445 Write_rows 1 6479 table_id: 25 flags: STMT_END_F +master-bin.000001 6479 Table_map 1 6518 table_id: 25 (test.t1) +master-bin.000001 6518 Write_rows 1 6552 table_id: 25 flags: STMT_END_F +master-bin.000001 6552 Table_map 1 6591 table_id: 25 (test.t1) +master-bin.000001 6591 Write_rows 1 6625 table_id: 25 flags: STMT_END_F +master-bin.000001 6625 Table_map 1 6664 table_id: 25 (test.t1) +master-bin.000001 6664 Write_rows 1 6698 table_id: 25 flags: STMT_END_F +master-bin.000001 6698 Table_map 1 6737 table_id: 25 (test.t1) +master-bin.000001 6737 Write_rows 1 6771 table_id: 25 flags: STMT_END_F +master-bin.000001 6771 Table_map 1 6810 table_id: 25 (test.t1) +master-bin.000001 6810 Write_rows 1 6844 table_id: 25 flags: STMT_END_F +master-bin.000001 6844 Table_map 1 6883 table_id: 25 (test.t1) +master-bin.000001 6883 Write_rows 1 6917 table_id: 25 flags: STMT_END_F +master-bin.000001 6917 Table_map 1 6956 table_id: 25 (test.t1) +master-bin.000001 6956 Write_rows 1 6990 table_id: 25 flags: STMT_END_F +master-bin.000001 6990 Table_map 1 7029 table_id: 25 (test.t1) +master-bin.000001 7029 Write_rows 1 7063 table_id: 25 flags: STMT_END_F +master-bin.000001 7063 Table_map 1 7102 table_id: 25 (test.t1) +master-bin.000001 7102 Write_rows 1 7136 table_id: 25 flags: STMT_END_F +master-bin.000001 7136 Table_map 1 7175 table_id: 25 (test.t1) +master-bin.000001 7175 Write_rows 1 7209 table_id: 25 flags: STMT_END_F +master-bin.000001 7209 Table_map 1 7248 table_id: 25 (test.t1) +master-bin.000001 7248 Write_rows 1 7282 table_id: 25 flags: STMT_END_F +master-bin.000001 7282 Table_map 1 7321 table_id: 25 (test.t1) +master-bin.000001 7321 Write_rows 1 7355 table_id: 25 flags: STMT_END_F +master-bin.000001 7355 Table_map 1 7394 table_id: 25 (test.t1) +master-bin.000001 7394 Write_rows 1 7428 table_id: 25 flags: STMT_END_F +master-bin.000001 7428 Table_map 1 7467 table_id: 25 (test.t1) +master-bin.000001 7467 Write_rows 1 7501 table_id: 25 flags: STMT_END_F +master-bin.000001 7501 Table_map 1 7540 table_id: 25 (test.t1) +master-bin.000001 7540 Write_rows 1 7574 table_id: 25 flags: STMT_END_F +master-bin.000001 7574 Table_map 1 7613 table_id: 25 (test.t1) +master-bin.000001 7613 Write_rows 1 7647 table_id: 25 flags: STMT_END_F +master-bin.000001 7647 Table_map 1 7686 table_id: 25 (test.t1) +master-bin.000001 7686 Write_rows 1 7720 table_id: 25 flags: STMT_END_F +master-bin.000001 7720 Table_map 1 7759 table_id: 25 (test.t1) +master-bin.000001 7759 Write_rows 1 7793 table_id: 25 flags: STMT_END_F +master-bin.000001 7793 Table_map 1 7832 table_id: 25 (test.t1) +master-bin.000001 7832 Write_rows 1 7866 table_id: 25 flags: STMT_END_F +master-bin.000001 7866 Table_map 1 7905 table_id: 25 (test.t1) +master-bin.000001 7905 Write_rows 1 7939 table_id: 25 flags: STMT_END_F +master-bin.000001 7939 Table_map 1 7978 table_id: 25 (test.t1) +master-bin.000001 7978 Write_rows 1 8012 table_id: 25 flags: STMT_END_F +master-bin.000001 8012 Table_map 1 8051 table_id: 25 (test.t1) +master-bin.000001 8051 Write_rows 1 8085 table_id: 25 flags: STMT_END_F +master-bin.000001 8085 Table_map 1 8124 table_id: 25 (test.t1) +master-bin.000001 8124 Write_rows 1 8158 table_id: 25 flags: STMT_END_F +master-bin.000001 8158 Table_map 1 8197 table_id: 25 (test.t1) +master-bin.000001 8197 Write_rows 1 8231 table_id: 25 flags: STMT_END_F +master-bin.000001 8231 Table_map 1 8270 table_id: 25 (test.t1) +master-bin.000001 8270 Write_rows 1 8304 table_id: 25 flags: STMT_END_F +master-bin.000001 8304 Table_map 1 8343 table_id: 25 (test.t1) +master-bin.000001 8343 Write_rows 1 8377 table_id: 25 flags: STMT_END_F +master-bin.000001 8377 Table_map 1 8416 table_id: 25 (test.t1) +master-bin.000001 8416 Write_rows 1 8450 table_id: 25 flags: STMT_END_F +master-bin.000001 8450 Table_map 1 8489 table_id: 25 (test.t1) +master-bin.000001 8489 Write_rows 1 8523 table_id: 25 flags: STMT_END_F +master-bin.000001 8523 Table_map 1 8562 table_id: 25 (test.t1) +master-bin.000001 8562 Write_rows 1 8596 table_id: 25 flags: STMT_END_F +master-bin.000001 8596 Table_map 1 8635 table_id: 25 (test.t1) +master-bin.000001 8635 Write_rows 1 8669 table_id: 25 flags: STMT_END_F +master-bin.000001 8669 Table_map 1 8708 table_id: 25 (test.t1) +master-bin.000001 8708 Write_rows 1 8742 table_id: 25 flags: STMT_END_F +master-bin.000001 8742 Table_map 1 8781 table_id: 25 (test.t1) +master-bin.000001 8781 Write_rows 1 8815 table_id: 25 flags: STMT_END_F +master-bin.000001 8815 Table_map 1 8854 table_id: 25 (test.t1) +master-bin.000001 8854 Write_rows 1 8888 table_id: 25 flags: STMT_END_F +master-bin.000001 8888 Table_map 1 8927 table_id: 25 (test.t1) +master-bin.000001 8927 Write_rows 1 8961 table_id: 25 flags: STMT_END_F +master-bin.000001 8961 Table_map 1 9000 table_id: 25 (test.t1) +master-bin.000001 9000 Write_rows 1 9034 table_id: 25 flags: STMT_END_F +master-bin.000001 9034 Table_map 1 9073 table_id: 25 (test.t1) +master-bin.000001 9073 Write_rows 1 9107 table_id: 25 flags: STMT_END_F +master-bin.000001 9107 Table_map 1 9146 table_id: 25 (test.t1) +master-bin.000001 9146 Write_rows 1 9180 table_id: 25 flags: STMT_END_F +master-bin.000001 9180 Table_map 1 9219 table_id: 25 (test.t1) +master-bin.000001 9219 Write_rows 1 9253 table_id: 25 flags: STMT_END_F +master-bin.000001 9253 Table_map 1 9292 table_id: 25 (test.t1) +master-bin.000001 9292 Write_rows 1 9326 table_id: 25 flags: STMT_END_F +master-bin.000001 9326 Table_map 1 9365 table_id: 25 (test.t1) +master-bin.000001 9365 Write_rows 1 9399 table_id: 25 flags: STMT_END_F +master-bin.000001 9399 Table_map 1 9438 table_id: 25 (test.t1) +master-bin.000001 9438 Write_rows 1 9472 table_id: 25 flags: STMT_END_F +master-bin.000001 9472 Table_map 1 9511 table_id: 25 (test.t1) +master-bin.000001 9511 Write_rows 1 9545 table_id: 25 flags: STMT_END_F +master-bin.000001 9545 Table_map 1 9584 table_id: 25 (test.t1) +master-bin.000001 9584 Write_rows 1 9618 table_id: 25 flags: STMT_END_F +master-bin.000001 9618 Table_map 1 9657 table_id: 25 (test.t1) +master-bin.000001 9657 Write_rows 1 9691 table_id: 25 flags: STMT_END_F +master-bin.000001 9691 Table_map 1 9730 table_id: 25 (test.t1) +master-bin.000001 9730 Write_rows 1 9764 table_id: 25 flags: STMT_END_F +master-bin.000001 9764 Table_map 1 9803 table_id: 25 (test.t1) +master-bin.000001 9803 Write_rows 1 9837 table_id: 25 flags: STMT_END_F +master-bin.000001 9837 Table_map 1 9876 table_id: 25 (test.t1) +master-bin.000001 9876 Write_rows 1 9910 table_id: 25 flags: STMT_END_F +master-bin.000001 9910 Table_map 1 9949 table_id: 25 (test.t1) +master-bin.000001 9949 Write_rows 1 9983 table_id: 25 flags: STMT_END_F +master-bin.000001 9983 Table_map 1 10022 table_id: 25 (test.t1) +master-bin.000001 10022 Write_rows 1 10056 table_id: 25 flags: STMT_END_F +master-bin.000001 10056 Table_map 1 10095 table_id: 25 (test.t1) +master-bin.000001 10095 Write_rows 1 10129 table_id: 25 flags: STMT_END_F +master-bin.000001 10129 Table_map 1 10168 table_id: 25 (test.t1) +master-bin.000001 10168 Write_rows 1 10202 table_id: 25 flags: STMT_END_F +master-bin.000001 10202 Table_map 1 10241 table_id: 25 (test.t1) +master-bin.000001 10241 Write_rows 1 10275 table_id: 25 flags: STMT_END_F +master-bin.000001 10275 Table_map 1 10314 table_id: 25 (test.t1) +master-bin.000001 10314 Write_rows 1 10348 table_id: 25 flags: STMT_END_F +master-bin.000001 10348 Table_map 1 10387 table_id: 25 (test.t1) +master-bin.000001 10387 Write_rows 1 10421 table_id: 25 flags: STMT_END_F +master-bin.000001 10421 Table_map 1 10460 table_id: 25 (test.t1) +master-bin.000001 10460 Write_rows 1 10494 table_id: 25 flags: STMT_END_F +master-bin.000001 10494 Table_map 1 10533 table_id: 25 (test.t1) +master-bin.000001 10533 Write_rows 1 10567 table_id: 25 flags: STMT_END_F +master-bin.000001 10567 Table_map 1 10606 table_id: 25 (test.t1) +master-bin.000001 10606 Write_rows 1 10640 table_id: 25 flags: STMT_END_F +master-bin.000001 10640 Table_map 1 10679 table_id: 25 (test.t1) +master-bin.000001 10679 Write_rows 1 10713 table_id: 25 flags: STMT_END_F +master-bin.000001 10713 Table_map 1 10752 table_id: 25 (test.t1) +master-bin.000001 10752 Write_rows 1 10786 table_id: 25 flags: STMT_END_F +master-bin.000001 10786 Table_map 1 10825 table_id: 25 (test.t1) +master-bin.000001 10825 Write_rows 1 10859 table_id: 25 flags: STMT_END_F +master-bin.000001 10859 Table_map 1 10898 table_id: 25 (test.t1) +master-bin.000001 10898 Write_rows 1 10932 table_id: 25 flags: STMT_END_F +master-bin.000001 10932 Table_map 1 10971 table_id: 25 (test.t1) +master-bin.000001 10971 Write_rows 1 11005 table_id: 25 flags: STMT_END_F +master-bin.000001 11005 Table_map 1 11044 table_id: 25 (test.t1) +master-bin.000001 11044 Write_rows 1 11078 table_id: 25 flags: STMT_END_F +master-bin.000001 11078 Table_map 1 11117 table_id: 25 (test.t1) +master-bin.000001 11117 Write_rows 1 11151 table_id: 25 flags: STMT_END_F +master-bin.000001 11151 Table_map 1 11190 table_id: 25 (test.t1) +master-bin.000001 11190 Write_rows 1 11224 table_id: 25 flags: STMT_END_F +master-bin.000001 11224 Table_map 1 11263 table_id: 25 (test.t1) +master-bin.000001 11263 Write_rows 1 11297 table_id: 25 flags: STMT_END_F +master-bin.000001 11297 Table_map 1 11336 table_id: 25 (test.t1) +master-bin.000001 11336 Write_rows 1 11370 table_id: 25 flags: STMT_END_F +master-bin.000001 11370 Table_map 1 11409 table_id: 25 (test.t1) +master-bin.000001 11409 Write_rows 1 11443 table_id: 25 flags: STMT_END_F +master-bin.000001 11443 Table_map 1 11482 table_id: 25 (test.t1) +master-bin.000001 11482 Write_rows 1 11516 table_id: 25 flags: STMT_END_F +master-bin.000001 11516 Table_map 1 11555 table_id: 25 (test.t1) +master-bin.000001 11555 Write_rows 1 11589 table_id: 25 flags: STMT_END_F +master-bin.000001 11589 Table_map 1 11628 table_id: 25 (test.t1) +master-bin.000001 11628 Write_rows 1 11662 table_id: 25 flags: STMT_END_F +master-bin.000001 11662 Table_map 1 11701 table_id: 25 (test.t1) +master-bin.000001 11701 Write_rows 1 11735 table_id: 25 flags: STMT_END_F +master-bin.000001 11735 Table_map 1 11774 table_id: 25 (test.t1) +master-bin.000001 11774 Write_rows 1 11808 table_id: 25 flags: STMT_END_F +master-bin.000001 11808 Table_map 1 11847 table_id: 25 (test.t1) +master-bin.000001 11847 Write_rows 1 11881 table_id: 25 flags: STMT_END_F +master-bin.000001 11881 Table_map 1 11920 table_id: 25 (test.t1) +master-bin.000001 11920 Write_rows 1 11954 table_id: 25 flags: STMT_END_F +master-bin.000001 11954 Table_map 1 11993 table_id: 25 (test.t1) +master-bin.000001 11993 Write_rows 1 12027 table_id: 25 flags: STMT_END_F +master-bin.000001 12027 Table_map 1 12066 table_id: 25 (test.t1) +master-bin.000001 12066 Write_rows 1 12100 table_id: 25 flags: STMT_END_F +master-bin.000001 12100 Table_map 1 12139 table_id: 25 (test.t1) +master-bin.000001 12139 Write_rows 1 12173 table_id: 25 flags: STMT_END_F +master-bin.000001 12173 Table_map 1 12212 table_id: 25 (test.t1) +master-bin.000001 12212 Write_rows 1 12246 table_id: 25 flags: STMT_END_F +master-bin.000001 12246 Table_map 1 12285 table_id: 25 (test.t1) +master-bin.000001 12285 Write_rows 1 12319 table_id: 25 flags: STMT_END_F +master-bin.000001 12319 Table_map 1 12358 table_id: 25 (test.t1) +master-bin.000001 12358 Write_rows 1 12392 table_id: 25 flags: STMT_END_F +master-bin.000001 12392 Table_map 1 12431 table_id: 25 (test.t1) +master-bin.000001 12431 Write_rows 1 12465 table_id: 25 flags: STMT_END_F +master-bin.000001 12465 Table_map 1 12504 table_id: 25 (test.t1) +master-bin.000001 12504 Write_rows 1 12538 table_id: 25 flags: STMT_END_F +master-bin.000001 12538 Table_map 1 12577 table_id: 25 (test.t1) +master-bin.000001 12577 Write_rows 1 12611 table_id: 25 flags: STMT_END_F +master-bin.000001 12611 Table_map 1 12650 table_id: 25 (test.t1) +master-bin.000001 12650 Write_rows 1 12684 table_id: 25 flags: STMT_END_F +master-bin.000001 12684 Table_map 1 12723 table_id: 25 (test.t1) +master-bin.000001 12723 Write_rows 1 12757 table_id: 25 flags: STMT_END_F +master-bin.000001 12757 Table_map 1 12796 table_id: 25 (test.t1) +master-bin.000001 12796 Write_rows 1 12830 table_id: 25 flags: STMT_END_F +master-bin.000001 12830 Table_map 1 12869 table_id: 25 (test.t1) +master-bin.000001 12869 Write_rows 1 12903 table_id: 25 flags: STMT_END_F +master-bin.000001 12903 Table_map 1 12942 table_id: 25 (test.t1) +master-bin.000001 12942 Write_rows 1 12976 table_id: 25 flags: STMT_END_F +master-bin.000001 12976 Table_map 1 13015 table_id: 25 (test.t1) +master-bin.000001 13015 Write_rows 1 13049 table_id: 25 flags: STMT_END_F +master-bin.000001 13049 Table_map 1 13088 table_id: 25 (test.t1) +master-bin.000001 13088 Write_rows 1 13122 table_id: 25 flags: STMT_END_F +master-bin.000001 13122 Table_map 1 13161 table_id: 25 (test.t1) +master-bin.000001 13161 Write_rows 1 13195 table_id: 25 flags: STMT_END_F +master-bin.000001 13195 Table_map 1 13234 table_id: 25 (test.t1) +master-bin.000001 13234 Write_rows 1 13268 table_id: 25 flags: STMT_END_F +master-bin.000001 13268 Table_map 1 13307 table_id: 25 (test.t1) +master-bin.000001 13307 Write_rows 1 13341 table_id: 25 flags: STMT_END_F +master-bin.000001 13341 Table_map 1 13380 table_id: 25 (test.t1) +master-bin.000001 13380 Write_rows 1 13414 table_id: 25 flags: STMT_END_F +master-bin.000001 13414 Table_map 1 13453 table_id: 25 (test.t1) +master-bin.000001 13453 Write_rows 1 13487 table_id: 25 flags: STMT_END_F +master-bin.000001 13487 Table_map 1 13526 table_id: 25 (test.t1) +master-bin.000001 13526 Write_rows 1 13560 table_id: 25 flags: STMT_END_F +master-bin.000001 13560 Table_map 1 13599 table_id: 25 (test.t1) +master-bin.000001 13599 Write_rows 1 13633 table_id: 25 flags: STMT_END_F +master-bin.000001 13633 Table_map 1 13672 table_id: 25 (test.t1) +master-bin.000001 13672 Write_rows 1 13706 table_id: 25 flags: STMT_END_F +master-bin.000001 13706 Table_map 1 13745 table_id: 25 (test.t1) +master-bin.000001 13745 Write_rows 1 13779 table_id: 25 flags: STMT_END_F +master-bin.000001 13779 Table_map 1 13818 table_id: 25 (test.t1) +master-bin.000001 13818 Write_rows 1 13852 table_id: 25 flags: STMT_END_F +master-bin.000001 13852 Table_map 1 13891 table_id: 25 (test.t1) +master-bin.000001 13891 Write_rows 1 13925 table_id: 25 flags: STMT_END_F +master-bin.000001 13925 Table_map 1 13964 table_id: 25 (test.t1) +master-bin.000001 13964 Write_rows 1 13998 table_id: 25 flags: STMT_END_F +master-bin.000001 13998 Table_map 1 14037 table_id: 25 (test.t1) +master-bin.000001 14037 Write_rows 1 14071 table_id: 25 flags: STMT_END_F +master-bin.000001 14071 Table_map 1 14110 table_id: 25 (test.t1) +master-bin.000001 14110 Write_rows 1 14144 table_id: 25 flags: STMT_END_F +master-bin.000001 14144 Table_map 1 14183 table_id: 25 (test.t1) +master-bin.000001 14183 Write_rows 1 14217 table_id: 25 flags: STMT_END_F +master-bin.000001 14217 Table_map 1 14256 table_id: 25 (test.t1) +master-bin.000001 14256 Write_rows 1 14290 table_id: 25 flags: STMT_END_F +master-bin.000001 14290 Table_map 1 14329 table_id: 25 (test.t1) +master-bin.000001 14329 Write_rows 1 14363 table_id: 25 flags: STMT_END_F +master-bin.000001 14363 Table_map 1 14402 table_id: 25 (test.t1) +master-bin.000001 14402 Write_rows 1 14436 table_id: 25 flags: STMT_END_F +master-bin.000001 14436 Table_map 1 14475 table_id: 25 (test.t1) +master-bin.000001 14475 Write_rows 1 14509 table_id: 25 flags: STMT_END_F +master-bin.000001 14509 Table_map 1 14548 table_id: 25 (test.t1) +master-bin.000001 14548 Write_rows 1 14582 table_id: 25 flags: STMT_END_F +master-bin.000001 14582 Table_map 1 14621 table_id: 25 (test.t1) +master-bin.000001 14621 Write_rows 1 14655 table_id: 25 flags: STMT_END_F +master-bin.000001 14655 Table_map 1 14694 table_id: 25 (test.t1) +master-bin.000001 14694 Write_rows 1 14728 table_id: 25 flags: STMT_END_F +master-bin.000001 14728 Table_map 1 14767 table_id: 25 (test.t1) +master-bin.000001 14767 Write_rows 1 14801 table_id: 25 flags: STMT_END_F +master-bin.000001 14801 Table_map 1 14840 table_id: 25 (test.t1) +master-bin.000001 14840 Write_rows 1 14874 table_id: 25 flags: STMT_END_F +master-bin.000001 14874 Table_map 1 14913 table_id: 25 (test.t1) +master-bin.000001 14913 Write_rows 1 14947 table_id: 25 flags: STMT_END_F +master-bin.000001 14947 Table_map 1 14986 table_id: 25 (test.t1) +master-bin.000001 14986 Write_rows 1 15020 table_id: 25 flags: STMT_END_F +master-bin.000001 15020 Table_map 1 15059 table_id: 25 (test.t1) +master-bin.000001 15059 Write_rows 1 15093 table_id: 25 flags: STMT_END_F +master-bin.000001 15093 Table_map 1 15132 table_id: 25 (test.t1) +master-bin.000001 15132 Write_rows 1 15166 table_id: 25 flags: STMT_END_F +master-bin.000001 15166 Table_map 1 15205 table_id: 25 (test.t1) +master-bin.000001 15205 Write_rows 1 15239 table_id: 25 flags: STMT_END_F +master-bin.000001 15239 Table_map 1 15278 table_id: 25 (test.t1) +master-bin.000001 15278 Write_rows 1 15312 table_id: 25 flags: STMT_END_F +master-bin.000001 15312 Table_map 1 15351 table_id: 25 (test.t1) +master-bin.000001 15351 Write_rows 1 15385 table_id: 25 flags: STMT_END_F +master-bin.000001 15385 Table_map 1 15424 table_id: 25 (test.t1) +master-bin.000001 15424 Write_rows 1 15458 table_id: 25 flags: STMT_END_F +master-bin.000001 15458 Table_map 1 15497 table_id: 25 (test.t1) +master-bin.000001 15497 Write_rows 1 15531 table_id: 25 flags: STMT_END_F +master-bin.000001 15531 Table_map 1 15570 table_id: 25 (test.t1) +master-bin.000001 15570 Write_rows 1 15604 table_id: 25 flags: STMT_END_F +master-bin.000001 15604 Table_map 1 15643 table_id: 25 (test.t1) +master-bin.000001 15643 Write_rows 1 15677 table_id: 25 flags: STMT_END_F +master-bin.000001 15677 Table_map 1 15716 table_id: 25 (test.t1) +master-bin.000001 15716 Write_rows 1 15750 table_id: 25 flags: STMT_END_F +master-bin.000001 15750 Table_map 1 15789 table_id: 25 (test.t1) +master-bin.000001 15789 Write_rows 1 15823 table_id: 25 flags: STMT_END_F +master-bin.000001 15823 Table_map 1 15862 table_id: 25 (test.t1) +master-bin.000001 15862 Write_rows 1 15896 table_id: 25 flags: STMT_END_F +master-bin.000001 15896 Table_map 1 15935 table_id: 25 (test.t1) +master-bin.000001 15935 Write_rows 1 15969 table_id: 25 flags: STMT_END_F +master-bin.000001 15969 Table_map 1 16008 table_id: 25 (test.t1) +master-bin.000001 16008 Write_rows 1 16042 table_id: 25 flags: STMT_END_F +master-bin.000001 16042 Table_map 1 16081 table_id: 25 (test.t1) +master-bin.000001 16081 Write_rows 1 16115 table_id: 25 flags: STMT_END_F +master-bin.000001 16115 Table_map 1 16154 table_id: 25 (test.t1) +master-bin.000001 16154 Write_rows 1 16188 table_id: 25 flags: STMT_END_F +master-bin.000001 16188 Table_map 1 16227 table_id: 25 (test.t1) +master-bin.000001 16227 Write_rows 1 16261 table_id: 25 flags: STMT_END_F +master-bin.000001 16261 Table_map 1 16300 table_id: 25 (test.t1) +master-bin.000001 16300 Write_rows 1 16334 table_id: 25 flags: STMT_END_F +master-bin.000001 16334 Table_map 1 16373 table_id: 25 (test.t1) +master-bin.000001 16373 Write_rows 1 16407 table_id: 25 flags: STMT_END_F +master-bin.000001 16407 Table_map 1 16446 table_id: 25 (test.t1) +master-bin.000001 16446 Write_rows 1 16480 table_id: 25 flags: STMT_END_F +master-bin.000001 16480 Table_map 1 16519 table_id: 25 (test.t1) +master-bin.000001 16519 Write_rows 1 16553 table_id: 25 flags: STMT_END_F +master-bin.000001 16553 Table_map 1 16592 table_id: 25 (test.t1) +master-bin.000001 16592 Write_rows 1 16626 table_id: 25 flags: STMT_END_F +master-bin.000001 16626 Table_map 1 16665 table_id: 25 (test.t1) +master-bin.000001 16665 Write_rows 1 16699 table_id: 25 flags: STMT_END_F +master-bin.000001 16699 Table_map 1 16738 table_id: 25 (test.t1) +master-bin.000001 16738 Write_rows 1 16772 table_id: 25 flags: STMT_END_F +master-bin.000001 16772 Table_map 1 16811 table_id: 25 (test.t1) +master-bin.000001 16811 Write_rows 1 16845 table_id: 25 flags: STMT_END_F +master-bin.000001 16845 Table_map 1 16884 table_id: 25 (test.t1) +master-bin.000001 16884 Write_rows 1 16918 table_id: 25 flags: STMT_END_F +master-bin.000001 16918 Table_map 1 16957 table_id: 25 (test.t1) +master-bin.000001 16957 Write_rows 1 16991 table_id: 25 flags: STMT_END_F +master-bin.000001 16991 Table_map 1 17030 table_id: 25 (test.t1) +master-bin.000001 17030 Write_rows 1 17064 table_id: 25 flags: STMT_END_F +master-bin.000001 17064 Table_map 1 17103 table_id: 25 (test.t1) +master-bin.000001 17103 Write_rows 1 17137 table_id: 25 flags: STMT_END_F +master-bin.000001 17137 Table_map 1 17176 table_id: 25 (test.t1) +master-bin.000001 17176 Write_rows 1 17210 table_id: 25 flags: STMT_END_F +master-bin.000001 17210 Table_map 1 17249 table_id: 25 (test.t1) +master-bin.000001 17249 Write_rows 1 17283 table_id: 25 flags: STMT_END_F +master-bin.000001 17283 Table_map 1 17322 table_id: 25 (test.t1) +master-bin.000001 17322 Write_rows 1 17356 table_id: 25 flags: STMT_END_F +master-bin.000001 17356 Table_map 1 17395 table_id: 25 (test.t1) +master-bin.000001 17395 Write_rows 1 17429 table_id: 25 flags: STMT_END_F +master-bin.000001 17429 Table_map 1 17468 table_id: 25 (test.t1) +master-bin.000001 17468 Write_rows 1 17502 table_id: 25 flags: STMT_END_F +master-bin.000001 17502 Table_map 1 17541 table_id: 25 (test.t1) +master-bin.000001 17541 Write_rows 1 17575 table_id: 25 flags: STMT_END_F +master-bin.000001 17575 Table_map 1 17614 table_id: 25 (test.t1) +master-bin.000001 17614 Write_rows 1 17648 table_id: 25 flags: STMT_END_F +master-bin.000001 17648 Table_map 1 17687 table_id: 25 (test.t1) +master-bin.000001 17687 Write_rows 1 17721 table_id: 25 flags: STMT_END_F +master-bin.000001 17721 Table_map 1 17760 table_id: 25 (test.t1) +master-bin.000001 17760 Write_rows 1 17794 table_id: 25 flags: STMT_END_F +master-bin.000001 17794 Table_map 1 17833 table_id: 25 (test.t1) +master-bin.000001 17833 Write_rows 1 17867 table_id: 25 flags: STMT_END_F +master-bin.000001 17867 Table_map 1 17906 table_id: 25 (test.t1) +master-bin.000001 17906 Write_rows 1 17940 table_id: 25 flags: STMT_END_F +master-bin.000001 17940 Table_map 1 17979 table_id: 25 (test.t1) +master-bin.000001 17979 Write_rows 1 18013 table_id: 25 flags: STMT_END_F +master-bin.000001 18013 Table_map 1 18052 table_id: 25 (test.t1) +master-bin.000001 18052 Write_rows 1 18086 table_id: 25 flags: STMT_END_F +master-bin.000001 18086 Table_map 1 18125 table_id: 25 (test.t1) +master-bin.000001 18125 Write_rows 1 18159 table_id: 25 flags: STMT_END_F +master-bin.000001 18159 Table_map 1 18198 table_id: 25 (test.t1) +master-bin.000001 18198 Write_rows 1 18232 table_id: 25 flags: STMT_END_F +master-bin.000001 18232 Table_map 1 18271 table_id: 25 (test.t1) +master-bin.000001 18271 Write_rows 1 18305 table_id: 25 flags: STMT_END_F +master-bin.000001 18305 Table_map 1 18344 table_id: 25 (test.t1) +master-bin.000001 18344 Write_rows 1 18378 table_id: 25 flags: STMT_END_F +master-bin.000001 18378 Table_map 1 18417 table_id: 25 (test.t1) +master-bin.000001 18417 Write_rows 1 18451 table_id: 25 flags: STMT_END_F +master-bin.000001 18451 Table_map 1 18490 table_id: 25 (test.t1) +master-bin.000001 18490 Write_rows 1 18524 table_id: 25 flags: STMT_END_F +master-bin.000001 18524 Table_map 1 18563 table_id: 25 (test.t1) +master-bin.000001 18563 Write_rows 1 18597 table_id: 25 flags: STMT_END_F +master-bin.000001 18597 Table_map 1 18636 table_id: 25 (test.t1) +master-bin.000001 18636 Write_rows 1 18670 table_id: 25 flags: STMT_END_F +master-bin.000001 18670 Table_map 1 18709 table_id: 25 (test.t1) +master-bin.000001 18709 Write_rows 1 18743 table_id: 25 flags: STMT_END_F +master-bin.000001 18743 Table_map 1 18782 table_id: 25 (test.t1) +master-bin.000001 18782 Write_rows 1 18816 table_id: 25 flags: STMT_END_F +master-bin.000001 18816 Table_map 1 18855 table_id: 25 (test.t1) +master-bin.000001 18855 Write_rows 1 18889 table_id: 25 flags: STMT_END_F +master-bin.000001 18889 Table_map 1 18928 table_id: 25 (test.t1) +master-bin.000001 18928 Write_rows 1 18962 table_id: 25 flags: STMT_END_F +master-bin.000001 18962 Table_map 1 19001 table_id: 25 (test.t1) +master-bin.000001 19001 Write_rows 1 19035 table_id: 25 flags: STMT_END_F +master-bin.000001 19035 Table_map 1 19074 table_id: 25 (test.t1) +master-bin.000001 19074 Write_rows 1 19108 table_id: 25 flags: STMT_END_F +master-bin.000001 19108 Table_map 1 19147 table_id: 25 (test.t1) +master-bin.000001 19147 Write_rows 1 19181 table_id: 25 flags: STMT_END_F +master-bin.000001 19181 Table_map 1 19220 table_id: 25 (test.t1) +master-bin.000001 19220 Write_rows 1 19254 table_id: 25 flags: STMT_END_F +master-bin.000001 19254 Table_map 1 19293 table_id: 25 (test.t1) +master-bin.000001 19293 Write_rows 1 19327 table_id: 25 flags: STMT_END_F +master-bin.000001 19327 Table_map 1 19366 table_id: 25 (test.t1) +master-bin.000001 19366 Write_rows 1 19400 table_id: 25 flags: STMT_END_F +master-bin.000001 19400 Table_map 1 19439 table_id: 25 (test.t1) +master-bin.000001 19439 Write_rows 1 19473 table_id: 25 flags: STMT_END_F +master-bin.000001 19473 Table_map 1 19512 table_id: 25 (test.t1) +master-bin.000001 19512 Write_rows 1 19546 table_id: 25 flags: STMT_END_F +master-bin.000001 19546 Table_map 1 19585 table_id: 25 (test.t1) +master-bin.000001 19585 Write_rows 1 19619 table_id: 25 flags: STMT_END_F +master-bin.000001 19619 Table_map 1 19658 table_id: 25 (test.t1) +master-bin.000001 19658 Write_rows 1 19692 table_id: 25 flags: STMT_END_F +master-bin.000001 19692 Table_map 1 19731 table_id: 25 (test.t1) +master-bin.000001 19731 Write_rows 1 19765 table_id: 25 flags: STMT_END_F +master-bin.000001 19765 Table_map 1 19804 table_id: 25 (test.t1) +master-bin.000001 19804 Write_rows 1 19838 table_id: 25 flags: STMT_END_F +master-bin.000001 19838 Table_map 1 19877 table_id: 25 (test.t1) +master-bin.000001 19877 Write_rows 1 19911 table_id: 25 flags: STMT_END_F +master-bin.000001 19911 Table_map 1 19950 table_id: 25 (test.t1) +master-bin.000001 19950 Write_rows 1 19984 table_id: 25 flags: STMT_END_F +master-bin.000001 19984 Table_map 1 20023 table_id: 25 (test.t1) +master-bin.000001 20023 Write_rows 1 20057 table_id: 25 flags: STMT_END_F +master-bin.000001 20057 Table_map 1 20096 table_id: 25 (test.t1) +master-bin.000001 20096 Write_rows 1 20130 table_id: 25 flags: STMT_END_F +master-bin.000001 20130 Table_map 1 20169 table_id: 25 (test.t1) +master-bin.000001 20169 Write_rows 1 20203 table_id: 25 flags: STMT_END_F +master-bin.000001 20203 Table_map 1 20242 table_id: 25 (test.t1) +master-bin.000001 20242 Write_rows 1 20276 table_id: 25 flags: STMT_END_F +master-bin.000001 20276 Table_map 1 20315 table_id: 25 (test.t1) +master-bin.000001 20315 Write_rows 1 20349 table_id: 25 flags: STMT_END_F +master-bin.000001 20349 Table_map 1 20388 table_id: 25 (test.t1) +master-bin.000001 20388 Write_rows 1 20422 table_id: 25 flags: STMT_END_F +master-bin.000001 20422 Table_map 1 20461 table_id: 25 (test.t1) +master-bin.000001 20461 Write_rows 1 20495 table_id: 25 flags: STMT_END_F +master-bin.000001 20495 Table_map 1 20534 table_id: 25 (test.t1) +master-bin.000001 20534 Write_rows 1 20568 table_id: 25 flags: STMT_END_F +master-bin.000001 20568 Table_map 1 20607 table_id: 25 (test.t1) +master-bin.000001 20607 Write_rows 1 20641 table_id: 25 flags: STMT_END_F +master-bin.000001 20641 Table_map 1 20680 table_id: 25 (test.t1) +master-bin.000001 20680 Write_rows 1 20714 table_id: 25 flags: STMT_END_F +master-bin.000001 20714 Table_map 1 20753 table_id: 25 (test.t1) +master-bin.000001 20753 Write_rows 1 20787 table_id: 25 flags: STMT_END_F +master-bin.000001 20787 Table_map 1 20826 table_id: 25 (test.t1) +master-bin.000001 20826 Write_rows 1 20860 table_id: 25 flags: STMT_END_F +master-bin.000001 20860 Table_map 1 20899 table_id: 25 (test.t1) +master-bin.000001 20899 Write_rows 1 20933 table_id: 25 flags: STMT_END_F +master-bin.000001 20933 Table_map 1 20972 table_id: 25 (test.t1) +master-bin.000001 20972 Write_rows 1 21006 table_id: 25 flags: STMT_END_F +master-bin.000001 21006 Table_map 1 21045 table_id: 25 (test.t1) +master-bin.000001 21045 Write_rows 1 21079 table_id: 25 flags: STMT_END_F +master-bin.000001 21079 Table_map 1 21118 table_id: 25 (test.t1) +master-bin.000001 21118 Write_rows 1 21152 table_id: 25 flags: STMT_END_F +master-bin.000001 21152 Table_map 1 21191 table_id: 25 (test.t1) +master-bin.000001 21191 Write_rows 1 21225 table_id: 25 flags: STMT_END_F +master-bin.000001 21225 Table_map 1 21264 table_id: 25 (test.t1) +master-bin.000001 21264 Write_rows 1 21298 table_id: 25 flags: STMT_END_F +master-bin.000001 21298 Table_map 1 21337 table_id: 25 (test.t1) +master-bin.000001 21337 Write_rows 1 21371 table_id: 25 flags: STMT_END_F +master-bin.000001 21371 Table_map 1 21410 table_id: 25 (test.t1) +master-bin.000001 21410 Write_rows 1 21444 table_id: 25 flags: STMT_END_F +master-bin.000001 21444 Table_map 1 21483 table_id: 25 (test.t1) +master-bin.000001 21483 Write_rows 1 21517 table_id: 25 flags: STMT_END_F +master-bin.000001 21517 Table_map 1 21556 table_id: 25 (test.t1) +master-bin.000001 21556 Write_rows 1 21590 table_id: 25 flags: STMT_END_F +master-bin.000001 21590 Table_map 1 21629 table_id: 25 (test.t1) +master-bin.000001 21629 Write_rows 1 21663 table_id: 25 flags: STMT_END_F +master-bin.000001 21663 Table_map 1 21702 table_id: 25 (test.t1) +master-bin.000001 21702 Write_rows 1 21736 table_id: 25 flags: STMT_END_F +master-bin.000001 21736 Table_map 1 21775 table_id: 25 (test.t1) +master-bin.000001 21775 Write_rows 1 21809 table_id: 25 flags: STMT_END_F +master-bin.000001 21809 Table_map 1 21848 table_id: 25 (test.t1) +master-bin.000001 21848 Write_rows 1 21882 table_id: 25 flags: STMT_END_F +master-bin.000001 21882 Table_map 1 21921 table_id: 25 (test.t1) +master-bin.000001 21921 Write_rows 1 21955 table_id: 25 flags: STMT_END_F +master-bin.000001 21955 Table_map 1 21994 table_id: 25 (test.t1) +master-bin.000001 21994 Write_rows 1 22028 table_id: 25 flags: STMT_END_F +master-bin.000001 22028 Table_map 1 22067 table_id: 25 (test.t1) +master-bin.000001 22067 Write_rows 1 22101 table_id: 25 flags: STMT_END_F +master-bin.000001 22101 Table_map 1 22140 table_id: 25 (test.t1) +master-bin.000001 22140 Write_rows 1 22174 table_id: 25 flags: STMT_END_F +master-bin.000001 22174 Table_map 1 22213 table_id: 25 (test.t1) +master-bin.000001 22213 Write_rows 1 22247 table_id: 25 flags: STMT_END_F +master-bin.000001 22247 Table_map 1 22286 table_id: 25 (test.t1) +master-bin.000001 22286 Write_rows 1 22320 table_id: 25 flags: STMT_END_F +master-bin.000001 22320 Table_map 1 22359 table_id: 25 (test.t1) +master-bin.000001 22359 Write_rows 1 22393 table_id: 25 flags: STMT_END_F +master-bin.000001 22393 Table_map 1 22432 table_id: 25 (test.t1) +master-bin.000001 22432 Write_rows 1 22466 table_id: 25 flags: STMT_END_F +master-bin.000001 22466 Table_map 1 22505 table_id: 25 (test.t1) +master-bin.000001 22505 Write_rows 1 22539 table_id: 25 flags: STMT_END_F +master-bin.000001 22539 Table_map 1 22578 table_id: 25 (test.t1) +master-bin.000001 22578 Write_rows 1 22612 table_id: 25 flags: STMT_END_F +master-bin.000001 22612 Table_map 1 22651 table_id: 25 (test.t1) +master-bin.000001 22651 Write_rows 1 22685 table_id: 25 flags: STMT_END_F +master-bin.000001 22685 Table_map 1 22724 table_id: 25 (test.t1) +master-bin.000001 22724 Write_rows 1 22758 table_id: 25 flags: STMT_END_F +master-bin.000001 22758 Table_map 1 22797 table_id: 25 (test.t1) +master-bin.000001 22797 Write_rows 1 22831 table_id: 25 flags: STMT_END_F +master-bin.000001 22831 Table_map 1 22870 table_id: 25 (test.t1) +master-bin.000001 22870 Write_rows 1 22904 table_id: 25 flags: STMT_END_F +master-bin.000001 22904 Table_map 1 22943 table_id: 25 (test.t1) +master-bin.000001 22943 Write_rows 1 22977 table_id: 25 flags: STMT_END_F +master-bin.000001 22977 Table_map 1 23016 table_id: 25 (test.t1) +master-bin.000001 23016 Write_rows 1 23050 table_id: 25 flags: STMT_END_F +master-bin.000001 23050 Table_map 1 23089 table_id: 25 (test.t1) +master-bin.000001 23089 Write_rows 1 23123 table_id: 25 flags: STMT_END_F +master-bin.000001 23123 Table_map 1 23162 table_id: 25 (test.t1) +master-bin.000001 23162 Write_rows 1 23196 table_id: 25 flags: STMT_END_F +master-bin.000001 23196 Table_map 1 23235 table_id: 25 (test.t1) +master-bin.000001 23235 Write_rows 1 23269 table_id: 25 flags: STMT_END_F +master-bin.000001 23269 Table_map 1 23308 table_id: 25 (test.t1) +master-bin.000001 23308 Write_rows 1 23342 table_id: 25 flags: STMT_END_F +master-bin.000001 23342 Table_map 1 23381 table_id: 25 (test.t1) +master-bin.000001 23381 Write_rows 1 23415 table_id: 25 flags: STMT_END_F +master-bin.000001 23415 Table_map 1 23454 table_id: 25 (test.t1) +master-bin.000001 23454 Write_rows 1 23488 table_id: 25 flags: STMT_END_F +master-bin.000001 23488 Table_map 1 23527 table_id: 25 (test.t1) +master-bin.000001 23527 Write_rows 1 23561 table_id: 25 flags: STMT_END_F +master-bin.000001 23561 Table_map 1 23600 table_id: 25 (test.t1) +master-bin.000001 23600 Write_rows 1 23634 table_id: 25 flags: STMT_END_F +master-bin.000001 23634 Table_map 1 23673 table_id: 25 (test.t1) +master-bin.000001 23673 Write_rows 1 23707 table_id: 25 flags: STMT_END_F +master-bin.000001 23707 Table_map 1 23746 table_id: 25 (test.t1) +master-bin.000001 23746 Write_rows 1 23780 table_id: 25 flags: STMT_END_F +master-bin.000001 23780 Table_map 1 23819 table_id: 25 (test.t1) +master-bin.000001 23819 Write_rows 1 23853 table_id: 25 flags: STMT_END_F +master-bin.000001 23853 Table_map 1 23892 table_id: 25 (test.t1) +master-bin.000001 23892 Write_rows 1 23926 table_id: 25 flags: STMT_END_F +master-bin.000001 23926 Table_map 1 23965 table_id: 25 (test.t1) +master-bin.000001 23965 Write_rows 1 23999 table_id: 25 flags: STMT_END_F +master-bin.000001 23999 Table_map 1 24038 table_id: 25 (test.t1) +master-bin.000001 24038 Write_rows 1 24072 table_id: 25 flags: STMT_END_F +master-bin.000001 24072 Table_map 1 24111 table_id: 25 (test.t1) +master-bin.000001 24111 Write_rows 1 24145 table_id: 25 flags: STMT_END_F +master-bin.000001 24145 Table_map 1 24184 table_id: 25 (test.t1) +master-bin.000001 24184 Write_rows 1 24218 table_id: 25 flags: STMT_END_F +master-bin.000001 24218 Table_map 1 24257 table_id: 25 (test.t1) +master-bin.000001 24257 Write_rows 1 24291 table_id: 25 flags: STMT_END_F +master-bin.000001 24291 Table_map 1 24330 table_id: 25 (test.t1) +master-bin.000001 24330 Write_rows 1 24364 table_id: 25 flags: STMT_END_F +master-bin.000001 24364 Table_map 1 24403 table_id: 25 (test.t1) +master-bin.000001 24403 Write_rows 1 24437 table_id: 25 flags: STMT_END_F +master-bin.000001 24437 Table_map 1 24476 table_id: 25 (test.t1) +master-bin.000001 24476 Write_rows 1 24510 table_id: 25 flags: STMT_END_F +master-bin.000001 24510 Table_map 1 24549 table_id: 25 (test.t1) +master-bin.000001 24549 Write_rows 1 24583 table_id: 25 flags: STMT_END_F +master-bin.000001 24583 Table_map 1 24622 table_id: 25 (test.t1) +master-bin.000001 24622 Write_rows 1 24656 table_id: 25 flags: STMT_END_F +master-bin.000001 24656 Table_map 1 24695 table_id: 25 (test.t1) +master-bin.000001 24695 Write_rows 1 24729 table_id: 25 flags: STMT_END_F +master-bin.000001 24729 Table_map 1 24768 table_id: 25 (test.t1) +master-bin.000001 24768 Write_rows 1 24802 table_id: 25 flags: STMT_END_F +master-bin.000001 24802 Table_map 1 24841 table_id: 25 (test.t1) +master-bin.000001 24841 Write_rows 1 24875 table_id: 25 flags: STMT_END_F +master-bin.000001 24875 Table_map 1 24914 table_id: 25 (test.t1) +master-bin.000001 24914 Write_rows 1 24948 table_id: 25 flags: STMT_END_F +master-bin.000001 24948 Table_map 1 24987 table_id: 25 (test.t1) +master-bin.000001 24987 Write_rows 1 25021 table_id: 25 flags: STMT_END_F +master-bin.000001 25021 Table_map 1 25060 table_id: 25 (test.t1) +master-bin.000001 25060 Write_rows 1 25094 table_id: 25 flags: STMT_END_F +master-bin.000001 25094 Table_map 1 25133 table_id: 25 (test.t1) +master-bin.000001 25133 Write_rows 1 25167 table_id: 25 flags: STMT_END_F +master-bin.000001 25167 Table_map 1 25206 table_id: 25 (test.t1) +master-bin.000001 25206 Write_rows 1 25240 table_id: 25 flags: STMT_END_F +master-bin.000001 25240 Table_map 1 25279 table_id: 25 (test.t1) +master-bin.000001 25279 Write_rows 1 25313 table_id: 25 flags: STMT_END_F +master-bin.000001 25313 Table_map 1 25352 table_id: 25 (test.t1) +master-bin.000001 25352 Write_rows 1 25386 table_id: 25 flags: STMT_END_F +master-bin.000001 25386 Table_map 1 25425 table_id: 25 (test.t1) +master-bin.000001 25425 Write_rows 1 25459 table_id: 25 flags: STMT_END_F +master-bin.000001 25459 Table_map 1 25498 table_id: 25 (test.t1) +master-bin.000001 25498 Write_rows 1 25532 table_id: 25 flags: STMT_END_F +master-bin.000001 25532 Table_map 1 25571 table_id: 25 (test.t1) +master-bin.000001 25571 Write_rows 1 25605 table_id: 25 flags: STMT_END_F +master-bin.000001 25605 Table_map 1 25644 table_id: 25 (test.t1) +master-bin.000001 25644 Write_rows 1 25678 table_id: 25 flags: STMT_END_F +master-bin.000001 25678 Table_map 1 25717 table_id: 25 (test.t1) +master-bin.000001 25717 Write_rows 1 25751 table_id: 25 flags: STMT_END_F +master-bin.000001 25751 Table_map 1 25790 table_id: 25 (test.t1) +master-bin.000001 25790 Write_rows 1 25824 table_id: 25 flags: STMT_END_F +master-bin.000001 25824 Table_map 1 25863 table_id: 25 (test.t1) +master-bin.000001 25863 Write_rows 1 25897 table_id: 25 flags: STMT_END_F +master-bin.000001 25897 Table_map 1 25936 table_id: 25 (test.t1) +master-bin.000001 25936 Write_rows 1 25970 table_id: 25 flags: STMT_END_F +master-bin.000001 25970 Table_map 1 26009 table_id: 25 (test.t1) +master-bin.000001 26009 Write_rows 1 26043 table_id: 25 flags: STMT_END_F +master-bin.000001 26043 Table_map 1 26082 table_id: 25 (test.t1) +master-bin.000001 26082 Write_rows 1 26116 table_id: 25 flags: STMT_END_F +master-bin.000001 26116 Table_map 1 26155 table_id: 25 (test.t1) +master-bin.000001 26155 Write_rows 1 26189 table_id: 25 flags: STMT_END_F +master-bin.000001 26189 Table_map 1 26228 table_id: 25 (test.t1) +master-bin.000001 26228 Write_rows 1 26262 table_id: 25 flags: STMT_END_F +master-bin.000001 26262 Table_map 1 26301 table_id: 25 (test.t1) +master-bin.000001 26301 Write_rows 1 26335 table_id: 25 flags: STMT_END_F +master-bin.000001 26335 Table_map 1 26374 table_id: 25 (test.t1) +master-bin.000001 26374 Write_rows 1 26408 table_id: 25 flags: STMT_END_F +master-bin.000001 26408 Table_map 1 26447 table_id: 25 (test.t1) +master-bin.000001 26447 Write_rows 1 26481 table_id: 25 flags: STMT_END_F +master-bin.000001 26481 Table_map 1 26520 table_id: 25 (test.t1) +master-bin.000001 26520 Write_rows 1 26554 table_id: 25 flags: STMT_END_F +master-bin.000001 26554 Table_map 1 26593 table_id: 25 (test.t1) +master-bin.000001 26593 Write_rows 1 26627 table_id: 25 flags: STMT_END_F +master-bin.000001 26627 Table_map 1 26666 table_id: 25 (test.t1) +master-bin.000001 26666 Write_rows 1 26700 table_id: 25 flags: STMT_END_F +master-bin.000001 26700 Table_map 1 26739 table_id: 25 (test.t1) +master-bin.000001 26739 Write_rows 1 26773 table_id: 25 flags: STMT_END_F +master-bin.000001 26773 Table_map 1 26812 table_id: 25 (test.t1) +master-bin.000001 26812 Write_rows 1 26846 table_id: 25 flags: STMT_END_F +master-bin.000001 26846 Table_map 1 26885 table_id: 25 (test.t1) +master-bin.000001 26885 Write_rows 1 26919 table_id: 25 flags: STMT_END_F +master-bin.000001 26919 Table_map 1 26958 table_id: 25 (test.t1) +master-bin.000001 26958 Write_rows 1 26992 table_id: 25 flags: STMT_END_F +master-bin.000001 26992 Table_map 1 27031 table_id: 25 (test.t1) +master-bin.000001 27031 Write_rows 1 27065 table_id: 25 flags: STMT_END_F +master-bin.000001 27065 Table_map 1 27104 table_id: 25 (test.t1) +master-bin.000001 27104 Write_rows 1 27138 table_id: 25 flags: STMT_END_F +master-bin.000001 27138 Table_map 1 27177 table_id: 25 (test.t1) +master-bin.000001 27177 Write_rows 1 27211 table_id: 25 flags: STMT_END_F +master-bin.000001 27211 Table_map 1 27250 table_id: 25 (test.t1) +master-bin.000001 27250 Write_rows 1 27284 table_id: 25 flags: STMT_END_F +master-bin.000001 27284 Table_map 1 27323 table_id: 25 (test.t1) +master-bin.000001 27323 Write_rows 1 27357 table_id: 25 flags: STMT_END_F +master-bin.000001 27357 Table_map 1 27396 table_id: 25 (test.t1) +master-bin.000001 27396 Write_rows 1 27430 table_id: 25 flags: STMT_END_F +master-bin.000001 27430 Table_map 1 27469 table_id: 25 (test.t1) +master-bin.000001 27469 Write_rows 1 27503 table_id: 25 flags: STMT_END_F +master-bin.000001 27503 Table_map 1 27542 table_id: 25 (test.t1) +master-bin.000001 27542 Write_rows 1 27576 table_id: 25 flags: STMT_END_F +master-bin.000001 27576 Table_map 1 27615 table_id: 25 (test.t1) +master-bin.000001 27615 Write_rows 1 27649 table_id: 25 flags: STMT_END_F +master-bin.000001 27649 Table_map 1 27688 table_id: 25 (test.t1) +master-bin.000001 27688 Write_rows 1 27722 table_id: 25 flags: STMT_END_F +master-bin.000001 27722 Table_map 1 27761 table_id: 25 (test.t1) +master-bin.000001 27761 Write_rows 1 27795 table_id: 25 flags: STMT_END_F +master-bin.000001 27795 Table_map 1 27834 table_id: 25 (test.t1) +master-bin.000001 27834 Write_rows 1 27868 table_id: 25 flags: STMT_END_F +master-bin.000001 27868 Table_map 1 27907 table_id: 25 (test.t1) +master-bin.000001 27907 Write_rows 1 27941 table_id: 25 flags: STMT_END_F +master-bin.000001 27941 Table_map 1 27980 table_id: 25 (test.t1) +master-bin.000001 27980 Write_rows 1 28014 table_id: 25 flags: STMT_END_F +master-bin.000001 28014 Table_map 1 28053 table_id: 25 (test.t1) +master-bin.000001 28053 Write_rows 1 28087 table_id: 25 flags: STMT_END_F +master-bin.000001 28087 Table_map 1 28126 table_id: 25 (test.t1) +master-bin.000001 28126 Write_rows 1 28160 table_id: 25 flags: STMT_END_F +master-bin.000001 28160 Table_map 1 28199 table_id: 25 (test.t1) +master-bin.000001 28199 Write_rows 1 28233 table_id: 25 flags: STMT_END_F +master-bin.000001 28233 Table_map 1 28272 table_id: 25 (test.t1) +master-bin.000001 28272 Write_rows 1 28306 table_id: 25 flags: STMT_END_F +master-bin.000001 28306 Table_map 1 28345 table_id: 25 (test.t1) +master-bin.000001 28345 Write_rows 1 28379 table_id: 25 flags: STMT_END_F +master-bin.000001 28379 Table_map 1 28418 table_id: 25 (test.t1) +master-bin.000001 28418 Write_rows 1 28452 table_id: 25 flags: STMT_END_F +master-bin.000001 28452 Table_map 1 28491 table_id: 25 (test.t1) +master-bin.000001 28491 Write_rows 1 28525 table_id: 25 flags: STMT_END_F +master-bin.000001 28525 Table_map 1 28564 table_id: 25 (test.t1) +master-bin.000001 28564 Write_rows 1 28598 table_id: 25 flags: STMT_END_F +master-bin.000001 28598 Table_map 1 28637 table_id: 25 (test.t1) +master-bin.000001 28637 Write_rows 1 28671 table_id: 25 flags: STMT_END_F +master-bin.000001 28671 Table_map 1 28710 table_id: 25 (test.t1) +master-bin.000001 28710 Write_rows 1 28744 table_id: 25 flags: STMT_END_F +master-bin.000001 28744 Table_map 1 28783 table_id: 25 (test.t1) +master-bin.000001 28783 Write_rows 1 28817 table_id: 25 flags: STMT_END_F +master-bin.000001 28817 Table_map 1 28856 table_id: 25 (test.t1) +master-bin.000001 28856 Write_rows 1 28890 table_id: 25 flags: STMT_END_F +master-bin.000001 28890 Table_map 1 28929 table_id: 25 (test.t1) +master-bin.000001 28929 Write_rows 1 28963 table_id: 25 flags: STMT_END_F +master-bin.000001 28963 Table_map 1 29002 table_id: 25 (test.t1) +master-bin.000001 29002 Write_rows 1 29036 table_id: 25 flags: STMT_END_F +master-bin.000001 29036 Table_map 1 29075 table_id: 25 (test.t1) +master-bin.000001 29075 Write_rows 1 29109 table_id: 25 flags: STMT_END_F +master-bin.000001 29109 Table_map 1 29148 table_id: 25 (test.t1) +master-bin.000001 29148 Write_rows 1 29182 table_id: 25 flags: STMT_END_F +master-bin.000001 29182 Table_map 1 29221 table_id: 25 (test.t1) +master-bin.000001 29221 Write_rows 1 29255 table_id: 25 flags: STMT_END_F +master-bin.000001 29255 Table_map 1 29294 table_id: 25 (test.t1) +master-bin.000001 29294 Write_rows 1 29328 table_id: 25 flags: STMT_END_F +master-bin.000001 29328 Table_map 1 29367 table_id: 25 (test.t1) +master-bin.000001 29367 Write_rows 1 29401 table_id: 25 flags: STMT_END_F +master-bin.000001 29401 Table_map 1 29440 table_id: 25 (test.t1) +master-bin.000001 29440 Write_rows 1 29474 table_id: 25 flags: STMT_END_F +master-bin.000001 29474 Xid 1 29501 COMMIT /* xid=189 */ +master-bin.000001 29501 Rotate 1 29545 master-bin.000002;pos=4 +drop table t1; +set global binlog_cache_size=@bcs; +set session autocommit = @ac; +End of 5.0 tests reset master; create table t1 (id tinyint auto_increment primary key); set insert_id=128; diff --git a/mysql-test/r/binlog_stm_binlog.result b/mysql-test/r/binlog_stm_binlog.result index 1bc7430fde0..45fef628357 100644 --- a/mysql-test/r/binlog_stm_binlog.result +++ b/mysql-test/r/binlog_stm_binlog.result @@ -260,6 +260,422 @@ master-bin.000001 293 Query 1 381 use `test`; insert into t1 values (5) master-bin.000001 381 Query 1 469 use `test`; insert into t1 values (6) master-bin.000001 469 Query 1 545 use `test`; drop table t1 set session autocommit = @ac; +set @bcs = @@binlog_cache_size; +set @ac = @@autocommit; +set global binlog_cache_size=4096; +set autocommit= 0; +reset master; +create table t1 (a int) engine=innodb; +show binlog events from 0; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 106 Server ver: 5.1.21-beta-debug-log, Binlog ver: 4 +master-bin.000001 106 Query 1 206 use `test`; create table t1 (a int) engine=innodb +master-bin.000001 206 Query 1 274 use `test`; BEGIN +master-bin.000001 274 Query 1 365 use `test`; insert into t1 values( 400 ) +master-bin.000001 365 Query 1 456 use `test`; insert into t1 values( 399 ) +master-bin.000001 456 Query 1 547 use `test`; insert into t1 values( 398 ) +master-bin.000001 547 Query 1 638 use `test`; insert into t1 values( 397 ) +master-bin.000001 638 Query 1 729 use `test`; insert into t1 values( 396 ) +master-bin.000001 729 Query 1 820 use `test`; insert into t1 values( 395 ) +master-bin.000001 820 Query 1 911 use `test`; insert into t1 values( 394 ) +master-bin.000001 911 Query 1 1002 use `test`; insert into t1 values( 393 ) +master-bin.000001 1002 Query 1 1093 use `test`; insert into t1 values( 392 ) +master-bin.000001 1093 Query 1 1184 use `test`; insert into t1 values( 391 ) +master-bin.000001 1184 Query 1 1275 use `test`; insert into t1 values( 390 ) +master-bin.000001 1275 Query 1 1366 use `test`; insert into t1 values( 389 ) +master-bin.000001 1366 Query 1 1457 use `test`; insert into t1 values( 388 ) +master-bin.000001 1457 Query 1 1548 use `test`; insert into t1 values( 387 ) +master-bin.000001 1548 Query 1 1639 use `test`; insert into t1 values( 386 ) +master-bin.000001 1639 Query 1 1730 use `test`; insert into t1 values( 385 ) +master-bin.000001 1730 Query 1 1821 use `test`; insert into t1 values( 384 ) +master-bin.000001 1821 Query 1 1912 use `test`; insert into t1 values( 383 ) +master-bin.000001 1912 Query 1 2003 use `test`; insert into t1 values( 382 ) +master-bin.000001 2003 Query 1 2094 use `test`; insert into t1 values( 381 ) +master-bin.000001 2094 Query 1 2185 use `test`; insert into t1 values( 380 ) +master-bin.000001 2185 Query 1 2276 use `test`; insert into t1 values( 379 ) +master-bin.000001 2276 Query 1 2367 use `test`; insert into t1 values( 378 ) +master-bin.000001 2367 Query 1 2458 use `test`; insert into t1 values( 377 ) +master-bin.000001 2458 Query 1 2549 use `test`; insert into t1 values( 376 ) +master-bin.000001 2549 Query 1 2640 use `test`; insert into t1 values( 375 ) +master-bin.000001 2640 Query 1 2731 use `test`; insert into t1 values( 374 ) +master-bin.000001 2731 Query 1 2822 use `test`; insert into t1 values( 373 ) +master-bin.000001 2822 Query 1 2913 use `test`; insert into t1 values( 372 ) +master-bin.000001 2913 Query 1 3004 use `test`; insert into t1 values( 371 ) +master-bin.000001 3004 Query 1 3095 use `test`; insert into t1 values( 370 ) +master-bin.000001 3095 Query 1 3186 use `test`; insert into t1 values( 369 ) +master-bin.000001 3186 Query 1 3277 use `test`; insert into t1 values( 368 ) +master-bin.000001 3277 Query 1 3368 use `test`; insert into t1 values( 367 ) +master-bin.000001 3368 Query 1 3459 use `test`; insert into t1 values( 366 ) +master-bin.000001 3459 Query 1 3550 use `test`; insert into t1 values( 365 ) +master-bin.000001 3550 Query 1 3641 use `test`; insert into t1 values( 364 ) +master-bin.000001 3641 Query 1 3732 use `test`; insert into t1 values( 363 ) +master-bin.000001 3732 Query 1 3823 use `test`; insert into t1 values( 362 ) +master-bin.000001 3823 Query 1 3914 use `test`; insert into t1 values( 361 ) +master-bin.000001 3914 Query 1 4005 use `test`; insert into t1 values( 360 ) +master-bin.000001 4005 Query 1 4096 use `test`; insert into t1 values( 359 ) +master-bin.000001 4096 Query 1 4187 use `test`; insert into t1 values( 358 ) +master-bin.000001 4187 Query 1 4278 use `test`; insert into t1 values( 357 ) +master-bin.000001 4278 Query 1 4369 use `test`; insert into t1 values( 356 ) +master-bin.000001 4369 Query 1 4460 use `test`; insert into t1 values( 355 ) +master-bin.000001 4460 Query 1 4551 use `test`; insert into t1 values( 354 ) +master-bin.000001 4551 Query 1 4642 use `test`; insert into t1 values( 353 ) +master-bin.000001 4642 Query 1 4733 use `test`; insert into t1 values( 352 ) +master-bin.000001 4733 Query 1 4824 use `test`; insert into t1 values( 351 ) +master-bin.000001 4824 Query 1 4915 use `test`; insert into t1 values( 350 ) +master-bin.000001 4915 Query 1 5006 use `test`; insert into t1 values( 349 ) +master-bin.000001 5006 Query 1 5097 use `test`; insert into t1 values( 348 ) +master-bin.000001 5097 Query 1 5188 use `test`; insert into t1 values( 347 ) +master-bin.000001 5188 Query 1 5279 use `test`; insert into t1 values( 346 ) +master-bin.000001 5279 Query 1 5370 use `test`; insert into t1 values( 345 ) +master-bin.000001 5370 Query 1 5461 use `test`; insert into t1 values( 344 ) +master-bin.000001 5461 Query 1 5552 use `test`; insert into t1 values( 343 ) +master-bin.000001 5552 Query 1 5643 use `test`; insert into t1 values( 342 ) +master-bin.000001 5643 Query 1 5734 use `test`; insert into t1 values( 341 ) +master-bin.000001 5734 Query 1 5825 use `test`; insert into t1 values( 340 ) +master-bin.000001 5825 Query 1 5916 use `test`; insert into t1 values( 339 ) +master-bin.000001 5916 Query 1 6007 use `test`; insert into t1 values( 338 ) +master-bin.000001 6007 Query 1 6098 use `test`; insert into t1 values( 337 ) +master-bin.000001 6098 Query 1 6189 use `test`; insert into t1 values( 336 ) +master-bin.000001 6189 Query 1 6280 use `test`; insert into t1 values( 335 ) +master-bin.000001 6280 Query 1 6371 use `test`; insert into t1 values( 334 ) +master-bin.000001 6371 Query 1 6462 use `test`; insert into t1 values( 333 ) +master-bin.000001 6462 Query 1 6553 use `test`; insert into t1 values( 332 ) +master-bin.000001 6553 Query 1 6644 use `test`; insert into t1 values( 331 ) +master-bin.000001 6644 Query 1 6735 use `test`; insert into t1 values( 330 ) +master-bin.000001 6735 Query 1 6826 use `test`; insert into t1 values( 329 ) +master-bin.000001 6826 Query 1 6917 use `test`; insert into t1 values( 328 ) +master-bin.000001 6917 Query 1 7008 use `test`; insert into t1 values( 327 ) +master-bin.000001 7008 Query 1 7099 use `test`; insert into t1 values( 326 ) +master-bin.000001 7099 Query 1 7190 use `test`; insert into t1 values( 325 ) +master-bin.000001 7190 Query 1 7281 use `test`; insert into t1 values( 324 ) +master-bin.000001 7281 Query 1 7372 use `test`; insert into t1 values( 323 ) +master-bin.000001 7372 Query 1 7463 use `test`; insert into t1 values( 322 ) +master-bin.000001 7463 Query 1 7554 use `test`; insert into t1 values( 321 ) +master-bin.000001 7554 Query 1 7645 use `test`; insert into t1 values( 320 ) +master-bin.000001 7645 Query 1 7736 use `test`; insert into t1 values( 319 ) +master-bin.000001 7736 Query 1 7827 use `test`; insert into t1 values( 318 ) +master-bin.000001 7827 Query 1 7918 use `test`; insert into t1 values( 317 ) +master-bin.000001 7918 Query 1 8009 use `test`; insert into t1 values( 316 ) +master-bin.000001 8009 Query 1 8100 use `test`; insert into t1 values( 315 ) +master-bin.000001 8100 Query 1 8191 use `test`; insert into t1 values( 314 ) +master-bin.000001 8191 Query 1 8282 use `test`; insert into t1 values( 313 ) +master-bin.000001 8282 Query 1 8373 use `test`; insert into t1 values( 312 ) +master-bin.000001 8373 Query 1 8464 use `test`; insert into t1 values( 311 ) +master-bin.000001 8464 Query 1 8555 use `test`; insert into t1 values( 310 ) +master-bin.000001 8555 Query 1 8646 use `test`; insert into t1 values( 309 ) +master-bin.000001 8646 Query 1 8737 use `test`; insert into t1 values( 308 ) +master-bin.000001 8737 Query 1 8828 use `test`; insert into t1 values( 307 ) +master-bin.000001 8828 Query 1 8919 use `test`; insert into t1 values( 306 ) +master-bin.000001 8919 Query 1 9010 use `test`; insert into t1 values( 305 ) +master-bin.000001 9010 Query 1 9101 use `test`; insert into t1 values( 304 ) +master-bin.000001 9101 Query 1 9192 use `test`; insert into t1 values( 303 ) +master-bin.000001 9192 Query 1 9283 use `test`; insert into t1 values( 302 ) +master-bin.000001 9283 Query 1 9374 use `test`; insert into t1 values( 301 ) +master-bin.000001 9374 Query 1 9465 use `test`; insert into t1 values( 300 ) +master-bin.000001 9465 Query 1 9556 use `test`; insert into t1 values( 299 ) +master-bin.000001 9556 Query 1 9647 use `test`; insert into t1 values( 298 ) +master-bin.000001 9647 Query 1 9738 use `test`; insert into t1 values( 297 ) +master-bin.000001 9738 Query 1 9829 use `test`; insert into t1 values( 296 ) +master-bin.000001 9829 Query 1 9920 use `test`; insert into t1 values( 295 ) +master-bin.000001 9920 Query 1 10011 use `test`; insert into t1 values( 294 ) +master-bin.000001 10011 Query 1 10102 use `test`; insert into t1 values( 293 ) +master-bin.000001 10102 Query 1 10193 use `test`; insert into t1 values( 292 ) +master-bin.000001 10193 Query 1 10284 use `test`; insert into t1 values( 291 ) +master-bin.000001 10284 Query 1 10375 use `test`; insert into t1 values( 290 ) +master-bin.000001 10375 Query 1 10466 use `test`; insert into t1 values( 289 ) +master-bin.000001 10466 Query 1 10557 use `test`; insert into t1 values( 288 ) +master-bin.000001 10557 Query 1 10648 use `test`; insert into t1 values( 287 ) +master-bin.000001 10648 Query 1 10739 use `test`; insert into t1 values( 286 ) +master-bin.000001 10739 Query 1 10830 use `test`; insert into t1 values( 285 ) +master-bin.000001 10830 Query 1 10921 use `test`; insert into t1 values( 284 ) +master-bin.000001 10921 Query 1 11012 use `test`; insert into t1 values( 283 ) +master-bin.000001 11012 Query 1 11103 use `test`; insert into t1 values( 282 ) +master-bin.000001 11103 Query 1 11194 use `test`; insert into t1 values( 281 ) +master-bin.000001 11194 Query 1 11285 use `test`; insert into t1 values( 280 ) +master-bin.000001 11285 Query 1 11376 use `test`; insert into t1 values( 279 ) +master-bin.000001 11376 Query 1 11467 use `test`; insert into t1 values( 278 ) +master-bin.000001 11467 Query 1 11558 use `test`; insert into t1 values( 277 ) +master-bin.000001 11558 Query 1 11649 use `test`; insert into t1 values( 276 ) +master-bin.000001 11649 Query 1 11740 use `test`; insert into t1 values( 275 ) +master-bin.000001 11740 Query 1 11831 use `test`; insert into t1 values( 274 ) +master-bin.000001 11831 Query 1 11922 use `test`; insert into t1 values( 273 ) +master-bin.000001 11922 Query 1 12013 use `test`; insert into t1 values( 272 ) +master-bin.000001 12013 Query 1 12104 use `test`; insert into t1 values( 271 ) +master-bin.000001 12104 Query 1 12195 use `test`; insert into t1 values( 270 ) +master-bin.000001 12195 Query 1 12286 use `test`; insert into t1 values( 269 ) +master-bin.000001 12286 Query 1 12377 use `test`; insert into t1 values( 268 ) +master-bin.000001 12377 Query 1 12468 use `test`; insert into t1 values( 267 ) +master-bin.000001 12468 Query 1 12559 use `test`; insert into t1 values( 266 ) +master-bin.000001 12559 Query 1 12650 use `test`; insert into t1 values( 265 ) +master-bin.000001 12650 Query 1 12741 use `test`; insert into t1 values( 264 ) +master-bin.000001 12741 Query 1 12832 use `test`; insert into t1 values( 263 ) +master-bin.000001 12832 Query 1 12923 use `test`; insert into t1 values( 262 ) +master-bin.000001 12923 Query 1 13014 use `test`; insert into t1 values( 261 ) +master-bin.000001 13014 Query 1 13105 use `test`; insert into t1 values( 260 ) +master-bin.000001 13105 Query 1 13196 use `test`; insert into t1 values( 259 ) +master-bin.000001 13196 Query 1 13287 use `test`; insert into t1 values( 258 ) +master-bin.000001 13287 Query 1 13378 use `test`; insert into t1 values( 257 ) +master-bin.000001 13378 Query 1 13469 use `test`; insert into t1 values( 256 ) +master-bin.000001 13469 Query 1 13560 use `test`; insert into t1 values( 255 ) +master-bin.000001 13560 Query 1 13651 use `test`; insert into t1 values( 254 ) +master-bin.000001 13651 Query 1 13742 use `test`; insert into t1 values( 253 ) +master-bin.000001 13742 Query 1 13833 use `test`; insert into t1 values( 252 ) +master-bin.000001 13833 Query 1 13924 use `test`; insert into t1 values( 251 ) +master-bin.000001 13924 Query 1 14015 use `test`; insert into t1 values( 250 ) +master-bin.000001 14015 Query 1 14106 use `test`; insert into t1 values( 249 ) +master-bin.000001 14106 Query 1 14197 use `test`; insert into t1 values( 248 ) +master-bin.000001 14197 Query 1 14288 use `test`; insert into t1 values( 247 ) +master-bin.000001 14288 Query 1 14379 use `test`; insert into t1 values( 246 ) +master-bin.000001 14379 Query 1 14470 use `test`; insert into t1 values( 245 ) +master-bin.000001 14470 Query 1 14561 use `test`; insert into t1 values( 244 ) +master-bin.000001 14561 Query 1 14652 use `test`; insert into t1 values( 243 ) +master-bin.000001 14652 Query 1 14743 use `test`; insert into t1 values( 242 ) +master-bin.000001 14743 Query 1 14834 use `test`; insert into t1 values( 241 ) +master-bin.000001 14834 Query 1 14925 use `test`; insert into t1 values( 240 ) +master-bin.000001 14925 Query 1 15016 use `test`; insert into t1 values( 239 ) +master-bin.000001 15016 Query 1 15107 use `test`; insert into t1 values( 238 ) +master-bin.000001 15107 Query 1 15198 use `test`; insert into t1 values( 237 ) +master-bin.000001 15198 Query 1 15289 use `test`; insert into t1 values( 236 ) +master-bin.000001 15289 Query 1 15380 use `test`; insert into t1 values( 235 ) +master-bin.000001 15380 Query 1 15471 use `test`; insert into t1 values( 234 ) +master-bin.000001 15471 Query 1 15562 use `test`; insert into t1 values( 233 ) +master-bin.000001 15562 Query 1 15653 use `test`; insert into t1 values( 232 ) +master-bin.000001 15653 Query 1 15744 use `test`; insert into t1 values( 231 ) +master-bin.000001 15744 Query 1 15835 use `test`; insert into t1 values( 230 ) +master-bin.000001 15835 Query 1 15926 use `test`; insert into t1 values( 229 ) +master-bin.000001 15926 Query 1 16017 use `test`; insert into t1 values( 228 ) +master-bin.000001 16017 Query 1 16108 use `test`; insert into t1 values( 227 ) +master-bin.000001 16108 Query 1 16199 use `test`; insert into t1 values( 226 ) +master-bin.000001 16199 Query 1 16290 use `test`; insert into t1 values( 225 ) +master-bin.000001 16290 Query 1 16381 use `test`; insert into t1 values( 224 ) +master-bin.000001 16381 Query 1 16472 use `test`; insert into t1 values( 223 ) +master-bin.000001 16472 Query 1 16563 use `test`; insert into t1 values( 222 ) +master-bin.000001 16563 Query 1 16654 use `test`; insert into t1 values( 221 ) +master-bin.000001 16654 Query 1 16745 use `test`; insert into t1 values( 220 ) +master-bin.000001 16745 Query 1 16836 use `test`; insert into t1 values( 219 ) +master-bin.000001 16836 Query 1 16927 use `test`; insert into t1 values( 218 ) +master-bin.000001 16927 Query 1 17018 use `test`; insert into t1 values( 217 ) +master-bin.000001 17018 Query 1 17109 use `test`; insert into t1 values( 216 ) +master-bin.000001 17109 Query 1 17200 use `test`; insert into t1 values( 215 ) +master-bin.000001 17200 Query 1 17291 use `test`; insert into t1 values( 214 ) +master-bin.000001 17291 Query 1 17382 use `test`; insert into t1 values( 213 ) +master-bin.000001 17382 Query 1 17473 use `test`; insert into t1 values( 212 ) +master-bin.000001 17473 Query 1 17564 use `test`; insert into t1 values( 211 ) +master-bin.000001 17564 Query 1 17655 use `test`; insert into t1 values( 210 ) +master-bin.000001 17655 Query 1 17746 use `test`; insert into t1 values( 209 ) +master-bin.000001 17746 Query 1 17837 use `test`; insert into t1 values( 208 ) +master-bin.000001 17837 Query 1 17928 use `test`; insert into t1 values( 207 ) +master-bin.000001 17928 Query 1 18019 use `test`; insert into t1 values( 206 ) +master-bin.000001 18019 Query 1 18110 use `test`; insert into t1 values( 205 ) +master-bin.000001 18110 Query 1 18201 use `test`; insert into t1 values( 204 ) +master-bin.000001 18201 Query 1 18292 use `test`; insert into t1 values( 203 ) +master-bin.000001 18292 Query 1 18383 use `test`; insert into t1 values( 202 ) +master-bin.000001 18383 Query 1 18474 use `test`; insert into t1 values( 201 ) +master-bin.000001 18474 Query 1 18565 use `test`; insert into t1 values( 200 ) +master-bin.000001 18565 Query 1 18656 use `test`; insert into t1 values( 199 ) +master-bin.000001 18656 Query 1 18747 use `test`; insert into t1 values( 198 ) +master-bin.000001 18747 Query 1 18838 use `test`; insert into t1 values( 197 ) +master-bin.000001 18838 Query 1 18929 use `test`; insert into t1 values( 196 ) +master-bin.000001 18929 Query 1 19020 use `test`; insert into t1 values( 195 ) +master-bin.000001 19020 Query 1 19111 use `test`; insert into t1 values( 194 ) +master-bin.000001 19111 Query 1 19202 use `test`; insert into t1 values( 193 ) +master-bin.000001 19202 Query 1 19293 use `test`; insert into t1 values( 192 ) +master-bin.000001 19293 Query 1 19384 use `test`; insert into t1 values( 191 ) +master-bin.000001 19384 Query 1 19475 use `test`; insert into t1 values( 190 ) +master-bin.000001 19475 Query 1 19566 use `test`; insert into t1 values( 189 ) +master-bin.000001 19566 Query 1 19657 use `test`; insert into t1 values( 188 ) +master-bin.000001 19657 Query 1 19748 use `test`; insert into t1 values( 187 ) +master-bin.000001 19748 Query 1 19839 use `test`; insert into t1 values( 186 ) +master-bin.000001 19839 Query 1 19930 use `test`; insert into t1 values( 185 ) +master-bin.000001 19930 Query 1 20021 use `test`; insert into t1 values( 184 ) +master-bin.000001 20021 Query 1 20112 use `test`; insert into t1 values( 183 ) +master-bin.000001 20112 Query 1 20203 use `test`; insert into t1 values( 182 ) +master-bin.000001 20203 Query 1 20294 use `test`; insert into t1 values( 181 ) +master-bin.000001 20294 Query 1 20385 use `test`; insert into t1 values( 180 ) +master-bin.000001 20385 Query 1 20476 use `test`; insert into t1 values( 179 ) +master-bin.000001 20476 Query 1 20567 use `test`; insert into t1 values( 178 ) +master-bin.000001 20567 Query 1 20658 use `test`; insert into t1 values( 177 ) +master-bin.000001 20658 Query 1 20749 use `test`; insert into t1 values( 176 ) +master-bin.000001 20749 Query 1 20840 use `test`; insert into t1 values( 175 ) +master-bin.000001 20840 Query 1 20931 use `test`; insert into t1 values( 174 ) +master-bin.000001 20931 Query 1 21022 use `test`; insert into t1 values( 173 ) +master-bin.000001 21022 Query 1 21113 use `test`; insert into t1 values( 172 ) +master-bin.000001 21113 Query 1 21204 use `test`; insert into t1 values( 171 ) +master-bin.000001 21204 Query 1 21295 use `test`; insert into t1 values( 170 ) +master-bin.000001 21295 Query 1 21386 use `test`; insert into t1 values( 169 ) +master-bin.000001 21386 Query 1 21477 use `test`; insert into t1 values( 168 ) +master-bin.000001 21477 Query 1 21568 use `test`; insert into t1 values( 167 ) +master-bin.000001 21568 Query 1 21659 use `test`; insert into t1 values( 166 ) +master-bin.000001 21659 Query 1 21750 use `test`; insert into t1 values( 165 ) +master-bin.000001 21750 Query 1 21841 use `test`; insert into t1 values( 164 ) +master-bin.000001 21841 Query 1 21932 use `test`; insert into t1 values( 163 ) +master-bin.000001 21932 Query 1 22023 use `test`; insert into t1 values( 162 ) +master-bin.000001 22023 Query 1 22114 use `test`; insert into t1 values( 161 ) +master-bin.000001 22114 Query 1 22205 use `test`; insert into t1 values( 160 ) +master-bin.000001 22205 Query 1 22296 use `test`; insert into t1 values( 159 ) +master-bin.000001 22296 Query 1 22387 use `test`; insert into t1 values( 158 ) +master-bin.000001 22387 Query 1 22478 use `test`; insert into t1 values( 157 ) +master-bin.000001 22478 Query 1 22569 use `test`; insert into t1 values( 156 ) +master-bin.000001 22569 Query 1 22660 use `test`; insert into t1 values( 155 ) +master-bin.000001 22660 Query 1 22751 use `test`; insert into t1 values( 154 ) +master-bin.000001 22751 Query 1 22842 use `test`; insert into t1 values( 153 ) +master-bin.000001 22842 Query 1 22933 use `test`; insert into t1 values( 152 ) +master-bin.000001 22933 Query 1 23024 use `test`; insert into t1 values( 151 ) +master-bin.000001 23024 Query 1 23115 use `test`; insert into t1 values( 150 ) +master-bin.000001 23115 Query 1 23206 use `test`; insert into t1 values( 149 ) +master-bin.000001 23206 Query 1 23297 use `test`; insert into t1 values( 148 ) +master-bin.000001 23297 Query 1 23388 use `test`; insert into t1 values( 147 ) +master-bin.000001 23388 Query 1 23479 use `test`; insert into t1 values( 146 ) +master-bin.000001 23479 Query 1 23570 use `test`; insert into t1 values( 145 ) +master-bin.000001 23570 Query 1 23661 use `test`; insert into t1 values( 144 ) +master-bin.000001 23661 Query 1 23752 use `test`; insert into t1 values( 143 ) +master-bin.000001 23752 Query 1 23843 use `test`; insert into t1 values( 142 ) +master-bin.000001 23843 Query 1 23934 use `test`; insert into t1 values( 141 ) +master-bin.000001 23934 Query 1 24025 use `test`; insert into t1 values( 140 ) +master-bin.000001 24025 Query 1 24116 use `test`; insert into t1 values( 139 ) +master-bin.000001 24116 Query 1 24207 use `test`; insert into t1 values( 138 ) +master-bin.000001 24207 Query 1 24298 use `test`; insert into t1 values( 137 ) +master-bin.000001 24298 Query 1 24389 use `test`; insert into t1 values( 136 ) +master-bin.000001 24389 Query 1 24480 use `test`; insert into t1 values( 135 ) +master-bin.000001 24480 Query 1 24571 use `test`; insert into t1 values( 134 ) +master-bin.000001 24571 Query 1 24662 use `test`; insert into t1 values( 133 ) +master-bin.000001 24662 Query 1 24753 use `test`; insert into t1 values( 132 ) +master-bin.000001 24753 Query 1 24844 use `test`; insert into t1 values( 131 ) +master-bin.000001 24844 Query 1 24935 use `test`; insert into t1 values( 130 ) +master-bin.000001 24935 Query 1 25026 use `test`; insert into t1 values( 129 ) +master-bin.000001 25026 Query 1 25117 use `test`; insert into t1 values( 128 ) +master-bin.000001 25117 Query 1 25208 use `test`; insert into t1 values( 127 ) +master-bin.000001 25208 Query 1 25299 use `test`; insert into t1 values( 126 ) +master-bin.000001 25299 Query 1 25390 use `test`; insert into t1 values( 125 ) +master-bin.000001 25390 Query 1 25481 use `test`; insert into t1 values( 124 ) +master-bin.000001 25481 Query 1 25572 use `test`; insert into t1 values( 123 ) +master-bin.000001 25572 Query 1 25663 use `test`; insert into t1 values( 122 ) +master-bin.000001 25663 Query 1 25754 use `test`; insert into t1 values( 121 ) +master-bin.000001 25754 Query 1 25845 use `test`; insert into t1 values( 120 ) +master-bin.000001 25845 Query 1 25936 use `test`; insert into t1 values( 119 ) +master-bin.000001 25936 Query 1 26027 use `test`; insert into t1 values( 118 ) +master-bin.000001 26027 Query 1 26118 use `test`; insert into t1 values( 117 ) +master-bin.000001 26118 Query 1 26209 use `test`; insert into t1 values( 116 ) +master-bin.000001 26209 Query 1 26300 use `test`; insert into t1 values( 115 ) +master-bin.000001 26300 Query 1 26391 use `test`; insert into t1 values( 114 ) +master-bin.000001 26391 Query 1 26482 use `test`; insert into t1 values( 113 ) +master-bin.000001 26482 Query 1 26573 use `test`; insert into t1 values( 112 ) +master-bin.000001 26573 Query 1 26664 use `test`; insert into t1 values( 111 ) +master-bin.000001 26664 Query 1 26755 use `test`; insert into t1 values( 110 ) +master-bin.000001 26755 Query 1 26846 use `test`; insert into t1 values( 109 ) +master-bin.000001 26846 Query 1 26937 use `test`; insert into t1 values( 108 ) +master-bin.000001 26937 Query 1 27028 use `test`; insert into t1 values( 107 ) +master-bin.000001 27028 Query 1 27119 use `test`; insert into t1 values( 106 ) +master-bin.000001 27119 Query 1 27210 use `test`; insert into t1 values( 105 ) +master-bin.000001 27210 Query 1 27301 use `test`; insert into t1 values( 104 ) +master-bin.000001 27301 Query 1 27392 use `test`; insert into t1 values( 103 ) +master-bin.000001 27392 Query 1 27483 use `test`; insert into t1 values( 102 ) +master-bin.000001 27483 Query 1 27574 use `test`; insert into t1 values( 101 ) +master-bin.000001 27574 Query 1 27665 use `test`; insert into t1 values( 100 ) +master-bin.000001 27665 Query 1 27755 use `test`; insert into t1 values( 99 ) +master-bin.000001 27755 Query 1 27845 use `test`; insert into t1 values( 98 ) +master-bin.000001 27845 Query 1 27935 use `test`; insert into t1 values( 97 ) +master-bin.000001 27935 Query 1 28025 use `test`; insert into t1 values( 96 ) +master-bin.000001 28025 Query 1 28115 use `test`; insert into t1 values( 95 ) +master-bin.000001 28115 Query 1 28205 use `test`; insert into t1 values( 94 ) +master-bin.000001 28205 Query 1 28295 use `test`; insert into t1 values( 93 ) +master-bin.000001 28295 Query 1 28385 use `test`; insert into t1 values( 92 ) +master-bin.000001 28385 Query 1 28475 use `test`; insert into t1 values( 91 ) +master-bin.000001 28475 Query 1 28565 use `test`; insert into t1 values( 90 ) +master-bin.000001 28565 Query 1 28655 use `test`; insert into t1 values( 89 ) +master-bin.000001 28655 Query 1 28745 use `test`; insert into t1 values( 88 ) +master-bin.000001 28745 Query 1 28835 use `test`; insert into t1 values( 87 ) +master-bin.000001 28835 Query 1 28925 use `test`; insert into t1 values( 86 ) +master-bin.000001 28925 Query 1 29015 use `test`; insert into t1 values( 85 ) +master-bin.000001 29015 Query 1 29105 use `test`; insert into t1 values( 84 ) +master-bin.000001 29105 Query 1 29195 use `test`; insert into t1 values( 83 ) +master-bin.000001 29195 Query 1 29285 use `test`; insert into t1 values( 82 ) +master-bin.000001 29285 Query 1 29375 use `test`; insert into t1 values( 81 ) +master-bin.000001 29375 Query 1 29465 use `test`; insert into t1 values( 80 ) +master-bin.000001 29465 Query 1 29555 use `test`; insert into t1 values( 79 ) +master-bin.000001 29555 Query 1 29645 use `test`; insert into t1 values( 78 ) +master-bin.000001 29645 Query 1 29735 use `test`; insert into t1 values( 77 ) +master-bin.000001 29735 Query 1 29825 use `test`; insert into t1 values( 76 ) +master-bin.000001 29825 Query 1 29915 use `test`; insert into t1 values( 75 ) +master-bin.000001 29915 Query 1 30005 use `test`; insert into t1 values( 74 ) +master-bin.000001 30005 Query 1 30095 use `test`; insert into t1 values( 73 ) +master-bin.000001 30095 Query 1 30185 use `test`; insert into t1 values( 72 ) +master-bin.000001 30185 Query 1 30275 use `test`; insert into t1 values( 71 ) +master-bin.000001 30275 Query 1 30365 use `test`; insert into t1 values( 70 ) +master-bin.000001 30365 Query 1 30455 use `test`; insert into t1 values( 69 ) +master-bin.000001 30455 Query 1 30545 use `test`; insert into t1 values( 68 ) +master-bin.000001 30545 Query 1 30635 use `test`; insert into t1 values( 67 ) +master-bin.000001 30635 Query 1 30725 use `test`; insert into t1 values( 66 ) +master-bin.000001 30725 Query 1 30815 use `test`; insert into t1 values( 65 ) +master-bin.000001 30815 Query 1 30905 use `test`; insert into t1 values( 64 ) +master-bin.000001 30905 Query 1 30995 use `test`; insert into t1 values( 63 ) +master-bin.000001 30995 Query 1 31085 use `test`; insert into t1 values( 62 ) +master-bin.000001 31085 Query 1 31175 use `test`; insert into t1 values( 61 ) +master-bin.000001 31175 Query 1 31265 use `test`; insert into t1 values( 60 ) +master-bin.000001 31265 Query 1 31355 use `test`; insert into t1 values( 59 ) +master-bin.000001 31355 Query 1 31445 use `test`; insert into t1 values( 58 ) +master-bin.000001 31445 Query 1 31535 use `test`; insert into t1 values( 57 ) +master-bin.000001 31535 Query 1 31625 use `test`; insert into t1 values( 56 ) +master-bin.000001 31625 Query 1 31715 use `test`; insert into t1 values( 55 ) +master-bin.000001 31715 Query 1 31805 use `test`; insert into t1 values( 54 ) +master-bin.000001 31805 Query 1 31895 use `test`; insert into t1 values( 53 ) +master-bin.000001 31895 Query 1 31985 use `test`; insert into t1 values( 52 ) +master-bin.000001 31985 Query 1 32075 use `test`; insert into t1 values( 51 ) +master-bin.000001 32075 Query 1 32165 use `test`; insert into t1 values( 50 ) +master-bin.000001 32165 Query 1 32255 use `test`; insert into t1 values( 49 ) +master-bin.000001 32255 Query 1 32345 use `test`; insert into t1 values( 48 ) +master-bin.000001 32345 Query 1 32435 use `test`; insert into t1 values( 47 ) +master-bin.000001 32435 Query 1 32525 use `test`; insert into t1 values( 46 ) +master-bin.000001 32525 Query 1 32615 use `test`; insert into t1 values( 45 ) +master-bin.000001 32615 Query 1 32705 use `test`; insert into t1 values( 44 ) +master-bin.000001 32705 Query 1 32795 use `test`; insert into t1 values( 43 ) +master-bin.000001 32795 Query 1 32885 use `test`; insert into t1 values( 42 ) +master-bin.000001 32885 Query 1 32975 use `test`; insert into t1 values( 41 ) +master-bin.000001 32975 Query 1 33065 use `test`; insert into t1 values( 40 ) +master-bin.000001 33065 Query 1 33155 use `test`; insert into t1 values( 39 ) +master-bin.000001 33155 Query 1 33245 use `test`; insert into t1 values( 38 ) +master-bin.000001 33245 Query 1 33335 use `test`; insert into t1 values( 37 ) +master-bin.000001 33335 Query 1 33425 use `test`; insert into t1 values( 36 ) +master-bin.000001 33425 Query 1 33515 use `test`; insert into t1 values( 35 ) +master-bin.000001 33515 Query 1 33605 use `test`; insert into t1 values( 34 ) +master-bin.000001 33605 Query 1 33695 use `test`; insert into t1 values( 33 ) +master-bin.000001 33695 Query 1 33785 use `test`; insert into t1 values( 32 ) +master-bin.000001 33785 Query 1 33875 use `test`; insert into t1 values( 31 ) +master-bin.000001 33875 Query 1 33965 use `test`; insert into t1 values( 30 ) +master-bin.000001 33965 Query 1 34055 use `test`; insert into t1 values( 29 ) +master-bin.000001 34055 Query 1 34145 use `test`; insert into t1 values( 28 ) +master-bin.000001 34145 Query 1 34235 use `test`; insert into t1 values( 27 ) +master-bin.000001 34235 Query 1 34325 use `test`; insert into t1 values( 26 ) +master-bin.000001 34325 Query 1 34415 use `test`; insert into t1 values( 25 ) +master-bin.000001 34415 Query 1 34505 use `test`; insert into t1 values( 24 ) +master-bin.000001 34505 Query 1 34595 use `test`; insert into t1 values( 23 ) +master-bin.000001 34595 Query 1 34685 use `test`; insert into t1 values( 22 ) +master-bin.000001 34685 Query 1 34775 use `test`; insert into t1 values( 21 ) +master-bin.000001 34775 Query 1 34865 use `test`; insert into t1 values( 20 ) +master-bin.000001 34865 Query 1 34955 use `test`; insert into t1 values( 19 ) +master-bin.000001 34955 Query 1 35045 use `test`; insert into t1 values( 18 ) +master-bin.000001 35045 Query 1 35135 use `test`; insert into t1 values( 17 ) +master-bin.000001 35135 Query 1 35225 use `test`; insert into t1 values( 16 ) +master-bin.000001 35225 Query 1 35315 use `test`; insert into t1 values( 15 ) +master-bin.000001 35315 Query 1 35405 use `test`; insert into t1 values( 14 ) +master-bin.000001 35405 Query 1 35495 use `test`; insert into t1 values( 13 ) +master-bin.000001 35495 Query 1 35585 use `test`; insert into t1 values( 12 ) +master-bin.000001 35585 Query 1 35675 use `test`; insert into t1 values( 11 ) +master-bin.000001 35675 Query 1 35765 use `test`; insert into t1 values( 10 ) +master-bin.000001 35765 Query 1 35854 use `test`; insert into t1 values( 9 ) +master-bin.000001 35854 Query 1 35943 use `test`; insert into t1 values( 8 ) +master-bin.000001 35943 Query 1 36032 use `test`; insert into t1 values( 7 ) +master-bin.000001 36032 Query 1 36121 use `test`; insert into t1 values( 6 ) +master-bin.000001 36121 Query 1 36210 use `test`; insert into t1 values( 5 ) +master-bin.000001 36210 Query 1 36299 use `test`; insert into t1 values( 4 ) +master-bin.000001 36299 Query 1 36388 use `test`; insert into t1 values( 3 ) +master-bin.000001 36388 Query 1 36477 use `test`; insert into t1 values( 2 ) +master-bin.000001 36477 Query 1 36566 use `test`; insert into t1 values( 1 ) +master-bin.000001 36566 Xid 1 36593 COMMIT /* xid=196 */ +master-bin.000001 36593 Rotate 1 36637 master-bin.000002;pos=4 +drop table t1; +set global binlog_cache_size=@bcs; +set session autocommit = @ac; End of 5.0 tests reset master; create table t1 (id tinyint auto_increment primary key); diff --git a/mysql-test/r/rpl_row_create_table.result b/mysql-test/r/rpl_row_create_table.result index e76ce5b962d..f22881bd4a9 100644 --- a/mysql-test/r/rpl_row_create_table.result +++ b/mysql-test/r/rpl_row_create_table.result @@ -279,25 +279,25 @@ Log_name Pos Event_type Server_id End_log_pos Info # 192 Table_map # 231 table_id: # (test.t1) # 231 Write_rows # 275 table_id: # flags: STMT_END_F # 275 Query # 343 use `test`; BEGIN -# 343 Query # 125 use `test`; CREATE TABLE `t2` ( +# 343 Query # 468 use `test`; CREATE TABLE `t2` ( `a` int(11) DEFAULT NULL ) ENGINE=InnoDB -# 468 Table_map # 164 table_id: # (test.t2) -# 507 Write_rows # 208 table_id: # flags: STMT_END_F +# 468 Table_map # 507 table_id: # (test.t2) +# 507 Write_rows # 551 table_id: # flags: STMT_END_F # 551 Xid # 578 COMMIT /* XID */ # 578 Query # 646 use `test`; BEGIN -# 646 Query # 125 use `test`; CREATE TABLE `t3` ( +# 646 Query # 771 use `test`; CREATE TABLE `t3` ( `a` int(11) DEFAULT NULL ) ENGINE=InnoDB -# 771 Table_map # 164 table_id: # (test.t3) -# 810 Write_rows # 208 table_id: # flags: STMT_END_F +# 771 Table_map # 810 table_id: # (test.t3) +# 810 Write_rows # 854 table_id: # flags: STMT_END_F # 854 Xid # 881 COMMIT /* XID */ # 881 Query # 949 use `test`; BEGIN -# 949 Query # 125 use `test`; CREATE TABLE `t4` ( +# 949 Query # 1074 use `test`; CREATE TABLE `t4` ( `a` int(11) DEFAULT NULL ) ENGINE=InnoDB -# 1074 Table_map # 164 table_id: # (test.t4) -# 1113 Write_rows # 208 table_id: # flags: STMT_END_F +# 1074 Table_map # 1113 table_id: # (test.t4) +# 1113 Write_rows # 1157 table_id: # flags: STMT_END_F # 1157 Xid # 1184 COMMIT /* XID */ # 1184 Table_map # 1223 table_id: # (test.t1) # 1223 Write_rows # 1267 table_id: # flags: STMT_END_F @@ -371,10 +371,10 @@ Log_name Pos Event_type Server_id End_log_pos Info # 231 Write_rows # 275 table_id: # flags: STMT_END_F # 275 Query # 375 use `test`; CREATE TABLE t2 (a INT) ENGINE=INNODB # 375 Query # 443 use `test`; BEGIN -# 443 Table_map # 39 table_id: # (test.t2) -# 482 Write_rows # 83 table_id: # flags: STMT_END_F -# 526 Table_map # 122 table_id: # (test.t2) -# 565 Write_rows # 161 table_id: # flags: STMT_END_F +# 443 Table_map # 482 table_id: # (test.t2) +# 482 Write_rows # 526 table_id: # flags: STMT_END_F +# 526 Table_map # 565 table_id: # (test.t2) +# 565 Write_rows # 604 table_id: # flags: STMT_END_F # 604 Xid # 631 COMMIT /* XID */ SELECT * FROM t2 ORDER BY a; a @@ -396,7 +396,7 @@ SELECT * FROM t2 ORDER BY a; a SHOW BINLOG EVENTS FROM 631; Log_name Pos Event_type Server_id End_log_pos Info -# 631 Query # 80 use `test`; TRUNCATE TABLE t2 +# 631 Query # 711 use `test`; TRUNCATE TABLE t2 # 711 Xid # 738 COMMIT /* XID */ SELECT * FROM t2 ORDER BY a; a diff --git a/sql/log.cc b/sql/log.cc index 5f3ff9b10f7..2821fb399a4 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -3995,58 +3995,61 @@ int MYSQL_BIN_LOG::write_cache(IO_CACHE *cache, bool lock_log, bool sync_log) memcpy((char *)cache->read_pos, &header[carry], LOG_EVENT_HEADER_LEN - carry); /* next event header at ... */ - hdr_offs = LOG_EVENT_HEADER_LEN - carry + - uint4korr(&header[EVENT_LEN_OFFSET]); + hdr_offs = uint4korr(&header[EVENT_LEN_OFFSET]) - carry; carry= 0; } /* if there is anything to write, process it. */ - if(likely(bytes > 0)) + if (likely(bytes > 0)) { /* - next header beyond current read-buffer? we'll get it later - (though not necessarily in the very next iteration). + process all event-headers in this (partial) cache. + if next header is beyond current read-buffer, + we'll get it later (though not necessarily in the + very next iteration, just "eventually"). */ - if (hdr_offs >= bytes) - hdr_offs -= bytes; - else + while (hdr_offs < bytes) { + /* + partial header only? save what we can get, process once + we get the rest. + */ - /* process all event-headers in this (partial) cache. */ + if (hdr_offs + LOG_EVENT_HEADER_LEN > bytes) + { + carry= bytes - hdr_offs; + memcpy(header, (char *)cache->read_pos + hdr_offs, carry); + bytes= hdr_offs; + } + else + { + /* we've got a full event-header, and it came in one piece */ - do { + uchar *log_pos= (uchar *)cache->read_pos + hdr_offs + LOG_POS_OFFSET; - /* - partial header only? save what we can get, process once - we get the rest. - */ + /* fix end_log_pos */ + val= uint4korr(log_pos) + group; + int4store(log_pos, val); - if (hdr_offs + LOG_EVENT_HEADER_LEN > bytes) - { - carry= bytes - hdr_offs; - memcpy(header, (char *)cache->read_pos + hdr_offs, carry); - bytes= hdr_offs; - } - else - { - /* we've got a full event-header, and it came in one piece */ + /* next event header at ... */ + log_pos= (uchar *)cache->read_pos + hdr_offs + EVENT_LEN_OFFSET; + hdr_offs += uint4korr(log_pos); - uchar *log_pos= (uchar *)cache->read_pos + hdr_offs + LOG_POS_OFFSET; - - /* fix end_log_pos */ - val= uint4korr(log_pos) + group; - int4store(log_pos, val); - - /* next event header at ... */ - log_pos= (uchar *)cache->read_pos + hdr_offs + EVENT_LEN_OFFSET; - hdr_offs += uint4korr(log_pos); - - } - } while (hdr_offs < bytes); + } } + + /* + Adjust hdr_offs. Note that this doesn't mean it will necessarily + be valid in the next iteration; if the current event is very long, + it may take a couple of read-iterations (and subsequent fixings + of hdr_offs) for it to become valid again. + if we had a split header, hdr_offs was already fixed above. + */ + if (carry == 0) + hdr_offs -= bytes; } /* Write data to the binary log file */ From fd586227576b15b29c120b9aceb428868d3a8c9a Mon Sep 17 00:00:00 2001 From: "istruewing@synthia.local" <> Date: Sat, 30 Jun 2007 18:17:20 +0200 Subject: [PATCH 057/127] Post-merge fixes. --- sql/ha_partition.cc | 9 +++++ storage/federated/ha_federated.cc | 56 +++++++++++++++++++------------ storage/federated/ha_federated.h | 7 ++-- 3 files changed, 48 insertions(+), 24 deletions(-) diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 37e42f7a850..b6a27c8df28 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -4714,6 +4714,12 @@ void ha_partition::get_dynamic_partition_info(PARTITION_INFO *stat_info, HA_EXTRA_KEY_CACHE: HA_EXTRA_NO_KEY_CACHE: This parameters are no longer used and could be removed. + + 7) Parameters only used by federated tables for query processing + ---------------------------------------------------------------- + HA_EXTRA_INSERT_WITH_UPDATE: + Inform handler that an "INSERT...ON DUPLICATE KEY UPDATE" will be + executed. This condition is unset by HA_EXTRA_NO_IGNORE_DUP_KEY. */ int ha_partition::extra(enum ha_extra_function operation) @@ -4795,6 +4801,9 @@ int ha_partition::extra(enum ha_extra_function operation) */ break; } + /* Category 7), used by federated handlers */ + case HA_EXTRA_INSERT_WITH_UPDATE: + DBUG_RETURN(loop_extra(operation)); default: { /* Temporary crash to discover what is wrong */ diff --git a/storage/federated/ha_federated.cc b/storage/federated/ha_federated.cc index 18460ad4cfc..635a6fa79e0 100644 --- a/storage/federated/ha_federated.cc +++ b/storage/federated/ha_federated.cc @@ -608,7 +608,7 @@ static int check_foreign_data_source(FEDERATED_SHARE *share, query.append(STRING_WITH_LEN("SELECT * FROM ")); append_ident(&query, share->table_name, share->table_name_length, ident_quote_char); - query.append(STRING_WITH_LEN(" WHERE 1=0"); + query.append(STRING_WITH_LEN(" WHERE 1=0")); if (mysql_real_query(mysql, query.ptr(), query.length())) { @@ -1572,7 +1572,7 @@ static FEDERATED_SHARE *get_share(const char *table_name, TABLE *table) /* chops off trailing comma */ query.length(query.length() - sizeof_trailing_comma); - query.append(STRING_WITH_LEN(" FROM `")); + query.append(STRING_WITH_LEN(" FROM ")); append_ident(&query, tmp_share.table_name, tmp_share.table_name_length, ident_quote_char); @@ -1809,6 +1809,7 @@ bool ha_federated::append_stmt_insert(String *query) char insert_buffer[FEDERATED_QUERY_BUFFER_SIZE]; Field **field; uint tmp_length; + bool added_field= FALSE; /* The main insert query string */ String insert_string(insert_buffer, sizeof(insert_buffer), &my_charset_bin); @@ -1824,8 +1825,8 @@ bool ha_federated::append_stmt_insert(String *query) insert_string.append(STRING_WITH_LEN("INSERT INTO ")); append_ident(&insert_string, share->table_name, share->table_name_length, ident_quote_char); - insert_string.append(FEDERATED_OPENPAREN); - tmp_length= insert_string.length() - strlen(STRING_WITH_LEN(", ")); + tmp_length= insert_string.length(); + insert_string.append(STRING_WITH_LEN(" (")); /* loop through the field pointer array, add any fields to both the values @@ -1846,22 +1847,20 @@ bool ha_federated::append_stmt_insert(String *query) next field is in the write set */ insert_string.append(STRING_WITH_LEN(", ")); + added_field= TRUE; } } - /* - remove trailing comma - */ - insert_string.length(insert_string.length() - sizeof_trailing_comma); - - /* - if there were no fields, we don't want to add a closing paren - AND, we don't want to chop off the last char '(' - insert will be "INSERT INTO t1 VALUES ();" - */ - if (insert_string.length() > tmp_length) + if (added_field) { - insert_string.append(STRING_WITH_LEN(") "); + /* Remove trailing comma. */ + insert_string.length(insert_string.length() - sizeof_trailing_comma); + insert_string.append(STRING_WITH_LEN(") ")); + } + else + { + /* If there were no fields, we don't want to add a closing paren. */ + insert_string.length(tmp_length); } insert_string.append(STRING_WITH_LEN(" VALUES ")); @@ -2371,6 +2370,7 @@ int ha_federated::delete_row(const uchar *buf) delete_string.append(value_quote_char); } delete_string.append(STRING_WITH_LEN(" AND ")); + } } // Remove trailing AND @@ -2974,11 +2974,6 @@ int ha_federated::extra(ha_extra_function operation) case HA_EXTRA_INSERT_WITH_UPDATE: insert_dup_update= TRUE; break; - case HA_EXTRA_RESET: - insert_dup_update= FALSE; - ignore_duplicates= FALSE; - replace_duplicates= FALSE; - break; default: /* do nothing */ DBUG_PRINT("info",("unhandled operation: %d", (uint) operation)); @@ -2987,6 +2982,25 @@ int ha_federated::extra(ha_extra_function operation) } +/** + @brief Reset state of file to after 'open'. + + @detail This function is called after every statement for all tables + used by that statement. + + @return Operation status + @retval 0 OK +*/ + +int ha_federated::reset(void) +{ + insert_dup_update= FALSE; + ignore_duplicates= FALSE; + replace_duplicates= FALSE; + return 0; +} + + /* Used to delete all rows in a table. Both for cases of truncate and for cases where the optimizer realizes that all rows will be diff --git a/storage/federated/ha_federated.h b/storage/federated/ha_federated.h index 399451888e2..3443194817b 100644 --- a/storage/federated/ha_federated.h +++ b/storage/federated/ha_federated.h @@ -107,9 +107,9 @@ private: bool append_stmt_insert(String *query); - int read_next(byte *buf, MYSQL_RES *result); - int index_read_idx_with_result_set(byte *buf, uint index, - const byte *key, + int read_next(uchar *buf, MYSQL_RES *result); + int index_read_idx_with_result_set(uchar *buf, uint index, + const uchar *key, uint key_len, ha_rkey_function find_flag, MYSQL_RES **result); @@ -251,5 +251,6 @@ public: int connection_rollback(); int connection_autocommit(bool state); int execute_simple_query(const char *query, int len); + int reset(void); }; From 754f66cf56bed2004e347e46084cdb7126cfbf99 Mon Sep 17 00:00:00 2001 From: "istruewing@synthia.local" <> Date: Sun, 1 Jul 2007 11:56:01 +0200 Subject: [PATCH 058/127] Post.merge fixes Fixed warnings Fixed error numbers --- mysql-test/extra/rpl_tests/rpl_loaddata.test | 4 ++-- mysql-test/r/ndb_single_user.result | 10 +++++----- mysql-test/t/bigint.test | 2 +- mysql-test/t/ndb_single_user.test | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/mysql-test/extra/rpl_tests/rpl_loaddata.test b/mysql-test/extra/rpl_tests/rpl_loaddata.test index acd8fd48234..bb6afd73034 100644 --- a/mysql-test/extra/rpl_tests/rpl_loaddata.test +++ b/mysql-test/extra/rpl_tests/rpl_loaddata.test @@ -164,8 +164,8 @@ CREATE TABLE t1 (word CHAR(20) NOT NULL PRIMARY KEY) ENGINE=INNODB; --error ER_DUP_ENTRY LOAD DATA INFILE "../std_data_ln/words.dat" INTO TABLE t1; ---disable warnings +--disable_warnings DROP TABLE IF EXISTS t1; ---enable warnings +--enable_warnings # End of 4.1 tests diff --git a/mysql-test/r/ndb_single_user.result b/mysql-test/r/ndb_single_user.result index 54ae99b2f4f..f916422a509 100644 --- a/mysql-test/r/ndb_single_user.result +++ b/mysql-test/r/ndb_single_user.result @@ -11,7 +11,7 @@ ERROR HY000: Failed to create LOGFILE GROUP show warnings; Level Code Message Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB -Error 1516 Failed to create LOGFILE GROUP +Error 1525 Failed to create LOGFILE GROUP create table t1 (a int key, b int unique, c int) engine ndb; CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' @@ -27,14 +27,14 @@ ERROR HY000: Failed to create TABLESPACE show warnings; Level Code Message Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB -Error 1516 Failed to create TABLESPACE +Error 1525 Failed to create TABLESPACE DROP LOGFILE GROUP lg1 ENGINE =NDB; ERROR HY000: Failed to drop LOGFILE GROUP show warnings; Level Code Message Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB -Error 1517 Failed to drop LOGFILE GROUP +Error 1526 Failed to drop LOGFILE GROUP CREATE TABLESPACE ts1 ADD DATAFILE 'datafile.dat' USE LOGFILE GROUP lg1 @@ -47,7 +47,7 @@ ERROR HY000: Failed to alter: DROP DATAFILE show warnings; Level Code Message Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB -Error 1521 Failed to alter: DROP DATAFILE +Error 1530 Failed to alter: DROP DATAFILE ALTER TABLESPACE ts1 DROP DATAFILE 'datafile.dat' ENGINE NDB; @@ -57,7 +57,7 @@ ERROR HY000: Failed to drop TABLESPACE show warnings; Level Code Message Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB -Error 1517 Failed to drop TABLESPACE +Error 1526 Failed to drop TABLESPACE DROP TABLESPACE ts1 ENGINE NDB; DROP LOGFILE GROUP lg1 diff --git a/mysql-test/t/bigint.test b/mysql-test/t/bigint.test index 9b4fc3f39b0..da10f4efa61 100644 --- a/mysql-test/t/bigint.test +++ b/mysql-test/t/bigint.test @@ -307,7 +307,7 @@ select -(9223372036854775808); select -((9223372036854775808)); select -(-(9223372036854775808)); --disable_metadata ---endble_ps_protocol +--enable_ps_protocol select --9223372036854775808, ---9223372036854775808, ----9223372036854775808; select -(-9223372036854775808), -(-(-9223372036854775808)); diff --git a/mysql-test/t/ndb_single_user.test b/mysql-test/t/ndb_single_user.test index 5d2ee0a3a8d..eb7ebe8a971 100644 --- a/mysql-test/t/ndb_single_user.test +++ b/mysql-test/t/ndb_single_user.test @@ -27,7 +27,7 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9,t10; create table t1 (a int key, b int unique, c int) engine ndb; # Bug #27712 Single user mode. Creating logfile group and tablespace is allowed # - before bug fix these would succeed ---error 1516 +--error ER_CREATE_FILEGROUP_FAILED CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' INITIAL_SIZE 16M From f8683bfb4439e6ac70bbe3de5d88d1cc275f6011 Mon Sep 17 00:00:00 2001 From: "igor@olga.mysql.com" <> Date: Sun, 1 Jul 2007 15:33:28 -0700 Subject: [PATCH 059/127] Fixed bug #25798. This bug may manifest itself not only with the queries for which the index-merge access method is chosen. It also may display itself for queries with DISTINCT. The bug was in how the Unique::get method used the merge_buffers function. To compare elements in the the queue employed by merge_buffers() it must use the buffpek_compare function rather than the function for binary comparison. --- mysql-test/r/innodb_mysql.result | 51 ++++++++++++++++++++++++++++++ mysql-test/t/innodb_mysql.test | 54 ++++++++++++++++++++++++++++++++ sql/filesort.cc | 18 ++++++++--- sql/sql_sort.h | 9 ++++++ sql/uniques.cc | 13 ++++---- 5 files changed, 134 insertions(+), 11 deletions(-) diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index 11c7c2aedc9..df1c2165c45 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -676,4 +676,55 @@ INSERT INTO t1 VALUES (1); switch to connection default SET AUTOCOMMIT=default; DROP TABLE t1,t2; +CREATE TABLE t1 ( +id int NOT NULL auto_increment PRIMARY KEY, +b int NOT NULL, +c datetime NOT NULL, +INDEX idx_b(b), +INDEX idx_c(c) +) ENGINE=InnoDB; +CREATE TABLE t2 ( +b int NOT NULL auto_increment PRIMARY KEY, +c datetime NOT NULL +) ENGINE= MyISAM; +INSERT INTO t2(c) VALUES ('2007-01-01'); +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t1(b,c) SELECT b,c FROM t2; +UPDATE t2 SET c='2007-01-02'; +INSERT INTO t1(b,c) SELECT b,c FROM t2; +UPDATE t2 SET c='2007-01-03'; +INSERT INTO t1(b,c) SELECT b,c FROM t2; +set @@sort_buffer_size=8192; +SELECT COUNT(*) FROM t1; +COUNT(*) +3072 +EXPLAIN +SELECT COUNT(*) FROM t1 +WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL idx_b,idx_c NULL NULL NULL 3263 Using where +SELECT COUNT(*) FROM t1 +WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; +COUNT(*) +3072 +EXPLAIN +SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c) +WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 index_merge idx_b,idx_c idx_c,idx_b 8,4 NULL 3262 Using sort_union(idx_c,idx_b); Using where +SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c) +WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; +COUNT(*) +3072 +set @@sort_buffer_size=default; +DROP TABLE t1,t2; End of 5.0 tests diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/t/innodb_mysql.test index 25ba9a258ff..eb995a748a5 100644 --- a/mysql-test/t/innodb_mysql.test +++ b/mysql-test/t/innodb_mysql.test @@ -670,5 +670,59 @@ DISCONNECT c1; DISCONNECT c2; DROP TABLE t1,t2; +# +# Bug #25798: a query with forced index merge returns wrong result +# + +CREATE TABLE t1 ( + id int NOT NULL auto_increment PRIMARY KEY, + b int NOT NULL, + c datetime NOT NULL, + INDEX idx_b(b), + INDEX idx_c(c) +) ENGINE=InnoDB; + +CREATE TABLE t2 ( + b int NOT NULL auto_increment PRIMARY KEY, + c datetime NOT NULL +) ENGINE= MyISAM; + +INSERT INTO t2(c) VALUES ('2007-01-01'); +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; + +INSERT INTO t1(b,c) SELECT b,c FROM t2; +UPDATE t2 SET c='2007-01-02'; +INSERT INTO t1(b,c) SELECT b,c FROM t2; +UPDATE t2 SET c='2007-01-03'; +INSERT INTO t1(b,c) SELECT b,c FROM t2; + +set @@sort_buffer_size=8192; + +SELECT COUNT(*) FROM t1; + +EXPLAIN +SELECT COUNT(*) FROM t1 + WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; +SELECT COUNT(*) FROM t1 + WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; + +EXPLAIN +SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c) + WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; +SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c) + WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; + +set @@sort_buffer_size=default; + +DROP TABLE t1,t2; --echo End of 5.0 tests diff --git a/sql/filesort.cc b/sql/filesort.cc index d518ddbb117..f8868ed6927 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -1052,6 +1052,7 @@ int merge_buffers(SORTPARAM *param, IO_CACHE *from_file, BUFFPEK *buffpek; QUEUE queue; qsort2_cmp cmp; + void *first_cmp_arg; volatile THD::killed_state *killed= ¤t_thd->killed; THD::killed_state not_killable; DBUG_ENTER("merge_buffers"); @@ -1077,9 +1078,18 @@ int merge_buffers(SORTPARAM *param, IO_CACHE *from_file, /* The following will fire if there is not enough space in sort_buffer */ DBUG_ASSERT(maxcount!=0); + if (param->unique_buff) + { + cmp= param->compare; + first_cmp_arg= (void *) ¶m->cmp_context; + } + else + { + cmp= get_ptr_compare(sort_length); + first_cmp_arg= (void*) &sort_length; + } if (init_queue(&queue, (uint) (Tb-Fb)+1, offsetof(BUFFPEK,key), 0, - (queue_compare) (cmp= get_ptr_compare(sort_length)), - (void*) &sort_length)) + (queue_compare) cmp, first_cmp_arg)) DBUG_RETURN(1); /* purecov: inspected */ for (buffpek= Fb ; buffpek <= Tb ; buffpek++) { @@ -1132,7 +1142,7 @@ int merge_buffers(SORTPARAM *param, IO_CACHE *from_file, buffpek= (BUFFPEK*) queue_top(&queue); if (cmp) // Remove duplicates { - if (!(*cmp)(&sort_length, &(param->unique_buff), + if (!(*cmp)(first_cmp_arg, &(param->unique_buff), (uchar**) &buffpek->key)) goto skip_duplicate; memcpy(param->unique_buff, (uchar*) buffpek->key, rec_length); @@ -1184,7 +1194,7 @@ int merge_buffers(SORTPARAM *param, IO_CACHE *from_file, */ if (cmp) { - if (!(*cmp)(&sort_length, &(param->unique_buff), (uchar**) &buffpek->key)) + if (!(*cmp)(first_cmp_arg, &(param->unique_buff), (uchar**) &buffpek->key)) { buffpek->key+= rec_length; // Remove duplicate --buffpek->mem_count; diff --git a/sql/sql_sort.h b/sql/sql_sort.h index da28ca07e2c..1e9322f7f5b 100644 --- a/sql/sql_sort.h +++ b/sql/sql_sort.h @@ -50,6 +50,12 @@ typedef struct st_buffpek { /* Struktur om sorteringsbuffrarna */ ulong max_keys; /* Max keys in buffert */ } BUFFPEK; +struct BUFFPEK_COMPARE_CONTEXT +{ + qsort_cmp2 key_compare; + void *key_compare_arg; +}; + typedef struct st_sort_param { uint rec_length; /* Length of sorted records */ uint sort_length; /* Length of sorted columns */ @@ -65,6 +71,9 @@ typedef struct st_sort_param { uchar *unique_buff; bool not_killable; char* tmp_buffer; + /* The fields below are used only by Unique class */ + qsort2_cmp compare; + BUFFPEK_COMPARE_CONTEXT cmp_context; } SORTPARAM; diff --git a/sql/uniques.cc b/sql/uniques.cc index 9eb827f62a3..7c197d2a2e9 100644 --- a/sql/uniques.cc +++ b/sql/uniques.cc @@ -361,17 +361,12 @@ Unique::reset() } /* - The comparison function, passed to queue_init() in merge_walk() must + The comparison function, passed to queue_init() in merge_walk() and in + merge_buffers() when the latter is called from Uniques::get() must use comparison function of Uniques::tree, but compare members of struct BUFFPEK. */ -struct BUFFPEK_COMPARE_CONTEXT -{ - qsort_cmp2 key_compare; - void *key_compare_arg; -}; - C_MODE_START static int buffpek_compare(void *arg, byte *key_ptr1, byte *key_ptr2) @@ -630,6 +625,10 @@ bool Unique::get(TABLE *table) sort_param.unique_buff= sort_buffer+(sort_param.keys* sort_param.sort_length); + sort_param.compare= (qsort2_cmp) buffpek_compare; + sort_param.cmp_context.key_compare= tree.compare; + sort_param.cmp_context.key_compare_arg= tree.custom_arg; + /* Merge the buffers to one file, removing duplicates */ if (merge_many_buff(&sort_param,sort_buffer,file_ptr,&maxbuffer,&file)) goto err; From 2fbd3a2ecaaeedb45db4e6b328da1668f4a50252 Mon Sep 17 00:00:00 2001 From: "tnurnberg@sin.intern.azundris.com" <> Date: Mon, 2 Jul 2007 07:13:40 +0200 Subject: [PATCH 060/127] Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB minor fixes to appease pushbuild. --- mysql-test/r/binlog.result | 4 ++-- mysql-test/t/binlog.test | 1 + sql/log.cc | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/binlog.result b/mysql-test/r/binlog.result index 77b015a4688..aa5c6e88d65 100644 --- a/mysql-test/r/binlog.result +++ b/mysql-test/r/binlog.result @@ -256,7 +256,7 @@ reset master; create table t1 (a int) engine=innodb; show binlog events from 0; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 98 Server ver: 5.0.46-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 98 Server version, Binlog ver: 4 master-bin.000001 98 Query 1 198 use `test`; create table t1 (a int) engine=innodb master-bin.000001 198 Query 1 266 use `test`; BEGIN master-bin.000001 266 Query 1 357 use `test`; insert into t1 values( 400 ) @@ -659,7 +659,7 @@ master-bin.000001 36202 Query 1 36291 use `test`; insert into t1 values( 4 ) master-bin.000001 36291 Query 1 36380 use `test`; insert into t1 values( 3 ) master-bin.000001 36380 Query 1 36469 use `test`; insert into t1 values( 2 ) master-bin.000001 36469 Query 1 36558 use `test`; insert into t1 values( 1 ) -master-bin.000001 36558 Xid 1 36585 COMMIT /* xid=186 */ +master-bin.000001 36558 Xid 1 36585 COMMIT /* XID */ master-bin.000001 36585 Rotate 1 36629 master-bin.000002;pos=4 drop table t1; set global binlog_cache_size=@bcs; diff --git a/mysql-test/t/binlog.test b/mysql-test/t/binlog.test index d5479a45226..b9996a2b380 100644 --- a/mysql-test/t/binlog.test +++ b/mysql-test/t/binlog.test @@ -159,6 +159,7 @@ while ($1) commit; enable_query_log; +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ show binlog events from 0; drop table t1; diff --git a/sql/log.cc b/sql/log.cc index 289d98e63d3..bcaf352f620 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1951,14 +1951,14 @@ bool MYSQL_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event) { /* we've got a full event-header, and it came in one piece */ - char *log_pos= (char *)cache->read_pos + hdr_offs + LOG_POS_OFFSET; + uchar *log_pos= (uchar *)cache->read_pos + hdr_offs + LOG_POS_OFFSET; /* fix end_log_pos */ val= uint4korr(log_pos) + group; int4store(log_pos, val); /* next event header at ... */ - log_pos= (char *)cache->read_pos + hdr_offs + EVENT_LEN_OFFSET; + log_pos= (uchar *)cache->read_pos + hdr_offs + EVENT_LEN_OFFSET; hdr_offs += uint4korr(log_pos); } From a403815e3d137805b3646eff5995611c8ccbd17c Mon Sep 17 00:00:00 2001 From: "tnurnberg@sin.intern.azundris.com" <> Date: Mon, 2 Jul 2007 07:34:42 +0200 Subject: [PATCH 061/127] Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB minor fixes to appease pushbuild. --- Merge sin.intern.azundris.com:/home/tnurnberg/22540/50-22540 into sin.intern.azundris.com:/home/tnurnberg/22540/51-22540 --- mysql-test/extra/binlog_tests/binlog.test | 1 + .../suite/binlog/r/binlog_row_binlog.result | 1604 ++++++++--------- .../suite/binlog/r/binlog_stm_binlog.result | 4 +- 3 files changed, 805 insertions(+), 804 deletions(-) diff --git a/mysql-test/extra/binlog_tests/binlog.test b/mysql-test/extra/binlog_tests/binlog.test index 0a2b84e055b..57008b6af3c 100644 --- a/mysql-test/extra/binlog_tests/binlog.test +++ b/mysql-test/extra/binlog_tests/binlog.test @@ -161,6 +161,7 @@ while ($1) commit; enable_query_log; +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ show binlog events from 0; drop table t1; diff --git a/mysql-test/suite/binlog/r/binlog_row_binlog.result b/mysql-test/suite/binlog/r/binlog_row_binlog.result index 89618d37cc1..37fe49e79dc 100644 --- a/mysql-test/suite/binlog/r/binlog_row_binlog.result +++ b/mysql-test/suite/binlog/r/binlog_row_binlog.result @@ -373,810 +373,810 @@ reset master; create table t1 (a int) engine=innodb; show binlog events from 0; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server ver: 5.1.21-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 master-bin.000001 106 Query 1 206 use `test`; create table t1 (a int) engine=innodb master-bin.000001 206 Query 1 274 use `test`; BEGIN -master-bin.000001 274 Table_map 1 313 table_id: 25 (test.t1) -master-bin.000001 313 Write_rows 1 347 table_id: 25 flags: STMT_END_F -master-bin.000001 347 Table_map 1 386 table_id: 25 (test.t1) -master-bin.000001 386 Write_rows 1 420 table_id: 25 flags: STMT_END_F -master-bin.000001 420 Table_map 1 459 table_id: 25 (test.t1) -master-bin.000001 459 Write_rows 1 493 table_id: 25 flags: STMT_END_F -master-bin.000001 493 Table_map 1 532 table_id: 25 (test.t1) -master-bin.000001 532 Write_rows 1 566 table_id: 25 flags: STMT_END_F -master-bin.000001 566 Table_map 1 605 table_id: 25 (test.t1) -master-bin.000001 605 Write_rows 1 639 table_id: 25 flags: STMT_END_F -master-bin.000001 639 Table_map 1 678 table_id: 25 (test.t1) -master-bin.000001 678 Write_rows 1 712 table_id: 25 flags: STMT_END_F -master-bin.000001 712 Table_map 1 751 table_id: 25 (test.t1) -master-bin.000001 751 Write_rows 1 785 table_id: 25 flags: STMT_END_F -master-bin.000001 785 Table_map 1 824 table_id: 25 (test.t1) -master-bin.000001 824 Write_rows 1 858 table_id: 25 flags: STMT_END_F -master-bin.000001 858 Table_map 1 897 table_id: 25 (test.t1) -master-bin.000001 897 Write_rows 1 931 table_id: 25 flags: STMT_END_F -master-bin.000001 931 Table_map 1 970 table_id: 25 (test.t1) -master-bin.000001 970 Write_rows 1 1004 table_id: 25 flags: STMT_END_F -master-bin.000001 1004 Table_map 1 1043 table_id: 25 (test.t1) -master-bin.000001 1043 Write_rows 1 1077 table_id: 25 flags: STMT_END_F -master-bin.000001 1077 Table_map 1 1116 table_id: 25 (test.t1) -master-bin.000001 1116 Write_rows 1 1150 table_id: 25 flags: STMT_END_F -master-bin.000001 1150 Table_map 1 1189 table_id: 25 (test.t1) -master-bin.000001 1189 Write_rows 1 1223 table_id: 25 flags: STMT_END_F -master-bin.000001 1223 Table_map 1 1262 table_id: 25 (test.t1) -master-bin.000001 1262 Write_rows 1 1296 table_id: 25 flags: STMT_END_F -master-bin.000001 1296 Table_map 1 1335 table_id: 25 (test.t1) -master-bin.000001 1335 Write_rows 1 1369 table_id: 25 flags: STMT_END_F -master-bin.000001 1369 Table_map 1 1408 table_id: 25 (test.t1) -master-bin.000001 1408 Write_rows 1 1442 table_id: 25 flags: STMT_END_F -master-bin.000001 1442 Table_map 1 1481 table_id: 25 (test.t1) -master-bin.000001 1481 Write_rows 1 1515 table_id: 25 flags: STMT_END_F -master-bin.000001 1515 Table_map 1 1554 table_id: 25 (test.t1) -master-bin.000001 1554 Write_rows 1 1588 table_id: 25 flags: STMT_END_F -master-bin.000001 1588 Table_map 1 1627 table_id: 25 (test.t1) -master-bin.000001 1627 Write_rows 1 1661 table_id: 25 flags: STMT_END_F -master-bin.000001 1661 Table_map 1 1700 table_id: 25 (test.t1) -master-bin.000001 1700 Write_rows 1 1734 table_id: 25 flags: STMT_END_F -master-bin.000001 1734 Table_map 1 1773 table_id: 25 (test.t1) -master-bin.000001 1773 Write_rows 1 1807 table_id: 25 flags: STMT_END_F -master-bin.000001 1807 Table_map 1 1846 table_id: 25 (test.t1) -master-bin.000001 1846 Write_rows 1 1880 table_id: 25 flags: STMT_END_F -master-bin.000001 1880 Table_map 1 1919 table_id: 25 (test.t1) -master-bin.000001 1919 Write_rows 1 1953 table_id: 25 flags: STMT_END_F -master-bin.000001 1953 Table_map 1 1992 table_id: 25 (test.t1) -master-bin.000001 1992 Write_rows 1 2026 table_id: 25 flags: STMT_END_F -master-bin.000001 2026 Table_map 1 2065 table_id: 25 (test.t1) -master-bin.000001 2065 Write_rows 1 2099 table_id: 25 flags: STMT_END_F -master-bin.000001 2099 Table_map 1 2138 table_id: 25 (test.t1) -master-bin.000001 2138 Write_rows 1 2172 table_id: 25 flags: STMT_END_F -master-bin.000001 2172 Table_map 1 2211 table_id: 25 (test.t1) -master-bin.000001 2211 Write_rows 1 2245 table_id: 25 flags: STMT_END_F -master-bin.000001 2245 Table_map 1 2284 table_id: 25 (test.t1) -master-bin.000001 2284 Write_rows 1 2318 table_id: 25 flags: STMT_END_F -master-bin.000001 2318 Table_map 1 2357 table_id: 25 (test.t1) -master-bin.000001 2357 Write_rows 1 2391 table_id: 25 flags: STMT_END_F -master-bin.000001 2391 Table_map 1 2430 table_id: 25 (test.t1) -master-bin.000001 2430 Write_rows 1 2464 table_id: 25 flags: STMT_END_F -master-bin.000001 2464 Table_map 1 2503 table_id: 25 (test.t1) -master-bin.000001 2503 Write_rows 1 2537 table_id: 25 flags: STMT_END_F -master-bin.000001 2537 Table_map 1 2576 table_id: 25 (test.t1) -master-bin.000001 2576 Write_rows 1 2610 table_id: 25 flags: STMT_END_F -master-bin.000001 2610 Table_map 1 2649 table_id: 25 (test.t1) -master-bin.000001 2649 Write_rows 1 2683 table_id: 25 flags: STMT_END_F -master-bin.000001 2683 Table_map 1 2722 table_id: 25 (test.t1) -master-bin.000001 2722 Write_rows 1 2756 table_id: 25 flags: STMT_END_F -master-bin.000001 2756 Table_map 1 2795 table_id: 25 (test.t1) -master-bin.000001 2795 Write_rows 1 2829 table_id: 25 flags: STMT_END_F -master-bin.000001 2829 Table_map 1 2868 table_id: 25 (test.t1) -master-bin.000001 2868 Write_rows 1 2902 table_id: 25 flags: STMT_END_F -master-bin.000001 2902 Table_map 1 2941 table_id: 25 (test.t1) -master-bin.000001 2941 Write_rows 1 2975 table_id: 25 flags: STMT_END_F -master-bin.000001 2975 Table_map 1 3014 table_id: 25 (test.t1) -master-bin.000001 3014 Write_rows 1 3048 table_id: 25 flags: STMT_END_F -master-bin.000001 3048 Table_map 1 3087 table_id: 25 (test.t1) -master-bin.000001 3087 Write_rows 1 3121 table_id: 25 flags: STMT_END_F -master-bin.000001 3121 Table_map 1 3160 table_id: 25 (test.t1) -master-bin.000001 3160 Write_rows 1 3194 table_id: 25 flags: STMT_END_F -master-bin.000001 3194 Table_map 1 3233 table_id: 25 (test.t1) -master-bin.000001 3233 Write_rows 1 3267 table_id: 25 flags: STMT_END_F -master-bin.000001 3267 Table_map 1 3306 table_id: 25 (test.t1) -master-bin.000001 3306 Write_rows 1 3340 table_id: 25 flags: STMT_END_F -master-bin.000001 3340 Table_map 1 3379 table_id: 25 (test.t1) -master-bin.000001 3379 Write_rows 1 3413 table_id: 25 flags: STMT_END_F -master-bin.000001 3413 Table_map 1 3452 table_id: 25 (test.t1) -master-bin.000001 3452 Write_rows 1 3486 table_id: 25 flags: STMT_END_F -master-bin.000001 3486 Table_map 1 3525 table_id: 25 (test.t1) -master-bin.000001 3525 Write_rows 1 3559 table_id: 25 flags: STMT_END_F -master-bin.000001 3559 Table_map 1 3598 table_id: 25 (test.t1) -master-bin.000001 3598 Write_rows 1 3632 table_id: 25 flags: STMT_END_F -master-bin.000001 3632 Table_map 1 3671 table_id: 25 (test.t1) -master-bin.000001 3671 Write_rows 1 3705 table_id: 25 flags: STMT_END_F -master-bin.000001 3705 Table_map 1 3744 table_id: 25 (test.t1) -master-bin.000001 3744 Write_rows 1 3778 table_id: 25 flags: STMT_END_F -master-bin.000001 3778 Table_map 1 3817 table_id: 25 (test.t1) -master-bin.000001 3817 Write_rows 1 3851 table_id: 25 flags: STMT_END_F -master-bin.000001 3851 Table_map 1 3890 table_id: 25 (test.t1) -master-bin.000001 3890 Write_rows 1 3924 table_id: 25 flags: STMT_END_F -master-bin.000001 3924 Table_map 1 3963 table_id: 25 (test.t1) -master-bin.000001 3963 Write_rows 1 3997 table_id: 25 flags: STMT_END_F -master-bin.000001 3997 Table_map 1 4036 table_id: 25 (test.t1) -master-bin.000001 4036 Write_rows 1 4070 table_id: 25 flags: STMT_END_F -master-bin.000001 4070 Table_map 1 4109 table_id: 25 (test.t1) -master-bin.000001 4109 Write_rows 1 4143 table_id: 25 flags: STMT_END_F -master-bin.000001 4143 Table_map 1 4182 table_id: 25 (test.t1) -master-bin.000001 4182 Write_rows 1 4216 table_id: 25 flags: STMT_END_F -master-bin.000001 4216 Table_map 1 4255 table_id: 25 (test.t1) -master-bin.000001 4255 Write_rows 1 4289 table_id: 25 flags: STMT_END_F -master-bin.000001 4289 Table_map 1 4328 table_id: 25 (test.t1) -master-bin.000001 4328 Write_rows 1 4362 table_id: 25 flags: STMT_END_F -master-bin.000001 4362 Table_map 1 4401 table_id: 25 (test.t1) -master-bin.000001 4401 Write_rows 1 4435 table_id: 25 flags: STMT_END_F -master-bin.000001 4435 Table_map 1 4474 table_id: 25 (test.t1) -master-bin.000001 4474 Write_rows 1 4508 table_id: 25 flags: STMT_END_F -master-bin.000001 4508 Table_map 1 4547 table_id: 25 (test.t1) -master-bin.000001 4547 Write_rows 1 4581 table_id: 25 flags: STMT_END_F -master-bin.000001 4581 Table_map 1 4620 table_id: 25 (test.t1) -master-bin.000001 4620 Write_rows 1 4654 table_id: 25 flags: STMT_END_F -master-bin.000001 4654 Table_map 1 4693 table_id: 25 (test.t1) -master-bin.000001 4693 Write_rows 1 4727 table_id: 25 flags: STMT_END_F -master-bin.000001 4727 Table_map 1 4766 table_id: 25 (test.t1) -master-bin.000001 4766 Write_rows 1 4800 table_id: 25 flags: STMT_END_F -master-bin.000001 4800 Table_map 1 4839 table_id: 25 (test.t1) -master-bin.000001 4839 Write_rows 1 4873 table_id: 25 flags: STMT_END_F -master-bin.000001 4873 Table_map 1 4912 table_id: 25 (test.t1) -master-bin.000001 4912 Write_rows 1 4946 table_id: 25 flags: STMT_END_F -master-bin.000001 4946 Table_map 1 4985 table_id: 25 (test.t1) -master-bin.000001 4985 Write_rows 1 5019 table_id: 25 flags: STMT_END_F -master-bin.000001 5019 Table_map 1 5058 table_id: 25 (test.t1) -master-bin.000001 5058 Write_rows 1 5092 table_id: 25 flags: STMT_END_F -master-bin.000001 5092 Table_map 1 5131 table_id: 25 (test.t1) -master-bin.000001 5131 Write_rows 1 5165 table_id: 25 flags: STMT_END_F -master-bin.000001 5165 Table_map 1 5204 table_id: 25 (test.t1) -master-bin.000001 5204 Write_rows 1 5238 table_id: 25 flags: STMT_END_F -master-bin.000001 5238 Table_map 1 5277 table_id: 25 (test.t1) -master-bin.000001 5277 Write_rows 1 5311 table_id: 25 flags: STMT_END_F -master-bin.000001 5311 Table_map 1 5350 table_id: 25 (test.t1) -master-bin.000001 5350 Write_rows 1 5384 table_id: 25 flags: STMT_END_F -master-bin.000001 5384 Table_map 1 5423 table_id: 25 (test.t1) -master-bin.000001 5423 Write_rows 1 5457 table_id: 25 flags: STMT_END_F -master-bin.000001 5457 Table_map 1 5496 table_id: 25 (test.t1) -master-bin.000001 5496 Write_rows 1 5530 table_id: 25 flags: STMT_END_F -master-bin.000001 5530 Table_map 1 5569 table_id: 25 (test.t1) -master-bin.000001 5569 Write_rows 1 5603 table_id: 25 flags: STMT_END_F -master-bin.000001 5603 Table_map 1 5642 table_id: 25 (test.t1) -master-bin.000001 5642 Write_rows 1 5676 table_id: 25 flags: STMT_END_F -master-bin.000001 5676 Table_map 1 5715 table_id: 25 (test.t1) -master-bin.000001 5715 Write_rows 1 5749 table_id: 25 flags: STMT_END_F -master-bin.000001 5749 Table_map 1 5788 table_id: 25 (test.t1) -master-bin.000001 5788 Write_rows 1 5822 table_id: 25 flags: STMT_END_F -master-bin.000001 5822 Table_map 1 5861 table_id: 25 (test.t1) -master-bin.000001 5861 Write_rows 1 5895 table_id: 25 flags: STMT_END_F -master-bin.000001 5895 Table_map 1 5934 table_id: 25 (test.t1) -master-bin.000001 5934 Write_rows 1 5968 table_id: 25 flags: STMT_END_F -master-bin.000001 5968 Table_map 1 6007 table_id: 25 (test.t1) -master-bin.000001 6007 Write_rows 1 6041 table_id: 25 flags: STMT_END_F -master-bin.000001 6041 Table_map 1 6080 table_id: 25 (test.t1) -master-bin.000001 6080 Write_rows 1 6114 table_id: 25 flags: STMT_END_F -master-bin.000001 6114 Table_map 1 6153 table_id: 25 (test.t1) -master-bin.000001 6153 Write_rows 1 6187 table_id: 25 flags: STMT_END_F -master-bin.000001 6187 Table_map 1 6226 table_id: 25 (test.t1) -master-bin.000001 6226 Write_rows 1 6260 table_id: 25 flags: STMT_END_F -master-bin.000001 6260 Table_map 1 6299 table_id: 25 (test.t1) -master-bin.000001 6299 Write_rows 1 6333 table_id: 25 flags: STMT_END_F -master-bin.000001 6333 Table_map 1 6372 table_id: 25 (test.t1) -master-bin.000001 6372 Write_rows 1 6406 table_id: 25 flags: STMT_END_F -master-bin.000001 6406 Table_map 1 6445 table_id: 25 (test.t1) -master-bin.000001 6445 Write_rows 1 6479 table_id: 25 flags: STMT_END_F -master-bin.000001 6479 Table_map 1 6518 table_id: 25 (test.t1) -master-bin.000001 6518 Write_rows 1 6552 table_id: 25 flags: STMT_END_F -master-bin.000001 6552 Table_map 1 6591 table_id: 25 (test.t1) -master-bin.000001 6591 Write_rows 1 6625 table_id: 25 flags: STMT_END_F -master-bin.000001 6625 Table_map 1 6664 table_id: 25 (test.t1) -master-bin.000001 6664 Write_rows 1 6698 table_id: 25 flags: STMT_END_F -master-bin.000001 6698 Table_map 1 6737 table_id: 25 (test.t1) -master-bin.000001 6737 Write_rows 1 6771 table_id: 25 flags: STMT_END_F -master-bin.000001 6771 Table_map 1 6810 table_id: 25 (test.t1) -master-bin.000001 6810 Write_rows 1 6844 table_id: 25 flags: STMT_END_F -master-bin.000001 6844 Table_map 1 6883 table_id: 25 (test.t1) -master-bin.000001 6883 Write_rows 1 6917 table_id: 25 flags: STMT_END_F -master-bin.000001 6917 Table_map 1 6956 table_id: 25 (test.t1) -master-bin.000001 6956 Write_rows 1 6990 table_id: 25 flags: STMT_END_F -master-bin.000001 6990 Table_map 1 7029 table_id: 25 (test.t1) -master-bin.000001 7029 Write_rows 1 7063 table_id: 25 flags: STMT_END_F -master-bin.000001 7063 Table_map 1 7102 table_id: 25 (test.t1) -master-bin.000001 7102 Write_rows 1 7136 table_id: 25 flags: STMT_END_F -master-bin.000001 7136 Table_map 1 7175 table_id: 25 (test.t1) -master-bin.000001 7175 Write_rows 1 7209 table_id: 25 flags: STMT_END_F -master-bin.000001 7209 Table_map 1 7248 table_id: 25 (test.t1) -master-bin.000001 7248 Write_rows 1 7282 table_id: 25 flags: STMT_END_F -master-bin.000001 7282 Table_map 1 7321 table_id: 25 (test.t1) -master-bin.000001 7321 Write_rows 1 7355 table_id: 25 flags: STMT_END_F -master-bin.000001 7355 Table_map 1 7394 table_id: 25 (test.t1) -master-bin.000001 7394 Write_rows 1 7428 table_id: 25 flags: STMT_END_F -master-bin.000001 7428 Table_map 1 7467 table_id: 25 (test.t1) -master-bin.000001 7467 Write_rows 1 7501 table_id: 25 flags: STMT_END_F -master-bin.000001 7501 Table_map 1 7540 table_id: 25 (test.t1) -master-bin.000001 7540 Write_rows 1 7574 table_id: 25 flags: STMT_END_F -master-bin.000001 7574 Table_map 1 7613 table_id: 25 (test.t1) -master-bin.000001 7613 Write_rows 1 7647 table_id: 25 flags: STMT_END_F -master-bin.000001 7647 Table_map 1 7686 table_id: 25 (test.t1) -master-bin.000001 7686 Write_rows 1 7720 table_id: 25 flags: STMT_END_F -master-bin.000001 7720 Table_map 1 7759 table_id: 25 (test.t1) -master-bin.000001 7759 Write_rows 1 7793 table_id: 25 flags: STMT_END_F -master-bin.000001 7793 Table_map 1 7832 table_id: 25 (test.t1) -master-bin.000001 7832 Write_rows 1 7866 table_id: 25 flags: STMT_END_F -master-bin.000001 7866 Table_map 1 7905 table_id: 25 (test.t1) -master-bin.000001 7905 Write_rows 1 7939 table_id: 25 flags: STMT_END_F -master-bin.000001 7939 Table_map 1 7978 table_id: 25 (test.t1) -master-bin.000001 7978 Write_rows 1 8012 table_id: 25 flags: STMT_END_F -master-bin.000001 8012 Table_map 1 8051 table_id: 25 (test.t1) -master-bin.000001 8051 Write_rows 1 8085 table_id: 25 flags: STMT_END_F -master-bin.000001 8085 Table_map 1 8124 table_id: 25 (test.t1) -master-bin.000001 8124 Write_rows 1 8158 table_id: 25 flags: STMT_END_F -master-bin.000001 8158 Table_map 1 8197 table_id: 25 (test.t1) -master-bin.000001 8197 Write_rows 1 8231 table_id: 25 flags: STMT_END_F -master-bin.000001 8231 Table_map 1 8270 table_id: 25 (test.t1) -master-bin.000001 8270 Write_rows 1 8304 table_id: 25 flags: STMT_END_F -master-bin.000001 8304 Table_map 1 8343 table_id: 25 (test.t1) -master-bin.000001 8343 Write_rows 1 8377 table_id: 25 flags: STMT_END_F -master-bin.000001 8377 Table_map 1 8416 table_id: 25 (test.t1) -master-bin.000001 8416 Write_rows 1 8450 table_id: 25 flags: STMT_END_F -master-bin.000001 8450 Table_map 1 8489 table_id: 25 (test.t1) -master-bin.000001 8489 Write_rows 1 8523 table_id: 25 flags: STMT_END_F -master-bin.000001 8523 Table_map 1 8562 table_id: 25 (test.t1) -master-bin.000001 8562 Write_rows 1 8596 table_id: 25 flags: STMT_END_F -master-bin.000001 8596 Table_map 1 8635 table_id: 25 (test.t1) -master-bin.000001 8635 Write_rows 1 8669 table_id: 25 flags: STMT_END_F -master-bin.000001 8669 Table_map 1 8708 table_id: 25 (test.t1) -master-bin.000001 8708 Write_rows 1 8742 table_id: 25 flags: STMT_END_F -master-bin.000001 8742 Table_map 1 8781 table_id: 25 (test.t1) -master-bin.000001 8781 Write_rows 1 8815 table_id: 25 flags: STMT_END_F -master-bin.000001 8815 Table_map 1 8854 table_id: 25 (test.t1) -master-bin.000001 8854 Write_rows 1 8888 table_id: 25 flags: STMT_END_F -master-bin.000001 8888 Table_map 1 8927 table_id: 25 (test.t1) -master-bin.000001 8927 Write_rows 1 8961 table_id: 25 flags: STMT_END_F -master-bin.000001 8961 Table_map 1 9000 table_id: 25 (test.t1) -master-bin.000001 9000 Write_rows 1 9034 table_id: 25 flags: STMT_END_F -master-bin.000001 9034 Table_map 1 9073 table_id: 25 (test.t1) -master-bin.000001 9073 Write_rows 1 9107 table_id: 25 flags: STMT_END_F -master-bin.000001 9107 Table_map 1 9146 table_id: 25 (test.t1) -master-bin.000001 9146 Write_rows 1 9180 table_id: 25 flags: STMT_END_F -master-bin.000001 9180 Table_map 1 9219 table_id: 25 (test.t1) -master-bin.000001 9219 Write_rows 1 9253 table_id: 25 flags: STMT_END_F -master-bin.000001 9253 Table_map 1 9292 table_id: 25 (test.t1) -master-bin.000001 9292 Write_rows 1 9326 table_id: 25 flags: STMT_END_F -master-bin.000001 9326 Table_map 1 9365 table_id: 25 (test.t1) -master-bin.000001 9365 Write_rows 1 9399 table_id: 25 flags: STMT_END_F -master-bin.000001 9399 Table_map 1 9438 table_id: 25 (test.t1) -master-bin.000001 9438 Write_rows 1 9472 table_id: 25 flags: STMT_END_F -master-bin.000001 9472 Table_map 1 9511 table_id: 25 (test.t1) -master-bin.000001 9511 Write_rows 1 9545 table_id: 25 flags: STMT_END_F -master-bin.000001 9545 Table_map 1 9584 table_id: 25 (test.t1) -master-bin.000001 9584 Write_rows 1 9618 table_id: 25 flags: STMT_END_F -master-bin.000001 9618 Table_map 1 9657 table_id: 25 (test.t1) -master-bin.000001 9657 Write_rows 1 9691 table_id: 25 flags: STMT_END_F -master-bin.000001 9691 Table_map 1 9730 table_id: 25 (test.t1) -master-bin.000001 9730 Write_rows 1 9764 table_id: 25 flags: STMT_END_F -master-bin.000001 9764 Table_map 1 9803 table_id: 25 (test.t1) -master-bin.000001 9803 Write_rows 1 9837 table_id: 25 flags: STMT_END_F -master-bin.000001 9837 Table_map 1 9876 table_id: 25 (test.t1) -master-bin.000001 9876 Write_rows 1 9910 table_id: 25 flags: STMT_END_F -master-bin.000001 9910 Table_map 1 9949 table_id: 25 (test.t1) -master-bin.000001 9949 Write_rows 1 9983 table_id: 25 flags: STMT_END_F -master-bin.000001 9983 Table_map 1 10022 table_id: 25 (test.t1) -master-bin.000001 10022 Write_rows 1 10056 table_id: 25 flags: STMT_END_F -master-bin.000001 10056 Table_map 1 10095 table_id: 25 (test.t1) -master-bin.000001 10095 Write_rows 1 10129 table_id: 25 flags: STMT_END_F -master-bin.000001 10129 Table_map 1 10168 table_id: 25 (test.t1) -master-bin.000001 10168 Write_rows 1 10202 table_id: 25 flags: STMT_END_F -master-bin.000001 10202 Table_map 1 10241 table_id: 25 (test.t1) -master-bin.000001 10241 Write_rows 1 10275 table_id: 25 flags: STMT_END_F -master-bin.000001 10275 Table_map 1 10314 table_id: 25 (test.t1) -master-bin.000001 10314 Write_rows 1 10348 table_id: 25 flags: STMT_END_F -master-bin.000001 10348 Table_map 1 10387 table_id: 25 (test.t1) -master-bin.000001 10387 Write_rows 1 10421 table_id: 25 flags: STMT_END_F -master-bin.000001 10421 Table_map 1 10460 table_id: 25 (test.t1) -master-bin.000001 10460 Write_rows 1 10494 table_id: 25 flags: STMT_END_F -master-bin.000001 10494 Table_map 1 10533 table_id: 25 (test.t1) -master-bin.000001 10533 Write_rows 1 10567 table_id: 25 flags: STMT_END_F -master-bin.000001 10567 Table_map 1 10606 table_id: 25 (test.t1) -master-bin.000001 10606 Write_rows 1 10640 table_id: 25 flags: STMT_END_F -master-bin.000001 10640 Table_map 1 10679 table_id: 25 (test.t1) -master-bin.000001 10679 Write_rows 1 10713 table_id: 25 flags: STMT_END_F -master-bin.000001 10713 Table_map 1 10752 table_id: 25 (test.t1) -master-bin.000001 10752 Write_rows 1 10786 table_id: 25 flags: STMT_END_F -master-bin.000001 10786 Table_map 1 10825 table_id: 25 (test.t1) -master-bin.000001 10825 Write_rows 1 10859 table_id: 25 flags: STMT_END_F -master-bin.000001 10859 Table_map 1 10898 table_id: 25 (test.t1) -master-bin.000001 10898 Write_rows 1 10932 table_id: 25 flags: STMT_END_F -master-bin.000001 10932 Table_map 1 10971 table_id: 25 (test.t1) -master-bin.000001 10971 Write_rows 1 11005 table_id: 25 flags: STMT_END_F -master-bin.000001 11005 Table_map 1 11044 table_id: 25 (test.t1) -master-bin.000001 11044 Write_rows 1 11078 table_id: 25 flags: STMT_END_F -master-bin.000001 11078 Table_map 1 11117 table_id: 25 (test.t1) -master-bin.000001 11117 Write_rows 1 11151 table_id: 25 flags: STMT_END_F -master-bin.000001 11151 Table_map 1 11190 table_id: 25 (test.t1) -master-bin.000001 11190 Write_rows 1 11224 table_id: 25 flags: STMT_END_F -master-bin.000001 11224 Table_map 1 11263 table_id: 25 (test.t1) -master-bin.000001 11263 Write_rows 1 11297 table_id: 25 flags: STMT_END_F -master-bin.000001 11297 Table_map 1 11336 table_id: 25 (test.t1) -master-bin.000001 11336 Write_rows 1 11370 table_id: 25 flags: STMT_END_F -master-bin.000001 11370 Table_map 1 11409 table_id: 25 (test.t1) -master-bin.000001 11409 Write_rows 1 11443 table_id: 25 flags: STMT_END_F -master-bin.000001 11443 Table_map 1 11482 table_id: 25 (test.t1) -master-bin.000001 11482 Write_rows 1 11516 table_id: 25 flags: STMT_END_F -master-bin.000001 11516 Table_map 1 11555 table_id: 25 (test.t1) -master-bin.000001 11555 Write_rows 1 11589 table_id: 25 flags: STMT_END_F -master-bin.000001 11589 Table_map 1 11628 table_id: 25 (test.t1) -master-bin.000001 11628 Write_rows 1 11662 table_id: 25 flags: STMT_END_F -master-bin.000001 11662 Table_map 1 11701 table_id: 25 (test.t1) -master-bin.000001 11701 Write_rows 1 11735 table_id: 25 flags: STMT_END_F -master-bin.000001 11735 Table_map 1 11774 table_id: 25 (test.t1) -master-bin.000001 11774 Write_rows 1 11808 table_id: 25 flags: STMT_END_F -master-bin.000001 11808 Table_map 1 11847 table_id: 25 (test.t1) -master-bin.000001 11847 Write_rows 1 11881 table_id: 25 flags: STMT_END_F -master-bin.000001 11881 Table_map 1 11920 table_id: 25 (test.t1) -master-bin.000001 11920 Write_rows 1 11954 table_id: 25 flags: STMT_END_F -master-bin.000001 11954 Table_map 1 11993 table_id: 25 (test.t1) -master-bin.000001 11993 Write_rows 1 12027 table_id: 25 flags: STMT_END_F -master-bin.000001 12027 Table_map 1 12066 table_id: 25 (test.t1) -master-bin.000001 12066 Write_rows 1 12100 table_id: 25 flags: STMT_END_F -master-bin.000001 12100 Table_map 1 12139 table_id: 25 (test.t1) -master-bin.000001 12139 Write_rows 1 12173 table_id: 25 flags: STMT_END_F -master-bin.000001 12173 Table_map 1 12212 table_id: 25 (test.t1) -master-bin.000001 12212 Write_rows 1 12246 table_id: 25 flags: STMT_END_F -master-bin.000001 12246 Table_map 1 12285 table_id: 25 (test.t1) -master-bin.000001 12285 Write_rows 1 12319 table_id: 25 flags: STMT_END_F -master-bin.000001 12319 Table_map 1 12358 table_id: 25 (test.t1) -master-bin.000001 12358 Write_rows 1 12392 table_id: 25 flags: STMT_END_F -master-bin.000001 12392 Table_map 1 12431 table_id: 25 (test.t1) -master-bin.000001 12431 Write_rows 1 12465 table_id: 25 flags: STMT_END_F -master-bin.000001 12465 Table_map 1 12504 table_id: 25 (test.t1) -master-bin.000001 12504 Write_rows 1 12538 table_id: 25 flags: STMT_END_F -master-bin.000001 12538 Table_map 1 12577 table_id: 25 (test.t1) -master-bin.000001 12577 Write_rows 1 12611 table_id: 25 flags: STMT_END_F -master-bin.000001 12611 Table_map 1 12650 table_id: 25 (test.t1) -master-bin.000001 12650 Write_rows 1 12684 table_id: 25 flags: STMT_END_F -master-bin.000001 12684 Table_map 1 12723 table_id: 25 (test.t1) -master-bin.000001 12723 Write_rows 1 12757 table_id: 25 flags: STMT_END_F -master-bin.000001 12757 Table_map 1 12796 table_id: 25 (test.t1) -master-bin.000001 12796 Write_rows 1 12830 table_id: 25 flags: STMT_END_F -master-bin.000001 12830 Table_map 1 12869 table_id: 25 (test.t1) -master-bin.000001 12869 Write_rows 1 12903 table_id: 25 flags: STMT_END_F -master-bin.000001 12903 Table_map 1 12942 table_id: 25 (test.t1) -master-bin.000001 12942 Write_rows 1 12976 table_id: 25 flags: STMT_END_F -master-bin.000001 12976 Table_map 1 13015 table_id: 25 (test.t1) -master-bin.000001 13015 Write_rows 1 13049 table_id: 25 flags: STMT_END_F -master-bin.000001 13049 Table_map 1 13088 table_id: 25 (test.t1) -master-bin.000001 13088 Write_rows 1 13122 table_id: 25 flags: STMT_END_F -master-bin.000001 13122 Table_map 1 13161 table_id: 25 (test.t1) -master-bin.000001 13161 Write_rows 1 13195 table_id: 25 flags: STMT_END_F -master-bin.000001 13195 Table_map 1 13234 table_id: 25 (test.t1) -master-bin.000001 13234 Write_rows 1 13268 table_id: 25 flags: STMT_END_F -master-bin.000001 13268 Table_map 1 13307 table_id: 25 (test.t1) -master-bin.000001 13307 Write_rows 1 13341 table_id: 25 flags: STMT_END_F -master-bin.000001 13341 Table_map 1 13380 table_id: 25 (test.t1) -master-bin.000001 13380 Write_rows 1 13414 table_id: 25 flags: STMT_END_F -master-bin.000001 13414 Table_map 1 13453 table_id: 25 (test.t1) -master-bin.000001 13453 Write_rows 1 13487 table_id: 25 flags: STMT_END_F -master-bin.000001 13487 Table_map 1 13526 table_id: 25 (test.t1) -master-bin.000001 13526 Write_rows 1 13560 table_id: 25 flags: STMT_END_F -master-bin.000001 13560 Table_map 1 13599 table_id: 25 (test.t1) -master-bin.000001 13599 Write_rows 1 13633 table_id: 25 flags: STMT_END_F -master-bin.000001 13633 Table_map 1 13672 table_id: 25 (test.t1) -master-bin.000001 13672 Write_rows 1 13706 table_id: 25 flags: STMT_END_F -master-bin.000001 13706 Table_map 1 13745 table_id: 25 (test.t1) -master-bin.000001 13745 Write_rows 1 13779 table_id: 25 flags: STMT_END_F -master-bin.000001 13779 Table_map 1 13818 table_id: 25 (test.t1) -master-bin.000001 13818 Write_rows 1 13852 table_id: 25 flags: STMT_END_F -master-bin.000001 13852 Table_map 1 13891 table_id: 25 (test.t1) -master-bin.000001 13891 Write_rows 1 13925 table_id: 25 flags: STMT_END_F -master-bin.000001 13925 Table_map 1 13964 table_id: 25 (test.t1) -master-bin.000001 13964 Write_rows 1 13998 table_id: 25 flags: STMT_END_F -master-bin.000001 13998 Table_map 1 14037 table_id: 25 (test.t1) -master-bin.000001 14037 Write_rows 1 14071 table_id: 25 flags: STMT_END_F -master-bin.000001 14071 Table_map 1 14110 table_id: 25 (test.t1) -master-bin.000001 14110 Write_rows 1 14144 table_id: 25 flags: STMT_END_F -master-bin.000001 14144 Table_map 1 14183 table_id: 25 (test.t1) -master-bin.000001 14183 Write_rows 1 14217 table_id: 25 flags: STMT_END_F -master-bin.000001 14217 Table_map 1 14256 table_id: 25 (test.t1) -master-bin.000001 14256 Write_rows 1 14290 table_id: 25 flags: STMT_END_F -master-bin.000001 14290 Table_map 1 14329 table_id: 25 (test.t1) -master-bin.000001 14329 Write_rows 1 14363 table_id: 25 flags: STMT_END_F -master-bin.000001 14363 Table_map 1 14402 table_id: 25 (test.t1) -master-bin.000001 14402 Write_rows 1 14436 table_id: 25 flags: STMT_END_F -master-bin.000001 14436 Table_map 1 14475 table_id: 25 (test.t1) -master-bin.000001 14475 Write_rows 1 14509 table_id: 25 flags: STMT_END_F -master-bin.000001 14509 Table_map 1 14548 table_id: 25 (test.t1) -master-bin.000001 14548 Write_rows 1 14582 table_id: 25 flags: STMT_END_F -master-bin.000001 14582 Table_map 1 14621 table_id: 25 (test.t1) -master-bin.000001 14621 Write_rows 1 14655 table_id: 25 flags: STMT_END_F -master-bin.000001 14655 Table_map 1 14694 table_id: 25 (test.t1) -master-bin.000001 14694 Write_rows 1 14728 table_id: 25 flags: STMT_END_F -master-bin.000001 14728 Table_map 1 14767 table_id: 25 (test.t1) -master-bin.000001 14767 Write_rows 1 14801 table_id: 25 flags: STMT_END_F -master-bin.000001 14801 Table_map 1 14840 table_id: 25 (test.t1) -master-bin.000001 14840 Write_rows 1 14874 table_id: 25 flags: STMT_END_F -master-bin.000001 14874 Table_map 1 14913 table_id: 25 (test.t1) -master-bin.000001 14913 Write_rows 1 14947 table_id: 25 flags: STMT_END_F -master-bin.000001 14947 Table_map 1 14986 table_id: 25 (test.t1) -master-bin.000001 14986 Write_rows 1 15020 table_id: 25 flags: STMT_END_F -master-bin.000001 15020 Table_map 1 15059 table_id: 25 (test.t1) -master-bin.000001 15059 Write_rows 1 15093 table_id: 25 flags: STMT_END_F -master-bin.000001 15093 Table_map 1 15132 table_id: 25 (test.t1) -master-bin.000001 15132 Write_rows 1 15166 table_id: 25 flags: STMT_END_F -master-bin.000001 15166 Table_map 1 15205 table_id: 25 (test.t1) -master-bin.000001 15205 Write_rows 1 15239 table_id: 25 flags: STMT_END_F -master-bin.000001 15239 Table_map 1 15278 table_id: 25 (test.t1) -master-bin.000001 15278 Write_rows 1 15312 table_id: 25 flags: STMT_END_F -master-bin.000001 15312 Table_map 1 15351 table_id: 25 (test.t1) -master-bin.000001 15351 Write_rows 1 15385 table_id: 25 flags: STMT_END_F -master-bin.000001 15385 Table_map 1 15424 table_id: 25 (test.t1) -master-bin.000001 15424 Write_rows 1 15458 table_id: 25 flags: STMT_END_F -master-bin.000001 15458 Table_map 1 15497 table_id: 25 (test.t1) -master-bin.000001 15497 Write_rows 1 15531 table_id: 25 flags: STMT_END_F -master-bin.000001 15531 Table_map 1 15570 table_id: 25 (test.t1) -master-bin.000001 15570 Write_rows 1 15604 table_id: 25 flags: STMT_END_F -master-bin.000001 15604 Table_map 1 15643 table_id: 25 (test.t1) -master-bin.000001 15643 Write_rows 1 15677 table_id: 25 flags: STMT_END_F -master-bin.000001 15677 Table_map 1 15716 table_id: 25 (test.t1) -master-bin.000001 15716 Write_rows 1 15750 table_id: 25 flags: STMT_END_F -master-bin.000001 15750 Table_map 1 15789 table_id: 25 (test.t1) -master-bin.000001 15789 Write_rows 1 15823 table_id: 25 flags: STMT_END_F -master-bin.000001 15823 Table_map 1 15862 table_id: 25 (test.t1) -master-bin.000001 15862 Write_rows 1 15896 table_id: 25 flags: STMT_END_F -master-bin.000001 15896 Table_map 1 15935 table_id: 25 (test.t1) -master-bin.000001 15935 Write_rows 1 15969 table_id: 25 flags: STMT_END_F -master-bin.000001 15969 Table_map 1 16008 table_id: 25 (test.t1) -master-bin.000001 16008 Write_rows 1 16042 table_id: 25 flags: STMT_END_F -master-bin.000001 16042 Table_map 1 16081 table_id: 25 (test.t1) -master-bin.000001 16081 Write_rows 1 16115 table_id: 25 flags: STMT_END_F -master-bin.000001 16115 Table_map 1 16154 table_id: 25 (test.t1) -master-bin.000001 16154 Write_rows 1 16188 table_id: 25 flags: STMT_END_F -master-bin.000001 16188 Table_map 1 16227 table_id: 25 (test.t1) -master-bin.000001 16227 Write_rows 1 16261 table_id: 25 flags: STMT_END_F -master-bin.000001 16261 Table_map 1 16300 table_id: 25 (test.t1) -master-bin.000001 16300 Write_rows 1 16334 table_id: 25 flags: STMT_END_F -master-bin.000001 16334 Table_map 1 16373 table_id: 25 (test.t1) -master-bin.000001 16373 Write_rows 1 16407 table_id: 25 flags: STMT_END_F -master-bin.000001 16407 Table_map 1 16446 table_id: 25 (test.t1) -master-bin.000001 16446 Write_rows 1 16480 table_id: 25 flags: STMT_END_F -master-bin.000001 16480 Table_map 1 16519 table_id: 25 (test.t1) -master-bin.000001 16519 Write_rows 1 16553 table_id: 25 flags: STMT_END_F -master-bin.000001 16553 Table_map 1 16592 table_id: 25 (test.t1) -master-bin.000001 16592 Write_rows 1 16626 table_id: 25 flags: STMT_END_F -master-bin.000001 16626 Table_map 1 16665 table_id: 25 (test.t1) -master-bin.000001 16665 Write_rows 1 16699 table_id: 25 flags: STMT_END_F -master-bin.000001 16699 Table_map 1 16738 table_id: 25 (test.t1) -master-bin.000001 16738 Write_rows 1 16772 table_id: 25 flags: STMT_END_F -master-bin.000001 16772 Table_map 1 16811 table_id: 25 (test.t1) -master-bin.000001 16811 Write_rows 1 16845 table_id: 25 flags: STMT_END_F -master-bin.000001 16845 Table_map 1 16884 table_id: 25 (test.t1) -master-bin.000001 16884 Write_rows 1 16918 table_id: 25 flags: STMT_END_F -master-bin.000001 16918 Table_map 1 16957 table_id: 25 (test.t1) -master-bin.000001 16957 Write_rows 1 16991 table_id: 25 flags: STMT_END_F -master-bin.000001 16991 Table_map 1 17030 table_id: 25 (test.t1) -master-bin.000001 17030 Write_rows 1 17064 table_id: 25 flags: STMT_END_F -master-bin.000001 17064 Table_map 1 17103 table_id: 25 (test.t1) -master-bin.000001 17103 Write_rows 1 17137 table_id: 25 flags: STMT_END_F -master-bin.000001 17137 Table_map 1 17176 table_id: 25 (test.t1) -master-bin.000001 17176 Write_rows 1 17210 table_id: 25 flags: STMT_END_F -master-bin.000001 17210 Table_map 1 17249 table_id: 25 (test.t1) -master-bin.000001 17249 Write_rows 1 17283 table_id: 25 flags: STMT_END_F -master-bin.000001 17283 Table_map 1 17322 table_id: 25 (test.t1) -master-bin.000001 17322 Write_rows 1 17356 table_id: 25 flags: STMT_END_F -master-bin.000001 17356 Table_map 1 17395 table_id: 25 (test.t1) -master-bin.000001 17395 Write_rows 1 17429 table_id: 25 flags: STMT_END_F -master-bin.000001 17429 Table_map 1 17468 table_id: 25 (test.t1) -master-bin.000001 17468 Write_rows 1 17502 table_id: 25 flags: STMT_END_F -master-bin.000001 17502 Table_map 1 17541 table_id: 25 (test.t1) -master-bin.000001 17541 Write_rows 1 17575 table_id: 25 flags: STMT_END_F -master-bin.000001 17575 Table_map 1 17614 table_id: 25 (test.t1) -master-bin.000001 17614 Write_rows 1 17648 table_id: 25 flags: STMT_END_F -master-bin.000001 17648 Table_map 1 17687 table_id: 25 (test.t1) -master-bin.000001 17687 Write_rows 1 17721 table_id: 25 flags: STMT_END_F -master-bin.000001 17721 Table_map 1 17760 table_id: 25 (test.t1) -master-bin.000001 17760 Write_rows 1 17794 table_id: 25 flags: STMT_END_F -master-bin.000001 17794 Table_map 1 17833 table_id: 25 (test.t1) -master-bin.000001 17833 Write_rows 1 17867 table_id: 25 flags: STMT_END_F -master-bin.000001 17867 Table_map 1 17906 table_id: 25 (test.t1) -master-bin.000001 17906 Write_rows 1 17940 table_id: 25 flags: STMT_END_F -master-bin.000001 17940 Table_map 1 17979 table_id: 25 (test.t1) -master-bin.000001 17979 Write_rows 1 18013 table_id: 25 flags: STMT_END_F -master-bin.000001 18013 Table_map 1 18052 table_id: 25 (test.t1) -master-bin.000001 18052 Write_rows 1 18086 table_id: 25 flags: STMT_END_F -master-bin.000001 18086 Table_map 1 18125 table_id: 25 (test.t1) -master-bin.000001 18125 Write_rows 1 18159 table_id: 25 flags: STMT_END_F -master-bin.000001 18159 Table_map 1 18198 table_id: 25 (test.t1) -master-bin.000001 18198 Write_rows 1 18232 table_id: 25 flags: STMT_END_F -master-bin.000001 18232 Table_map 1 18271 table_id: 25 (test.t1) -master-bin.000001 18271 Write_rows 1 18305 table_id: 25 flags: STMT_END_F -master-bin.000001 18305 Table_map 1 18344 table_id: 25 (test.t1) -master-bin.000001 18344 Write_rows 1 18378 table_id: 25 flags: STMT_END_F -master-bin.000001 18378 Table_map 1 18417 table_id: 25 (test.t1) -master-bin.000001 18417 Write_rows 1 18451 table_id: 25 flags: STMT_END_F -master-bin.000001 18451 Table_map 1 18490 table_id: 25 (test.t1) -master-bin.000001 18490 Write_rows 1 18524 table_id: 25 flags: STMT_END_F -master-bin.000001 18524 Table_map 1 18563 table_id: 25 (test.t1) -master-bin.000001 18563 Write_rows 1 18597 table_id: 25 flags: STMT_END_F -master-bin.000001 18597 Table_map 1 18636 table_id: 25 (test.t1) -master-bin.000001 18636 Write_rows 1 18670 table_id: 25 flags: STMT_END_F -master-bin.000001 18670 Table_map 1 18709 table_id: 25 (test.t1) -master-bin.000001 18709 Write_rows 1 18743 table_id: 25 flags: STMT_END_F -master-bin.000001 18743 Table_map 1 18782 table_id: 25 (test.t1) -master-bin.000001 18782 Write_rows 1 18816 table_id: 25 flags: STMT_END_F -master-bin.000001 18816 Table_map 1 18855 table_id: 25 (test.t1) -master-bin.000001 18855 Write_rows 1 18889 table_id: 25 flags: STMT_END_F -master-bin.000001 18889 Table_map 1 18928 table_id: 25 (test.t1) -master-bin.000001 18928 Write_rows 1 18962 table_id: 25 flags: STMT_END_F -master-bin.000001 18962 Table_map 1 19001 table_id: 25 (test.t1) -master-bin.000001 19001 Write_rows 1 19035 table_id: 25 flags: STMT_END_F -master-bin.000001 19035 Table_map 1 19074 table_id: 25 (test.t1) -master-bin.000001 19074 Write_rows 1 19108 table_id: 25 flags: STMT_END_F -master-bin.000001 19108 Table_map 1 19147 table_id: 25 (test.t1) -master-bin.000001 19147 Write_rows 1 19181 table_id: 25 flags: STMT_END_F -master-bin.000001 19181 Table_map 1 19220 table_id: 25 (test.t1) -master-bin.000001 19220 Write_rows 1 19254 table_id: 25 flags: STMT_END_F -master-bin.000001 19254 Table_map 1 19293 table_id: 25 (test.t1) -master-bin.000001 19293 Write_rows 1 19327 table_id: 25 flags: STMT_END_F -master-bin.000001 19327 Table_map 1 19366 table_id: 25 (test.t1) -master-bin.000001 19366 Write_rows 1 19400 table_id: 25 flags: STMT_END_F -master-bin.000001 19400 Table_map 1 19439 table_id: 25 (test.t1) -master-bin.000001 19439 Write_rows 1 19473 table_id: 25 flags: STMT_END_F -master-bin.000001 19473 Table_map 1 19512 table_id: 25 (test.t1) -master-bin.000001 19512 Write_rows 1 19546 table_id: 25 flags: STMT_END_F -master-bin.000001 19546 Table_map 1 19585 table_id: 25 (test.t1) -master-bin.000001 19585 Write_rows 1 19619 table_id: 25 flags: STMT_END_F -master-bin.000001 19619 Table_map 1 19658 table_id: 25 (test.t1) -master-bin.000001 19658 Write_rows 1 19692 table_id: 25 flags: STMT_END_F -master-bin.000001 19692 Table_map 1 19731 table_id: 25 (test.t1) -master-bin.000001 19731 Write_rows 1 19765 table_id: 25 flags: STMT_END_F -master-bin.000001 19765 Table_map 1 19804 table_id: 25 (test.t1) -master-bin.000001 19804 Write_rows 1 19838 table_id: 25 flags: STMT_END_F -master-bin.000001 19838 Table_map 1 19877 table_id: 25 (test.t1) -master-bin.000001 19877 Write_rows 1 19911 table_id: 25 flags: STMT_END_F -master-bin.000001 19911 Table_map 1 19950 table_id: 25 (test.t1) -master-bin.000001 19950 Write_rows 1 19984 table_id: 25 flags: STMT_END_F -master-bin.000001 19984 Table_map 1 20023 table_id: 25 (test.t1) -master-bin.000001 20023 Write_rows 1 20057 table_id: 25 flags: STMT_END_F -master-bin.000001 20057 Table_map 1 20096 table_id: 25 (test.t1) -master-bin.000001 20096 Write_rows 1 20130 table_id: 25 flags: STMT_END_F -master-bin.000001 20130 Table_map 1 20169 table_id: 25 (test.t1) -master-bin.000001 20169 Write_rows 1 20203 table_id: 25 flags: STMT_END_F -master-bin.000001 20203 Table_map 1 20242 table_id: 25 (test.t1) -master-bin.000001 20242 Write_rows 1 20276 table_id: 25 flags: STMT_END_F -master-bin.000001 20276 Table_map 1 20315 table_id: 25 (test.t1) -master-bin.000001 20315 Write_rows 1 20349 table_id: 25 flags: STMT_END_F -master-bin.000001 20349 Table_map 1 20388 table_id: 25 (test.t1) -master-bin.000001 20388 Write_rows 1 20422 table_id: 25 flags: STMT_END_F -master-bin.000001 20422 Table_map 1 20461 table_id: 25 (test.t1) -master-bin.000001 20461 Write_rows 1 20495 table_id: 25 flags: STMT_END_F -master-bin.000001 20495 Table_map 1 20534 table_id: 25 (test.t1) -master-bin.000001 20534 Write_rows 1 20568 table_id: 25 flags: STMT_END_F -master-bin.000001 20568 Table_map 1 20607 table_id: 25 (test.t1) -master-bin.000001 20607 Write_rows 1 20641 table_id: 25 flags: STMT_END_F -master-bin.000001 20641 Table_map 1 20680 table_id: 25 (test.t1) -master-bin.000001 20680 Write_rows 1 20714 table_id: 25 flags: STMT_END_F -master-bin.000001 20714 Table_map 1 20753 table_id: 25 (test.t1) -master-bin.000001 20753 Write_rows 1 20787 table_id: 25 flags: STMT_END_F -master-bin.000001 20787 Table_map 1 20826 table_id: 25 (test.t1) -master-bin.000001 20826 Write_rows 1 20860 table_id: 25 flags: STMT_END_F -master-bin.000001 20860 Table_map 1 20899 table_id: 25 (test.t1) -master-bin.000001 20899 Write_rows 1 20933 table_id: 25 flags: STMT_END_F -master-bin.000001 20933 Table_map 1 20972 table_id: 25 (test.t1) -master-bin.000001 20972 Write_rows 1 21006 table_id: 25 flags: STMT_END_F -master-bin.000001 21006 Table_map 1 21045 table_id: 25 (test.t1) -master-bin.000001 21045 Write_rows 1 21079 table_id: 25 flags: STMT_END_F -master-bin.000001 21079 Table_map 1 21118 table_id: 25 (test.t1) -master-bin.000001 21118 Write_rows 1 21152 table_id: 25 flags: STMT_END_F -master-bin.000001 21152 Table_map 1 21191 table_id: 25 (test.t1) -master-bin.000001 21191 Write_rows 1 21225 table_id: 25 flags: STMT_END_F -master-bin.000001 21225 Table_map 1 21264 table_id: 25 (test.t1) -master-bin.000001 21264 Write_rows 1 21298 table_id: 25 flags: STMT_END_F -master-bin.000001 21298 Table_map 1 21337 table_id: 25 (test.t1) -master-bin.000001 21337 Write_rows 1 21371 table_id: 25 flags: STMT_END_F -master-bin.000001 21371 Table_map 1 21410 table_id: 25 (test.t1) -master-bin.000001 21410 Write_rows 1 21444 table_id: 25 flags: STMT_END_F -master-bin.000001 21444 Table_map 1 21483 table_id: 25 (test.t1) -master-bin.000001 21483 Write_rows 1 21517 table_id: 25 flags: STMT_END_F -master-bin.000001 21517 Table_map 1 21556 table_id: 25 (test.t1) -master-bin.000001 21556 Write_rows 1 21590 table_id: 25 flags: STMT_END_F -master-bin.000001 21590 Table_map 1 21629 table_id: 25 (test.t1) -master-bin.000001 21629 Write_rows 1 21663 table_id: 25 flags: STMT_END_F -master-bin.000001 21663 Table_map 1 21702 table_id: 25 (test.t1) -master-bin.000001 21702 Write_rows 1 21736 table_id: 25 flags: STMT_END_F -master-bin.000001 21736 Table_map 1 21775 table_id: 25 (test.t1) -master-bin.000001 21775 Write_rows 1 21809 table_id: 25 flags: STMT_END_F -master-bin.000001 21809 Table_map 1 21848 table_id: 25 (test.t1) -master-bin.000001 21848 Write_rows 1 21882 table_id: 25 flags: STMT_END_F -master-bin.000001 21882 Table_map 1 21921 table_id: 25 (test.t1) -master-bin.000001 21921 Write_rows 1 21955 table_id: 25 flags: STMT_END_F -master-bin.000001 21955 Table_map 1 21994 table_id: 25 (test.t1) -master-bin.000001 21994 Write_rows 1 22028 table_id: 25 flags: STMT_END_F -master-bin.000001 22028 Table_map 1 22067 table_id: 25 (test.t1) -master-bin.000001 22067 Write_rows 1 22101 table_id: 25 flags: STMT_END_F -master-bin.000001 22101 Table_map 1 22140 table_id: 25 (test.t1) -master-bin.000001 22140 Write_rows 1 22174 table_id: 25 flags: STMT_END_F -master-bin.000001 22174 Table_map 1 22213 table_id: 25 (test.t1) -master-bin.000001 22213 Write_rows 1 22247 table_id: 25 flags: STMT_END_F -master-bin.000001 22247 Table_map 1 22286 table_id: 25 (test.t1) -master-bin.000001 22286 Write_rows 1 22320 table_id: 25 flags: STMT_END_F -master-bin.000001 22320 Table_map 1 22359 table_id: 25 (test.t1) -master-bin.000001 22359 Write_rows 1 22393 table_id: 25 flags: STMT_END_F -master-bin.000001 22393 Table_map 1 22432 table_id: 25 (test.t1) -master-bin.000001 22432 Write_rows 1 22466 table_id: 25 flags: STMT_END_F -master-bin.000001 22466 Table_map 1 22505 table_id: 25 (test.t1) -master-bin.000001 22505 Write_rows 1 22539 table_id: 25 flags: STMT_END_F -master-bin.000001 22539 Table_map 1 22578 table_id: 25 (test.t1) -master-bin.000001 22578 Write_rows 1 22612 table_id: 25 flags: STMT_END_F -master-bin.000001 22612 Table_map 1 22651 table_id: 25 (test.t1) -master-bin.000001 22651 Write_rows 1 22685 table_id: 25 flags: STMT_END_F -master-bin.000001 22685 Table_map 1 22724 table_id: 25 (test.t1) -master-bin.000001 22724 Write_rows 1 22758 table_id: 25 flags: STMT_END_F -master-bin.000001 22758 Table_map 1 22797 table_id: 25 (test.t1) -master-bin.000001 22797 Write_rows 1 22831 table_id: 25 flags: STMT_END_F -master-bin.000001 22831 Table_map 1 22870 table_id: 25 (test.t1) -master-bin.000001 22870 Write_rows 1 22904 table_id: 25 flags: STMT_END_F -master-bin.000001 22904 Table_map 1 22943 table_id: 25 (test.t1) -master-bin.000001 22943 Write_rows 1 22977 table_id: 25 flags: STMT_END_F -master-bin.000001 22977 Table_map 1 23016 table_id: 25 (test.t1) -master-bin.000001 23016 Write_rows 1 23050 table_id: 25 flags: STMT_END_F -master-bin.000001 23050 Table_map 1 23089 table_id: 25 (test.t1) -master-bin.000001 23089 Write_rows 1 23123 table_id: 25 flags: STMT_END_F -master-bin.000001 23123 Table_map 1 23162 table_id: 25 (test.t1) -master-bin.000001 23162 Write_rows 1 23196 table_id: 25 flags: STMT_END_F -master-bin.000001 23196 Table_map 1 23235 table_id: 25 (test.t1) -master-bin.000001 23235 Write_rows 1 23269 table_id: 25 flags: STMT_END_F -master-bin.000001 23269 Table_map 1 23308 table_id: 25 (test.t1) -master-bin.000001 23308 Write_rows 1 23342 table_id: 25 flags: STMT_END_F -master-bin.000001 23342 Table_map 1 23381 table_id: 25 (test.t1) -master-bin.000001 23381 Write_rows 1 23415 table_id: 25 flags: STMT_END_F -master-bin.000001 23415 Table_map 1 23454 table_id: 25 (test.t1) -master-bin.000001 23454 Write_rows 1 23488 table_id: 25 flags: STMT_END_F -master-bin.000001 23488 Table_map 1 23527 table_id: 25 (test.t1) -master-bin.000001 23527 Write_rows 1 23561 table_id: 25 flags: STMT_END_F -master-bin.000001 23561 Table_map 1 23600 table_id: 25 (test.t1) -master-bin.000001 23600 Write_rows 1 23634 table_id: 25 flags: STMT_END_F -master-bin.000001 23634 Table_map 1 23673 table_id: 25 (test.t1) -master-bin.000001 23673 Write_rows 1 23707 table_id: 25 flags: STMT_END_F -master-bin.000001 23707 Table_map 1 23746 table_id: 25 (test.t1) -master-bin.000001 23746 Write_rows 1 23780 table_id: 25 flags: STMT_END_F -master-bin.000001 23780 Table_map 1 23819 table_id: 25 (test.t1) -master-bin.000001 23819 Write_rows 1 23853 table_id: 25 flags: STMT_END_F -master-bin.000001 23853 Table_map 1 23892 table_id: 25 (test.t1) -master-bin.000001 23892 Write_rows 1 23926 table_id: 25 flags: STMT_END_F -master-bin.000001 23926 Table_map 1 23965 table_id: 25 (test.t1) -master-bin.000001 23965 Write_rows 1 23999 table_id: 25 flags: STMT_END_F -master-bin.000001 23999 Table_map 1 24038 table_id: 25 (test.t1) -master-bin.000001 24038 Write_rows 1 24072 table_id: 25 flags: STMT_END_F -master-bin.000001 24072 Table_map 1 24111 table_id: 25 (test.t1) -master-bin.000001 24111 Write_rows 1 24145 table_id: 25 flags: STMT_END_F -master-bin.000001 24145 Table_map 1 24184 table_id: 25 (test.t1) -master-bin.000001 24184 Write_rows 1 24218 table_id: 25 flags: STMT_END_F -master-bin.000001 24218 Table_map 1 24257 table_id: 25 (test.t1) -master-bin.000001 24257 Write_rows 1 24291 table_id: 25 flags: STMT_END_F -master-bin.000001 24291 Table_map 1 24330 table_id: 25 (test.t1) -master-bin.000001 24330 Write_rows 1 24364 table_id: 25 flags: STMT_END_F -master-bin.000001 24364 Table_map 1 24403 table_id: 25 (test.t1) -master-bin.000001 24403 Write_rows 1 24437 table_id: 25 flags: STMT_END_F -master-bin.000001 24437 Table_map 1 24476 table_id: 25 (test.t1) -master-bin.000001 24476 Write_rows 1 24510 table_id: 25 flags: STMT_END_F -master-bin.000001 24510 Table_map 1 24549 table_id: 25 (test.t1) -master-bin.000001 24549 Write_rows 1 24583 table_id: 25 flags: STMT_END_F -master-bin.000001 24583 Table_map 1 24622 table_id: 25 (test.t1) -master-bin.000001 24622 Write_rows 1 24656 table_id: 25 flags: STMT_END_F -master-bin.000001 24656 Table_map 1 24695 table_id: 25 (test.t1) -master-bin.000001 24695 Write_rows 1 24729 table_id: 25 flags: STMT_END_F -master-bin.000001 24729 Table_map 1 24768 table_id: 25 (test.t1) -master-bin.000001 24768 Write_rows 1 24802 table_id: 25 flags: STMT_END_F -master-bin.000001 24802 Table_map 1 24841 table_id: 25 (test.t1) -master-bin.000001 24841 Write_rows 1 24875 table_id: 25 flags: STMT_END_F -master-bin.000001 24875 Table_map 1 24914 table_id: 25 (test.t1) -master-bin.000001 24914 Write_rows 1 24948 table_id: 25 flags: STMT_END_F -master-bin.000001 24948 Table_map 1 24987 table_id: 25 (test.t1) -master-bin.000001 24987 Write_rows 1 25021 table_id: 25 flags: STMT_END_F -master-bin.000001 25021 Table_map 1 25060 table_id: 25 (test.t1) -master-bin.000001 25060 Write_rows 1 25094 table_id: 25 flags: STMT_END_F -master-bin.000001 25094 Table_map 1 25133 table_id: 25 (test.t1) -master-bin.000001 25133 Write_rows 1 25167 table_id: 25 flags: STMT_END_F -master-bin.000001 25167 Table_map 1 25206 table_id: 25 (test.t1) -master-bin.000001 25206 Write_rows 1 25240 table_id: 25 flags: STMT_END_F -master-bin.000001 25240 Table_map 1 25279 table_id: 25 (test.t1) -master-bin.000001 25279 Write_rows 1 25313 table_id: 25 flags: STMT_END_F -master-bin.000001 25313 Table_map 1 25352 table_id: 25 (test.t1) -master-bin.000001 25352 Write_rows 1 25386 table_id: 25 flags: STMT_END_F -master-bin.000001 25386 Table_map 1 25425 table_id: 25 (test.t1) -master-bin.000001 25425 Write_rows 1 25459 table_id: 25 flags: STMT_END_F -master-bin.000001 25459 Table_map 1 25498 table_id: 25 (test.t1) -master-bin.000001 25498 Write_rows 1 25532 table_id: 25 flags: STMT_END_F -master-bin.000001 25532 Table_map 1 25571 table_id: 25 (test.t1) -master-bin.000001 25571 Write_rows 1 25605 table_id: 25 flags: STMT_END_F -master-bin.000001 25605 Table_map 1 25644 table_id: 25 (test.t1) -master-bin.000001 25644 Write_rows 1 25678 table_id: 25 flags: STMT_END_F -master-bin.000001 25678 Table_map 1 25717 table_id: 25 (test.t1) -master-bin.000001 25717 Write_rows 1 25751 table_id: 25 flags: STMT_END_F -master-bin.000001 25751 Table_map 1 25790 table_id: 25 (test.t1) -master-bin.000001 25790 Write_rows 1 25824 table_id: 25 flags: STMT_END_F -master-bin.000001 25824 Table_map 1 25863 table_id: 25 (test.t1) -master-bin.000001 25863 Write_rows 1 25897 table_id: 25 flags: STMT_END_F -master-bin.000001 25897 Table_map 1 25936 table_id: 25 (test.t1) -master-bin.000001 25936 Write_rows 1 25970 table_id: 25 flags: STMT_END_F -master-bin.000001 25970 Table_map 1 26009 table_id: 25 (test.t1) -master-bin.000001 26009 Write_rows 1 26043 table_id: 25 flags: STMT_END_F -master-bin.000001 26043 Table_map 1 26082 table_id: 25 (test.t1) -master-bin.000001 26082 Write_rows 1 26116 table_id: 25 flags: STMT_END_F -master-bin.000001 26116 Table_map 1 26155 table_id: 25 (test.t1) -master-bin.000001 26155 Write_rows 1 26189 table_id: 25 flags: STMT_END_F -master-bin.000001 26189 Table_map 1 26228 table_id: 25 (test.t1) -master-bin.000001 26228 Write_rows 1 26262 table_id: 25 flags: STMT_END_F -master-bin.000001 26262 Table_map 1 26301 table_id: 25 (test.t1) -master-bin.000001 26301 Write_rows 1 26335 table_id: 25 flags: STMT_END_F -master-bin.000001 26335 Table_map 1 26374 table_id: 25 (test.t1) -master-bin.000001 26374 Write_rows 1 26408 table_id: 25 flags: STMT_END_F -master-bin.000001 26408 Table_map 1 26447 table_id: 25 (test.t1) -master-bin.000001 26447 Write_rows 1 26481 table_id: 25 flags: STMT_END_F -master-bin.000001 26481 Table_map 1 26520 table_id: 25 (test.t1) -master-bin.000001 26520 Write_rows 1 26554 table_id: 25 flags: STMT_END_F -master-bin.000001 26554 Table_map 1 26593 table_id: 25 (test.t1) -master-bin.000001 26593 Write_rows 1 26627 table_id: 25 flags: STMT_END_F -master-bin.000001 26627 Table_map 1 26666 table_id: 25 (test.t1) -master-bin.000001 26666 Write_rows 1 26700 table_id: 25 flags: STMT_END_F -master-bin.000001 26700 Table_map 1 26739 table_id: 25 (test.t1) -master-bin.000001 26739 Write_rows 1 26773 table_id: 25 flags: STMT_END_F -master-bin.000001 26773 Table_map 1 26812 table_id: 25 (test.t1) -master-bin.000001 26812 Write_rows 1 26846 table_id: 25 flags: STMT_END_F -master-bin.000001 26846 Table_map 1 26885 table_id: 25 (test.t1) -master-bin.000001 26885 Write_rows 1 26919 table_id: 25 flags: STMT_END_F -master-bin.000001 26919 Table_map 1 26958 table_id: 25 (test.t1) -master-bin.000001 26958 Write_rows 1 26992 table_id: 25 flags: STMT_END_F -master-bin.000001 26992 Table_map 1 27031 table_id: 25 (test.t1) -master-bin.000001 27031 Write_rows 1 27065 table_id: 25 flags: STMT_END_F -master-bin.000001 27065 Table_map 1 27104 table_id: 25 (test.t1) -master-bin.000001 27104 Write_rows 1 27138 table_id: 25 flags: STMT_END_F -master-bin.000001 27138 Table_map 1 27177 table_id: 25 (test.t1) -master-bin.000001 27177 Write_rows 1 27211 table_id: 25 flags: STMT_END_F -master-bin.000001 27211 Table_map 1 27250 table_id: 25 (test.t1) -master-bin.000001 27250 Write_rows 1 27284 table_id: 25 flags: STMT_END_F -master-bin.000001 27284 Table_map 1 27323 table_id: 25 (test.t1) -master-bin.000001 27323 Write_rows 1 27357 table_id: 25 flags: STMT_END_F -master-bin.000001 27357 Table_map 1 27396 table_id: 25 (test.t1) -master-bin.000001 27396 Write_rows 1 27430 table_id: 25 flags: STMT_END_F -master-bin.000001 27430 Table_map 1 27469 table_id: 25 (test.t1) -master-bin.000001 27469 Write_rows 1 27503 table_id: 25 flags: STMT_END_F -master-bin.000001 27503 Table_map 1 27542 table_id: 25 (test.t1) -master-bin.000001 27542 Write_rows 1 27576 table_id: 25 flags: STMT_END_F -master-bin.000001 27576 Table_map 1 27615 table_id: 25 (test.t1) -master-bin.000001 27615 Write_rows 1 27649 table_id: 25 flags: STMT_END_F -master-bin.000001 27649 Table_map 1 27688 table_id: 25 (test.t1) -master-bin.000001 27688 Write_rows 1 27722 table_id: 25 flags: STMT_END_F -master-bin.000001 27722 Table_map 1 27761 table_id: 25 (test.t1) -master-bin.000001 27761 Write_rows 1 27795 table_id: 25 flags: STMT_END_F -master-bin.000001 27795 Table_map 1 27834 table_id: 25 (test.t1) -master-bin.000001 27834 Write_rows 1 27868 table_id: 25 flags: STMT_END_F -master-bin.000001 27868 Table_map 1 27907 table_id: 25 (test.t1) -master-bin.000001 27907 Write_rows 1 27941 table_id: 25 flags: STMT_END_F -master-bin.000001 27941 Table_map 1 27980 table_id: 25 (test.t1) -master-bin.000001 27980 Write_rows 1 28014 table_id: 25 flags: STMT_END_F -master-bin.000001 28014 Table_map 1 28053 table_id: 25 (test.t1) -master-bin.000001 28053 Write_rows 1 28087 table_id: 25 flags: STMT_END_F -master-bin.000001 28087 Table_map 1 28126 table_id: 25 (test.t1) -master-bin.000001 28126 Write_rows 1 28160 table_id: 25 flags: STMT_END_F -master-bin.000001 28160 Table_map 1 28199 table_id: 25 (test.t1) -master-bin.000001 28199 Write_rows 1 28233 table_id: 25 flags: STMT_END_F -master-bin.000001 28233 Table_map 1 28272 table_id: 25 (test.t1) -master-bin.000001 28272 Write_rows 1 28306 table_id: 25 flags: STMT_END_F -master-bin.000001 28306 Table_map 1 28345 table_id: 25 (test.t1) -master-bin.000001 28345 Write_rows 1 28379 table_id: 25 flags: STMT_END_F -master-bin.000001 28379 Table_map 1 28418 table_id: 25 (test.t1) -master-bin.000001 28418 Write_rows 1 28452 table_id: 25 flags: STMT_END_F -master-bin.000001 28452 Table_map 1 28491 table_id: 25 (test.t1) -master-bin.000001 28491 Write_rows 1 28525 table_id: 25 flags: STMT_END_F -master-bin.000001 28525 Table_map 1 28564 table_id: 25 (test.t1) -master-bin.000001 28564 Write_rows 1 28598 table_id: 25 flags: STMT_END_F -master-bin.000001 28598 Table_map 1 28637 table_id: 25 (test.t1) -master-bin.000001 28637 Write_rows 1 28671 table_id: 25 flags: STMT_END_F -master-bin.000001 28671 Table_map 1 28710 table_id: 25 (test.t1) -master-bin.000001 28710 Write_rows 1 28744 table_id: 25 flags: STMT_END_F -master-bin.000001 28744 Table_map 1 28783 table_id: 25 (test.t1) -master-bin.000001 28783 Write_rows 1 28817 table_id: 25 flags: STMT_END_F -master-bin.000001 28817 Table_map 1 28856 table_id: 25 (test.t1) -master-bin.000001 28856 Write_rows 1 28890 table_id: 25 flags: STMT_END_F -master-bin.000001 28890 Table_map 1 28929 table_id: 25 (test.t1) -master-bin.000001 28929 Write_rows 1 28963 table_id: 25 flags: STMT_END_F -master-bin.000001 28963 Table_map 1 29002 table_id: 25 (test.t1) -master-bin.000001 29002 Write_rows 1 29036 table_id: 25 flags: STMT_END_F -master-bin.000001 29036 Table_map 1 29075 table_id: 25 (test.t1) -master-bin.000001 29075 Write_rows 1 29109 table_id: 25 flags: STMT_END_F -master-bin.000001 29109 Table_map 1 29148 table_id: 25 (test.t1) -master-bin.000001 29148 Write_rows 1 29182 table_id: 25 flags: STMT_END_F -master-bin.000001 29182 Table_map 1 29221 table_id: 25 (test.t1) -master-bin.000001 29221 Write_rows 1 29255 table_id: 25 flags: STMT_END_F -master-bin.000001 29255 Table_map 1 29294 table_id: 25 (test.t1) -master-bin.000001 29294 Write_rows 1 29328 table_id: 25 flags: STMT_END_F -master-bin.000001 29328 Table_map 1 29367 table_id: 25 (test.t1) -master-bin.000001 29367 Write_rows 1 29401 table_id: 25 flags: STMT_END_F -master-bin.000001 29401 Table_map 1 29440 table_id: 25 (test.t1) -master-bin.000001 29440 Write_rows 1 29474 table_id: 25 flags: STMT_END_F -master-bin.000001 29474 Xid 1 29501 COMMIT /* xid=189 */ +master-bin.000001 274 Table_map 1 313 table_id: # (test.t1) +master-bin.000001 313 Write_rows 1 347 table_id: # flags: STMT_END_F +master-bin.000001 347 Table_map 1 386 table_id: # (test.t1) +master-bin.000001 386 Write_rows 1 420 table_id: # flags: STMT_END_F +master-bin.000001 420 Table_map 1 459 table_id: # (test.t1) +master-bin.000001 459 Write_rows 1 493 table_id: # flags: STMT_END_F +master-bin.000001 493 Table_map 1 532 table_id: # (test.t1) +master-bin.000001 532 Write_rows 1 566 table_id: # flags: STMT_END_F +master-bin.000001 566 Table_map 1 605 table_id: # (test.t1) +master-bin.000001 605 Write_rows 1 639 table_id: # flags: STMT_END_F +master-bin.000001 639 Table_map 1 678 table_id: # (test.t1) +master-bin.000001 678 Write_rows 1 712 table_id: # flags: STMT_END_F +master-bin.000001 712 Table_map 1 751 table_id: # (test.t1) +master-bin.000001 751 Write_rows 1 785 table_id: # flags: STMT_END_F +master-bin.000001 785 Table_map 1 824 table_id: # (test.t1) +master-bin.000001 824 Write_rows 1 858 table_id: # flags: STMT_END_F +master-bin.000001 858 Table_map 1 897 table_id: # (test.t1) +master-bin.000001 897 Write_rows 1 931 table_id: # flags: STMT_END_F +master-bin.000001 931 Table_map 1 970 table_id: # (test.t1) +master-bin.000001 970 Write_rows 1 1004 table_id: # flags: STMT_END_F +master-bin.000001 1004 Table_map 1 1043 table_id: # (test.t1) +master-bin.000001 1043 Write_rows 1 1077 table_id: # flags: STMT_END_F +master-bin.000001 1077 Table_map 1 1116 table_id: # (test.t1) +master-bin.000001 1116 Write_rows 1 1150 table_id: # flags: STMT_END_F +master-bin.000001 1150 Table_map 1 1189 table_id: # (test.t1) +master-bin.000001 1189 Write_rows 1 1223 table_id: # flags: STMT_END_F +master-bin.000001 1223 Table_map 1 1262 table_id: # (test.t1) +master-bin.000001 1262 Write_rows 1 1296 table_id: # flags: STMT_END_F +master-bin.000001 1296 Table_map 1 1335 table_id: # (test.t1) +master-bin.000001 1335 Write_rows 1 1369 table_id: # flags: STMT_END_F +master-bin.000001 1369 Table_map 1 1408 table_id: # (test.t1) +master-bin.000001 1408 Write_rows 1 1442 table_id: # flags: STMT_END_F +master-bin.000001 1442 Table_map 1 1481 table_id: # (test.t1) +master-bin.000001 1481 Write_rows 1 1515 table_id: # flags: STMT_END_F +master-bin.000001 1515 Table_map 1 1554 table_id: # (test.t1) +master-bin.000001 1554 Write_rows 1 1588 table_id: # flags: STMT_END_F +master-bin.000001 1588 Table_map 1 1627 table_id: # (test.t1) +master-bin.000001 1627 Write_rows 1 1661 table_id: # flags: STMT_END_F +master-bin.000001 1661 Table_map 1 1700 table_id: # (test.t1) +master-bin.000001 1700 Write_rows 1 1734 table_id: # flags: STMT_END_F +master-bin.000001 1734 Table_map 1 1773 table_id: # (test.t1) +master-bin.000001 1773 Write_rows 1 1807 table_id: # flags: STMT_END_F +master-bin.000001 1807 Table_map 1 1846 table_id: # (test.t1) +master-bin.000001 1846 Write_rows 1 1880 table_id: # flags: STMT_END_F +master-bin.000001 1880 Table_map 1 1919 table_id: # (test.t1) +master-bin.000001 1919 Write_rows 1 1953 table_id: # flags: STMT_END_F +master-bin.000001 1953 Table_map 1 1992 table_id: # (test.t1) +master-bin.000001 1992 Write_rows 1 2026 table_id: # flags: STMT_END_F +master-bin.000001 2026 Table_map 1 2065 table_id: # (test.t1) +master-bin.000001 2065 Write_rows 1 2099 table_id: # flags: STMT_END_F +master-bin.000001 2099 Table_map 1 2138 table_id: # (test.t1) +master-bin.000001 2138 Write_rows 1 2172 table_id: # flags: STMT_END_F +master-bin.000001 2172 Table_map 1 2211 table_id: # (test.t1) +master-bin.000001 2211 Write_rows 1 2245 table_id: # flags: STMT_END_F +master-bin.000001 2245 Table_map 1 2284 table_id: # (test.t1) +master-bin.000001 2284 Write_rows 1 2318 table_id: # flags: STMT_END_F +master-bin.000001 2318 Table_map 1 2357 table_id: # (test.t1) +master-bin.000001 2357 Write_rows 1 2391 table_id: # flags: STMT_END_F +master-bin.000001 2391 Table_map 1 2430 table_id: # (test.t1) +master-bin.000001 2430 Write_rows 1 2464 table_id: # flags: STMT_END_F +master-bin.000001 2464 Table_map 1 2503 table_id: # (test.t1) +master-bin.000001 2503 Write_rows 1 2537 table_id: # flags: STMT_END_F +master-bin.000001 2537 Table_map 1 2576 table_id: # (test.t1) +master-bin.000001 2576 Write_rows 1 2610 table_id: # flags: STMT_END_F +master-bin.000001 2610 Table_map 1 2649 table_id: # (test.t1) +master-bin.000001 2649 Write_rows 1 2683 table_id: # flags: STMT_END_F +master-bin.000001 2683 Table_map 1 2722 table_id: # (test.t1) +master-bin.000001 2722 Write_rows 1 2756 table_id: # flags: STMT_END_F +master-bin.000001 2756 Table_map 1 2795 table_id: # (test.t1) +master-bin.000001 2795 Write_rows 1 2829 table_id: # flags: STMT_END_F +master-bin.000001 2829 Table_map 1 2868 table_id: # (test.t1) +master-bin.000001 2868 Write_rows 1 2902 table_id: # flags: STMT_END_F +master-bin.000001 2902 Table_map 1 2941 table_id: # (test.t1) +master-bin.000001 2941 Write_rows 1 2975 table_id: # flags: STMT_END_F +master-bin.000001 2975 Table_map 1 3014 table_id: # (test.t1) +master-bin.000001 3014 Write_rows 1 3048 table_id: # flags: STMT_END_F +master-bin.000001 3048 Table_map 1 3087 table_id: # (test.t1) +master-bin.000001 3087 Write_rows 1 3121 table_id: # flags: STMT_END_F +master-bin.000001 3121 Table_map 1 3160 table_id: # (test.t1) +master-bin.000001 3160 Write_rows 1 3194 table_id: # flags: STMT_END_F +master-bin.000001 3194 Table_map 1 3233 table_id: # (test.t1) +master-bin.000001 3233 Write_rows 1 3267 table_id: # flags: STMT_END_F +master-bin.000001 3267 Table_map 1 3306 table_id: # (test.t1) +master-bin.000001 3306 Write_rows 1 3340 table_id: # flags: STMT_END_F +master-bin.000001 3340 Table_map 1 3379 table_id: # (test.t1) +master-bin.000001 3379 Write_rows 1 3413 table_id: # flags: STMT_END_F +master-bin.000001 3413 Table_map 1 3452 table_id: # (test.t1) +master-bin.000001 3452 Write_rows 1 3486 table_id: # flags: STMT_END_F +master-bin.000001 3486 Table_map 1 3525 table_id: # (test.t1) +master-bin.000001 3525 Write_rows 1 3559 table_id: # flags: STMT_END_F +master-bin.000001 3559 Table_map 1 3598 table_id: # (test.t1) +master-bin.000001 3598 Write_rows 1 3632 table_id: # flags: STMT_END_F +master-bin.000001 3632 Table_map 1 3671 table_id: # (test.t1) +master-bin.000001 3671 Write_rows 1 3705 table_id: # flags: STMT_END_F +master-bin.000001 3705 Table_map 1 3744 table_id: # (test.t1) +master-bin.000001 3744 Write_rows 1 3778 table_id: # flags: STMT_END_F +master-bin.000001 3778 Table_map 1 3817 table_id: # (test.t1) +master-bin.000001 3817 Write_rows 1 3851 table_id: # flags: STMT_END_F +master-bin.000001 3851 Table_map 1 3890 table_id: # (test.t1) +master-bin.000001 3890 Write_rows 1 3924 table_id: # flags: STMT_END_F +master-bin.000001 3924 Table_map 1 3963 table_id: # (test.t1) +master-bin.000001 3963 Write_rows 1 3997 table_id: # flags: STMT_END_F +master-bin.000001 3997 Table_map 1 4036 table_id: # (test.t1) +master-bin.000001 4036 Write_rows 1 4070 table_id: # flags: STMT_END_F +master-bin.000001 4070 Table_map 1 4109 table_id: # (test.t1) +master-bin.000001 4109 Write_rows 1 4143 table_id: # flags: STMT_END_F +master-bin.000001 4143 Table_map 1 4182 table_id: # (test.t1) +master-bin.000001 4182 Write_rows 1 4216 table_id: # flags: STMT_END_F +master-bin.000001 4216 Table_map 1 4255 table_id: # (test.t1) +master-bin.000001 4255 Write_rows 1 4289 table_id: # flags: STMT_END_F +master-bin.000001 4289 Table_map 1 4328 table_id: # (test.t1) +master-bin.000001 4328 Write_rows 1 4362 table_id: # flags: STMT_END_F +master-bin.000001 4362 Table_map 1 4401 table_id: # (test.t1) +master-bin.000001 4401 Write_rows 1 4435 table_id: # flags: STMT_END_F +master-bin.000001 4435 Table_map 1 4474 table_id: # (test.t1) +master-bin.000001 4474 Write_rows 1 4508 table_id: # flags: STMT_END_F +master-bin.000001 4508 Table_map 1 4547 table_id: # (test.t1) +master-bin.000001 4547 Write_rows 1 4581 table_id: # flags: STMT_END_F +master-bin.000001 4581 Table_map 1 4620 table_id: # (test.t1) +master-bin.000001 4620 Write_rows 1 4654 table_id: # flags: STMT_END_F +master-bin.000001 4654 Table_map 1 4693 table_id: # (test.t1) +master-bin.000001 4693 Write_rows 1 4727 table_id: # flags: STMT_END_F +master-bin.000001 4727 Table_map 1 4766 table_id: # (test.t1) +master-bin.000001 4766 Write_rows 1 4800 table_id: # flags: STMT_END_F +master-bin.000001 4800 Table_map 1 4839 table_id: # (test.t1) +master-bin.000001 4839 Write_rows 1 4873 table_id: # flags: STMT_END_F +master-bin.000001 4873 Table_map 1 4912 table_id: # (test.t1) +master-bin.000001 4912 Write_rows 1 4946 table_id: # flags: STMT_END_F +master-bin.000001 4946 Table_map 1 4985 table_id: # (test.t1) +master-bin.000001 4985 Write_rows 1 5019 table_id: # flags: STMT_END_F +master-bin.000001 5019 Table_map 1 5058 table_id: # (test.t1) +master-bin.000001 5058 Write_rows 1 5092 table_id: # flags: STMT_END_F +master-bin.000001 5092 Table_map 1 5131 table_id: # (test.t1) +master-bin.000001 5131 Write_rows 1 5165 table_id: # flags: STMT_END_F +master-bin.000001 5165 Table_map 1 5204 table_id: # (test.t1) +master-bin.000001 5204 Write_rows 1 5238 table_id: # flags: STMT_END_F +master-bin.000001 5238 Table_map 1 5277 table_id: # (test.t1) +master-bin.000001 5277 Write_rows 1 5311 table_id: # flags: STMT_END_F +master-bin.000001 5311 Table_map 1 5350 table_id: # (test.t1) +master-bin.000001 5350 Write_rows 1 5384 table_id: # flags: STMT_END_F +master-bin.000001 5384 Table_map 1 5423 table_id: # (test.t1) +master-bin.000001 5423 Write_rows 1 5457 table_id: # flags: STMT_END_F +master-bin.000001 5457 Table_map 1 5496 table_id: # (test.t1) +master-bin.000001 5496 Write_rows 1 5530 table_id: # flags: STMT_END_F +master-bin.000001 5530 Table_map 1 5569 table_id: # (test.t1) +master-bin.000001 5569 Write_rows 1 5603 table_id: # flags: STMT_END_F +master-bin.000001 5603 Table_map 1 5642 table_id: # (test.t1) +master-bin.000001 5642 Write_rows 1 5676 table_id: # flags: STMT_END_F +master-bin.000001 5676 Table_map 1 5715 table_id: # (test.t1) +master-bin.000001 5715 Write_rows 1 5749 table_id: # flags: STMT_END_F +master-bin.000001 5749 Table_map 1 5788 table_id: # (test.t1) +master-bin.000001 5788 Write_rows 1 5822 table_id: # flags: STMT_END_F +master-bin.000001 5822 Table_map 1 5861 table_id: # (test.t1) +master-bin.000001 5861 Write_rows 1 5895 table_id: # flags: STMT_END_F +master-bin.000001 5895 Table_map 1 5934 table_id: # (test.t1) +master-bin.000001 5934 Write_rows 1 5968 table_id: # flags: STMT_END_F +master-bin.000001 5968 Table_map 1 6007 table_id: # (test.t1) +master-bin.000001 6007 Write_rows 1 6041 table_id: # flags: STMT_END_F +master-bin.000001 6041 Table_map 1 6080 table_id: # (test.t1) +master-bin.000001 6080 Write_rows 1 6114 table_id: # flags: STMT_END_F +master-bin.000001 6114 Table_map 1 6153 table_id: # (test.t1) +master-bin.000001 6153 Write_rows 1 6187 table_id: # flags: STMT_END_F +master-bin.000001 6187 Table_map 1 6226 table_id: # (test.t1) +master-bin.000001 6226 Write_rows 1 6260 table_id: # flags: STMT_END_F +master-bin.000001 6260 Table_map 1 6299 table_id: # (test.t1) +master-bin.000001 6299 Write_rows 1 6333 table_id: # flags: STMT_END_F +master-bin.000001 6333 Table_map 1 6372 table_id: # (test.t1) +master-bin.000001 6372 Write_rows 1 6406 table_id: # flags: STMT_END_F +master-bin.000001 6406 Table_map 1 6445 table_id: # (test.t1) +master-bin.000001 6445 Write_rows 1 6479 table_id: # flags: STMT_END_F +master-bin.000001 6479 Table_map 1 6518 table_id: # (test.t1) +master-bin.000001 6518 Write_rows 1 6552 table_id: # flags: STMT_END_F +master-bin.000001 6552 Table_map 1 6591 table_id: # (test.t1) +master-bin.000001 6591 Write_rows 1 6625 table_id: # flags: STMT_END_F +master-bin.000001 6625 Table_map 1 6664 table_id: # (test.t1) +master-bin.000001 6664 Write_rows 1 6698 table_id: # flags: STMT_END_F +master-bin.000001 6698 Table_map 1 6737 table_id: # (test.t1) +master-bin.000001 6737 Write_rows 1 6771 table_id: # flags: STMT_END_F +master-bin.000001 6771 Table_map 1 6810 table_id: # (test.t1) +master-bin.000001 6810 Write_rows 1 6844 table_id: # flags: STMT_END_F +master-bin.000001 6844 Table_map 1 6883 table_id: # (test.t1) +master-bin.000001 6883 Write_rows 1 6917 table_id: # flags: STMT_END_F +master-bin.000001 6917 Table_map 1 6956 table_id: # (test.t1) +master-bin.000001 6956 Write_rows 1 6990 table_id: # flags: STMT_END_F +master-bin.000001 6990 Table_map 1 7029 table_id: # (test.t1) +master-bin.000001 7029 Write_rows 1 7063 table_id: # flags: STMT_END_F +master-bin.000001 7063 Table_map 1 7102 table_id: # (test.t1) +master-bin.000001 7102 Write_rows 1 7136 table_id: # flags: STMT_END_F +master-bin.000001 7136 Table_map 1 7175 table_id: # (test.t1) +master-bin.000001 7175 Write_rows 1 7209 table_id: # flags: STMT_END_F +master-bin.000001 7209 Table_map 1 7248 table_id: # (test.t1) +master-bin.000001 7248 Write_rows 1 7282 table_id: # flags: STMT_END_F +master-bin.000001 7282 Table_map 1 7321 table_id: # (test.t1) +master-bin.000001 7321 Write_rows 1 7355 table_id: # flags: STMT_END_F +master-bin.000001 7355 Table_map 1 7394 table_id: # (test.t1) +master-bin.000001 7394 Write_rows 1 7428 table_id: # flags: STMT_END_F +master-bin.000001 7428 Table_map 1 7467 table_id: # (test.t1) +master-bin.000001 7467 Write_rows 1 7501 table_id: # flags: STMT_END_F +master-bin.000001 7501 Table_map 1 7540 table_id: # (test.t1) +master-bin.000001 7540 Write_rows 1 7574 table_id: # flags: STMT_END_F +master-bin.000001 7574 Table_map 1 7613 table_id: # (test.t1) +master-bin.000001 7613 Write_rows 1 7647 table_id: # flags: STMT_END_F +master-bin.000001 7647 Table_map 1 7686 table_id: # (test.t1) +master-bin.000001 7686 Write_rows 1 7720 table_id: # flags: STMT_END_F +master-bin.000001 7720 Table_map 1 7759 table_id: # (test.t1) +master-bin.000001 7759 Write_rows 1 7793 table_id: # flags: STMT_END_F +master-bin.000001 7793 Table_map 1 7832 table_id: # (test.t1) +master-bin.000001 7832 Write_rows 1 7866 table_id: # flags: STMT_END_F +master-bin.000001 7866 Table_map 1 7905 table_id: # (test.t1) +master-bin.000001 7905 Write_rows 1 7939 table_id: # flags: STMT_END_F +master-bin.000001 7939 Table_map 1 7978 table_id: # (test.t1) +master-bin.000001 7978 Write_rows 1 8012 table_id: # flags: STMT_END_F +master-bin.000001 8012 Table_map 1 8051 table_id: # (test.t1) +master-bin.000001 8051 Write_rows 1 8085 table_id: # flags: STMT_END_F +master-bin.000001 8085 Table_map 1 8124 table_id: # (test.t1) +master-bin.000001 8124 Write_rows 1 8158 table_id: # flags: STMT_END_F +master-bin.000001 8158 Table_map 1 8197 table_id: # (test.t1) +master-bin.000001 8197 Write_rows 1 8231 table_id: # flags: STMT_END_F +master-bin.000001 8231 Table_map 1 8270 table_id: # (test.t1) +master-bin.000001 8270 Write_rows 1 8304 table_id: # flags: STMT_END_F +master-bin.000001 8304 Table_map 1 8343 table_id: # (test.t1) +master-bin.000001 8343 Write_rows 1 8377 table_id: # flags: STMT_END_F +master-bin.000001 8377 Table_map 1 8416 table_id: # (test.t1) +master-bin.000001 8416 Write_rows 1 8450 table_id: # flags: STMT_END_F +master-bin.000001 8450 Table_map 1 8489 table_id: # (test.t1) +master-bin.000001 8489 Write_rows 1 8523 table_id: # flags: STMT_END_F +master-bin.000001 8523 Table_map 1 8562 table_id: # (test.t1) +master-bin.000001 8562 Write_rows 1 8596 table_id: # flags: STMT_END_F +master-bin.000001 8596 Table_map 1 8635 table_id: # (test.t1) +master-bin.000001 8635 Write_rows 1 8669 table_id: # flags: STMT_END_F +master-bin.000001 8669 Table_map 1 8708 table_id: # (test.t1) +master-bin.000001 8708 Write_rows 1 8742 table_id: # flags: STMT_END_F +master-bin.000001 8742 Table_map 1 8781 table_id: # (test.t1) +master-bin.000001 8781 Write_rows 1 8815 table_id: # flags: STMT_END_F +master-bin.000001 8815 Table_map 1 8854 table_id: # (test.t1) +master-bin.000001 8854 Write_rows 1 8888 table_id: # flags: STMT_END_F +master-bin.000001 8888 Table_map 1 8927 table_id: # (test.t1) +master-bin.000001 8927 Write_rows 1 8961 table_id: # flags: STMT_END_F +master-bin.000001 8961 Table_map 1 9000 table_id: # (test.t1) +master-bin.000001 9000 Write_rows 1 9034 table_id: # flags: STMT_END_F +master-bin.000001 9034 Table_map 1 9073 table_id: # (test.t1) +master-bin.000001 9073 Write_rows 1 9107 table_id: # flags: STMT_END_F +master-bin.000001 9107 Table_map 1 9146 table_id: # (test.t1) +master-bin.000001 9146 Write_rows 1 9180 table_id: # flags: STMT_END_F +master-bin.000001 9180 Table_map 1 9219 table_id: # (test.t1) +master-bin.000001 9219 Write_rows 1 9253 table_id: # flags: STMT_END_F +master-bin.000001 9253 Table_map 1 9292 table_id: # (test.t1) +master-bin.000001 9292 Write_rows 1 9326 table_id: # flags: STMT_END_F +master-bin.000001 9326 Table_map 1 9365 table_id: # (test.t1) +master-bin.000001 9365 Write_rows 1 9399 table_id: # flags: STMT_END_F +master-bin.000001 9399 Table_map 1 9438 table_id: # (test.t1) +master-bin.000001 9438 Write_rows 1 9472 table_id: # flags: STMT_END_F +master-bin.000001 9472 Table_map 1 9511 table_id: # (test.t1) +master-bin.000001 9511 Write_rows 1 9545 table_id: # flags: STMT_END_F +master-bin.000001 9545 Table_map 1 9584 table_id: # (test.t1) +master-bin.000001 9584 Write_rows 1 9618 table_id: # flags: STMT_END_F +master-bin.000001 9618 Table_map 1 9657 table_id: # (test.t1) +master-bin.000001 9657 Write_rows 1 9691 table_id: # flags: STMT_END_F +master-bin.000001 9691 Table_map 1 9730 table_id: # (test.t1) +master-bin.000001 9730 Write_rows 1 9764 table_id: # flags: STMT_END_F +master-bin.000001 9764 Table_map 1 9803 table_id: # (test.t1) +master-bin.000001 9803 Write_rows 1 9837 table_id: # flags: STMT_END_F +master-bin.000001 9837 Table_map 1 9876 table_id: # (test.t1) +master-bin.000001 9876 Write_rows 1 9910 table_id: # flags: STMT_END_F +master-bin.000001 9910 Table_map 1 9949 table_id: # (test.t1) +master-bin.000001 9949 Write_rows 1 9983 table_id: # flags: STMT_END_F +master-bin.000001 9983 Table_map 1 10022 table_id: # (test.t1) +master-bin.000001 10022 Write_rows 1 10056 table_id: # flags: STMT_END_F +master-bin.000001 10056 Table_map 1 10095 table_id: # (test.t1) +master-bin.000001 10095 Write_rows 1 10129 table_id: # flags: STMT_END_F +master-bin.000001 10129 Table_map 1 10168 table_id: # (test.t1) +master-bin.000001 10168 Write_rows 1 10202 table_id: # flags: STMT_END_F +master-bin.000001 10202 Table_map 1 10241 table_id: # (test.t1) +master-bin.000001 10241 Write_rows 1 10275 table_id: # flags: STMT_END_F +master-bin.000001 10275 Table_map 1 10314 table_id: # (test.t1) +master-bin.000001 10314 Write_rows 1 10348 table_id: # flags: STMT_END_F +master-bin.000001 10348 Table_map 1 10387 table_id: # (test.t1) +master-bin.000001 10387 Write_rows 1 10421 table_id: # flags: STMT_END_F +master-bin.000001 10421 Table_map 1 10460 table_id: # (test.t1) +master-bin.000001 10460 Write_rows 1 10494 table_id: # flags: STMT_END_F +master-bin.000001 10494 Table_map 1 10533 table_id: # (test.t1) +master-bin.000001 10533 Write_rows 1 10567 table_id: # flags: STMT_END_F +master-bin.000001 10567 Table_map 1 10606 table_id: # (test.t1) +master-bin.000001 10606 Write_rows 1 10640 table_id: # flags: STMT_END_F +master-bin.000001 10640 Table_map 1 10679 table_id: # (test.t1) +master-bin.000001 10679 Write_rows 1 10713 table_id: # flags: STMT_END_F +master-bin.000001 10713 Table_map 1 10752 table_id: # (test.t1) +master-bin.000001 10752 Write_rows 1 10786 table_id: # flags: STMT_END_F +master-bin.000001 10786 Table_map 1 10825 table_id: # (test.t1) +master-bin.000001 10825 Write_rows 1 10859 table_id: # flags: STMT_END_F +master-bin.000001 10859 Table_map 1 10898 table_id: # (test.t1) +master-bin.000001 10898 Write_rows 1 10932 table_id: # flags: STMT_END_F +master-bin.000001 10932 Table_map 1 10971 table_id: # (test.t1) +master-bin.000001 10971 Write_rows 1 11005 table_id: # flags: STMT_END_F +master-bin.000001 11005 Table_map 1 11044 table_id: # (test.t1) +master-bin.000001 11044 Write_rows 1 11078 table_id: # flags: STMT_END_F +master-bin.000001 11078 Table_map 1 11117 table_id: # (test.t1) +master-bin.000001 11117 Write_rows 1 11151 table_id: # flags: STMT_END_F +master-bin.000001 11151 Table_map 1 11190 table_id: # (test.t1) +master-bin.000001 11190 Write_rows 1 11224 table_id: # flags: STMT_END_F +master-bin.000001 11224 Table_map 1 11263 table_id: # (test.t1) +master-bin.000001 11263 Write_rows 1 11297 table_id: # flags: STMT_END_F +master-bin.000001 11297 Table_map 1 11336 table_id: # (test.t1) +master-bin.000001 11336 Write_rows 1 11370 table_id: # flags: STMT_END_F +master-bin.000001 11370 Table_map 1 11409 table_id: # (test.t1) +master-bin.000001 11409 Write_rows 1 11443 table_id: # flags: STMT_END_F +master-bin.000001 11443 Table_map 1 11482 table_id: # (test.t1) +master-bin.000001 11482 Write_rows 1 11516 table_id: # flags: STMT_END_F +master-bin.000001 11516 Table_map 1 11555 table_id: # (test.t1) +master-bin.000001 11555 Write_rows 1 11589 table_id: # flags: STMT_END_F +master-bin.000001 11589 Table_map 1 11628 table_id: # (test.t1) +master-bin.000001 11628 Write_rows 1 11662 table_id: # flags: STMT_END_F +master-bin.000001 11662 Table_map 1 11701 table_id: # (test.t1) +master-bin.000001 11701 Write_rows 1 11735 table_id: # flags: STMT_END_F +master-bin.000001 11735 Table_map 1 11774 table_id: # (test.t1) +master-bin.000001 11774 Write_rows 1 11808 table_id: # flags: STMT_END_F +master-bin.000001 11808 Table_map 1 11847 table_id: # (test.t1) +master-bin.000001 11847 Write_rows 1 11881 table_id: # flags: STMT_END_F +master-bin.000001 11881 Table_map 1 11920 table_id: # (test.t1) +master-bin.000001 11920 Write_rows 1 11954 table_id: # flags: STMT_END_F +master-bin.000001 11954 Table_map 1 11993 table_id: # (test.t1) +master-bin.000001 11993 Write_rows 1 12027 table_id: # flags: STMT_END_F +master-bin.000001 12027 Table_map 1 12066 table_id: # (test.t1) +master-bin.000001 12066 Write_rows 1 12100 table_id: # flags: STMT_END_F +master-bin.000001 12100 Table_map 1 12139 table_id: # (test.t1) +master-bin.000001 12139 Write_rows 1 12173 table_id: # flags: STMT_END_F +master-bin.000001 12173 Table_map 1 12212 table_id: # (test.t1) +master-bin.000001 12212 Write_rows 1 12246 table_id: # flags: STMT_END_F +master-bin.000001 12246 Table_map 1 12285 table_id: # (test.t1) +master-bin.000001 12285 Write_rows 1 12319 table_id: # flags: STMT_END_F +master-bin.000001 12319 Table_map 1 12358 table_id: # (test.t1) +master-bin.000001 12358 Write_rows 1 12392 table_id: # flags: STMT_END_F +master-bin.000001 12392 Table_map 1 12431 table_id: # (test.t1) +master-bin.000001 12431 Write_rows 1 12465 table_id: # flags: STMT_END_F +master-bin.000001 12465 Table_map 1 12504 table_id: # (test.t1) +master-bin.000001 12504 Write_rows 1 12538 table_id: # flags: STMT_END_F +master-bin.000001 12538 Table_map 1 12577 table_id: # (test.t1) +master-bin.000001 12577 Write_rows 1 12611 table_id: # flags: STMT_END_F +master-bin.000001 12611 Table_map 1 12650 table_id: # (test.t1) +master-bin.000001 12650 Write_rows 1 12684 table_id: # flags: STMT_END_F +master-bin.000001 12684 Table_map 1 12723 table_id: # (test.t1) +master-bin.000001 12723 Write_rows 1 12757 table_id: # flags: STMT_END_F +master-bin.000001 12757 Table_map 1 12796 table_id: # (test.t1) +master-bin.000001 12796 Write_rows 1 12830 table_id: # flags: STMT_END_F +master-bin.000001 12830 Table_map 1 12869 table_id: # (test.t1) +master-bin.000001 12869 Write_rows 1 12903 table_id: # flags: STMT_END_F +master-bin.000001 12903 Table_map 1 12942 table_id: # (test.t1) +master-bin.000001 12942 Write_rows 1 12976 table_id: # flags: STMT_END_F +master-bin.000001 12976 Table_map 1 13015 table_id: # (test.t1) +master-bin.000001 13015 Write_rows 1 13049 table_id: # flags: STMT_END_F +master-bin.000001 13049 Table_map 1 13088 table_id: # (test.t1) +master-bin.000001 13088 Write_rows 1 13122 table_id: # flags: STMT_END_F +master-bin.000001 13122 Table_map 1 13161 table_id: # (test.t1) +master-bin.000001 13161 Write_rows 1 13195 table_id: # flags: STMT_END_F +master-bin.000001 13195 Table_map 1 13234 table_id: # (test.t1) +master-bin.000001 13234 Write_rows 1 13268 table_id: # flags: STMT_END_F +master-bin.000001 13268 Table_map 1 13307 table_id: # (test.t1) +master-bin.000001 13307 Write_rows 1 13341 table_id: # flags: STMT_END_F +master-bin.000001 13341 Table_map 1 13380 table_id: # (test.t1) +master-bin.000001 13380 Write_rows 1 13414 table_id: # flags: STMT_END_F +master-bin.000001 13414 Table_map 1 13453 table_id: # (test.t1) +master-bin.000001 13453 Write_rows 1 13487 table_id: # flags: STMT_END_F +master-bin.000001 13487 Table_map 1 13526 table_id: # (test.t1) +master-bin.000001 13526 Write_rows 1 13560 table_id: # flags: STMT_END_F +master-bin.000001 13560 Table_map 1 13599 table_id: # (test.t1) +master-bin.000001 13599 Write_rows 1 13633 table_id: # flags: STMT_END_F +master-bin.000001 13633 Table_map 1 13672 table_id: # (test.t1) +master-bin.000001 13672 Write_rows 1 13706 table_id: # flags: STMT_END_F +master-bin.000001 13706 Table_map 1 13745 table_id: # (test.t1) +master-bin.000001 13745 Write_rows 1 13779 table_id: # flags: STMT_END_F +master-bin.000001 13779 Table_map 1 13818 table_id: # (test.t1) +master-bin.000001 13818 Write_rows 1 13852 table_id: # flags: STMT_END_F +master-bin.000001 13852 Table_map 1 13891 table_id: # (test.t1) +master-bin.000001 13891 Write_rows 1 13925 table_id: # flags: STMT_END_F +master-bin.000001 13925 Table_map 1 13964 table_id: # (test.t1) +master-bin.000001 13964 Write_rows 1 13998 table_id: # flags: STMT_END_F +master-bin.000001 13998 Table_map 1 14037 table_id: # (test.t1) +master-bin.000001 14037 Write_rows 1 14071 table_id: # flags: STMT_END_F +master-bin.000001 14071 Table_map 1 14110 table_id: # (test.t1) +master-bin.000001 14110 Write_rows 1 14144 table_id: # flags: STMT_END_F +master-bin.000001 14144 Table_map 1 14183 table_id: # (test.t1) +master-bin.000001 14183 Write_rows 1 14217 table_id: # flags: STMT_END_F +master-bin.000001 14217 Table_map 1 14256 table_id: # (test.t1) +master-bin.000001 14256 Write_rows 1 14290 table_id: # flags: STMT_END_F +master-bin.000001 14290 Table_map 1 14329 table_id: # (test.t1) +master-bin.000001 14329 Write_rows 1 14363 table_id: # flags: STMT_END_F +master-bin.000001 14363 Table_map 1 14402 table_id: # (test.t1) +master-bin.000001 14402 Write_rows 1 14436 table_id: # flags: STMT_END_F +master-bin.000001 14436 Table_map 1 14475 table_id: # (test.t1) +master-bin.000001 14475 Write_rows 1 14509 table_id: # flags: STMT_END_F +master-bin.000001 14509 Table_map 1 14548 table_id: # (test.t1) +master-bin.000001 14548 Write_rows 1 14582 table_id: # flags: STMT_END_F +master-bin.000001 14582 Table_map 1 14621 table_id: # (test.t1) +master-bin.000001 14621 Write_rows 1 14655 table_id: # flags: STMT_END_F +master-bin.000001 14655 Table_map 1 14694 table_id: # (test.t1) +master-bin.000001 14694 Write_rows 1 14728 table_id: # flags: STMT_END_F +master-bin.000001 14728 Table_map 1 14767 table_id: # (test.t1) +master-bin.000001 14767 Write_rows 1 14801 table_id: # flags: STMT_END_F +master-bin.000001 14801 Table_map 1 14840 table_id: # (test.t1) +master-bin.000001 14840 Write_rows 1 14874 table_id: # flags: STMT_END_F +master-bin.000001 14874 Table_map 1 14913 table_id: # (test.t1) +master-bin.000001 14913 Write_rows 1 14947 table_id: # flags: STMT_END_F +master-bin.000001 14947 Table_map 1 14986 table_id: # (test.t1) +master-bin.000001 14986 Write_rows 1 15020 table_id: # flags: STMT_END_F +master-bin.000001 15020 Table_map 1 15059 table_id: # (test.t1) +master-bin.000001 15059 Write_rows 1 15093 table_id: # flags: STMT_END_F +master-bin.000001 15093 Table_map 1 15132 table_id: # (test.t1) +master-bin.000001 15132 Write_rows 1 15166 table_id: # flags: STMT_END_F +master-bin.000001 15166 Table_map 1 15205 table_id: # (test.t1) +master-bin.000001 15205 Write_rows 1 15239 table_id: # flags: STMT_END_F +master-bin.000001 15239 Table_map 1 15278 table_id: # (test.t1) +master-bin.000001 15278 Write_rows 1 15312 table_id: # flags: STMT_END_F +master-bin.000001 15312 Table_map 1 15351 table_id: # (test.t1) +master-bin.000001 15351 Write_rows 1 15385 table_id: # flags: STMT_END_F +master-bin.000001 15385 Table_map 1 15424 table_id: # (test.t1) +master-bin.000001 15424 Write_rows 1 15458 table_id: # flags: STMT_END_F +master-bin.000001 15458 Table_map 1 15497 table_id: # (test.t1) +master-bin.000001 15497 Write_rows 1 15531 table_id: # flags: STMT_END_F +master-bin.000001 15531 Table_map 1 15570 table_id: # (test.t1) +master-bin.000001 15570 Write_rows 1 15604 table_id: # flags: STMT_END_F +master-bin.000001 15604 Table_map 1 15643 table_id: # (test.t1) +master-bin.000001 15643 Write_rows 1 15677 table_id: # flags: STMT_END_F +master-bin.000001 15677 Table_map 1 15716 table_id: # (test.t1) +master-bin.000001 15716 Write_rows 1 15750 table_id: # flags: STMT_END_F +master-bin.000001 15750 Table_map 1 15789 table_id: # (test.t1) +master-bin.000001 15789 Write_rows 1 15823 table_id: # flags: STMT_END_F +master-bin.000001 15823 Table_map 1 15862 table_id: # (test.t1) +master-bin.000001 15862 Write_rows 1 15896 table_id: # flags: STMT_END_F +master-bin.000001 15896 Table_map 1 15935 table_id: # (test.t1) +master-bin.000001 15935 Write_rows 1 15969 table_id: # flags: STMT_END_F +master-bin.000001 15969 Table_map 1 16008 table_id: # (test.t1) +master-bin.000001 16008 Write_rows 1 16042 table_id: # flags: STMT_END_F +master-bin.000001 16042 Table_map 1 16081 table_id: # (test.t1) +master-bin.000001 16081 Write_rows 1 16115 table_id: # flags: STMT_END_F +master-bin.000001 16115 Table_map 1 16154 table_id: # (test.t1) +master-bin.000001 16154 Write_rows 1 16188 table_id: # flags: STMT_END_F +master-bin.000001 16188 Table_map 1 16227 table_id: # (test.t1) +master-bin.000001 16227 Write_rows 1 16261 table_id: # flags: STMT_END_F +master-bin.000001 16261 Table_map 1 16300 table_id: # (test.t1) +master-bin.000001 16300 Write_rows 1 16334 table_id: # flags: STMT_END_F +master-bin.000001 16334 Table_map 1 16373 table_id: # (test.t1) +master-bin.000001 16373 Write_rows 1 16407 table_id: # flags: STMT_END_F +master-bin.000001 16407 Table_map 1 16446 table_id: # (test.t1) +master-bin.000001 16446 Write_rows 1 16480 table_id: # flags: STMT_END_F +master-bin.000001 16480 Table_map 1 16519 table_id: # (test.t1) +master-bin.000001 16519 Write_rows 1 16553 table_id: # flags: STMT_END_F +master-bin.000001 16553 Table_map 1 16592 table_id: # (test.t1) +master-bin.000001 16592 Write_rows 1 16626 table_id: # flags: STMT_END_F +master-bin.000001 16626 Table_map 1 16665 table_id: # (test.t1) +master-bin.000001 16665 Write_rows 1 16699 table_id: # flags: STMT_END_F +master-bin.000001 16699 Table_map 1 16738 table_id: # (test.t1) +master-bin.000001 16738 Write_rows 1 16772 table_id: # flags: STMT_END_F +master-bin.000001 16772 Table_map 1 16811 table_id: # (test.t1) +master-bin.000001 16811 Write_rows 1 16845 table_id: # flags: STMT_END_F +master-bin.000001 16845 Table_map 1 16884 table_id: # (test.t1) +master-bin.000001 16884 Write_rows 1 16918 table_id: # flags: STMT_END_F +master-bin.000001 16918 Table_map 1 16957 table_id: # (test.t1) +master-bin.000001 16957 Write_rows 1 16991 table_id: # flags: STMT_END_F +master-bin.000001 16991 Table_map 1 17030 table_id: # (test.t1) +master-bin.000001 17030 Write_rows 1 17064 table_id: # flags: STMT_END_F +master-bin.000001 17064 Table_map 1 17103 table_id: # (test.t1) +master-bin.000001 17103 Write_rows 1 17137 table_id: # flags: STMT_END_F +master-bin.000001 17137 Table_map 1 17176 table_id: # (test.t1) +master-bin.000001 17176 Write_rows 1 17210 table_id: # flags: STMT_END_F +master-bin.000001 17210 Table_map 1 17249 table_id: # (test.t1) +master-bin.000001 17249 Write_rows 1 17283 table_id: # flags: STMT_END_F +master-bin.000001 17283 Table_map 1 17322 table_id: # (test.t1) +master-bin.000001 17322 Write_rows 1 17356 table_id: # flags: STMT_END_F +master-bin.000001 17356 Table_map 1 17395 table_id: # (test.t1) +master-bin.000001 17395 Write_rows 1 17429 table_id: # flags: STMT_END_F +master-bin.000001 17429 Table_map 1 17468 table_id: # (test.t1) +master-bin.000001 17468 Write_rows 1 17502 table_id: # flags: STMT_END_F +master-bin.000001 17502 Table_map 1 17541 table_id: # (test.t1) +master-bin.000001 17541 Write_rows 1 17575 table_id: # flags: STMT_END_F +master-bin.000001 17575 Table_map 1 17614 table_id: # (test.t1) +master-bin.000001 17614 Write_rows 1 17648 table_id: # flags: STMT_END_F +master-bin.000001 17648 Table_map 1 17687 table_id: # (test.t1) +master-bin.000001 17687 Write_rows 1 17721 table_id: # flags: STMT_END_F +master-bin.000001 17721 Table_map 1 17760 table_id: # (test.t1) +master-bin.000001 17760 Write_rows 1 17794 table_id: # flags: STMT_END_F +master-bin.000001 17794 Table_map 1 17833 table_id: # (test.t1) +master-bin.000001 17833 Write_rows 1 17867 table_id: # flags: STMT_END_F +master-bin.000001 17867 Table_map 1 17906 table_id: # (test.t1) +master-bin.000001 17906 Write_rows 1 17940 table_id: # flags: STMT_END_F +master-bin.000001 17940 Table_map 1 17979 table_id: # (test.t1) +master-bin.000001 17979 Write_rows 1 18013 table_id: # flags: STMT_END_F +master-bin.000001 18013 Table_map 1 18052 table_id: # (test.t1) +master-bin.000001 18052 Write_rows 1 18086 table_id: # flags: STMT_END_F +master-bin.000001 18086 Table_map 1 18125 table_id: # (test.t1) +master-bin.000001 18125 Write_rows 1 18159 table_id: # flags: STMT_END_F +master-bin.000001 18159 Table_map 1 18198 table_id: # (test.t1) +master-bin.000001 18198 Write_rows 1 18232 table_id: # flags: STMT_END_F +master-bin.000001 18232 Table_map 1 18271 table_id: # (test.t1) +master-bin.000001 18271 Write_rows 1 18305 table_id: # flags: STMT_END_F +master-bin.000001 18305 Table_map 1 18344 table_id: # (test.t1) +master-bin.000001 18344 Write_rows 1 18378 table_id: # flags: STMT_END_F +master-bin.000001 18378 Table_map 1 18417 table_id: # (test.t1) +master-bin.000001 18417 Write_rows 1 18451 table_id: # flags: STMT_END_F +master-bin.000001 18451 Table_map 1 18490 table_id: # (test.t1) +master-bin.000001 18490 Write_rows 1 18524 table_id: # flags: STMT_END_F +master-bin.000001 18524 Table_map 1 18563 table_id: # (test.t1) +master-bin.000001 18563 Write_rows 1 18597 table_id: # flags: STMT_END_F +master-bin.000001 18597 Table_map 1 18636 table_id: # (test.t1) +master-bin.000001 18636 Write_rows 1 18670 table_id: # flags: STMT_END_F +master-bin.000001 18670 Table_map 1 18709 table_id: # (test.t1) +master-bin.000001 18709 Write_rows 1 18743 table_id: # flags: STMT_END_F +master-bin.000001 18743 Table_map 1 18782 table_id: # (test.t1) +master-bin.000001 18782 Write_rows 1 18816 table_id: # flags: STMT_END_F +master-bin.000001 18816 Table_map 1 18855 table_id: # (test.t1) +master-bin.000001 18855 Write_rows 1 18889 table_id: # flags: STMT_END_F +master-bin.000001 18889 Table_map 1 18928 table_id: # (test.t1) +master-bin.000001 18928 Write_rows 1 18962 table_id: # flags: STMT_END_F +master-bin.000001 18962 Table_map 1 19001 table_id: # (test.t1) +master-bin.000001 19001 Write_rows 1 19035 table_id: # flags: STMT_END_F +master-bin.000001 19035 Table_map 1 19074 table_id: # (test.t1) +master-bin.000001 19074 Write_rows 1 19108 table_id: # flags: STMT_END_F +master-bin.000001 19108 Table_map 1 19147 table_id: # (test.t1) +master-bin.000001 19147 Write_rows 1 19181 table_id: # flags: STMT_END_F +master-bin.000001 19181 Table_map 1 19220 table_id: # (test.t1) +master-bin.000001 19220 Write_rows 1 19254 table_id: # flags: STMT_END_F +master-bin.000001 19254 Table_map 1 19293 table_id: # (test.t1) +master-bin.000001 19293 Write_rows 1 19327 table_id: # flags: STMT_END_F +master-bin.000001 19327 Table_map 1 19366 table_id: # (test.t1) +master-bin.000001 19366 Write_rows 1 19400 table_id: # flags: STMT_END_F +master-bin.000001 19400 Table_map 1 19439 table_id: # (test.t1) +master-bin.000001 19439 Write_rows 1 19473 table_id: # flags: STMT_END_F +master-bin.000001 19473 Table_map 1 19512 table_id: # (test.t1) +master-bin.000001 19512 Write_rows 1 19546 table_id: # flags: STMT_END_F +master-bin.000001 19546 Table_map 1 19585 table_id: # (test.t1) +master-bin.000001 19585 Write_rows 1 19619 table_id: # flags: STMT_END_F +master-bin.000001 19619 Table_map 1 19658 table_id: # (test.t1) +master-bin.000001 19658 Write_rows 1 19692 table_id: # flags: STMT_END_F +master-bin.000001 19692 Table_map 1 19731 table_id: # (test.t1) +master-bin.000001 19731 Write_rows 1 19765 table_id: # flags: STMT_END_F +master-bin.000001 19765 Table_map 1 19804 table_id: # (test.t1) +master-bin.000001 19804 Write_rows 1 19838 table_id: # flags: STMT_END_F +master-bin.000001 19838 Table_map 1 19877 table_id: # (test.t1) +master-bin.000001 19877 Write_rows 1 19911 table_id: # flags: STMT_END_F +master-bin.000001 19911 Table_map 1 19950 table_id: # (test.t1) +master-bin.000001 19950 Write_rows 1 19984 table_id: # flags: STMT_END_F +master-bin.000001 19984 Table_map 1 20023 table_id: # (test.t1) +master-bin.000001 20023 Write_rows 1 20057 table_id: # flags: STMT_END_F +master-bin.000001 20057 Table_map 1 20096 table_id: # (test.t1) +master-bin.000001 20096 Write_rows 1 20130 table_id: # flags: STMT_END_F +master-bin.000001 20130 Table_map 1 20169 table_id: # (test.t1) +master-bin.000001 20169 Write_rows 1 20203 table_id: # flags: STMT_END_F +master-bin.000001 20203 Table_map 1 20242 table_id: # (test.t1) +master-bin.000001 20242 Write_rows 1 20276 table_id: # flags: STMT_END_F +master-bin.000001 20276 Table_map 1 20315 table_id: # (test.t1) +master-bin.000001 20315 Write_rows 1 20349 table_id: # flags: STMT_END_F +master-bin.000001 20349 Table_map 1 20388 table_id: # (test.t1) +master-bin.000001 20388 Write_rows 1 20422 table_id: # flags: STMT_END_F +master-bin.000001 20422 Table_map 1 20461 table_id: # (test.t1) +master-bin.000001 20461 Write_rows 1 20495 table_id: # flags: STMT_END_F +master-bin.000001 20495 Table_map 1 20534 table_id: # (test.t1) +master-bin.000001 20534 Write_rows 1 20568 table_id: # flags: STMT_END_F +master-bin.000001 20568 Table_map 1 20607 table_id: # (test.t1) +master-bin.000001 20607 Write_rows 1 20641 table_id: # flags: STMT_END_F +master-bin.000001 20641 Table_map 1 20680 table_id: # (test.t1) +master-bin.000001 20680 Write_rows 1 20714 table_id: # flags: STMT_END_F +master-bin.000001 20714 Table_map 1 20753 table_id: # (test.t1) +master-bin.000001 20753 Write_rows 1 20787 table_id: # flags: STMT_END_F +master-bin.000001 20787 Table_map 1 20826 table_id: # (test.t1) +master-bin.000001 20826 Write_rows 1 20860 table_id: # flags: STMT_END_F +master-bin.000001 20860 Table_map 1 20899 table_id: # (test.t1) +master-bin.000001 20899 Write_rows 1 20933 table_id: # flags: STMT_END_F +master-bin.000001 20933 Table_map 1 20972 table_id: # (test.t1) +master-bin.000001 20972 Write_rows 1 21006 table_id: # flags: STMT_END_F +master-bin.000001 21006 Table_map 1 21045 table_id: # (test.t1) +master-bin.000001 21045 Write_rows 1 21079 table_id: # flags: STMT_END_F +master-bin.000001 21079 Table_map 1 21118 table_id: # (test.t1) +master-bin.000001 21118 Write_rows 1 21152 table_id: # flags: STMT_END_F +master-bin.000001 21152 Table_map 1 21191 table_id: # (test.t1) +master-bin.000001 21191 Write_rows 1 21225 table_id: # flags: STMT_END_F +master-bin.000001 21225 Table_map 1 21264 table_id: # (test.t1) +master-bin.000001 21264 Write_rows 1 21298 table_id: # flags: STMT_END_F +master-bin.000001 21298 Table_map 1 21337 table_id: # (test.t1) +master-bin.000001 21337 Write_rows 1 21371 table_id: # flags: STMT_END_F +master-bin.000001 21371 Table_map 1 21410 table_id: # (test.t1) +master-bin.000001 21410 Write_rows 1 21444 table_id: # flags: STMT_END_F +master-bin.000001 21444 Table_map 1 21483 table_id: # (test.t1) +master-bin.000001 21483 Write_rows 1 21517 table_id: # flags: STMT_END_F +master-bin.000001 21517 Table_map 1 21556 table_id: # (test.t1) +master-bin.000001 21556 Write_rows 1 21590 table_id: # flags: STMT_END_F +master-bin.000001 21590 Table_map 1 21629 table_id: # (test.t1) +master-bin.000001 21629 Write_rows 1 21663 table_id: # flags: STMT_END_F +master-bin.000001 21663 Table_map 1 21702 table_id: # (test.t1) +master-bin.000001 21702 Write_rows 1 21736 table_id: # flags: STMT_END_F +master-bin.000001 21736 Table_map 1 21775 table_id: # (test.t1) +master-bin.000001 21775 Write_rows 1 21809 table_id: # flags: STMT_END_F +master-bin.000001 21809 Table_map 1 21848 table_id: # (test.t1) +master-bin.000001 21848 Write_rows 1 21882 table_id: # flags: STMT_END_F +master-bin.000001 21882 Table_map 1 21921 table_id: # (test.t1) +master-bin.000001 21921 Write_rows 1 21955 table_id: # flags: STMT_END_F +master-bin.000001 21955 Table_map 1 21994 table_id: # (test.t1) +master-bin.000001 21994 Write_rows 1 22028 table_id: # flags: STMT_END_F +master-bin.000001 22028 Table_map 1 22067 table_id: # (test.t1) +master-bin.000001 22067 Write_rows 1 22101 table_id: # flags: STMT_END_F +master-bin.000001 22101 Table_map 1 22140 table_id: # (test.t1) +master-bin.000001 22140 Write_rows 1 22174 table_id: # flags: STMT_END_F +master-bin.000001 22174 Table_map 1 22213 table_id: # (test.t1) +master-bin.000001 22213 Write_rows 1 22247 table_id: # flags: STMT_END_F +master-bin.000001 22247 Table_map 1 22286 table_id: # (test.t1) +master-bin.000001 22286 Write_rows 1 22320 table_id: # flags: STMT_END_F +master-bin.000001 22320 Table_map 1 22359 table_id: # (test.t1) +master-bin.000001 22359 Write_rows 1 22393 table_id: # flags: STMT_END_F +master-bin.000001 22393 Table_map 1 22432 table_id: # (test.t1) +master-bin.000001 22432 Write_rows 1 22466 table_id: # flags: STMT_END_F +master-bin.000001 22466 Table_map 1 22505 table_id: # (test.t1) +master-bin.000001 22505 Write_rows 1 22539 table_id: # flags: STMT_END_F +master-bin.000001 22539 Table_map 1 22578 table_id: # (test.t1) +master-bin.000001 22578 Write_rows 1 22612 table_id: # flags: STMT_END_F +master-bin.000001 22612 Table_map 1 22651 table_id: # (test.t1) +master-bin.000001 22651 Write_rows 1 22685 table_id: # flags: STMT_END_F +master-bin.000001 22685 Table_map 1 22724 table_id: # (test.t1) +master-bin.000001 22724 Write_rows 1 22758 table_id: # flags: STMT_END_F +master-bin.000001 22758 Table_map 1 22797 table_id: # (test.t1) +master-bin.000001 22797 Write_rows 1 22831 table_id: # flags: STMT_END_F +master-bin.000001 22831 Table_map 1 22870 table_id: # (test.t1) +master-bin.000001 22870 Write_rows 1 22904 table_id: # flags: STMT_END_F +master-bin.000001 22904 Table_map 1 22943 table_id: # (test.t1) +master-bin.000001 22943 Write_rows 1 22977 table_id: # flags: STMT_END_F +master-bin.000001 22977 Table_map 1 23016 table_id: # (test.t1) +master-bin.000001 23016 Write_rows 1 23050 table_id: # flags: STMT_END_F +master-bin.000001 23050 Table_map 1 23089 table_id: # (test.t1) +master-bin.000001 23089 Write_rows 1 23123 table_id: # flags: STMT_END_F +master-bin.000001 23123 Table_map 1 23162 table_id: # (test.t1) +master-bin.000001 23162 Write_rows 1 23196 table_id: # flags: STMT_END_F +master-bin.000001 23196 Table_map 1 23235 table_id: # (test.t1) +master-bin.000001 23235 Write_rows 1 23269 table_id: # flags: STMT_END_F +master-bin.000001 23269 Table_map 1 23308 table_id: # (test.t1) +master-bin.000001 23308 Write_rows 1 23342 table_id: # flags: STMT_END_F +master-bin.000001 23342 Table_map 1 23381 table_id: # (test.t1) +master-bin.000001 23381 Write_rows 1 23415 table_id: # flags: STMT_END_F +master-bin.000001 23415 Table_map 1 23454 table_id: # (test.t1) +master-bin.000001 23454 Write_rows 1 23488 table_id: # flags: STMT_END_F +master-bin.000001 23488 Table_map 1 23527 table_id: # (test.t1) +master-bin.000001 23527 Write_rows 1 23561 table_id: # flags: STMT_END_F +master-bin.000001 23561 Table_map 1 23600 table_id: # (test.t1) +master-bin.000001 23600 Write_rows 1 23634 table_id: # flags: STMT_END_F +master-bin.000001 23634 Table_map 1 23673 table_id: # (test.t1) +master-bin.000001 23673 Write_rows 1 23707 table_id: # flags: STMT_END_F +master-bin.000001 23707 Table_map 1 23746 table_id: # (test.t1) +master-bin.000001 23746 Write_rows 1 23780 table_id: # flags: STMT_END_F +master-bin.000001 23780 Table_map 1 23819 table_id: # (test.t1) +master-bin.000001 23819 Write_rows 1 23853 table_id: # flags: STMT_END_F +master-bin.000001 23853 Table_map 1 23892 table_id: # (test.t1) +master-bin.000001 23892 Write_rows 1 23926 table_id: # flags: STMT_END_F +master-bin.000001 23926 Table_map 1 23965 table_id: # (test.t1) +master-bin.000001 23965 Write_rows 1 23999 table_id: # flags: STMT_END_F +master-bin.000001 23999 Table_map 1 24038 table_id: # (test.t1) +master-bin.000001 24038 Write_rows 1 24072 table_id: # flags: STMT_END_F +master-bin.000001 24072 Table_map 1 24111 table_id: # (test.t1) +master-bin.000001 24111 Write_rows 1 24145 table_id: # flags: STMT_END_F +master-bin.000001 24145 Table_map 1 24184 table_id: # (test.t1) +master-bin.000001 24184 Write_rows 1 24218 table_id: # flags: STMT_END_F +master-bin.000001 24218 Table_map 1 24257 table_id: # (test.t1) +master-bin.000001 24257 Write_rows 1 24291 table_id: # flags: STMT_END_F +master-bin.000001 24291 Table_map 1 24330 table_id: # (test.t1) +master-bin.000001 24330 Write_rows 1 24364 table_id: # flags: STMT_END_F +master-bin.000001 24364 Table_map 1 24403 table_id: # (test.t1) +master-bin.000001 24403 Write_rows 1 24437 table_id: # flags: STMT_END_F +master-bin.000001 24437 Table_map 1 24476 table_id: # (test.t1) +master-bin.000001 24476 Write_rows 1 24510 table_id: # flags: STMT_END_F +master-bin.000001 24510 Table_map 1 24549 table_id: # (test.t1) +master-bin.000001 24549 Write_rows 1 24583 table_id: # flags: STMT_END_F +master-bin.000001 24583 Table_map 1 24622 table_id: # (test.t1) +master-bin.000001 24622 Write_rows 1 24656 table_id: # flags: STMT_END_F +master-bin.000001 24656 Table_map 1 24695 table_id: # (test.t1) +master-bin.000001 24695 Write_rows 1 24729 table_id: # flags: STMT_END_F +master-bin.000001 24729 Table_map 1 24768 table_id: # (test.t1) +master-bin.000001 24768 Write_rows 1 24802 table_id: # flags: STMT_END_F +master-bin.000001 24802 Table_map 1 24841 table_id: # (test.t1) +master-bin.000001 24841 Write_rows 1 24875 table_id: # flags: STMT_END_F +master-bin.000001 24875 Table_map 1 24914 table_id: # (test.t1) +master-bin.000001 24914 Write_rows 1 24948 table_id: # flags: STMT_END_F +master-bin.000001 24948 Table_map 1 24987 table_id: # (test.t1) +master-bin.000001 24987 Write_rows 1 25021 table_id: # flags: STMT_END_F +master-bin.000001 25021 Table_map 1 25060 table_id: # (test.t1) +master-bin.000001 25060 Write_rows 1 25094 table_id: # flags: STMT_END_F +master-bin.000001 25094 Table_map 1 25133 table_id: # (test.t1) +master-bin.000001 25133 Write_rows 1 25167 table_id: # flags: STMT_END_F +master-bin.000001 25167 Table_map 1 25206 table_id: # (test.t1) +master-bin.000001 25206 Write_rows 1 25240 table_id: # flags: STMT_END_F +master-bin.000001 25240 Table_map 1 25279 table_id: # (test.t1) +master-bin.000001 25279 Write_rows 1 25313 table_id: # flags: STMT_END_F +master-bin.000001 25313 Table_map 1 25352 table_id: # (test.t1) +master-bin.000001 25352 Write_rows 1 25386 table_id: # flags: STMT_END_F +master-bin.000001 25386 Table_map 1 25425 table_id: # (test.t1) +master-bin.000001 25425 Write_rows 1 25459 table_id: # flags: STMT_END_F +master-bin.000001 25459 Table_map 1 25498 table_id: # (test.t1) +master-bin.000001 25498 Write_rows 1 25532 table_id: # flags: STMT_END_F +master-bin.000001 25532 Table_map 1 25571 table_id: # (test.t1) +master-bin.000001 25571 Write_rows 1 25605 table_id: # flags: STMT_END_F +master-bin.000001 25605 Table_map 1 25644 table_id: # (test.t1) +master-bin.000001 25644 Write_rows 1 25678 table_id: # flags: STMT_END_F +master-bin.000001 25678 Table_map 1 25717 table_id: # (test.t1) +master-bin.000001 25717 Write_rows 1 25751 table_id: # flags: STMT_END_F +master-bin.000001 25751 Table_map 1 25790 table_id: # (test.t1) +master-bin.000001 25790 Write_rows 1 25824 table_id: # flags: STMT_END_F +master-bin.000001 25824 Table_map 1 25863 table_id: # (test.t1) +master-bin.000001 25863 Write_rows 1 25897 table_id: # flags: STMT_END_F +master-bin.000001 25897 Table_map 1 25936 table_id: # (test.t1) +master-bin.000001 25936 Write_rows 1 25970 table_id: # flags: STMT_END_F +master-bin.000001 25970 Table_map 1 26009 table_id: # (test.t1) +master-bin.000001 26009 Write_rows 1 26043 table_id: # flags: STMT_END_F +master-bin.000001 26043 Table_map 1 26082 table_id: # (test.t1) +master-bin.000001 26082 Write_rows 1 26116 table_id: # flags: STMT_END_F +master-bin.000001 26116 Table_map 1 26155 table_id: # (test.t1) +master-bin.000001 26155 Write_rows 1 26189 table_id: # flags: STMT_END_F +master-bin.000001 26189 Table_map 1 26228 table_id: # (test.t1) +master-bin.000001 26228 Write_rows 1 26262 table_id: # flags: STMT_END_F +master-bin.000001 26262 Table_map 1 26301 table_id: # (test.t1) +master-bin.000001 26301 Write_rows 1 26335 table_id: # flags: STMT_END_F +master-bin.000001 26335 Table_map 1 26374 table_id: # (test.t1) +master-bin.000001 26374 Write_rows 1 26408 table_id: # flags: STMT_END_F +master-bin.000001 26408 Table_map 1 26447 table_id: # (test.t1) +master-bin.000001 26447 Write_rows 1 26481 table_id: # flags: STMT_END_F +master-bin.000001 26481 Table_map 1 26520 table_id: # (test.t1) +master-bin.000001 26520 Write_rows 1 26554 table_id: # flags: STMT_END_F +master-bin.000001 26554 Table_map 1 26593 table_id: # (test.t1) +master-bin.000001 26593 Write_rows 1 26627 table_id: # flags: STMT_END_F +master-bin.000001 26627 Table_map 1 26666 table_id: # (test.t1) +master-bin.000001 26666 Write_rows 1 26700 table_id: # flags: STMT_END_F +master-bin.000001 26700 Table_map 1 26739 table_id: # (test.t1) +master-bin.000001 26739 Write_rows 1 26773 table_id: # flags: STMT_END_F +master-bin.000001 26773 Table_map 1 26812 table_id: # (test.t1) +master-bin.000001 26812 Write_rows 1 26846 table_id: # flags: STMT_END_F +master-bin.000001 26846 Table_map 1 26885 table_id: # (test.t1) +master-bin.000001 26885 Write_rows 1 26919 table_id: # flags: STMT_END_F +master-bin.000001 26919 Table_map 1 26958 table_id: # (test.t1) +master-bin.000001 26958 Write_rows 1 26992 table_id: # flags: STMT_END_F +master-bin.000001 26992 Table_map 1 27031 table_id: # (test.t1) +master-bin.000001 27031 Write_rows 1 27065 table_id: # flags: STMT_END_F +master-bin.000001 27065 Table_map 1 27104 table_id: # (test.t1) +master-bin.000001 27104 Write_rows 1 27138 table_id: # flags: STMT_END_F +master-bin.000001 27138 Table_map 1 27177 table_id: # (test.t1) +master-bin.000001 27177 Write_rows 1 27211 table_id: # flags: STMT_END_F +master-bin.000001 27211 Table_map 1 27250 table_id: # (test.t1) +master-bin.000001 27250 Write_rows 1 27284 table_id: # flags: STMT_END_F +master-bin.000001 27284 Table_map 1 27323 table_id: # (test.t1) +master-bin.000001 27323 Write_rows 1 27357 table_id: # flags: STMT_END_F +master-bin.000001 27357 Table_map 1 27396 table_id: # (test.t1) +master-bin.000001 27396 Write_rows 1 27430 table_id: # flags: STMT_END_F +master-bin.000001 27430 Table_map 1 27469 table_id: # (test.t1) +master-bin.000001 27469 Write_rows 1 27503 table_id: # flags: STMT_END_F +master-bin.000001 27503 Table_map 1 27542 table_id: # (test.t1) +master-bin.000001 27542 Write_rows 1 27576 table_id: # flags: STMT_END_F +master-bin.000001 27576 Table_map 1 27615 table_id: # (test.t1) +master-bin.000001 27615 Write_rows 1 27649 table_id: # flags: STMT_END_F +master-bin.000001 27649 Table_map 1 27688 table_id: # (test.t1) +master-bin.000001 27688 Write_rows 1 27722 table_id: # flags: STMT_END_F +master-bin.000001 27722 Table_map 1 27761 table_id: # (test.t1) +master-bin.000001 27761 Write_rows 1 27795 table_id: # flags: STMT_END_F +master-bin.000001 27795 Table_map 1 27834 table_id: # (test.t1) +master-bin.000001 27834 Write_rows 1 27868 table_id: # flags: STMT_END_F +master-bin.000001 27868 Table_map 1 27907 table_id: # (test.t1) +master-bin.000001 27907 Write_rows 1 27941 table_id: # flags: STMT_END_F +master-bin.000001 27941 Table_map 1 27980 table_id: # (test.t1) +master-bin.000001 27980 Write_rows 1 28014 table_id: # flags: STMT_END_F +master-bin.000001 28014 Table_map 1 28053 table_id: # (test.t1) +master-bin.000001 28053 Write_rows 1 28087 table_id: # flags: STMT_END_F +master-bin.000001 28087 Table_map 1 28126 table_id: # (test.t1) +master-bin.000001 28126 Write_rows 1 28160 table_id: # flags: STMT_END_F +master-bin.000001 28160 Table_map 1 28199 table_id: # (test.t1) +master-bin.000001 28199 Write_rows 1 28233 table_id: # flags: STMT_END_F +master-bin.000001 28233 Table_map 1 28272 table_id: # (test.t1) +master-bin.000001 28272 Write_rows 1 28306 table_id: # flags: STMT_END_F +master-bin.000001 28306 Table_map 1 28345 table_id: # (test.t1) +master-bin.000001 28345 Write_rows 1 28379 table_id: # flags: STMT_END_F +master-bin.000001 28379 Table_map 1 28418 table_id: # (test.t1) +master-bin.000001 28418 Write_rows 1 28452 table_id: # flags: STMT_END_F +master-bin.000001 28452 Table_map 1 28491 table_id: # (test.t1) +master-bin.000001 28491 Write_rows 1 28525 table_id: # flags: STMT_END_F +master-bin.000001 28525 Table_map 1 28564 table_id: # (test.t1) +master-bin.000001 28564 Write_rows 1 28598 table_id: # flags: STMT_END_F +master-bin.000001 28598 Table_map 1 28637 table_id: # (test.t1) +master-bin.000001 28637 Write_rows 1 28671 table_id: # flags: STMT_END_F +master-bin.000001 28671 Table_map 1 28710 table_id: # (test.t1) +master-bin.000001 28710 Write_rows 1 28744 table_id: # flags: STMT_END_F +master-bin.000001 28744 Table_map 1 28783 table_id: # (test.t1) +master-bin.000001 28783 Write_rows 1 28817 table_id: # flags: STMT_END_F +master-bin.000001 28817 Table_map 1 28856 table_id: # (test.t1) +master-bin.000001 28856 Write_rows 1 28890 table_id: # flags: STMT_END_F +master-bin.000001 28890 Table_map 1 28929 table_id: # (test.t1) +master-bin.000001 28929 Write_rows 1 28963 table_id: # flags: STMT_END_F +master-bin.000001 28963 Table_map 1 29002 table_id: # (test.t1) +master-bin.000001 29002 Write_rows 1 29036 table_id: # flags: STMT_END_F +master-bin.000001 29036 Table_map 1 29075 table_id: # (test.t1) +master-bin.000001 29075 Write_rows 1 29109 table_id: # flags: STMT_END_F +master-bin.000001 29109 Table_map 1 29148 table_id: # (test.t1) +master-bin.000001 29148 Write_rows 1 29182 table_id: # flags: STMT_END_F +master-bin.000001 29182 Table_map 1 29221 table_id: # (test.t1) +master-bin.000001 29221 Write_rows 1 29255 table_id: # flags: STMT_END_F +master-bin.000001 29255 Table_map 1 29294 table_id: # (test.t1) +master-bin.000001 29294 Write_rows 1 29328 table_id: # flags: STMT_END_F +master-bin.000001 29328 Table_map 1 29367 table_id: # (test.t1) +master-bin.000001 29367 Write_rows 1 29401 table_id: # flags: STMT_END_F +master-bin.000001 29401 Table_map 1 29440 table_id: # (test.t1) +master-bin.000001 29440 Write_rows 1 29474 table_id: # flags: STMT_END_F +master-bin.000001 29474 Xid 1 29501 COMMIT /* XID */ master-bin.000001 29501 Rotate 1 29545 master-bin.000002;pos=4 drop table t1; set global binlog_cache_size=@bcs; diff --git a/mysql-test/suite/binlog/r/binlog_stm_binlog.result b/mysql-test/suite/binlog/r/binlog_stm_binlog.result index 45fef628357..238cafa6f68 100644 --- a/mysql-test/suite/binlog/r/binlog_stm_binlog.result +++ b/mysql-test/suite/binlog/r/binlog_stm_binlog.result @@ -268,7 +268,7 @@ reset master; create table t1 (a int) engine=innodb; show binlog events from 0; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server ver: 5.1.21-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 master-bin.000001 106 Query 1 206 use `test`; create table t1 (a int) engine=innodb master-bin.000001 206 Query 1 274 use `test`; BEGIN master-bin.000001 274 Query 1 365 use `test`; insert into t1 values( 400 ) @@ -671,7 +671,7 @@ master-bin.000001 36210 Query 1 36299 use `test`; insert into t1 values( 4 ) master-bin.000001 36299 Query 1 36388 use `test`; insert into t1 values( 3 ) master-bin.000001 36388 Query 1 36477 use `test`; insert into t1 values( 2 ) master-bin.000001 36477 Query 1 36566 use `test`; insert into t1 values( 1 ) -master-bin.000001 36566 Xid 1 36593 COMMIT /* xid=196 */ +master-bin.000001 36566 Xid 1 36593 COMMIT /* XID */ master-bin.000001 36593 Rotate 1 36637 master-bin.000002;pos=4 drop table t1; set global binlog_cache_size=@bcs; From da7e78cead5415200d357245734a2f55d35f9105 Mon Sep 17 00:00:00 2001 From: "mikael@dator6.(none)" <> Date: Mon, 2 Jul 2007 20:11:54 +0200 Subject: [PATCH 062/127] removed test case no longer supported --- mysql-test/r/partition.result | 10 ---------- mysql-test/t/partition.test | 12 +----------- 2 files changed, 1 insertion(+), 21 deletions(-) diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index bf347aea196..5d985d053fc 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -1267,14 +1267,4 @@ ALTER TABLE general_log PARTITION BY RANGE (TO_DAYS(event_time)) ERROR HY000: Incorrect usage of PARTITION and log table ALTER TABLE general_log ENGINE = CSV; SET GLOBAL general_log = default; -CREATE TABLE `t1` ( `a` varchar(1)) ENGINE=MyISAM -PARTITION BY LIST (CASE a WHEN 'a' THEN 1 -WHEN 'b' THEN 2 -WHEN 'c' THEN 3 -END) ( -PARTITION a VALUES IN (1), -PARTITION b VALUES IN (2), -PARTITION c VALUES IN (3) -); -DROP TABLE t1; End of 5.1 tests diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index 1374c049431..42db23dadef 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -1496,17 +1496,7 @@ SET GLOBAL general_log = default; # # Bug #27084 partitioning by list seems failing when using case +# BUG #18198: Case no longer supported, test case removed # -CREATE TABLE `t1` ( `a` varchar(1)) ENGINE=MyISAM - PARTITION BY LIST (CASE a WHEN 'a' THEN 1 - WHEN 'b' THEN 2 - WHEN 'c' THEN 3 - END) ( - PARTITION a VALUES IN (1), - PARTITION b VALUES IN (2), - PARTITION c VALUES IN (3) -); - -DROP TABLE t1; --echo End of 5.1 tests From de0cf5d22f413c818c567e406843a921fd2c7fb4 Mon Sep 17 00:00:00 2001 From: "sergefp@mysql.com" <> Date: Mon, 2 Jul 2007 22:18:41 +0400 Subject: [PATCH 063/127] Fix testcase to be platform-independent --- mysql-test/r/innodb_mysql.result | 6 +++--- mysql-test/t/innodb_mysql.test | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index df1c2165c45..8ddd3d2f1e8 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -1,4 +1,4 @@ -drop table if exists t1,t2; +drop table if exists t1,t2,t3,t4; create table t1 ( c_id int(11) not null default '0', org_id int(11) default null, @@ -711,7 +711,7 @@ EXPLAIN SELECT COUNT(*) FROM t1 WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 ALL idx_b,idx_c NULL NULL NULL 3263 Using where +1 SIMPLE t1 ALL idx_b,idx_c NULL NULL NULL # Using where SELECT COUNT(*) FROM t1 WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; COUNT(*) @@ -720,7 +720,7 @@ EXPLAIN SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c) WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 index_merge idx_b,idx_c idx_c,idx_b 8,4 NULL 3262 Using sort_union(idx_c,idx_b); Using where +1 SIMPLE t1 index_merge idx_b,idx_c idx_c,idx_b 8,4 NULL # Using sort_union(idx_c,idx_b); Using where SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c) WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; COUNT(*) diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/t/innodb_mysql.test index eb995a748a5..148181ee443 100644 --- a/mysql-test/t/innodb_mysql.test +++ b/mysql-test/t/innodb_mysql.test @@ -1,7 +1,7 @@ -- source include/have_innodb.inc --disable_warnings -drop table if exists t1,t2; +drop table if exists t1,t2,t3,t4; --enable_warnings # BUG#16798: Uninitialized row buffer reads in ref-or-null optimizer @@ -709,12 +709,14 @@ set @@sort_buffer_size=8192; SELECT COUNT(*) FROM t1; +--replace_column 9 # EXPLAIN SELECT COUNT(*) FROM t1 WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; SELECT COUNT(*) FROM t1 WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; +--replace_column 9 # EXPLAIN SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c) WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; From 772c7fc59149107f1273cd8e870d40f652b32e48 Mon Sep 17 00:00:00 2001 From: "iggy@amd64.(none)" <> Date: Mon, 2 Jul 2007 14:22:03 -0400 Subject: [PATCH 064/127] Bug#24924 shared-memory-base-name that is too long causes buffer overflow - Testcase fixup. --- mysql-test/t/windows_shm.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/t/windows_shm.test b/mysql-test/t/windows_shm.test index 203471aac56..1c6f05f2da0 100644 --- a/mysql-test/t/windows_shm.test +++ b/mysql-test/t/windows_shm.test @@ -4,6 +4,6 @@ # # Bug #24924: shared-memory-base-name that is too long causes buffer overflow # ---exec $MYSQLADMIN --no-defaults --shared-memory-base-name=HeyMrBaseNameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ping +--exec $MYSQLADMIN --no-defaults --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --shared-memory-base-name=HeyMrBaseNameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ping --echo End of 5.0 tests. From bad7900a5a2138adf1d82ca32d884fd075fd76a1 Mon Sep 17 00:00:00 2001 From: "gkodinov/kgeorge@magare.gmz" <> Date: Tue, 3 Jul 2007 10:36:37 +0300 Subject: [PATCH 065/127] Bug #28983: 'reset master' in multiple threads and innodb tables asserts debug binary We can't reliably check if the binary log is opened without acquiring its mutex. Fixed by removing this check. --- sql/log.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sql/log.cc b/sql/log.cc index 818828f9557..dd989ebd76d 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -85,7 +85,7 @@ bool binlog_init() static int binlog_close_connection(THD *thd) { IO_CACHE *trans_log= (IO_CACHE*)thd->ha_data[binlog_hton.slot]; - DBUG_ASSERT(mysql_bin_log.is_open() && !my_b_tell(trans_log)); + DBUG_ASSERT(!my_b_tell(trans_log)); close_cached_file(trans_log); my_free((gptr)trans_log, MYF(0)); return 0; @@ -126,7 +126,7 @@ static int binlog_commit(THD *thd, bool all) { IO_CACHE *trans_log= (IO_CACHE*)thd->ha_data[binlog_hton.slot]; DBUG_ENTER("binlog_commit"); - DBUG_ASSERT(mysql_bin_log.is_open() && + DBUG_ASSERT( (all || !(thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)))); if (my_b_tell(trans_log) == 0) @@ -155,7 +155,7 @@ static int binlog_rollback(THD *thd, bool all) unnecessary, doing extra work. The cause should be found and eliminated */ DBUG_ASSERT(all || !(thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN))); - DBUG_ASSERT(mysql_bin_log.is_open() && my_b_tell(trans_log)); + DBUG_ASSERT(my_b_tell(trans_log)); /* Update the binary log with a BEGIN/ROLLBACK block if we have cached some queries and we updated some non-transactional @@ -198,7 +198,7 @@ static int binlog_savepoint_set(THD *thd, void *sv) { IO_CACHE *trans_log= (IO_CACHE*)thd->ha_data[binlog_hton.slot]; DBUG_ENTER("binlog_savepoint_set"); - DBUG_ASSERT(mysql_bin_log.is_open() && my_b_tell(trans_log)); + DBUG_ASSERT(my_b_tell(trans_log)); *(my_off_t *)sv= my_b_tell(trans_log); /* Write it to the binary log */ @@ -210,7 +210,7 @@ static int binlog_savepoint_rollback(THD *thd, void *sv) { IO_CACHE *trans_log= (IO_CACHE*)thd->ha_data[binlog_hton.slot]; DBUG_ENTER("binlog_savepoint_rollback"); - DBUG_ASSERT(mysql_bin_log.is_open() && my_b_tell(trans_log)); + DBUG_ASSERT(my_b_tell(trans_log)); /* Write ROLLBACK TO SAVEPOINT to the binlog cache if we have updated some From 76587c48b938002570f488d606679949c802c58f Mon Sep 17 00:00:00 2001 From: "antony@ppcg5.local" <> Date: Tue, 3 Jul 2007 03:56:03 -0700 Subject: [PATCH 066/127] fix bad merge --- mysql-test/r/fulltext2.result | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mysql-test/r/fulltext2.result b/mysql-test/r/fulltext2.result index 783d9acd8ac..e9bee6f697e 100644 --- a/mysql-test/r/fulltext2.result +++ b/mysql-test/r/fulltext2.result @@ -241,14 +241,6 @@ select * from t1 where match a against('ab c' in boolean mode); a drop table t1; set names latin1; -SET NAMES utf8; -CREATE TABLE t1(a VARCHAR(255), FULLTEXT(a)) ENGINE=MyISAM DEFAULT CHARSET=utf8; -INSERT INTO t1 VALUES('„MySQL“'); -SELECT a FROM t1 WHERE MATCH a AGAINST('“MySQL„' IN BOOLEAN MODE); -a -„MySQL“ -DROP TABLE t1; -SET NAMES latin1; CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a)); SET NAMES utf8; INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161); @@ -261,3 +253,11 @@ Table Op Msg_type Msg_text test.t1 check status OK SET NAMES latin1; DROP TABLE t1; +SET NAMES utf8; +CREATE TABLE t1(a VARCHAR(255), FULLTEXT(a)) ENGINE=MyISAM DEFAULT CHARSET=utf8; +INSERT INTO t1 VALUES('„MySQL“'); +SELECT a FROM t1 WHERE MATCH a AGAINST('“MySQL„' IN BOOLEAN MODE); +a +„MySQL“ +DROP TABLE t1; +SET NAMES latin1; From b57f59909e29c37fcb9988ad5abf88fa7fff66b8 Mon Sep 17 00:00:00 2001 From: "jonas@perch.ndb.mysql.com" <> Date: Tue, 3 Jul 2007 14:12:27 +0200 Subject: [PATCH 067/127] ndb - bug#25901 handle undofile/logfile groups that were created while node was node --- .../ndb/src/kernel/blocks/dblqh/DblqhMain.cpp | 22 +++++++++++-------- storage/ndb/src/kernel/blocks/lgman.cpp | 17 ++++++++++---- storage/ndb/src/kernel/blocks/lgman.hpp | 3 ++- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp index e47fcf34471..e5adcf3f857 100644 --- a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp +++ b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp @@ -14215,15 +14215,6 @@ void Dblqh::execSTART_RECREQ(Signal* signal) * WE ALSO NEED TO SET CNEWEST_GCI TO ENSURE THAT LOG RECORDS ARE EXECUTED * WITH A PROPER GCI. *------------------------------------------------------------------------ */ - if(cstartType == NodeState::ST_INITIAL_NODE_RESTART){ - jam(); - cstartRecReq = 2; - StartRecConf * conf = (StartRecConf*)signal->getDataPtrSend(); - conf->startingNodeId = getOwnNodeId(); - sendSignal(cmasterDihBlockref, GSN_START_RECCONF, signal, - StartRecConf::SignalLength, JBB); - return; - }//if if (c_lcp_restoring_fragments.isEmpty()) { @@ -14276,6 +14267,19 @@ void Dblqh::execSTART_RECCONF(Signal* signal) jam(); csrExecUndoLogState = EULS_COMPLETED; + + if(cstartType == NodeState::ST_INITIAL_NODE_RESTART) + { + jam(); + cstartRecReq = 2; + + StartRecConf * conf = (StartRecConf*)signal->getDataPtrSend(); + conf->startingNodeId = getOwnNodeId(); + sendSignal(cmasterDihBlockref, GSN_START_RECCONF, signal, + StartRecConf::SignalLength, JBB); + return; + } + c_lcp_complete_fragments.first(fragptr); build_acc(signal, fragptr.i); return; diff --git a/storage/ndb/src/kernel/blocks/lgman.cpp b/storage/ndb/src/kernel/blocks/lgman.cpp index 25cdac89737..23738717580 100644 --- a/storage/ndb/src/kernel/blocks/lgman.cpp +++ b/storage/ndb/src/kernel/blocks/lgman.cpp @@ -346,6 +346,12 @@ Lgman::execCREATE_FILEGROUP_REQ(Signal* signal){ m_logfile_group_hash.add(ptr); m_logfile_group_list.add(ptr); + + if (getNodeState().getNodeRestartInProgress() || + getNodeState().getSystemRestartInProgress()) + { + ptr.p->m_state = Logfile_group::LG_STARTING; + } CreateFilegroupImplConf* conf= (CreateFilegroupImplConf*)signal->getDataPtr(); @@ -370,8 +376,6 @@ Lgman::execDROP_FILEGROUP_REQ(Signal* signal) { jamEntry(); - jamEntry(); - Uint32 errorCode = 0; DropFilegroupImplReq req = *(DropFilegroupImplReq*)signal->getDataPtr(); do @@ -717,7 +721,8 @@ Lgman::create_file_commit(Signal* signal, Uint32 senderData = ptr.p->m_create.m_senderData; bool first= false; - if(ptr.p->m_state == Undofile::FS_CREATING) + if(ptr.p->m_state == Undofile::FS_CREATING && + (lg_ptr.p->m_state & Logfile_group::LG_ONLINE)) { jam(); Local_undofile_list free(m_file_pool, lg_ptr.p->m_files); @@ -2082,13 +2087,17 @@ Lgman::execSTART_RECREQ(Signal* signal) void Lgman::find_log_head(Signal* signal, Ptr ptr) { + ndbrequire(ptr.p->m_state & + (Logfile_group::LG_STARTING | Logfile_group::LG_SORTING)); + if(ptr.p->m_meta_files.isEmpty() && ptr.p->m_files.isEmpty()) { jam(); /** * Logfile_group wo/ any files */ - + ptr.p->m_state &= ~(Uint32)Logfile_group::LG_STARTING; + ptr.p->m_state |= Logfile_group::LG_ONLINE; m_logfile_group_list.next(ptr); signal->theData[0] = LgmanContinueB::FIND_LOG_HEAD; signal->theData[1] = ptr.i; diff --git a/storage/ndb/src/kernel/blocks/lgman.hpp b/storage/ndb/src/kernel/blocks/lgman.hpp index b26c3219088..d2706818144 100644 --- a/storage/ndb/src/kernel/blocks/lgman.hpp +++ b/storage/ndb/src/kernel/blocks/lgman.hpp @@ -175,13 +175,14 @@ public: ,LG_SORTING = 0x002 // Sorting files ,LG_SEARCHING = 0x004 // Searching in last file ,LG_EXEC_THREAD = 0x008 // Execute thread is running - ,LG_READ_THREAD = 0x010 // Read thread is running + ,LG_READ_THREAD = 0x010 // Read thread is running ,LG_FORCE_SYNC_THREAD = 0x020 ,LG_SYNC_WAITERS_THREAD = 0x040 ,LG_CUT_LOG_THREAD = 0x080 ,LG_WAITERS_THREAD = 0x100 ,LG_FLUSH_THREAD = 0x200 ,LG_DROPPING = 0x400 + ,LG_STARTING = 0x800 }; static const Uint32 LG_THREAD_MASK = Logfile_group::LG_FORCE_SYNC_THREAD | From ee5403110d3f7651ece18f3d2a89258b509616da Mon Sep 17 00:00:00 2001 From: "ramil/ram@mysql.com/ramil.myoffice.izhnet.ru" <> Date: Tue, 3 Jul 2007 17:17:58 +0500 Subject: [PATCH 068/127] Complementary fix for bug #29353: inserting a negative value to a csv table leads to the table corruption New Field::store() method implemented to explicitly set thd->count_cuted_fields before value storing, instead of (incorrectly) setting it in the CSV storage engine. Thread row counter now properly incremented during check and repair in the CSV engine. --- include/mysql/plugin.h | 3 ++- mysql-test/r/csv.result | 2 +- sql/field.cc | 12 ++++++++++++ sql/field.h | 2 ++ sql/mysql_priv.h | 7 +++++++ sql/sql_class.cc | 5 +++++ sql/sql_class.h | 2 -- storage/csv/ha_tina.cc | 11 ++++------- 8 files changed, 33 insertions(+), 11 deletions(-) diff --git a/include/mysql/plugin.h b/include/mysql/plugin.h index 7b224695324..dd540225deb 100644 --- a/include/mysql/plugin.h +++ b/include/mysql/plugin.h @@ -655,7 +655,8 @@ void **thd_ha_data(const MYSQL_THD thd, const struct handlerton *hton); int thd_tx_isolation(const MYSQL_THD thd); char *thd_security_context(MYSQL_THD thd, char *buffer, unsigned int length, unsigned int max_query_len); - +/* Increments the row counter, see THD::row_count */ +void thd_inc_row_count(MYSQL_THD thd); #ifdef __cplusplus } diff --git a/mysql-test/r/csv.result b/mysql-test/r/csv.result index e7cdd612a25..5076220f74b 100644 --- a/mysql-test/r/csv.result +++ b/mysql-test/r/csv.result @@ -5276,7 +5276,7 @@ drop table t1; create table t1(a int, b int) engine=csv; repair table t1; Table Op Msg_type Msg_text -test.t1 repair Warning Data truncated for column 'a' at row 1 +test.t1 repair Warning Data truncated for column 'a' at row 5 test.t1 repair status OK check table t1; Table Op Msg_type Msg_text diff --git a/sql/field.cc b/sql/field.cc index 55a93ed46d6..332a654c89f 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -1360,6 +1360,18 @@ bool Field::send_binary(Protocol *protocol) } +int Field::store(const char *to, uint length, CHARSET_INFO *cs, + enum_check_fields check_level) +{ + int res; + enum_check_fields old_check_level= table->in_use->count_cuted_fields; + table->in_use->count_cuted_fields= check_level; + res= store(to, length, cs); + table->in_use->count_cuted_fields= old_check_level; + return res; +} + + my_decimal *Field::val_decimal(my_decimal *decimal) { /* This never have to be called */ diff --git a/sql/field.h b/sql/field.h index a0fe0f2e57e..ef76cb47d36 100644 --- a/sql/field.h +++ b/sql/field.h @@ -100,6 +100,8 @@ public: virtual int store(longlong nr, bool unsigned_val)=0; virtual int store_decimal(const my_decimal *d)=0; virtual int store_time(MYSQL_TIME *ltime, timestamp_type t_type); + int store(const char *to, uint length, CHARSET_INFO *cs, + enum_check_fields check_level); virtual double val_real(void)=0; virtual longlong val_int(void)=0; virtual my_decimal *val_decimal(my_decimal *); diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 5a50b03282f..9264ca295d9 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -494,6 +494,13 @@ enum enum_parsing_place struct st_table; class THD; +enum enum_check_fields +{ + CHECK_FIELD_IGNORE, + CHECK_FIELD_WARN, + CHECK_FIELD_ERROR_FOR_NULL +}; + /* Struct to handle simple linked lists */ typedef struct st_sql_list { diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 40b37ed7405..e279e23ab69 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -253,6 +253,11 @@ int thd_tx_isolation(const THD *thd) return (int) thd->variables.tx_isolation; } +extern "C" +void thd_inc_row_count(THD *thd) +{ + thd->row_count++; +} /* Dumps a text description of a thread, its security context diff --git a/sql/sql_class.h b/sql/sql_class.h index c46adc62c7c..c3ee71e3297 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -39,8 +39,6 @@ enum enum_ha_read_modes { RFIRST, RNEXT, RPREV, RLAST, RKEY, RNEXT_SAME }; enum enum_duplicates { DUP_ERROR, DUP_REPLACE, DUP_UPDATE }; enum enum_delay_key_write { DELAY_KEY_WRITE_NONE, DELAY_KEY_WRITE_ON, DELAY_KEY_WRITE_ALL }; -enum enum_check_fields -{ CHECK_FIELD_IGNORE, CHECK_FIELD_WARN, CHECK_FIELD_ERROR_FOR_NULL }; enum enum_mark_columns { MARK_COLUMNS_NONE, MARK_COLUMNS_READ, MARK_COLUMNS_WRITE}; diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc index 239d47890ed..2ee96fd5d05 100644 --- a/storage/csv/ha_tina.cc +++ b/storage/csv/ha_tina.cc @@ -45,8 +45,6 @@ TODO: #pragma implementation // gcc: Class implementation #endif -#define MYSQL_SERVER 1 - #include "mysql_priv.h" #include #include "ha_tina.h" @@ -675,7 +673,8 @@ int ha_tina::find_current_row(uchar *buf) if (bitmap_is_set(table->read_set, (*field)->field_index)) { - if ((*field)->store(buffer.ptr(), buffer.length(), buffer.charset())) + if ((*field)->store(buffer.ptr(), buffer.length(), buffer.charset(), + CHECK_FIELD_WARN)) goto err; } } @@ -1002,7 +1001,6 @@ int ha_tina::delete_row(const uchar * buf) int ha_tina::rnd_init(bool scan) { - THD *thd= table ? table->in_use : current_thd; DBUG_ENTER("ha_tina::rnd_init"); /* set buffer to the beginning of the file */ @@ -1014,7 +1012,6 @@ int ha_tina::rnd_init(bool scan) stats.records= 0; records_is_known= 0; chain_ptr= chain; - thd->count_cuted_fields= CHECK_FIELD_WARN; // To find wrong values DBUG_RETURN(0); } @@ -1298,9 +1295,9 @@ int ha_tina::repair(THD* thd, HA_CHECK_OPT* check_opt) current_position= next_position= 0; /* Read the file row-by-row. If everything is ok, repair is not needed. */ - thd->count_cuted_fields= CHECK_FIELD_WARN; // To find wrong values while (!(rc= find_current_row(buf))) { + thd_inc_row_count(thd); rows_repaired++; current_position= next_position; } @@ -1464,9 +1461,9 @@ int ha_tina::check(THD* thd, HA_CHECK_OPT* check_opt) /* set current position to the beginning of the file */ current_position= next_position= 0; /* Read the file row-by-row. If everything is ok, repair is not needed. */ - thd->count_cuted_fields= CHECK_FIELD_WARN; // To find wrong values while (!(rc= find_current_row(buf))) { + thd_inc_row_count(thd); count--; current_position= next_position; } From 7fbcaa87b5966e99b74eca48d7a32a451aca2238 Mon Sep 17 00:00:00 2001 From: "jonas@perch.ndb.mysql.com" <> Date: Tue, 3 Jul 2007 16:29:25 +0200 Subject: [PATCH 069/127] ndb - bug#28642 - Tablespace returning incorrect usage status make free 64 bit (as it represents free bytes, not free extents as originally designed) --- storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp b/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp index 68ca4edb5d0..f2b3173beff 100644 --- a/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp +++ b/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp @@ -390,7 +390,7 @@ struct NdbFileImpl : public NdbDictObjectImpl { NdbFileImpl(NdbDictionary::Object::Type t); Uint64 m_size; - Uint32 m_free; + Uint64 m_free; BaseString m_path; BaseString m_filegroup_name; Uint32 m_filegroup_id; From dbe4fb94cad60318d54db399206848310e1fc9d3 Mon Sep 17 00:00:00 2001 From: "gshchepa/uchum@gleb.loc" <> Date: Tue, 3 Jul 2007 19:37:46 +0500 Subject: [PATCH 070/127] Fixed bug #29294. The `SELECT 'r' INTO OUTFILE ... FIELDS ENCLOSED BY 'r' ' statement encoded the 'r' string to a 4 byte string of value x'725c7272' (sequence of 4 characters: r\rr). The LOAD DATA statement decoded this string to a 1 byte string of value x'0d' (ASCII Carriage Return character) instead of the original 'r' character. The same error also happened with the FIELDS ENCLOSED BY clause followed by special characters: 'n', 't', 'r', 'b', '0', 'Z' and 'N'. NOTE 1: This is a result of the undocumented feature: the LOAD DATA INFILE recognises 2-byte input sequences like \n, \t, \r and \Z in addition to documented 2-byte sequences: \0 and \N. This feature should be documented (here backspace character is a default ESCAPED BY character, in the real-life example it may be any ESCAPED BY character). NOTE 2, changed behaviour: Now the `SELECT INTO OUTFILE' statement with the `FIELDS ENCLOSED BY' clause followed by one of: 'n', 't', 'r', 'b', '0', 'Z' or 'N' characters encodes this special character itself by doubling it ('r' --> 'rr'), not by prepending it with an escape character. --- mysql-test/r/loaddata.result | 65 +++++++++++++++++++++++++++++++++++- mysql-test/t/loaddata.test | 38 ++++++++++++++++++++- sql/sql_class.cc | 5 ++- sql/sql_class.h | 9 +++++ sql/sql_load.cc | 1 + 5 files changed, 115 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/loaddata.result b/mysql-test/r/loaddata.result index e1076cd3072..0906b1708c7 100644 --- a/mysql-test/r/loaddata.result +++ b/mysql-test/r/loaddata.result @@ -1,4 +1,4 @@ -drop table if exists t1; +drop table if exists t1,t2; create table t1 (a date, b date, c date not null, d date); load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ','; Warnings: @@ -85,3 +85,66 @@ field1 field2 a"b cd"ef a"b c"d"e drop table t1; +CREATE TABLE t1 ( +id INT AUTO_INCREMENT PRIMARY KEY, +c1 VARCHAR(255) +); +CREATE TABLE t2 ( +id INT, +c2 VARCHAR(255) +); +INSERT INTO t1 (c1) VALUES +('r'), ('rr'), ('rrr'), ('rrrr'), +('.r'), ('.rr'), ('.rrr'), ('.rrrr'), +('r.'), ('rr.'), ('rrr.'), ('rrrr.'), +('.r.'), ('.rr.'), ('.rrr.'), ('.rrrr.'), +('\r'), ('\\rr'), ('\\\rr'), ('\\\\rr'); +SELECT * FROM t1; +id c1 +1 r +2 rr +3 rrr +4 rrrr +5 .r +6 .rr +7 .rrr +8 .rrrr +9 r. +10 rr. +11 rrr. +12 rrrr. +13 .r. +14 .rr. +15 .rrr. +16 .rrrr. +17 +18 \rr +19 \ r +20 \\rr +SELECT * INTO OUTFILE 'MYSQL_TEST_DIR/var/tmp/t1' FIELDS ENCLOSED BY 'r' FROM t1; +r1r rrrr +r2r rrrrrr +r3r rrrrrrrr +r4r rrrrrrrrrr +r5r r.rrr +r6r r.rrrrr +r7r r.rrrrrrr +r8r r.rrrrrrrrr +r9r rrr.r +r10r rrrrr.r +r11r rrrrrrr.r +r12r rrrrrrrrr.r +r13r r.rr.r +r14r r.rrrr.r +r15r r.rrrrrr.r +r16r r.rrrrrrrr.r +r17r r r +r18r r\\rrrrr +r19r r\\ rrr +r20r r\\\\rrrrr +LOAD DATA INFILE 'MYSQL_TEST_DIR/var/tmp/t1' INTO TABLE t2 FIELDS ENCLOSED BY 'r'; +SELECT t1.id, c1, c2 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE c1 != c2; +id c1 c2 +SELECT t1.id, c1, c2 FROM t1 RIGHT JOIN t2 ON t1.id=t2.id WHERE c1 != c2; +id c1 c2 +DROP TABLE t1,t2; diff --git a/mysql-test/t/loaddata.test b/mysql-test/t/loaddata.test index e989cb0b2ac..74d71985854 100644 --- a/mysql-test/t/loaddata.test +++ b/mysql-test/t/loaddata.test @@ -3,7 +3,7 @@ # --disable_warnings -drop table if exists t1; +drop table if exists t1,t2; --enable_warnings create table t1 (a date, b date, c date not null, d date); @@ -67,4 +67,40 @@ load data infile '../../std_data/loaddata5.dat' into table t1 fields terminated select * from t1; drop table t1; +# +# Bug #29294 SELECT INTO OUTFILE/LOAD DATA INFILE with special +# characters in the FIELDS ENCLOSED BY clause +# + +CREATE TABLE t1 ( + id INT AUTO_INCREMENT PRIMARY KEY, + c1 VARCHAR(255) +); + +CREATE TABLE t2 ( + id INT, + c2 VARCHAR(255) +); + +INSERT INTO t1 (c1) VALUES + ('r'), ('rr'), ('rrr'), ('rrrr'), + ('.r'), ('.rr'), ('.rrr'), ('.rrrr'), + ('r.'), ('rr.'), ('rrr.'), ('rrrr.'), + ('.r.'), ('.rr.'), ('.rrr.'), ('.rrrr.'), + ('\r'), ('\\rr'), ('\\\rr'), ('\\\\rr'); +SELECT * FROM t1; + +--exec rm -f $MYSQL_TEST_DIR/var/tmp/t1 +--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR +eval SELECT * INTO OUTFILE '$MYSQL_TEST_DIR/var/tmp/t1' FIELDS ENCLOSED BY 'r' FROM t1; +--exec cat $MYSQL_TEST_DIR/var/tmp/t1 + +--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR +eval LOAD DATA INFILE '$MYSQL_TEST_DIR/var/tmp/t1' INTO TABLE t2 FIELDS ENCLOSED BY 'r'; +SELECT t1.id, c1, c2 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE c1 != c2; +SELECT t1.id, c1, c2 FROM t1 RIGHT JOIN t2 ON t1.id=t2.id WHERE c1 != c2; + +--exec rm $MYSQL_TEST_DIR/var/tmp/t1 +DROP TABLE t1,t2; + # End of 4.1 tests diff --git a/sql/sql_class.cc b/sql/sql_class.cc index b187d29021a..0f58f96cf57 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1020,6 +1020,7 @@ select_export::prepare(List &list, SELECT_LEX_UNIT *u) field_sep_char= (exchange->enclosed->length() ? (*exchange->enclosed)[0] : field_term_length ? (*exchange->field_term)[0] : INT_MAX); escape_char= (exchange->escaped->length() ? (*exchange->escaped)[0] : -1); + is_ambiguous_field_sep= strchr(ESCAPE_CHARS, field_sep_char); line_sep_char= (exchange->line_term->length() ? (*exchange->line_term)[0] : INT_MAX); if (!field_term_length) @@ -1113,7 +1114,9 @@ bool select_export::send_data(List &items) (int) *pos == line_sep_char || !*pos) { char tmp_buff[2]; - tmp_buff[0]= escape_char; + tmp_buff[0]= ((int) *pos == field_sep_char && + is_ambiguous_field_sep) ? + field_sep_char : escape_char; tmp_buff[1]= *pos ? *pos : '0'; if (my_b_write(&cache,(byte*) start,(uint) (pos-start)) || my_b_write(&cache,(byte*) tmp_buff,2)) diff --git a/sql/sql_class.h b/sql/sql_class.h index db6f65cab55..eb2c8637651 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1224,9 +1224,18 @@ public: }; +#define ESCAPE_CHARS "ntrb0ZN" // keep synchronous with READ_INFO::unescape + + class select_export :public select_to_file { uint field_term_length; int field_sep_char,escape_char,line_sep_char; + /* + The is_ambiguous_field_sep field is true if a value of the field_sep_char + field is one of the 'n', 't', 'r' etc characters + (see the READ_INFO::unescape method and the ESCAPE_CHARS constant value). + */ + bool is_ambiguous_field_sep; bool fixed_row_size; public: select_export(sql_exchange *ex) :select_to_file(ex) {} diff --git a/sql/sql_load.cc b/sql/sql_load.cc index 10124e5f5ff..bac981651c3 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -611,6 +611,7 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table, char READ_INFO::unescape(char chr) { + /* keep this switch synchornous with the ESCAPE_CHARS macro */ switch(chr) { case 'n': return '\n'; case 't': return '\t'; From 381b11cefebc2dc26e993220ca3e84b416992820 Mon Sep 17 00:00:00 2001 From: "jonas@perch.ndb.mysql.com" <> Date: Tue, 3 Jul 2007 16:56:35 +0200 Subject: [PATCH 071/127] ndb - bug#28720 - "Disk data meta information is not visible in mysqld but exists in ndbd" continue on unknown result (no contact) --- sql/ha_ndbcluster.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 7f94268f4f5..165d686abe8 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -10974,6 +10974,10 @@ static int ndbcluster_fill_files_table(handlerton *hton, { if (ndberr.classification == NdbError::SchemaError) continue; + + if (ndberr.classification == NdbError::UnknownResultError) + continue; + ERR_RETURN(ndberr); } NdbDictionary::Tablespace ts= dict->getTablespace(df.getTablespace()); From 131f81ea9d730769da20768530e33982b7a33c6b Mon Sep 17 00:00:00 2001 From: "antony@ppcg5.local" <> Date: Tue, 3 Jul 2007 08:11:38 -0700 Subject: [PATCH 072/127] move test for bug29299 into seperate file as it requires charset gbk fixes test breakage on sles10-ia64-a which omits charset. --- mysql-test/r/fulltext2.result | 12 ------------ mysql-test/r/fulltext3.result | 13 +++++++++++++ mysql-test/t/fulltext2.test | 12 ------------ mysql-test/t/fulltext3.test | 24 ++++++++++++++++++++++++ 4 files changed, 37 insertions(+), 24 deletions(-) create mode 100644 mysql-test/r/fulltext3.result create mode 100644 mysql-test/t/fulltext3.test diff --git a/mysql-test/r/fulltext2.result b/mysql-test/r/fulltext2.result index e9bee6f697e..7e3e25370d3 100644 --- a/mysql-test/r/fulltext2.result +++ b/mysql-test/r/fulltext2.result @@ -241,18 +241,6 @@ select * from t1 where match a against('ab c' in boolean mode); a drop table t1; set names latin1; -CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a)); -SET NAMES utf8; -INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161); -SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE); -HEX(a) -BEF361616197C22061616161 -DELETE FROM t1 LIMIT 1; -CHECK TABLE t1; -Table Op Msg_type Msg_text -test.t1 check status OK -SET NAMES latin1; -DROP TABLE t1; SET NAMES utf8; CREATE TABLE t1(a VARCHAR(255), FULLTEXT(a)) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO t1 VALUES('„MySQL“'); diff --git a/mysql-test/r/fulltext3.result b/mysql-test/r/fulltext3.result new file mode 100644 index 00000000000..019d5f472ed --- /dev/null +++ b/mysql-test/r/fulltext3.result @@ -0,0 +1,13 @@ +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a)); +SET NAMES utf8; +INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161); +SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE); +HEX(a) +BEF361616197C22061616161 +DELETE FROM t1 LIMIT 1; +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +SET NAMES latin1; +DROP TABLE t1; diff --git a/mysql-test/t/fulltext2.test b/mysql-test/t/fulltext2.test index cb2e839c41f..88967a5dd04 100644 --- a/mysql-test/t/fulltext2.test +++ b/mysql-test/t/fulltext2.test @@ -220,18 +220,6 @@ select * from t1 where match a against('ab c' in boolean mode); drop table t1; set names latin1; -# -# BUG#29299 - repeatable myisam fulltext index corruption -# -CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a)); -SET NAMES utf8; -INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161); -SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE); -DELETE FROM t1 LIMIT 1; -CHECK TABLE t1; -SET NAMES latin1; -DROP TABLE t1; - # End of 4.1 tests # diff --git a/mysql-test/t/fulltext3.test b/mysql-test/t/fulltext3.test new file mode 100644 index 00000000000..5ca068c066b --- /dev/null +++ b/mysql-test/t/fulltext3.test @@ -0,0 +1,24 @@ +--source include/have_gbk.inc +# +# test of new fulltext search features +# + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + + +# +# BUG#29299 - repeatable myisam fulltext index corruption +# +CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a)); +SET NAMES utf8; +INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161); +SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE); +DELETE FROM t1 LIMIT 1; +CHECK TABLE t1; +SET NAMES latin1; +DROP TABLE t1; + +# End of 4.1 tests + From d46ff21f4fc286a706c2d90c19774fece7b277ff Mon Sep 17 00:00:00 2001 From: "jonas@perch.ndb.mysql.com" <> Date: Tue, 3 Jul 2007 17:22:57 +0200 Subject: [PATCH 073/127] ndb - bug#28720 fix also undo files --- sql/ha_ndbcluster.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 165d686abe8..818996f5fae 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -11057,6 +11057,8 @@ static int ndbcluster_fill_files_table(handlerton *hton, { if (ndberr.classification == NdbError::SchemaError) continue; + if (ndberr.classification == NdbError::UnknownResultError) + continue; ERR_RETURN(ndberr); } NdbDictionary::LogfileGroup lfg= From 5f5929846b0f655282f243f9acf641aae310cf2b Mon Sep 17 00:00:00 2001 From: "gshchepa/uchum@gleb.loc" <> Date: Tue, 3 Jul 2007 21:05:17 +0500 Subject: [PATCH 074/127] sql_class.cc: Windows compilation error fix. --- sql/sql_class.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 0f58f96cf57..3e918a6a07c 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1020,7 +1020,7 @@ select_export::prepare(List &list, SELECT_LEX_UNIT *u) field_sep_char= (exchange->enclosed->length() ? (*exchange->enclosed)[0] : field_term_length ? (*exchange->field_term)[0] : INT_MAX); escape_char= (exchange->escaped->length() ? (*exchange->escaped)[0] : -1); - is_ambiguous_field_sep= strchr(ESCAPE_CHARS, field_sep_char); + is_ambiguous_field_sep= test(strchr(ESCAPE_CHARS, field_sep_char)); line_sep_char= (exchange->line_term->length() ? (*exchange->line_term)[0] : INT_MAX); if (!field_term_length) From 1f85dac21c9533a17d2e9dfc9d4975785da3d175 Mon Sep 17 00:00:00 2001 From: "gshchepa/uchum@gleb.loc" <> Date: Tue, 3 Jul 2007 21:45:20 +0500 Subject: [PATCH 075/127] loaddata.result, loaddata.test: Test case update for bug #29294. --- mysql-test/r/loaddata.result | 11 +---------- mysql-test/t/loaddata.test | 3 +-- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/mysql-test/r/loaddata.result b/mysql-test/r/loaddata.result index 0906b1708c7..83a0788b793 100644 --- a/mysql-test/r/loaddata.result +++ b/mysql-test/r/loaddata.result @@ -97,8 +97,7 @@ INSERT INTO t1 (c1) VALUES ('r'), ('rr'), ('rrr'), ('rrrr'), ('.r'), ('.rr'), ('.rrr'), ('.rrrr'), ('r.'), ('rr.'), ('rrr.'), ('rrrr.'), -('.r.'), ('.rr.'), ('.rrr.'), ('.rrrr.'), -('\r'), ('\\rr'), ('\\\rr'), ('\\\\rr'); +('.r.'), ('.rr.'), ('.rrr.'), ('.rrrr.'); SELECT * FROM t1; id c1 1 r @@ -117,10 +116,6 @@ id c1 14 .rr. 15 .rrr. 16 .rrrr. -17 -18 \rr -19 \ r -20 \\rr SELECT * INTO OUTFILE 'MYSQL_TEST_DIR/var/tmp/t1' FIELDS ENCLOSED BY 'r' FROM t1; r1r rrrr r2r rrrrrr @@ -138,10 +133,6 @@ r13r r.rr.r r14r r.rrrr.r r15r r.rrrrrr.r r16r r.rrrrrrrr.r -r17r r r -r18r r\\rrrrr -r19r r\\ rrr -r20r r\\\\rrrrr LOAD DATA INFILE 'MYSQL_TEST_DIR/var/tmp/t1' INTO TABLE t2 FIELDS ENCLOSED BY 'r'; SELECT t1.id, c1, c2 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE c1 != c2; id c1 c2 diff --git a/mysql-test/t/loaddata.test b/mysql-test/t/loaddata.test index 74d71985854..14f33c6b396 100644 --- a/mysql-test/t/loaddata.test +++ b/mysql-test/t/loaddata.test @@ -86,8 +86,7 @@ INSERT INTO t1 (c1) VALUES ('r'), ('rr'), ('rrr'), ('rrrr'), ('.r'), ('.rr'), ('.rrr'), ('.rrrr'), ('r.'), ('rr.'), ('rrr.'), ('rrrr.'), - ('.r.'), ('.rr.'), ('.rrr.'), ('.rrrr.'), - ('\r'), ('\\rr'), ('\\\rr'), ('\\\\rr'); + ('.r.'), ('.rr.'), ('.rrr.'), ('.rrrr.'); SELECT * FROM t1; --exec rm -f $MYSQL_TEST_DIR/var/tmp/t1 From 79622efe7c6f84f0347456f5c05326239e042c48 Mon Sep 17 00:00:00 2001 From: "gshchepa/uchum@gleb.loc" <> Date: Wed, 4 Jul 2007 03:15:37 +0500 Subject: [PATCH 076/127] loaddata.result, loaddata.test: Updated test case for bug #29294. --- mysql-test/r/loaddata.result | 4 ++-- mysql-test/t/loaddata.test | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/mysql-test/r/loaddata.result b/mysql-test/r/loaddata.result index 0aa95983264..031aa5c700c 100644 --- a/mysql-test/r/loaddata.result +++ b/mysql-test/r/loaddata.result @@ -117,7 +117,7 @@ id c1 14 .rr. 15 .rrr. 16 .rrrr. -SELECT * INTO OUTFILE 'MYSQL_TEST_DIR/var/tmp/t1' FIELDS ENCLOSED BY 'r' FROM t1; +SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/t1' FIELDS ENCLOSED BY 'r' FROM t1; r1r rrrr r2r rrrrrr r3r rrrrrrrr @@ -134,7 +134,7 @@ r13r r.rr.r r14r r.rrrr.r r15r r.rrrrrr.r r16r r.rrrrrrrr.r -LOAD DATA INFILE 'MYSQL_TEST_DIR/var/tmp/t1' INTO TABLE t2 FIELDS ENCLOSED BY 'r'; +LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/t1' INTO TABLE t2 FIELDS ENCLOSED BY 'r'; SELECT t1.id, c1, c2 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE c1 != c2; id c1 c2 SELECT t1.id, c1, c2 FROM t1 RIGHT JOIN t2 ON t1.id=t2.id WHERE c1 != c2; diff --git a/mysql-test/t/loaddata.test b/mysql-test/t/loaddata.test index c7f16fc303b..cdd3bb80b6e 100644 --- a/mysql-test/t/loaddata.test +++ b/mysql-test/t/loaddata.test @@ -89,17 +89,17 @@ INSERT INTO t1 (c1) VALUES ('.r.'), ('.rr.'), ('.rrr.'), ('.rrrr.'); SELECT * FROM t1; ---exec rm -f $MYSQL_TEST_DIR/var/tmp/t1 ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval SELECT * INTO OUTFILE '$MYSQL_TEST_DIR/var/tmp/t1' FIELDS ENCLOSED BY 'r' FROM t1; ---exec cat $MYSQL_TEST_DIR/var/tmp/t1 +--exec rm -f $MYSQLTEST_VARDIR/tmp/t1 +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval SELECT * INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/t1' FIELDS ENCLOSED BY 'r' FROM t1; +--exec cat $MYSQLTEST_VARDIR/tmp/t1 ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/var/tmp/t1' INTO TABLE t2 FIELDS ENCLOSED BY 'r'; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/t1' INTO TABLE t2 FIELDS ENCLOSED BY 'r'; SELECT t1.id, c1, c2 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE c1 != c2; SELECT t1.id, c1, c2 FROM t1 RIGHT JOIN t2 ON t1.id=t2.id WHERE c1 != c2; ---exec rm $MYSQL_TEST_DIR/var/tmp/t1 +--exec rm $MYSQLTEST_VARDIR/tmp/t1 DROP TABLE t1,t2; # End of 4.1 tests From 4f49d804cf16828942c8ab6e15071255b141d53b Mon Sep 17 00:00:00 2001 From: "tsmith@sita.local" <> Date: Tue, 3 Jul 2007 19:51:32 -0600 Subject: [PATCH 077/127] rpl_misc_functions.result, rpl_misc_functions.test: work around bug 29537, which was revealed by patch for bug 28356: move DROP TABLE before DROP PROCEDURE in cleanup --- mysql-test/suite/rpl/r/rpl_misc_functions.result | 2 +- mysql-test/suite/rpl/t/rpl_misc_functions.test | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/suite/rpl/r/rpl_misc_functions.result b/mysql-test/suite/rpl/r/rpl_misc_functions.result index ca7403316b1..94aa1bb61a7 100644 --- a/mysql-test/suite/rpl/r/rpl_misc_functions.result +++ b/mysql-test/suite/rpl/r/rpl_misc_functions.result @@ -48,7 +48,7 @@ where ABS(t1.col_a - t1_slave.col_a) < 0.0001 ; SELECT @aux; @aux 12 +DROP TABLE t1, t1_slave; DROP PROCEDURE test_replication_sp1; DROP PROCEDURE test_replication_sp2; DROP FUNCTION test_replication_sf; -DROP TABLE t1, t1_slave; diff --git a/mysql-test/suite/rpl/t/rpl_misc_functions.test b/mysql-test/suite/rpl/t/rpl_misc_functions.test index b87fff919b2..d56402cbe76 100644 --- a/mysql-test/suite/rpl/t/rpl_misc_functions.test +++ b/mysql-test/suite/rpl/t/rpl_misc_functions.test @@ -104,10 +104,10 @@ if (`SELECT @aux <> 12 OR @aux IS NULL`) # Cleanup connection master; +DROP TABLE t1, t1_slave; DROP PROCEDURE test_replication_sp1; DROP PROCEDURE test_replication_sp2; DROP FUNCTION test_replication_sf; -DROP TABLE t1, t1_slave; --sync_slave_with_master From 6336d8c1cb05b2f8e71451a78dfe4e6137237c71 Mon Sep 17 00:00:00 2001 From: "gkodinov/kgeorge@magare.gmz" <> Date: Wed, 4 Jul 2007 11:58:56 +0300 Subject: [PATCH 078/127] merge 5.0-opt -> 5.1-opt --- mysql-test/include/mix1.inc | 2 +- mysql-test/r/innodb_mysql.result | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/include/mix1.inc b/mysql-test/include/mix1.inc index c901cea9cba..d8034e19898 100644 --- a/mysql-test/include/mix1.inc +++ b/mysql-test/include/mix1.inc @@ -28,7 +28,7 @@ eval SET SESSION STORAGE_ENGINE = $engine_type; --disable_warnings -drop table if exists t1,t2,t3,t4,t1m,t1i,t2m,t2i,t4; +drop table if exists t1,t2,t3,t1m,t1i,t2m,t2i,t4; --enable_warnings diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index cf403bddf6a..db912c650c3 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -1,5 +1,5 @@ SET SESSION STORAGE_ENGINE = InnoDB; -drop table if exists t1,t2,t3,t4,t1m,t1i,t2m,t2i,t4; +drop table if exists t1,t2,t3,t1m,t1i,t2m,t2i,t4; create table t1 ( c_id int(11) not null default '0', org_id int(11) default null, From cdea05a79377865e0c89aaf72cdc24362b76887e Mon Sep 17 00:00:00 2001 From: "sergefp@mysql.com" <> Date: Wed, 4 Jul 2007 17:11:56 +0400 Subject: [PATCH 079/127] Backport from 5.2: Fix valgrind failure: Don't access item_func->arguments() if item_func->argument_count()==0 --- sql/sql_show.cc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 902b298e423..dc1a7bc3bd3 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -1909,11 +1909,9 @@ bool uses_only_table_name_fields(Item *item, TABLE_LIST *table) if (item->type() == Item::FUNC_ITEM) { Item_func *item_func= (Item_func*)item; - Item **child; - Item **item_end= (item_func->arguments()) + item_func->argument_count(); - for (child= item_func->arguments(); child != item_end; child++) + for (uint i=0; iargument_count(); i++) { - if (!uses_only_table_name_fields(*child, table)) + if (!uses_only_table_name_fields(item_func->arguments()[i], table)) return 0; } } From 8ab2c73d3ab547edf787a95afd36cac9311fb13c Mon Sep 17 00:00:00 2001 From: "tomas@whalegate.ndb.mysql.com" <> Date: Wed, 4 Jul 2007 20:16:42 +0200 Subject: [PATCH 080/127] backport compute hash --- storage/ndb/include/ndbapi/Ndb.hpp | 34 ++++++ storage/ndb/src/ndbapi/Ndb.cpp | 176 +++++++++++++++++++++++++++++ 2 files changed, 210 insertions(+) diff --git a/storage/ndb/include/ndbapi/Ndb.hpp b/storage/ndb/include/ndbapi/Ndb.hpp index a6a3df92ddb..4d0219d1a3c 100644 --- a/storage/ndb/include/ndbapi/Ndb.hpp +++ b/storage/ndb/include/ndbapi/Ndb.hpp @@ -1280,6 +1280,16 @@ public: * @{ */ + /** + * Structure for passing in pointers to startTransaction + * + */ + struct Key_part_ptr + { + const void * ptr; + unsigned len; + }; + /** * Start a transaction * @@ -1300,6 +1310,30 @@ public: const char *keyData = 0, Uint32 keyLen = 0); + /** + * Compute hash value given table/keys + * + * @param hashvalueptr - OUT, is set to hashvalue if return value is 0 + * @param table Pointer to table object + * @param keyData Null-terminated array of pointers to keyParts that is + * part of distribution key. + * Length of resp. keyPart will be read from + * metadata and checked against passed value + * @param xfrmbuf Pointer to temporary buffer that will be used + * to calculate hashvalue + * @param xfrmbuflen Lengh of buffer + * + * @note if xfrmbuf is null (default) malloc/free will be made + * if xfrmbuf is not null but length is too short, method will fail + * + * @return 0 - ok - hashvalueptr is set + * else - fail, return error code + */ + static int computeHash(Uint32* hashvalueptr, + const NdbDictionary::Table*, + const struct Key_part_ptr * keyData, + void* xfrmbuf = 0, Uint32 xfrmbuflen = 0); + /** * Close a transaction. * diff --git a/storage/ndb/src/ndbapi/Ndb.cpp b/storage/ndb/src/ndbapi/Ndb.cpp index 9b8e4e86d30..bbeeed3ae70 100644 --- a/storage/ndb/src/ndbapi/Ndb.cpp +++ b/storage/ndb/src/ndbapi/Ndb.cpp @@ -37,6 +37,7 @@ Name: Ndb.cpp #include "API.hpp" #include #include +#include /**************************************************************************** void connect(); @@ -304,6 +305,181 @@ Return Value: Returns a pointer to a connection object. Return NULL otherwise. Remark: Start transaction. Synchronous. *****************************************************************************/ +int +Ndb::computeHash(Uint32 *retval, + const NdbDictionary::Table *table, + const struct Key_part_ptr * keyData, + void* buf, Uint32 bufLen) +{ + Uint32 j = 0; + Uint32 sumlen = 0; // Needed len + const NdbTableImpl* impl = &NdbTableImpl::getImpl(*table); + const NdbColumnImpl* const * cols = impl->m_columns.getBase(); + Uint32 len; + NdbTransaction* trans; + char* pos; + + Uint32 colcnt = impl->m_columns.size(); + Uint32 parts = impl->m_noOfDistributionKeys; + if (parts == 0) + { + parts = impl->m_noOfKeys; + } + + for (Uint32 i = 0; im_distributionKey) + { + // wl3717_todo + // char allowed now as dist key so this case should be tested + partcols[j++] = cols[i]; + } + } + + for (Uint32 i = 0; im_type, + keyData[i].ptr, + keyData[i].len, + lb, len))) + goto emalformedkey; + + if (unlikely(keyData[i].len < (lb + len))) + goto elentosmall; + + Uint32 maxlen = (partcols[i]->m_attrSize * partcols[i]->m_arraySize); + + if (unlikely(lb == 0 && keyData[i].len != maxlen)) + goto emalformedkey; + + if (partcols[i]->m_cs) + { + Uint32 xmul = partcols[i]->m_cs->strxfrm_multiply; + xmul = xmul ? xmul : 1; + len = xmul * (maxlen - lb); + } + + len = (lb + len + 3) & ~(Uint32)3; + sumlen += len; + + } + + if (buf) + { + UintPtr org = UintPtr(buf); + UintPtr use = (org + 7) & ~(UintPtr)7; + + buf = (void*)use; + bufLen -= (use - org); + + if (unlikely(sumlen > bufLen)) + goto ebuftosmall; + } + else + { + buf = malloc(sumlen); + if (unlikely(buf == 0)) + goto enomem; + bufLen = 0; + assert((UintPtr(buf) & 7) == 0); + } + + pos = (char*)buf; + for (Uint32 i = 0; im_type, + keyData[i].ptr, keyData[i].len, lb, len); + CHARSET_INFO* cs; + if ((cs = partcols[i]->m_cs)) + { + Uint32 xmul = cs->strxfrm_multiply; + if (xmul == 0) + xmul = 1; + /* + * Varchar end-spaces are ignored in comparisons. To get same hash + * we blank-pad to maximum length via strnxfrm. + */ + Uint32 maxlen = (partcols[i]->m_attrSize * partcols[i]->m_arraySize); + Uint32 dstLen = xmul * (maxlen - lb); + int n = NdbSqlUtil::strnxfrm_bug7284(cs, + (unsigned char*)pos, + dstLen, + ((unsigned char*)keyData[i].ptr)+lb, + len); + + if (unlikely(n == -1)) + goto emalformedstring; + + while ((n & 3) != 0) + { + pos[n++] = 0; + } + pos += n; + } + else + { + len += lb; + memcpy(pos, keyData[i].ptr, len); + while (len & 3) + { + * (pos + len++) = 0; + } + pos += len; + } + } + len = UintPtr(pos) - UintPtr(buf); + assert((len & 3) == 0); + + Uint32 values[4]; + md5_hash(values, (const Uint64*)buf, len >> 2); + + if (retval) + { + * retval = values[1]; + } + + if (bufLen == 0) + free(buf); + + return 0; + +enullptr: + return 4316; + +emissingnullptr: + return 4276; + +elentosmall: + return 4277; + +ebuftosmall: + return 4278; + +emalformedstring: + if (bufLen == 0) + free(buf); + + return 4279; + +emalformedkey: + return 4280; + +enomem: + return 4000; +} + NdbTransaction* Ndb::startTransaction(const NdbDictionary::Table *table, const char * keyData, Uint32 keyLen) From 3bcf0039a68177a82d1ee330661c102e0615ee8f Mon Sep 17 00:00:00 2001 From: "tsmith@sita.local" <> Date: Wed, 4 Jul 2007 12:26:39 -0600 Subject: [PATCH 081/127] rpl_misc_functions.result, rpl_misc_functions.test: Remove indeterministic behavior from a test --- .../suite/rpl/r/rpl_misc_functions.result | 17 ++++++++------- .../suite/rpl/t/rpl_misc_functions.test | 21 ++++++++++--------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/mysql-test/suite/rpl/r/rpl_misc_functions.result b/mysql-test/suite/rpl/r/rpl_misc_functions.result index 94aa1bb61a7..a8e5520ca8f 100644 --- a/mysql-test/suite/rpl/r/rpl_misc_functions.result +++ b/mysql-test/suite/rpl/r/rpl_misc_functions.result @@ -20,11 +20,12 @@ select * from t1, t2 where (t1.id=t2.id) and not(t1.i=t2.i and t1.r1=t2.r1 and t id i r1 r2 p id i r1 r2 p drop table t1; DROP TABLE IF EXISTS t1; -CREATE TABLE t1 (col_a double default NULL); +CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, +col_a DOUBLE DEFAULT NULL); CREATE PROCEDURE test_replication_sp1() BEGIN -INSERT INTO t1 VALUES (rand()), (rand()); -INSERT INTO t1 VALUES (rand()); +INSERT INTO t1 (col_a) VALUES (rand()), (rand()); +INSERT INTO t1 (col_a) VALUES (rand()); END| CREATE PROCEDURE test_replication_sp2() BEGIN @@ -37,14 +38,14 @@ RETURN (rand() + rand()); END| CALL test_replication_sp1(); CALL test_replication_sp2(); -INSERT INTO t1 VALUES (test_replication_sf()); -INSERT INTO t1 VALUES (test_replication_sf()); -INSERT INTO t1 VALUES (test_replication_sf()); +INSERT INTO t1 (col_a) VALUES (test_replication_sf()); +INSERT INTO t1 (col_a) VALUES (test_replication_sf()); +INSERT INTO t1 (col_a) VALUES (test_replication_sf()); select * from t1 into outfile "../tmp/t1_slave.txt"; create temporary table t1_slave select * from t1 where 1=0; load data infile '../tmp/t1_slave.txt' into table t1_slave; -select count(*) into @aux from t1, t1_slave -where ABS(t1.col_a - t1_slave.col_a) < 0.0001 ; +select count(*) into @aux from t1 join t1_slave using (id) +where ABS(t1.col_a - t1_slave.col_a) < 0.0000001 ; SELECT @aux; @aux 12 diff --git a/mysql-test/suite/rpl/t/rpl_misc_functions.test b/mysql-test/suite/rpl/t/rpl_misc_functions.test index d56402cbe76..1c94471c975 100644 --- a/mysql-test/suite/rpl/t/rpl_misc_functions.test +++ b/mysql-test/suite/rpl/t/rpl_misc_functions.test @@ -43,15 +43,16 @@ drop table t1; DROP TABLE IF EXISTS t1; --enable_warnings -CREATE TABLE t1 (col_a double default NULL); +CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, + col_a DOUBLE DEFAULT NULL); DELIMITER |; # Use a SP that calls rand() multiple times CREATE PROCEDURE test_replication_sp1() BEGIN - INSERT INTO t1 VALUES (rand()), (rand()); - INSERT INTO t1 VALUES (rand()); + INSERT INTO t1 (col_a) VALUES (rand()), (rand()); + INSERT INTO t1 (col_a) VALUES (rand()); END| # Use a SP that calls another SP to call rand() multiple times @@ -73,9 +74,9 @@ DELIMITER ;| # the master to those on the slave. CALL test_replication_sp1(); CALL test_replication_sp2(); -INSERT INTO t1 VALUES (test_replication_sf()); -INSERT INTO t1 VALUES (test_replication_sf()); -INSERT INTO t1 VALUES (test_replication_sf()); +INSERT INTO t1 (col_a) VALUES (test_replication_sf()); +INSERT INTO t1 (col_a) VALUES (test_replication_sf()); +INSERT INTO t1 (col_a) VALUES (test_replication_sf()); --sync_slave_with_master @@ -90,14 +91,14 @@ load data infile '../tmp/t1_slave.txt' into table t1_slave; # Compare master and slave temp table, use subtraction # for floating point comparison of "double" -select count(*) into @aux from t1, t1_slave -where ABS(t1.col_a - t1_slave.col_a) < 0.0001 ; +select count(*) into @aux from t1 join t1_slave using (id) +where ABS(t1.col_a - t1_slave.col_a) < 0.0000001 ; SELECT @aux; if (`SELECT @aux <> 12 OR @aux IS NULL`) { --echo # ERROR: We expected to get count(*) = 12. - SELECT col_a FROM t1; - SELECT col_a FROM t1_slave; + SELECT id, col_a FROM t1; + SELECT id, col_a FROM t1_slave; --echo # abort exit; } From dc82068c9696f7da81c60b167b8a68d2c91d8bdb Mon Sep 17 00:00:00 2001 From: "istruewing@chilla.local" <> Date: Wed, 4 Jul 2007 21:55:26 +0200 Subject: [PATCH 082/127] Bug#26827 - table->read_set is set incorrectly, causing update of a different column For efficiency some storage engines do not read a complete record for update, but only the columns required for selecting the rows. When updating a row of a partitioned table, modifying a column that is part of the partition or subpartition expression, then the row may need to move from one [sub]partition to another one. This is done by inserting the new row into the target [sub]partition and deleting the old row from the originating one. For the insert we need a complete record. If an above mentioned engine was used for a partitioned table, we did not have a complete record in update_row(). The implicitly executed write_row() got an incomplete record. This is solved by instructing the engine to read a complete record if one of the columns of the partition or subpartiton is to be updated. No testcase. This can be reproduced with Falcon only. The engines contained in standard 5.1 do always return complete records on update. --- sql/ha_partition.cc | 69 ++++++++++++++++++++++++-------------------- sql/ha_partition.h | 1 - sql/partition_info.h | 7 +++++ sql/sql_partition.cc | 35 ++++++++++++++++++++-- 4 files changed, 77 insertions(+), 35 deletions(-) diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 31f59c662d4..e4924e8e8f2 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -2961,8 +2961,34 @@ int ha_partition::rnd_init(bool scan) uint32 part_id; DBUG_ENTER("ha_partition::rnd_init"); - include_partition_fields_in_used_fields(); - + /* + For operations that may need to change data, we may need to extend + read_set. + */ + if (m_lock_type == F_WRLCK) + { + /* + If write_set contains any of the fields used in partition and + subpartition expression, we need to set all bits in read_set because + the row may need to be inserted in a different [sub]partition. In + other words update_row() can be converted into write_row(), which + requires a complete record. + */ + if (bitmap_is_overlapping(&m_part_info->full_part_field_set, + table->write_set)) + bitmap_set_all(table->read_set); + else + { + /* + Some handlers only read fields as specified by the bitmap for the + read set. For partitioned handlers we always require that the + fields of the partition functions are read such that we can + calculate the partition id to place updated and deleted records. + */ + bitmap_union(table->read_set, &m_part_info->full_part_field_set); + } + } + /* Now we see what the index of our first important partition is */ DBUG_PRINT("info", ("m_part_info->used_partitions: 0x%lx", (long) m_part_info->used_partitions.bitmap)); @@ -3276,7 +3302,15 @@ int ha_partition::index_init(uint inx, bool sorted) m_start_key.length= 0; m_ordered= sorted; m_curr_key_info= table->key_info+inx; - include_partition_fields_in_used_fields(); + /* + Some handlers only read fields as specified by the bitmap for the + read set. For partitioned handlers we always require that the + fields of the partition functions are read such that we can + calculate the partition id to place updated and deleted records. + But this is required for operations that may need to change data only. + */ + if (m_lock_type == F_WRLCK) + bitmap_union(table->read_set, &m_part_info->full_part_field_set); file= m_file; do { @@ -4145,35 +4179,6 @@ int ha_partition::handle_ordered_prev(uchar *buf) } -/* - Set fields in partition functions in read set for underlying handlers - - SYNOPSIS - include_partition_fields_in_used_fields() - - RETURN VALUE - NONE - - DESCRIPTION - Some handlers only read fields as specified by the bitmap for the - read set. For partitioned handlers we always require that the - fields of the partition functions are read such that we can - calculate the partition id to place updated and deleted records. -*/ - -void ha_partition::include_partition_fields_in_used_fields() -{ - Field **ptr= m_part_field_array; - DBUG_ENTER("ha_partition::include_partition_fields_in_used_fields"); - - do - { - bitmap_set_bit(table->read_set, (*ptr)->field_index); - } while (*(++ptr)); - DBUG_VOID_RETURN; -} - - /**************************************************************************** MODULE information calls ****************************************************************************/ diff --git a/sql/ha_partition.h b/sql/ha_partition.h index a168007ea04..895f001fa6a 100644 --- a/sql/ha_partition.h +++ b/sql/ha_partition.h @@ -449,7 +449,6 @@ private: int handle_ordered_next(uchar * buf, bool next_same); int handle_ordered_prev(uchar * buf); void return_top_record(uchar * buf); - void include_partition_fields_in_used_fields(); public: /* ------------------------------------------------------------------------- diff --git a/sql/partition_info.h b/sql/partition_info.h index ce2f2a7b358..10edea074c0 100644 --- a/sql/partition_info.h +++ b/sql/partition_info.h @@ -81,6 +81,13 @@ public: */ Field **full_part_field_array; Field **full_part_charset_field_array; + /* + Set of all fields used in partition and subpartition expression. + Required for testing of partition fields in write_set when + updating. We need to set all bits in read_set because the row may + need to be inserted in a different [sub]partition. + */ + MY_BITMAP full_part_field_set; /* When we have a field that requires transformation before calling the diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index ad3cf2d3e7a..a44af968d9f 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -523,6 +523,7 @@ static bool set_up_field_array(TABLE *table, SYNOPSIS create_full_part_field_array() + thd Thread handle table TABLE object for which partition fields are set-up part_info Reference to partitioning data structure @@ -537,11 +538,12 @@ static bool set_up_field_array(TABLE *table, This function is called from fix_partition_func */ -static bool create_full_part_field_array(TABLE *table, +static bool create_full_part_field_array(THD *thd, TABLE *table, partition_info *part_info) { bool result= FALSE; Field **ptr; + my_bitmap_map *bitmap_buf; DBUG_ENTER("create_full_part_field_array"); if (!part_info->is_sub_partitioned()) @@ -578,6 +580,35 @@ static bool create_full_part_field_array(TABLE *table, part_info->full_part_field_array= field_array; part_info->no_full_part_fields= no_part_fields; } + + /* + Initialize the set of all fields used in partition and subpartition + expression. Required for testing of partition fields in write_set + when updating. We need to set all bits in read_set because the row + may need to be inserted in a different [sub]partition. + */ + if (!(bitmap_buf= (my_bitmap_map*) + thd->alloc(bitmap_buffer_size(table->s->fields)))) + { + mem_alloc_error(bitmap_buffer_size(table->s->fields)); + result= TRUE; + goto end; + } + if (bitmap_init(&part_info->full_part_field_set, bitmap_buf, + table->s->fields, FALSE)) + { + mem_alloc_error(table->s->fields); + result= TRUE; + goto end; + } + /* + full_part_field_array may be NULL if storage engine supports native + partitioning. + */ + if ((ptr= part_info->full_part_field_array)) + while (*ptr) + bitmap_set_bit(&part_info->full_part_field_set, (*ptr++)->field_index); + end: DBUG_RETURN(result); } @@ -1636,7 +1667,7 @@ bool fix_partition_func(THD *thd, TABLE *table, my_error(ER_PARTITION_FUNCTION_IS_NOT_ALLOWED, MYF(0)); goto end; } - if (unlikely(create_full_part_field_array(table, part_info))) + if (unlikely(create_full_part_field_array(thd, table, part_info))) goto end; if (unlikely(check_primary_key(table))) goto end; From dfcfd6afc416f8996a41b448ecc430152202e175 Mon Sep 17 00:00:00 2001 From: "jonas@perch.ndb.mysql.com" <> Date: Wed, 4 Jul 2007 22:39:55 +0200 Subject: [PATCH 083/127] ndb - bug#29354 - fix bug in bug fix, dont assert if 2 LCP's are being run during a node recovery --- ndb/src/kernel/blocks/dblqh/DblqhMain.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp b/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp index 7dac07c28e9..1539b726c6a 100644 --- a/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp +++ b/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp @@ -11165,7 +11165,7 @@ void Dblqh::sendLCP_COMPLETE_REP(Signal* signal, Uint32 lcpId) sendEMPTY_LCP_CONF(signal, true); } - if (getNodeState().getNodeRestartInProgress()) + if (getNodeState().getNodeRestartInProgress() && cstartRecReq != 3) { jam(); ndbrequire(cstartRecReq == 2); From 624f20da9f1908db93f09a893723b13f63f18212 Mon Sep 17 00:00:00 2001 From: "tsmith@maint1.mysql.com" <> Date: Wed, 4 Jul 2007 23:41:15 +0200 Subject: [PATCH 084/127] Many tests have been moved to suite/*. Some tests have been removed. Update the disabled.def files to reflect actual contents of the t/* directories. Also, move a few more tests into suite/*. --- mysql-test/suite/ndb/t/disabled.def | 1 + mysql-test/{ => suite/parts}/r/rpl_partition.result | 0 mysql-test/suite/parts/t/disabled.def | 1 - mysql-test/{ => suite/parts}/t/rpl_partition.test | 0 mysql-test/suite/rpl/t/disabled.def | 1 + .../{ => suite/rpl_ndb}/r/rpl_ndb_ctype_ucs2_def.result | 0 mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_mix_innodb.result | 0 mysql-test/suite/rpl_ndb/t/disabled.def | 3 ++- .../{ => suite/rpl_ndb}/t/rpl_ndb_ctype_ucs2_def-master.opt | 0 .../{ => suite/rpl_ndb}/t/rpl_ndb_ctype_ucs2_def.test | 0 .../{ => suite/rpl_ndb}/t/rpl_ndb_mix_innodb-master.opt | 0 mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_mix_innodb.test | 0 mysql-test/t/disabled.def | 6 ------ 13 files changed, 4 insertions(+), 8 deletions(-) rename mysql-test/{ => suite/parts}/r/rpl_partition.result (100%) rename mysql-test/{ => suite/parts}/t/rpl_partition.test (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_ctype_ucs2_def.result (100%) rename mysql-test/{ => suite/rpl_ndb}/r/rpl_ndb_mix_innodb.result (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_ctype_ucs2_def-master.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_ctype_ucs2_def.test (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_mix_innodb-master.opt (100%) rename mysql-test/{ => suite/rpl_ndb}/t/rpl_ndb_mix_innodb.test (100%) diff --git a/mysql-test/suite/ndb/t/disabled.def b/mysql-test/suite/ndb/t/disabled.def index ec1dc26039f..96ef152f513 100644 --- a/mysql-test/suite/ndb/t/disabled.def +++ b/mysql-test/suite/ndb/t/disabled.def @@ -11,6 +11,7 @@ ############################################################################## ndb_autodiscover : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog ndb_autodiscover2 : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog +ndb_dd_sql_features : Bug#29102 ndb_dd_sql_features fails in pushbuild ndb_load : BUG#17233 2006-05-04 tomas failed load data from infile causes mysqld dbug_assert, binlog not flushed partition_03ndb : BUG#16385 2006-03-24 mikael Partitions: crash when updating a range partitioned NDB table diff --git a/mysql-test/r/rpl_partition.result b/mysql-test/suite/parts/r/rpl_partition.result similarity index 100% rename from mysql-test/r/rpl_partition.result rename to mysql-test/suite/parts/r/rpl_partition.result diff --git a/mysql-test/suite/parts/t/disabled.def b/mysql-test/suite/parts/t/disabled.def index 212ca0206e2..36bf08e9851 100644 --- a/mysql-test/suite/parts/t/disabled.def +++ b/mysql-test/suite/parts/t/disabled.def @@ -13,4 +13,3 @@ partition_alter2_ndb : cannot create t1 partition_char_innodb : crash. Bug? More investigations partition_sessions : needs system_3_init.inc partition_engine_ndb : cannot create t1 -partition_supported_sql_func_ndb : cannot create t1 diff --git a/mysql-test/t/rpl_partition.test b/mysql-test/suite/parts/t/rpl_partition.test similarity index 100% rename from mysql-test/t/rpl_partition.test rename to mysql-test/suite/parts/t/rpl_partition.test diff --git a/mysql-test/suite/rpl/t/disabled.def b/mysql-test/suite/rpl/t/disabled.def index fda40c30340..1c72d184739 100644 --- a/mysql-test/suite/rpl/t/disabled.def +++ b/mysql-test/suite/rpl/t/disabled.def @@ -14,3 +14,4 @@ rpl_ddl : BUG#26418 2007-03-01 mleich Slave out of sync after C rpl_innodb_mixed_ddl : Bug #29363 rpl.rpl_innodb_mixed_* test failures rpl_innodb_mixed_dml : Bug #29363 rpl.rpl_innodb_mixed_* test failures rpl_invoked_features : BUG#29020 2007-06-21 Lars Non-deterministic test case +rpl_udf : Bug#28993 rpl_udf test causes server crash and valgrind warning in pushbuild diff --git a/mysql-test/r/rpl_ndb_ctype_ucs2_def.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_ctype_ucs2_def.result similarity index 100% rename from mysql-test/r/rpl_ndb_ctype_ucs2_def.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_ctype_ucs2_def.result diff --git a/mysql-test/r/rpl_ndb_mix_innodb.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mix_innodb.result similarity index 100% rename from mysql-test/r/rpl_ndb_mix_innodb.result rename to mysql-test/suite/rpl_ndb/r/rpl_ndb_mix_innodb.result diff --git a/mysql-test/suite/rpl_ndb/t/disabled.def b/mysql-test/suite/rpl_ndb/t/disabled.def index b238c8ac9c5..f5c99129c89 100644 --- a/mysql-test/suite/rpl_ndb/t/disabled.def +++ b/mysql-test/suite/rpl_ndb/t/disabled.def @@ -15,11 +15,12 @@ rpl_ndb_circular_simplex : BUG#27972 2007-04-20 mats Slave cannot start where it rpl_ndb_2innodb : BUG#19227 2006-04-20 pekka pk delete apparently not replicated rpl_ndb_2myisam : BUG#19227 Seems to pass currently rpl_ndb_dd_partitions : BUG#19259 2006-04-21 rpl_ndb_dd_partitions fails on s/AMD -rpl_ddl : BUG#26418 2007-03-01 mleich Slave out of sync after CREATE/DROP TEMPORARY TABLE + ROLLBACK on master rpl_ndb_innodb2ndb : Bug #19710 Cluster replication to partition table fails on DELETE FROM statement rpl_ndb_myisam2ndb : Bug #19710 Cluster replication to partition table fails on DELETE FROM statement #rpl_row_blob_innodb : BUG#18980 2006-04-10 kent Test fails randomly rpl_ndb_ddl : BUG#28798 2007-05-31 lars Valgrind failure in NDB +rpl_ndb_mix_innodb : BUG#28123 rpl_ndb_mix_innodb.test casue slave to core on sol10-sparc-a +rpl_ndb_ctype_ucs2_def : BUG#27404 util thd mysql_parse sig11 when mysqld default multibyte charset # the below testcase have been reworked to avoid the bug, test contains comment, keep bug open diff --git a/mysql-test/t/rpl_ndb_ctype_ucs2_def-master.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_ctype_ucs2_def-master.opt similarity index 100% rename from mysql-test/t/rpl_ndb_ctype_ucs2_def-master.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_ctype_ucs2_def-master.opt diff --git a/mysql-test/t/rpl_ndb_ctype_ucs2_def.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_ctype_ucs2_def.test similarity index 100% rename from mysql-test/t/rpl_ndb_ctype_ucs2_def.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_ctype_ucs2_def.test diff --git a/mysql-test/t/rpl_ndb_mix_innodb-master.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mix_innodb-master.opt similarity index 100% rename from mysql-test/t/rpl_ndb_mix_innodb-master.opt rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_mix_innodb-master.opt diff --git a/mysql-test/t/rpl_ndb_mix_innodb.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mix_innodb.test similarity index 100% rename from mysql-test/t/rpl_ndb_mix_innodb.test rename to mysql-test/suite/rpl_ndb/t/rpl_ndb_mix_innodb.test diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index abc8e6bc0bd..88af556725e 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -23,10 +23,4 @@ concurrent_innodb : BUG#21579 2006-08-11 mleich innodb_concurrent random ctype_big5 : BUG#26711 2007-06-21 Lars Test has never worked on Double Whopper -im_options_set : Bug#20294: Instance manager tests fail randomly -im_options_unset : Bug#20294: Instance manager tests fail randomly mysql_upgrade : Bug#28560 test links to /usr/local/mysql/lib libraries, causes non-determinism and failures on ABI breakage -rpl_udf : Bug#28993 rpl_udf test causes server crash and valgrind warning in pushbuild -ndb_dd_sql_features : Bug#29102 ndb_dd_sql_features fails in pushbuild -rpl_ndb_mix_innodb : BUG#28123 rpl_ndb_mix_innodb.test casue slave to core on sol10-sparc-a -rpl_ndb_ctype_ucs2_def : BUG#27404 util thd mysql_parse sig11 when mysqld default multibyte charset From 21b401bd2622cd5dd5099b5b669b238e440c4365 Mon Sep 17 00:00:00 2001 From: "tsmith@maint1.mysql.com" <> Date: Thu, 5 Jul 2007 01:05:47 +0200 Subject: [PATCH 085/127] WL#3914: Additonal accessors required to compile InnoDB as a plugin storage engine Add more accessors to MySQL internals in mysql/plugin.h, for storage engine plugins. Add some accessors specific to the InnoDB storage engine, to allow InnoDB to be compiled as a plugin (without MYSQL_SERVER). InnoDB has additional requirements, due to its foreign key support, etc. --- include/m_string.h | 12 +-- include/my_global.h | 11 +++ include/mysql/plugin.h | 123 +++++++++++++++++++++++++ sql/handler.h | 10 +- sql/log.cc | 23 +++++ sql/mysql_priv.h | 54 +++++++++-- sql/sql_cache.cc | 12 +++ sql/sql_class.cc | 128 ++++++++++++++++++++++++++ sql/sql_class.h | 11 +-- sql/sql_parse.cc | 6 +- sql/sql_show.cc | 22 +---- storage/innobase/handler/ha_innodb.cc | 35 +++---- 12 files changed, 387 insertions(+), 60 deletions(-) diff --git a/include/m_string.h b/include/m_string.h index 715720df294..00fb4cb0656 100644 --- a/include/m_string.h +++ b/include/m_string.h @@ -246,17 +246,17 @@ extern size_t my_snprintf(char *to, size_t n, const char *fmt, ...) /* LEX_STRING -- a pair of a C-string and its length. - - NOTE: this exactly form of declaration is required for some C-compilers - (for one, Sun C 5.7 2005/01/07). Unfortunately with such declaration - LEX_STRING can not be forward declared. */ -typedef struct +#ifndef _my_plugin_h +/* This definition must match the one given in mysql/plugin.h */ +struct st_mysql_lex_string { char *str; size_t length; -} LEX_STRING; +}; +#endif +typedef struct st_mysql_lex_string LEX_STRING; #define STRING_WITH_LEN(X) (X), ((size_t) (sizeof(X) - 1)) #define USTRING_WITH_LEN(X) ((uchar*) X), ((size_t) (sizeof(X) - 1)) diff --git a/include/my_global.h b/include/my_global.h index 30fa2aba41b..91860f6e7a9 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -23,6 +23,17 @@ #define HAVE_EXTERNAL_CLIENT #endif +/* + InnoDB depends on some MySQL internals which other plugins should not + need. This is because of InnoDB's foreign key support, "safe" binlog + truncation, and other similar legacy features. + + We define accessors for these internals unconditionally, but do not + expose them in mysql/plugin.h. They are declared in ha_innodb.h for + InnoDB's use. +*/ +#define INNODB_COMPATIBILITY_HOOKS + #ifdef __CYGWIN__ /* We use a Unix API, so pretend it's not Windows */ #undef WIN diff --git a/include/mysql/plugin.h b/include/mysql/plugin.h index dd540225deb..b87fcc60692 100644 --- a/include/mysql/plugin.h +++ b/include/mysql/plugin.h @@ -24,6 +24,32 @@ class Item; #define MYSQL_THD void* #endif +#ifndef _m_string_h +/* This definition must match the one given in m_string.h */ +struct st_mysql_lex_string +{ + char *str; + unsigned int length; +}; +#endif /* _m_string_h */ +typedef struct st_mysql_lex_string MYSQL_LEX_STRING; + +#define MYSQL_XIDDATASIZE 128 +/** + struct st_mysql_xid is binary compatible with the XID structure as + in the X/Open CAE Specification, Distributed Transaction Processing: + The XA Specification, X/Open Company Ltd., 1991. + http://www.opengroup.org/bookstore/catalog/c193.htm + + @see XID in sql/handler.h +*/ +struct st_mysql_xid { + long formatID; + long gtrid_length; + long bqual_length; + char data[MYSQL_XIDDATASIZE]; /* Not \0-terminated */ +}; +typedef struct st_mysql_xid MYSQL_XID; /************************************************************************* Plugin API. Common for all plugin types. @@ -658,6 +684,103 @@ char *thd_security_context(MYSQL_THD thd, char *buffer, unsigned int length, /* Increments the row counter, see THD::row_count */ void thd_inc_row_count(MYSQL_THD thd); +/** + Create a temporary file. + + @details + The temporary file is created in a location specified by the mysql + server configuration (--tmpdir option). The caller does not need to + delete the file, it will be deleted automatically. + + @param prefix prefix for temporary file name + @retval -1 error + @retval >= 0 a file handle that can be passed to dup or my_close +*/ +int mysql_tmpfile(const char *prefix); + +/** + Check the killed state of a connection + + @details + In MySQL support for the KILL statement is cooperative. The KILL + statement only sets a "killed" flag. This function returns the value + of that flag. A thread should check it often, especially inside + time-consuming loops, and gracefully abort the operation if it is + non-zero. + + @param thd user thread connection handle + @retval 0 the connection is active + @retval 1 the connection has been killed +*/ +int thd_killed(const MYSQL_THD thd); + +/** + Allocate memory in the connection's local memory pool + + @details + When properly used in place of @c my_malloc(), this can significantly + improve concurrency. Don't use this or related functions to allocate + large chunks of memory. Use for temporary storage only. The memory + will be freed automatically at the end of the statement; no explicit + code is required to prevent memory leaks. + + @see alloc_root() +*/ +void *thd_alloc(MYSQL_THD thd, unsigned int size); +/** + @see thd_alloc() +*/ +void *thd_calloc(MYSQL_THD thd, unsigned int size); +/** + @see thd_alloc() +*/ +char *thd_strdup(MYSQL_THD thd, const char *str); +/** + @see thd_alloc() +*/ +char *thd_strmake(MYSQL_THD thd, const char *str, unsigned int size); +/** + @see thd_alloc() +*/ +void *thd_memdup(MYSQL_THD thd, const void* str, unsigned int size); + +/** + Create a LEX_STRING in this connection's local memory pool + + @param thd user thread connection handle + @param lex_str pointer to LEX_STRING object to be initialized + @param str initializer to be copied into lex_str + @param length length of str, in bytes + @param allocate_lex_string flag: if TRUE, allocate new LEX_STRING object, + instead of using lex_str value + @return NULL on failure, or pointer to the LEX_STRING object + + @see thd_alloc() +*/ +MYSQL_LEX_STRING *thd_make_lex_string(MYSQL_THD thd, MYSQL_LEX_STRING *lex_str, + const char *str, unsigned int size, + int allocate_lex_string); + +/** + Get the XID for this connection's transaction + + @param thd user thread connection handle + @param xid location where identifier is stored +*/ +void thd_get_xid(const MYSQL_THD thd, MYSQL_XID *xid); + +/** + Invalidate the query cache for a given table. + + @param thd user thread connection handle + @param key databasename\0tablename\0 + @param key_length length of key in bytes, including the NUL bytes + @param using_trx flag: TRUE if using transactions, FALSE otherwise +*/ +void mysql_query_cache_invalidate4(MYSQL_THD thd, + const char *key, unsigned int key_length, + int using_trx); + #ifdef __cplusplus } #endif diff --git a/sql/handler.h b/sql/handler.h index 4095a2f4cb1..09de9a3873a 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -328,13 +328,21 @@ typedef ulonglong my_xid; // this line is the same as in log_event.h #define MYSQL_XID_OFFSET (MYSQL_XID_PREFIX_LEN+sizeof(server_id)) #define MYSQL_XID_GTRID_LEN (MYSQL_XID_OFFSET+sizeof(my_xid)) -#define XIDDATASIZE 128 +#define XIDDATASIZE MYSQL_XIDDATASIZE #define MAXGTRIDSIZE 64 #define MAXBQUALSIZE 64 #define COMPATIBLE_DATA_YES 0 #define COMPATIBLE_DATA_NO 1 +/** + struct xid_t is binary compatible with the XID structure as + in the X/Open CAE Specification, Distributed Transaction Processing: + The XA Specification, X/Open Company Ltd., 1991. + http://www.opengroup.org/bookstore/catalog/c193.htm + + @see MYSQL_XID in mysql/plugin.h +*/ struct xid_t { long formatID; long gtrid_length; diff --git a/sql/log.cc b/sql/log.cc index 2821fb399a4..8ad290fdefc 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -5245,6 +5245,29 @@ err1: return 1; } + +#ifdef INNODB_COMPATIBILITY_HOOKS +/** + Get the file name of the MySQL binlog. + @return the name of the binlog file +*/ +extern "C" +const char* mysql_bin_log_file_name(void) +{ + return mysql_bin_log.get_log_fname(); +} +/** + Get the current position of the MySQL binlog. + @return byte offset from the beginning of the binlog +*/ +extern "C" +ulonglong mysql_bin_log_file_pos(void) +{ + return (ulonglong) mysql_bin_log.get_log_file()->pos_in_file; +} +#endif /* INNODB_COMPATIBILITY_HOOKS */ + + struct st_mysql_storage_engine binlog_storage_engine= { MYSQL_HANDLERTON_INTERFACE_VERSION }; diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 98c06148313..d18dc9b90e9 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1182,7 +1182,11 @@ bool mysqld_show_open_tables(THD *thd,const char *wild); bool mysqld_show_logs(THD *thd); void append_identifier(THD *thd, String *packet, const char *name, uint length); +#endif /* MYSQL_SERVER */ +#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS int get_quote_char_for_identifier(THD *thd, const char *name, uint length); +#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */ +#ifdef MYSQL_SERVER void mysqld_list_fields(THD *thd,TABLE_LIST *table, const char *wild); int mysqld_dump_create_info(THD *thd, TABLE_LIST *table_list, int fd); bool mysqld_show_create(THD *thd, TABLE_LIST *table_list); @@ -1211,9 +1215,6 @@ void reset_status_vars(); /* information schema */ extern LEX_STRING INFORMATION_SCHEMA_NAME; extern const LEX_STRING partition_keywords[]; -LEX_STRING *make_lex_string(THD *thd, LEX_STRING *lex_str, - const char* str, uint length, - bool allocate_lex_string); ST_SCHEMA_TABLE *find_schema_table(THD *thd, const char* table_name); ST_SCHEMA_TABLE *get_schema_table(enum enum_schema_tables schema_table_idx); int prepare_schema_table(THD *thd, LEX *lex, Table_ident *table_ident, @@ -1691,9 +1692,14 @@ extern int creating_table; // How many mysql_create_table() are running */ extern time_t server_start_time; +#endif /* MYSQL_SERVER */ +#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS extern uint mysql_data_home_len; extern char *mysql_data_home,server_version[SERVER_VERSION_LENGTH], - mysql_real_data_home[], *opt_mysql_tmpdir, mysql_charsets_dir[], + mysql_real_data_home[]; +#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */ +#ifdef MYSQL_SERVER +extern char *opt_mysql_tmpdir, mysql_charsets_dir[], def_ft_boolean_syntax[sizeof(ft_boolean_syntax)]; #define mysql_tmpdir (my_tmpdir(&mysql_tmpdir_list)) extern MY_TMPDIR mysql_tmpdir_list; @@ -1710,8 +1716,13 @@ extern Gt_creator gt_creator; extern Lt_creator lt_creator; extern Ge_creator ge_creator; extern Le_creator le_creator; -extern char language[FN_REFLEN], reg_ext[FN_EXTLEN]; +extern char language[FN_REFLEN]; +#endif /* MYSQL_SERVER */ +#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS +extern char reg_ext[FN_EXTLEN]; extern uint reg_ext_length; +#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */ +#ifdef MYSQL_SERVER extern char glob_hostname[FN_REFLEN], mysql_home[FN_REFLEN]; extern char pidfile_name[FN_REFLEN], system_time_zone[30], *opt_init_file; extern char log_error_file[FN_REFLEN], *opt_tc_log_file; @@ -1740,17 +1751,32 @@ extern ulong max_binlog_size, max_relay_log_size; extern ulong opt_binlog_rows_event_max_size; extern ulong rpl_recovery_rank, thread_cache_size, thread_pool_size; extern ulong back_log; -extern ulong specialflag, current_pid; +#endif /* MYSQL_SERVER */ +#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS +extern ulong specialflag; +#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */ +#ifdef MYSQL_SERVER +extern ulong current_pid; extern ulong expire_logs_days, sync_binlog_period, sync_binlog_counter; extern ulong opt_tc_log_size, tc_log_max_pages_used, tc_log_page_size; extern ulong tc_log_page_waits; extern my_bool relay_log_purge, opt_innodb_safe_binlog, opt_innodb; extern uint test_flags,select_errors,ha_open_options; extern uint protocol_version, mysqld_port, dropping_tables; -extern uint delay_key_write_options, lower_case_table_names; +extern uint delay_key_write_options; +#endif /* MYSQL_SERVER */ +#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS +extern uint lower_case_table_names; +#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */ +#ifdef MYSQL_SERVER extern bool opt_endinfo, using_udf_functions; extern my_bool locked_in_memory; -extern bool opt_using_transactions, mysqld_embedded; +extern bool opt_using_transactions; +#endif /* MYSQL_SERVER */ +#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS +extern bool mysqld_embedded; +#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */ +#ifdef MYSQL_SERVER extern bool using_update_log, opt_large_files, server_id_supplied; extern bool opt_update_log, opt_bin_log, opt_error_log; extern my_bool opt_log, opt_slow_log; @@ -1774,8 +1800,12 @@ extern uint opt_crash_binlog_innodb; extern char *shared_memory_base_name, *mysqld_unix_port; extern my_bool opt_enable_shared_memory; extern char *default_tz_name; +#endif /* MYSQL_SERVER */ +#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS extern my_bool opt_large_pages; extern uint opt_large_page_size; +#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */ +#ifdef MYSQL_SERVER extern char *opt_logname, *opt_slow_logname; extern const char *log_output_str; @@ -1811,7 +1841,11 @@ extern MY_BITMAP temp_pool; extern String my_empty_string; extern const String my_null_string; extern SHOW_VAR status_vars[]; +#endif /* MYSQL_SERVER */ +#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS extern struct system_variables global_system_variables; +#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */ +#ifdef MYSQL_SERVER extern struct system_variables max_system_variables; extern struct system_status_var global_status_var; extern struct rand_struct sql_rand; @@ -2009,10 +2043,14 @@ int wild_case_compare(CHARSET_INFO *cs, const char *str,const char *wildstr); char *fn_rext(char *name); /* Conversion functions */ +#endif /* MYSQL_SERVER */ +#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS uint strconvert(CHARSET_INFO *from_cs, const char *from, CHARSET_INFO *to_cs, char *to, uint to_length, uint *errors); uint filename_to_tablename(const char *from, char *to, uint to_length); uint tablename_to_filename(const char *from, char *to, uint to_length); +#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */ +#ifdef MYSQL_SERVER uint build_table_filename(char *buff, size_t bufflen, const char *db, const char *table, const char *ext, uint flags); diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc index 719c67aff6a..173ef4c02df 100644 --- a/sql/sql_cache.cc +++ b/sql/sql_cache.cc @@ -765,6 +765,18 @@ void query_cache_invalidate_by_MyISAM_filename(const char *filename) } +/* + The following function forms part of the C plugin API +*/ +extern "C" +void mysql_query_cache_invalidate4(THD *thd, + const char *key, unsigned key_length, + int using_trx) +{ + query_cache.invalidate(thd, key, (uint32) key_length, (my_bool) using_trx); +} + + /***************************************************************************** Query_cache methods *****************************************************************************/ diff --git a/sql/sql_class.cc b/sql/sql_class.cc index e279e23ab69..337bd4e6cc1 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -207,6 +207,31 @@ Open_tables_state::Open_tables_state(ulong version_arg) The following functions form part of the C plugin API */ +extern "C" int mysql_tmpfile(const char *prefix) +{ + char filename[FN_REFLEN]; + File fd = create_temp_file(filename, mysql_tmpdir, prefix, +#ifdef __WIN__ + O_BINARY | O_TRUNC | O_SEQUENTIAL | + O_SHORT_LIVED | +#endif /* __WIN__ */ + O_CREAT | O_EXCL | O_RDWR | O_TEMPORARY, + MYF(MY_WME)); + if (fd >= 0) { +#ifndef __WIN__ + /* + This can be removed once the following bug is fixed: + Bug #28903 create_temp_file() doesn't honor O_TEMPORARY option + (file not removed) (Unix) + */ + unlink(filename); +#endif /* !__WIN__ */ + } + + return fd; +} + + extern "C" int thd_in_lock_tables(const THD *thd) { @@ -488,6 +513,49 @@ void THD::pop_internal_handler() m_internal_handler= NULL; } +extern "C" +void *thd_alloc(MYSQL_THD thd, unsigned int size) +{ + return thd->alloc(size); +} + +extern "C" +void *thd_calloc(MYSQL_THD thd, unsigned int size) +{ + return thd->calloc(size); +} + +extern "C" +char *thd_strdup(MYSQL_THD thd, const char *str) +{ + return thd->strdup(str); +} + +extern "C" +char *thd_strmake(MYSQL_THD thd, const char *str, unsigned int size) +{ + return thd->strmake(str, size); +} + +extern "C" +LEX_STRING *thd_make_lex_string(THD *thd, LEX_STRING *lex_str, + const char *str, unsigned int size, + int allocate_lex_string) +{ + return thd->make_lex_string(lex_str, str, size, + (bool) allocate_lex_string); +} + +extern "C" +void *thd_memdup(MYSQL_THD thd, const void* str, unsigned int size) +{ + return thd->memdup(str, size); +} + +void thd_get_xid(const MYSQL_THD thd, MYSQL_XID *xid) +{ + *xid = *(MYSQL_XID *) &thd->transaction.xid_state.xid; +} /* Init common variables that has to be reset on start and on change_user @@ -856,6 +924,30 @@ void THD::cleanup_after_query() } +/** + Create a LEX_STRING in this connection + + @param lex_str pointer to LEX_STRING object to be initialized + @param str initializer to be copied into lex_str + @param length length of str, in bytes + @param allocate_lex_string if TRUE, allocate new LEX_STRING object, + instead of using lex_str value + @return NULL on failure, or pointer to the LEX_STRING object +*/ +LEX_STRING *THD::make_lex_string(LEX_STRING *lex_str, + const char* str, uint length, + bool allocate_lex_string) +{ + if (allocate_lex_string) + if (!(lex_str= (LEX_STRING *)alloc(sizeof(LEX_STRING)))) + return 0; + if (!(lex_str->str= strmake_root(mem_root, str, length))) + return 0; + lex_str->length= length; + return lex_str; +} + + /* Convert a string to another character set @@ -2441,7 +2533,43 @@ void THD::restore_backup_open_tables_state(Open_tables_state *backup) DBUG_VOID_RETURN; } +/** + Check the killed state of a user thread + @param thd user thread + @retval 0 the user thread is active + @retval 1 the user thread has been killed +*/ +extern "C" int thd_killed(const MYSQL_THD thd) +{ + return(thd->killed); +} +#ifdef INNODB_COMPATIBILITY_HOOKS +extern "C" struct charset_info_st *thd_charset(MYSQL_THD thd) +{ + return(thd->charset()); +} + +extern "C" char **thd_query(MYSQL_THD thd) +{ + return(&thd->query); +} + +extern "C" int thd_slave_thread(const MYSQL_THD thd) +{ + return(thd->slave_thread); +} + +extern "C" int thd_non_transactional_update(const MYSQL_THD thd) +{ + return(thd->no_trans_update.all); +} + +extern "C" int thd_binlog_format(const THD *thd) +{ + return (int) thd->variables.binlog_format; +} +#endif // INNODB_COMPATIBILITY_HOOKS */ /**************************************************************************** Handling of statement states in functions and triggers. diff --git a/sql/sql_class.h b/sql/sql_class.h index 6fa71b57997..a35cdbbec2a 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -490,13 +490,6 @@ public: { return strdup_root(mem_root,str); } inline char *strmake(const char *str, size_t size) { return strmake_root(mem_root,str,size); } - inline bool LEX_STRING_make(LEX_STRING *lex_str, const char *str, - size_t size) - { - return ((lex_str->str= - strmake_root(mem_root, str, (lex_str->length= size)))) == 0; - } - inline void *memdup(const void *str, size_t size) { return memdup_root(mem_root,str,size); } inline void *memdup_w_gap(const void *str, size_t size, uint gap) @@ -1594,6 +1587,10 @@ public: return alloc_root(&transaction.mem_root,size); } + LEX_STRING *make_lex_string(LEX_STRING *lex_str, + const char* str, uint length, + bool allocate_lex_string); + bool convert_string(LEX_STRING *to, CHARSET_INFO *to_cs, const char *from, uint from_length, CHARSET_INFO *from_cs); diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index bd151dc2028..aa661b64598 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1025,8 +1025,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd, HA_CREATE_INFO create_info; status_var_increment(thd->status_var.com_stat[SQLCOM_CREATE_DB]); - if (thd->LEX_STRING_make(&db, packet, packet_length -1) || - thd->LEX_STRING_make(&alias, db.str, db.length) || + if (thd->make_lex_string(&db, packet, packet_length - 1, FALSE) || + thd->make_lex_string(&alias, db.str, db.length, FALSE) || check_db_name(&db)) { my_error(ER_WRONG_DB_NAME, MYF(0), db.str ? db.str : "NULL"); @@ -1046,7 +1046,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, status_var_increment(thd->status_var.com_stat[SQLCOM_DROP_DB]); LEX_STRING db; - if (thd->LEX_STRING_make(&db, packet, packet_length - 1) || + if (thd->make_lex_string(&db, packet, packet_length - 1, FALSE) || check_db_name(&db)) { my_error(ER_WRONG_DB_NAME, MYF(0), db.str ? db.str : "NULL"); diff --git a/sql/sql_show.cc b/sql/sql_show.cc index f66897df671..e74f09362e3 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2175,20 +2175,6 @@ void calc_sum_of_all_status(STATUS_VAR *to) } -LEX_STRING *make_lex_string(THD *thd, LEX_STRING *lex_str, - const char* str, uint length, - bool allocate_lex_string) -{ - MEM_ROOT *mem= thd->mem_root; - if (allocate_lex_string) - if (!(lex_str= (LEX_STRING *)thd->alloc(sizeof(LEX_STRING)))) - return 0; - lex_str->str= strmake_root(mem, str, length); - lex_str->length= length; - return lex_str; -} - - /* INFORMATION_SCHEMA name */ LEX_STRING INFORMATION_SCHEMA_NAME= { C_STRING_WITH_LEN("information_schema")}; @@ -5194,10 +5180,10 @@ int make_schema_select(THD *thd, SELECT_LEX *sel, We have to make non const db_name & table_name because of lower_case_table_names */ - make_lex_string(thd, &db, INFORMATION_SCHEMA_NAME.str, - INFORMATION_SCHEMA_NAME.length, 0); - make_lex_string(thd, &table, schema_table->table_name, - strlen(schema_table->table_name), 0); + thd->make_lex_string(&db, INFORMATION_SCHEMA_NAME.str, + INFORMATION_SCHEMA_NAME.length, 0); + thd->make_lex_string(&table, schema_table->table_name, + strlen(schema_table->table_name), 0); if (schema_table->old_format(thd, schema_table) || /* Handle old syntax */ !sel->add_table_to_list(thd, new Table_ident(thd, db, table, 0), 0, 0, TL_READ)) diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 65c3086a086..e433298c96c 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -5909,8 +5909,8 @@ ha_innobase::get_foreign_key_list(THD *thd, List *f_key_list) while (tmp_buff[i] != '/') i++; tmp_buff+= i + 1; - f_key_info.forein_id= make_lex_string(thd, 0, tmp_buff, - (uint) strlen(tmp_buff), 1); + f_key_info.forein_id = thd_make_lex_string(thd, 0, + tmp_buff, (uint) strlen(tmp_buff), 1); tmp_buff= foreign->referenced_table_name; /* Database name */ @@ -5922,22 +5922,23 @@ ha_innobase::get_foreign_key_list(THD *thd, List *f_key_list) } db_name[i]= 0; ulen= filename_to_tablename(db_name, uname, sizeof(uname)); - f_key_info.referenced_db= make_lex_string(thd, 0, uname, ulen, 1); + f_key_info.referenced_db = thd_make_lex_string(thd, 0, + uname, ulen, 1); /* Table name */ tmp_buff+= i + 1; ulen= filename_to_tablename(tmp_buff, uname, sizeof(uname)); - f_key_info.referenced_table= make_lex_string(thd, 0, uname, - ulen, 1); + f_key_info.referenced_table = thd_make_lex_string(thd, 0, + uname, ulen, 1); for (i= 0;;) { tmp_buff= foreign->foreign_col_names[i]; - name= make_lex_string(thd, name, tmp_buff, - (uint) strlen(tmp_buff), 1); + name = thd_make_lex_string(thd, name, + tmp_buff, (uint) strlen(tmp_buff), 1); f_key_info.foreign_fields.push_back(name); tmp_buff= foreign->referenced_col_names[i]; - name= make_lex_string(thd, name, tmp_buff, - (uint) strlen(tmp_buff), 1); + name = thd_make_lex_string(thd, name, + tmp_buff, (uint) strlen(tmp_buff), 1); f_key_info.referenced_fields.push_back(name); if (++i >= foreign->n_fields) break; @@ -5964,8 +5965,8 @@ ha_innobase::get_foreign_key_list(THD *thd, List *f_key_list) length=8; tmp_buff= "RESTRICT"; } - f_key_info.delete_method= make_lex_string(thd, f_key_info.delete_method, - tmp_buff, length, 1); + f_key_info.delete_method = thd_make_lex_string( + thd, f_key_info.delete_method, tmp_buff, length, 1); if (foreign->type & DICT_FOREIGN_ON_UPDATE_CASCADE) @@ -5988,15 +5989,15 @@ ha_innobase::get_foreign_key_list(THD *thd, List *f_key_list) length=8; tmp_buff= "RESTRICT"; } - f_key_info.update_method= make_lex_string(thd, f_key_info.update_method, - tmp_buff, length, 1); + f_key_info.update_method = thd_make_lex_string( + thd, f_key_info.update_method, tmp_buff, length, 1); if (foreign->referenced_index && foreign->referenced_index->name) { - f_key_info.referenced_key_name= - make_lex_string(thd, f_key_info.referenced_key_name, - foreign->referenced_index->name, - strlen(foreign->referenced_index->name), 1); + f_key_info.referenced_key_name = thd_make_lex_string( + thd, f_key_info.referenced_key_name, + foreign->referenced_index->name, + strlen(foreign->referenced_index->name), 1); } FOREIGN_KEY_INFO *pf_key_info= ((FOREIGN_KEY_INFO *) From 4c02004da9ca0037731338c0fdd3fae8853de459 Mon Sep 17 00:00:00 2001 From: "igor@olga.mysql.com" <> Date: Wed, 4 Jul 2007 21:12:07 -0700 Subject: [PATCH 086/127] Fixed bug #29392. This bug may manifest itself for select queries over a multi-table view that includes an ORDER BY clause in its definition. If the select list of the query contains references to the same view column with different aliases the names of the columns in the result output will be nevertheless the same, coinciding with one of the alias. The bug happened because the method Item_ref::get_tmp_table_item that was inherited by the class Item_direct_view_ref ignored the fact that the name of the view column reference must be inherited by the fields of the temporary table that was created in order to get the result rows sorted. --- mysql-test/r/view.result | 47 ++++++++++++++++++++++++++++++++++ mysql-test/t/view.test | 55 ++++++++++++++++++++++++++++++++++++++++ sql/item.h | 6 +++++ 3 files changed, 108 insertions(+) diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result index 9adb3f96142..c51a4c30960 100644 --- a/mysql-test/r/view.result +++ b/mysql-test/r/view.result @@ -3500,4 +3500,51 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where DROP VIEW v1; DROP TABLE t1; +CREATE TABLE t1 ( +person_id int NOT NULL PRIMARY KEY, +username varchar(40) default NULL, +status_flg char(1) NOT NULL default 'A' +); +CREATE TABLE t2 ( +person_role_id int NOT NULL auto_increment PRIMARY KEY, +role_id int NOT NULL, +person_id int NOT NULL, +INDEX idx_person_id (person_id), +INDEX idx_role_id (role_id) +); +CREATE TABLE t3 ( +role_id int NOT NULL auto_increment PRIMARY KEY, +role_name varchar(100) default NULL, +app_name varchar(40) NOT NULL, +INDEX idx_app_name(app_name) +); +CREATE VIEW v1 AS +SELECT profile.person_id AS person_id +FROM t1 profile, t2 userrole, t3 role +WHERE userrole.person_id = profile.person_id AND +role.role_id = userrole.role_id AND +profile.status_flg = 'A' + ORDER BY profile.person_id,role.app_name,role.role_name; +INSERT INTO t1 VALUES +(6,'Sw','A'), (-1136332546,'ols','e'), (0,' *\n','0'), +(-717462680,'ENTS Ta','0'), (-904346964,'ndard SQL\n','0'); +INSERT INTO t2 VALUES +(1,3,6),(2,4,7),(3,5,8),(4,6,9),(5,1,6),(6,1,7),(7,1,8),(8,1,9),(9,1,10); +INSERT INTO t3 VALUES +(1,'NUCANS_APP_USER','NUCANSAPP'),(2,'NUCANS_TRGAPP_USER','NUCANSAPP'), +(3,'IA_INTAKE_COORDINATOR','IACANS'),(4,'IA_SCREENER','IACANS'), +(5,'IA_SUPERVISOR','IACANS'),(6,'IA_READONLY','IACANS'), +(7,'SOC_USER','SOCCANS'),(8,'CAYIT_USER','CAYITCANS'), +(9,'RTOS_DCFSPOS_SUPERVISOR','RTOS'); +EXPLAIN SELECT t.person_id AS a, t.person_id AS b FROM v1 t WHERE t.person_id=6; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE profile const PRIMARY PRIMARY 4 const 1 Using temporary; Using filesort +1 SIMPLE userrole ref idx_person_id,idx_role_id idx_person_id 4 const 2 +1 SIMPLE role eq_ref PRIMARY PRIMARY 4 test.userrole.role_id 1 +SELECT t.person_id AS a, t.person_id AS b FROM v1 t WHERE t.person_id=6; +a b +6 6 +6 6 +DROP VIEW v1; +DROP TABLE t1,t2,t3; End of 5.0 tests. diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test index f670ac8a49d..c7f722a18a5 100644 --- a/mysql-test/t/view.test +++ b/mysql-test/t/view.test @@ -3348,4 +3348,59 @@ EXPLAIN SELECT a, SUM(b) FROM v1 WHERE a=1 GROUP BY a; DROP VIEW v1; DROP TABLE t1; +# +# Bug #29392: SELECT over a multi-table view with ORDER BY +# selecting the same view column with two different aliases +# + +CREATE TABLE t1 ( + person_id int NOT NULL PRIMARY KEY, + username varchar(40) default NULL, + status_flg char(1) NOT NULL default 'A' +); + +CREATE TABLE t2 ( + person_role_id int NOT NULL auto_increment PRIMARY KEY, + role_id int NOT NULL, + person_id int NOT NULL, + INDEX idx_person_id (person_id), + INDEX idx_role_id (role_id) +); + +CREATE TABLE t3 ( + role_id int NOT NULL auto_increment PRIMARY KEY, + role_name varchar(100) default NULL, + app_name varchar(40) NOT NULL, + INDEX idx_app_name(app_name) +); + +CREATE VIEW v1 AS +SELECT profile.person_id AS person_id + FROM t1 profile, t2 userrole, t3 role + WHERE userrole.person_id = profile.person_id AND + role.role_id = userrole.role_id AND + profile.status_flg = 'A' + ORDER BY profile.person_id,role.app_name,role.role_name; + +INSERT INTO t1 VALUES + (6,'Sw','A'), (-1136332546,'ols','e'), (0,' *\n','0'), + (-717462680,'ENTS Ta','0'), (-904346964,'ndard SQL\n','0'); + +INSERT INTO t2 VALUES + (1,3,6),(2,4,7),(3,5,8),(4,6,9),(5,1,6),(6,1,7),(7,1,8),(8,1,9),(9,1,10); + +INSERT INTO t3 VALUES + (1,'NUCANS_APP_USER','NUCANSAPP'),(2,'NUCANS_TRGAPP_USER','NUCANSAPP'), + (3,'IA_INTAKE_COORDINATOR','IACANS'),(4,'IA_SCREENER','IACANS'), + (5,'IA_SUPERVISOR','IACANS'),(6,'IA_READONLY','IACANS'), + (7,'SOC_USER','SOCCANS'),(8,'CAYIT_USER','CAYITCANS'), + (9,'RTOS_DCFSPOS_SUPERVISOR','RTOS'); + +EXPLAIN SELECT t.person_id AS a, t.person_id AS b FROM v1 t WHERE t.person_id=6; +SELECT t.person_id AS a, t.person_id AS b FROM v1 t WHERE t.person_id=6; + +DROP VIEW v1; +DROP TABLE t1,t2,t3; + --echo End of 5.0 tests. + diff --git a/sql/item.h b/sql/item.h index 3478095351a..a880f86f601 100644 --- a/sql/item.h +++ b/sql/item.h @@ -1983,6 +1983,12 @@ public: bool fix_fields(THD *, Item **); bool eq(const Item *item, bool binary_cmp) const; + Item *get_tmp_table_item(THD *thd) + { + Item *item= Item_ref::get_tmp_table_item(thd); + item->name= name; + return item; + } virtual Ref_Type ref_type() { return VIEW_REF; } }; From c2120c40eea8a66874c1e9b4e38598c3faaebf19 Mon Sep 17 00:00:00 2001 From: "svoj@mysql.com/june.mysql.com" <> Date: Thu, 5 Jul 2007 11:45:14 +0500 Subject: [PATCH 087/127] BUG#27564 - Valgrind: UDF does not cleanup correctly Dropping an user defined function may cause server crash in case this function is still in use by another thread. The problem was that our hash implementation didn't update hash link list properly when hash_update() was called. --- mysys/hash.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/mysys/hash.c b/mysys/hash.c index 75135a470c9..1ba80dc6fd3 100644 --- a/mysys/hash.c +++ b/mysys/hash.c @@ -572,6 +572,25 @@ my_bool hash_update(HASH *hash,byte *record,byte *old_key,uint old_key_length) previous->next=pos->next; /* unlink pos */ /* Move data to correct position */ + if (new_index == empty) + { + /* + At this point record is unlinked from the old chain, thus it holds + random position. By the chance this position is equal to position + for the first element in the new chain. That means updated record + is the only record in the new chain. + */ + if (empty != idx) + { + /* + Record was moved while unlinking it from the old chain. + Copy data to a new position. + */ + data[empty]= org_link; + } + data[empty].next= NO_RECORD; + DBUG_RETURN(0); + } pos=data+new_index; new_pos_index=hash_rec_mask(hash,pos,blength,records); if (new_index != new_pos_index) From ba650762d1a0debe656db3e2e02fe33ae5bd6d37 Mon Sep 17 00:00:00 2001 From: "ramil/ram@mysql.com/ramil.myoffice.izhnet.ru" <> Date: Thu, 5 Jul 2007 11:55:06 +0500 Subject: [PATCH 088/127] Fix for bug #29411: deleting from a csv table leads to the table corruption Problem: we don't adjust share->rows_recorded and local_saved_data_file_length deleting rows from a CSV table, so following table check may fail. Fix: properly adjust those values. --- mysql-test/r/csv.result | 18 ++++++++++++++++-- mysql-test/t/csv.test | 13 +++++++++++++ storage/csv/ha_tina.cc | 30 +++++++++++++++++++++++------- 3 files changed, 52 insertions(+), 9 deletions(-) diff --git a/mysql-test/r/csv.result b/mysql-test/r/csv.result index 5076220f74b..6335d890a95 100644 --- a/mysql-test/r/csv.result +++ b/mysql-test/r/csv.result @@ -4945,8 +4945,6 @@ SELECT * FROM bug13894; val 6 6 -5 -11 DROP TABLE bug13894; DROP TABLE IF EXISTS bug14672; CREATE TABLE bug14672 (c1 integer) engine = CSV; @@ -5291,4 +5289,20 @@ check table t1; Table Op Msg_type Msg_text test.t1 check status OK drop table t1; +create table t1(a int) engine=csv; +insert into t1 values (0), (1), (2); +delete from t1 limit 2; +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +select * from t1; +a +2 +delete from t1; +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +select * from t1; +a +drop table t1; End of 5.1 tests diff --git a/mysql-test/t/csv.test b/mysql-test/t/csv.test index 6d24b38ee10..26051da24aa 100644 --- a/mysql-test/t/csv.test +++ b/mysql-test/t/csv.test @@ -1698,4 +1698,17 @@ select * from t1; check table t1; drop table t1; +# +# Bug #29411: deleting from a csv table leads to the table corruption +# +create table t1(a int) engine=csv; +insert into t1 values (0), (1), (2); +delete from t1 limit 2; +check table t1; +select * from t1; +delete from t1; +check table t1; +select * from t1; +drop table t1; + --echo End of 5.1 tests diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc index 2ee96fd5d05..c6cbcbd422f 100644 --- a/storage/csv/ha_tina.cc +++ b/storage/csv/ha_tina.cc @@ -960,6 +960,11 @@ int ha_tina::delete_row(const uchar * buf) DBUG_RETURN(-1); stats.records--; + /* Update shared info */ + DBUG_ASSERT(share->rows_recorded); + pthread_mutex_lock(&share->mutex); + share->rows_recorded--; + pthread_mutex_unlock(&share->mutex); /* DELETE should never happen on the log table */ DBUG_ASSERT(!share->is_log_table); @@ -1146,6 +1151,7 @@ int ha_tina::rnd_end() if ((chain_ptr - chain) > 0) { + off_t temp_file_length= 0; tina_set *ptr= chain; /* @@ -1171,15 +1177,18 @@ int ha_tina::rnd_end() while ((file_buffer_start != -1)) // while not end of file { bool in_hole= get_write_pos(&write_end, ptr); + off_t write_length= write_end - write_begin; /* if there is something to write, write it */ - if ((write_end - write_begin) && - (my_write(update_temp_file, - (uchar*)(file_buff->ptr() + - (write_begin - file_buff->start())), - write_end - write_begin, MYF_RW))) - goto error; - + if (write_length) + { + if (my_write(update_temp_file, + (uchar*) (file_buff->ptr() + + (write_begin - file_buff->start())), + write_length, MYF_RW)) + goto error; + temp_file_length+= write_length; + } if (in_hole) { /* skip hole */ @@ -1232,6 +1241,8 @@ int ha_tina::rnd_end() Here we record this fact to the meta-file. */ (void)write_meta_file(share->meta_file, share->rows_recorded, FALSE); + + local_saved_data_file_length= temp_file_length; } DBUG_RETURN(0); @@ -1390,6 +1401,11 @@ int ha_tina::delete_all_rows() rc= my_chsize(share->tina_write_filedes, 0, 0, MYF(MY_WME)); stats.records=0; + /* Update shared info */ + pthread_mutex_lock(&share->mutex); + share->rows_recorded= 0; + pthread_mutex_unlock(&share->mutex); + local_saved_data_file_length= 0; DBUG_RETURN(rc); } From 4ef3110aceb1d48b3f056ff63f05a6a11abe18d1 Mon Sep 17 00:00:00 2001 From: "svoj@mysql.com/june.mysql.com" <> Date: Thu, 5 Jul 2007 12:48:11 +0500 Subject: [PATCH 089/127] BUG#27564 - Valgrind: UDF does not cleanup correctly Enabling rpl_udf test. --- mysql-test/t/disabled.def | 1 - 1 file changed, 1 deletion(-) diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 32de2077e81..8a6a91fc169 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -51,6 +51,5 @@ ndb_partition_error2 : HF is not sure if the test can work as internded on all im_options_set : Bug#20294: Instance manager tests fail randomly im_options_unset : Bug#20294: Instance manager tests fail randomly mysql_upgrade : Bug#28560 test links to /usr/local/mysql/lib libraries, causes non-determinism and failures on ABI breakage -rpl_udf : Bug#28993 rpl_udf test causes server crash and valgrind warning in pushbuild rpl_ndb_circular : Bug#29233 rpl_ndb_circular fails randomly ndb_dd_sql_features : Bug#29102 ndb_dd_sql_features fails in pushbuild From 483bd10de84a653038266c860d356d3dc0020fca Mon Sep 17 00:00:00 2001 From: "ramil/ram@mysql.com/ramil.myoffice.izhnet.ru" <> Date: Thu, 5 Jul 2007 13:09:56 +0500 Subject: [PATCH 090/127] Fix for bug #29420: crash with show and purge binlogs Problem: in case of failed 'show binlog events...' we don't inform that the log is not in use anymore. That may confuse following 'purge logs...' command as it takes into account logs in use. Fix: always notify that the log is not in use anymore. --- mysql-test/r/rpl_rotate_logs.result | 8 ++++++++ mysql-test/t/rpl_rotate_logs.test | 14 +++++++++++++- sql/sql_repl.cc | 6 ++---- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/mysql-test/r/rpl_rotate_logs.result b/mysql-test/r/rpl_rotate_logs.result index df42e76a0c8..8a5ae6c8983 100644 --- a/mysql-test/r/rpl_rotate_logs.result +++ b/mysql-test/r/rpl_rotate_logs.result @@ -95,3 +95,11 @@ count(*) 100 unlock tables; drop table if exists t1,t2,t3,t4; +End of 4.1 tests +show binlog events in 'non existing_binlog_file'; +ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log +purge master logs before now(); +show binlog events in ''; +ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log +purge master logs before now(); +End of 5.0 tests diff --git a/mysql-test/t/rpl_rotate_logs.test b/mysql-test/t/rpl_rotate_logs.test index 69614b45693..0b7efb81f61 100644 --- a/mysql-test/t/rpl_rotate_logs.test +++ b/mysql-test/t/rpl_rotate_logs.test @@ -169,4 +169,16 @@ connection master; drop table if exists t1,t2,t3,t4; sync_slave_with_master; -# End of 4.1 tests +--echo End of 4.1 tests + +# +# Bug #29420: crash with show and purge binlogs +# +--error 1220 +show binlog events in 'non existing_binlog_file'; +purge master logs before now(); +--error 1220 +show binlog events in ''; +purge master logs before now(); + +--echo End of 5.0 tests diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index 86ededd5587..9cc0ba7c29a 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -1420,13 +1420,11 @@ err: } if (errmsg) - { my_error(ER_ERROR_WHEN_EXECUTING_COMMAND, MYF(0), "SHOW BINLOG EVENTS", errmsg); - DBUG_RETURN(TRUE); - } + else + send_eof(thd); - send_eof(thd); pthread_mutex_lock(&LOCK_thread_count); thd->current_linfo = 0; pthread_mutex_unlock(&LOCK_thread_count); From 5ac6264dd6494d3d0af067eb0813c3e8236e1a66 Mon Sep 17 00:00:00 2001 From: "istruewing@chilla.local" <> Date: Thu, 5 Jul 2007 11:31:03 +0200 Subject: [PATCH 091/127] Bug#26827 - table->read_set is set incorrectly, causing update of a different column Post-pushbuild fix. bitmap_set_bit() is an inline function in DEBUG builds and a macro in non-DEBUG builds. The latter evaluates its 'bit' argument twice. So one must not use increment/decrement operators on this argument. Moved increment of pointer out of bitmap_set_bit() call. --- include/my_bitmap.h | 11 +++++++++++ sql/sql_partition.cc | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/include/my_bitmap.h b/include/my_bitmap.h index 488c41ffb22..0b12172946a 100644 --- a/include/my_bitmap.h +++ b/include/my_bitmap.h @@ -103,6 +103,17 @@ extern void bitmap_lock_invert(MY_BITMAP *map); &= ~ (1 << ((BIT) & 7))) #define _bitmap_is_set(MAP, BIT) (uint) (((uchar*)(MAP)->bitmap)[(BIT) / 8] \ & (1 << ((BIT) & 7))) +/* + WARNING! + + The below symbols are inline functions in DEBUG builds and macros in + non-DEBUG builds. The latter evaluate their 'bit' argument twice. + + NEVER use an increment/decrement operator with the 'bit' argument. + It would work with DEBUG builds, but fails later in production builds! + + FORBIDDEN: bitmap_set_bit($my_bitmap, (field++)->field_index); +*/ #ifndef DBUG_OFF static inline void bitmap_set_bit(MY_BITMAP *map,uint bit) diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index a44af968d9f..191859e0ed4 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -606,8 +606,8 @@ static bool create_full_part_field_array(THD *thd, TABLE *table, partitioning. */ if ((ptr= part_info->full_part_field_array)) - while (*ptr) - bitmap_set_bit(&part_info->full_part_field_set, (*ptr++)->field_index); + for (; *ptr; ptr++) + bitmap_set_bit(&part_info->full_part_field_set, (*ptr)->field_index); end: DBUG_RETURN(result); From fca06fbc68215fec57834d39bff2f243f1b519cb Mon Sep 17 00:00:00 2001 From: "ramil/ram@mysql.com/ramil.myoffice.izhnet.ru" <> Date: Thu, 5 Jul 2007 15:34:12 +0500 Subject: [PATCH 092/127] Fix for bug #28808: log_queries_not_using_indexes variable dynamic change is ignored Problem: logging queries not using indexes we check a special flag which is set only at the server startup and is not changing with a corresponding server variable together. Fix: check the variable value instead of the flag. --- mysql-test/r/show_check.result | 30 ++++++++++++++++++++++++++++++ mysql-test/t/show_check.test | 16 ++++++++++++++++ sql/mysqld.cc | 2 -- sql/sql_parse.cc | 2 +- sql/unireg.h | 2 +- 5 files changed, 48 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result index e2450c98202..e4cdd4f183b 100644 --- a/mysql-test/r/show_check.result +++ b/mysql-test/r/show_check.result @@ -1088,4 +1088,34 @@ DROP TABLE t1; DROP VIEW v1; DROP PROCEDURE p1; DROP FUNCTION f1; +flush status; +show variables like "log_queries_not_using_indexes"; +Variable_name Value +log_queries_not_using_indexes ON +select 1 from information_schema.tables limit 1; +1 +1 +show status like 'slow_queries'; +Variable_name Value +Slow_queries 1 +set global log_queries_not_using_indexes=OFF; +show variables like "log_queries_not_using_indexes"; +Variable_name Value +log_queries_not_using_indexes OFF +select 1 from information_schema.tables limit 1; +1 +1 +show status like 'slow_queries'; +Variable_name Value +Slow_queries 1 +set global log_queries_not_using_indexes=ON; +show variables like "log_queries_not_using_indexes"; +Variable_name Value +log_queries_not_using_indexes ON +select 1 from information_schema.tables limit 1; +1 +1 +show status like 'slow_queries'; +Variable_name Value +Slow_queries 2 End of 5.0 tests diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test index 1db40b0c17c..a58d81a414b 100644 --- a/mysql-test/t/show_check.test +++ b/mysql-test/t/show_check.test @@ -766,4 +766,20 @@ DROP VIEW v1; DROP PROCEDURE p1; DROP FUNCTION f1; +# +# Bug #28808: log_queries_not_using_indexes variable dynamic change is ignored +# +flush status; +show variables like "log_queries_not_using_indexes"; +select 1 from information_schema.tables limit 1; +show status like 'slow_queries'; +set global log_queries_not_using_indexes=OFF; +show variables like "log_queries_not_using_indexes"; +select 1 from information_schema.tables limit 1; +show status like 'slow_queries'; +set global log_queries_not_using_indexes=ON; +show variables like "log_queries_not_using_indexes"; +select 1 from information_schema.tables limit 1; +show status like 'slow_queries'; + --echo End of 5.0 tests diff --git a/sql/mysqld.cc b/sql/mysqld.cc index afeb3b82a01..61980fa1887 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -7461,8 +7461,6 @@ static void get_options(int argc,char **argv) if (opt_short_log_format) opt_specialflag|= SPECIAL_SHORT_LOG_FORMAT; - if (opt_log_queries_not_using_indexes) - opt_specialflag|= SPECIAL_LOG_QUERIES_NOT_USING_INDEXES; if (init_global_datetime_format(MYSQL_TIMESTAMP_DATE, &global_system_variables.date_format) || diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index b65ad705a36..c679135f858 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2207,7 +2207,7 @@ void log_slow_statement(THD *thd) thd->variables.long_query_time || (thd->server_status & (SERVER_QUERY_NO_INDEX_USED | SERVER_QUERY_NO_GOOD_INDEX_USED)) && - (specialflag & SPECIAL_LOG_QUERIES_NOT_USING_INDEXES) && + opt_log_queries_not_using_indexes && /* == SQLCOM_END unless this is a SHOW command */ thd->lex->orig_sql_command == SQLCOM_END) { diff --git a/sql/unireg.h b/sql/unireg.h index 0f7c1709c6c..81ca18c1d32 100644 --- a/sql/unireg.h +++ b/sql/unireg.h @@ -120,7 +120,7 @@ #define SPECIAL_NO_HOST_CACHE 512 /* Don't cache hosts */ #define SPECIAL_SHORT_LOG_FORMAT 1024 #define SPECIAL_SAFE_MODE 2048 -#define SPECIAL_LOG_QUERIES_NOT_USING_INDEXES 4096 /* Log q not using indexes */ +#define SPECIAL_LOG_QUERIES_NOT_USING_INDEXES 4096 /* Obsolete */ /* Extern defines */ #define store_record(A,B) bmove_align((A)->B,(A)->record[0],(size_t) (A)->s->reclength) From 1532452a00e49a71880707f4ae279d19aab14724 Mon Sep 17 00:00:00 2001 From: "gkodinov/kgeorge@magare.gmz" <> Date: Thu, 5 Jul 2007 18:24:48 +0300 Subject: [PATCH 093/127] Bug #29166: AsText() needs to know the maximum number of characters a IEEE double precision value can occupy to make sure there's enough buffer space. The number was too small to hold all possible values and this caused buffer overruns. Fixed by correcting the calculation of the maximum digits in a string representation of an IEEE double precision value as printed by String::qs_append(double). --- mysql-test/r/gis.result | 3 +++ mysql-test/t/gis.test | 20 ++++++++++++++++++++ sql/spatial.cc | 23 ++++++++++++++++++++++- 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/gis.result b/mysql-test/r/gis.result index d1f292cda0c..edf017f24d4 100644 --- a/mysql-test/r/gis.result +++ b/mysql-test/r/gis.result @@ -885,4 +885,7 @@ AsText(a) POINT(1 1) LINESTRING(0 0,1 1,2 2) drop table t1, t2; +SELECT 1; +1 +1 End of 5.0 tests diff --git a/mysql-test/t/gis.test b/mysql-test/t/gis.test index 95ccc6272e2..79743a0b8f4 100644 --- a/mysql-test/t/gis.test +++ b/mysql-test/t/gis.test @@ -570,4 +570,24 @@ create table t2 as select f2 as a from t1 union select f3 from t1; desc t2; select AsText(a) from t2; drop table t1, t2; + +# +# Bug #29166: MYsql crash when query is run +# + +# The test query itself is not logged : too large output. +# The real test is the second query : see if the first hasn't crashed the +# server +--disable_query_log +--disable_result_log +SELECT AsText(GeometryFromText(CONCAT( + 'MULTIPOLYGON(((', + REPEAT ('-0.00000000001234567890123456789012 -0.123456789012345678,', 1000), + '-0.00000000001234567890123456789012 -0.123456789012345678', + ')))' +))) AS a; +--enable_result_log +--enable_query_log +SELECT 1; + --echo End of 5.0 tests diff --git a/sql/spatial.cc b/sql/spatial.cc index 939e7d2a3b4..69d0c15748a 100644 --- a/sql/spatial.cc +++ b/sql/spatial.cc @@ -17,7 +17,28 @@ #ifdef HAVE_SPATIAL -#define MAX_DIGITS_IN_DOUBLE 16 +/* + exponential notation : + 1 sign + 1 number before the decimal point + 1 decimal point + 14 number of significant digits (see String::qs_append(double)) + 1 'e' sign + 1 exponent sign + 3 exponent digits + == + 22 + + "f" notation : + 1 optional 0 + 1 sign + 14 number significant digits (see String::qs_append(double) ) + 1 decimal point + == + 17 +*/ + +#define MAX_DIGITS_IN_DOUBLE 22 /***************************** Gis_class_info *******************************/ From c33f4d3d85fdbedd21e9b9830341b7e3e3434151 Mon Sep 17 00:00:00 2001 From: "gshchepa/uchum@gleb.loc" <> Date: Fri, 6 Jul 2007 03:43:23 +0500 Subject: [PATCH 094/127] Fixed bug #29442. The SELECT INTO OUTFILE FIELDS ENCLOSED BY digit or minus sign, followed by the same LOAD DATA INFILE statement, used wrond encoding of non-string fields contained the enclosed character in their text representation. Example: SELECT 15, 9 INTO OUTFILE 'text' FIELDS ENCLOSED BY '5'; Old encoded result in the text file: 5155 595 ^ was decoded as the 1st enclosing character of the 2nd field; ^ was skipped as garbage; ^ ^ was decoded as a pair of englosing characters of the 1st field; ^ was decoded as traling space of the first field; ^^ was decoded as a doubled enclosed character. New encoded result in the text file: 51\55 595 ^ ^ pair of enclosing characters of the 1st field; ^^ escaped enclosed character. --- mysql-test/r/loaddata.result | 14 ++++++++++++++ mysql-test/t/loaddata.test | 25 +++++++++++++++++++++++++ sql/sql_class.cc | 4 +++- sql/sql_class.h | 12 ++++++++++++ 4 files changed, 54 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/loaddata.result b/mysql-test/r/loaddata.result index 031aa5c700c..7fff2700779 100644 --- a/mysql-test/r/loaddata.result +++ b/mysql-test/r/loaddata.result @@ -238,3 +238,17 @@ f1 1 2 drop table t1,t2; +CREATE TABLE t1 (c1 INT, c2 TIMESTAMP, c3 REAL, c4 DOUBLE); +INSERT INTO t1 (c1, c2, c3, c4) VALUES (10, '1970-02-01 01:02:03', 1.1E-100, 1.1E+100); +SELECT * FROM t1; +c1 c2 c3 c4 +10 1970-02-01 01:02:03 1.1e-100 1.1e+100 +SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/t1' FIELDS ENCLOSED BY '-' FROM t1; +-10- -1970\-02\-01 01:02:03- -1.1e\-100- -1.1e+100- +EOF +TRUNCATE t1; +LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/t1' INTO TABLE t1 FIELDS ENCLOSED BY '-'; +SELECT * FROM t1; +c1 c2 c3 c4 +10 1970-02-01 01:02:03 1.1e-100 1.1e+100 +DROP TABLE t1; diff --git a/mysql-test/t/loaddata.test b/mysql-test/t/loaddata.test index cdd3bb80b6e..260e760e7b3 100644 --- a/mysql-test/t/loaddata.test +++ b/mysql-test/t/loaddata.test @@ -213,4 +213,29 @@ select f1 from t1 where f2 <> '0000-00-00 00:00:00' order by f1; --exec rm $MYSQLTEST_VARDIR/tmp/t2 drop table t1,t2; +# +# Bug#29442: SELECT INTO OUTFILE FIELDS ENCLOSED BY digit, minus sign etc +# corrupts non-string fields containing this character. +# + +CREATE TABLE t1 (c1 INT, c2 TIMESTAMP, c3 REAL, c4 DOUBLE); + +INSERT INTO t1 (c1, c2, c3, c4) VALUES (10, '1970-02-01 01:02:03', 1.1E-100, 1.1E+100); +SELECT * FROM t1; + +--exec rm -f $MYSQLTEST_VARDIR/tmp/t1 +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval SELECT * INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/t1' FIELDS ENCLOSED BY '-' FROM t1; +--exec cat $MYSQLTEST_VARDIR/tmp/t1 +--exec echo EOF + +TRUNCATE t1; + +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/t1' INTO TABLE t1 FIELDS ENCLOSED BY '-'; +SELECT * FROM t1; + +--exec rm $MYSQLTEST_VARDIR/tmp/t1 +DROP TABLE t1; + # End of 5.0 tests diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 117c20352ce..036ba217a9b 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1210,6 +1210,7 @@ select_export::prepare(List &list, SELECT_LEX_UNIT *u) field_term_length ? (*exchange->field_term)[0] : INT_MAX); escape_char= (exchange->escaped->length() ? (*exchange->escaped)[0] : -1); is_ambiguous_field_sep= test(strchr(ESCAPE_CHARS, field_sep_char)); + is_unsafe_field_sep= test(strchr(NUMERIC_CHARS, field_sep_char)); line_sep_char= (exchange->line_term->length() ? (*exchange->line_term)[0] : INT_MAX); if (!field_term_length) @@ -1284,7 +1285,8 @@ bool select_export::send_data(List &items) used_length=min(res->length(),item->max_length); else used_length=res->length(); - if (result_type == STRING_RESULT && escape_char != -1) + if ((result_type == STRING_RESULT || is_unsafe_field_sep) && + escape_char != -1) { char *pos, *start, *end; CHARSET_INFO *res_charset= res->charset(); diff --git a/sql/sql_class.h b/sql/sql_class.h index 23c499aea07..a5cbc21684f 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1929,6 +1929,12 @@ public: #define ESCAPE_CHARS "ntrb0ZN" // keep synchronous with READ_INFO::unescape +/* + List of all possible characters of a numeric value text representation. +*/ +#define NUMERIC_CHARS ".0123456789e+-" + + class select_export :public select_to_file { uint field_term_length; int field_sep_char,escape_char,line_sep_char; @@ -1938,6 +1944,12 @@ class select_export :public select_to_file { (see the READ_INFO::unescape method and the ESCAPE_CHARS constant value). */ bool is_ambiguous_field_sep; + /* + The is_unsafe_field_sep field is true if a value of the field_sep_char + field is one of the '0'..'9', '+', '-', '.' and 'e' characters + (see the NUMERIC_CHARS constant value). + */ + bool is_unsafe_field_sep; bool fixed_row_size; public: select_export(sql_exchange *ex) :select_to_file(ex) {} From dc4a4edb8d7c839ccccfa252de94f691f81e1a95 Mon Sep 17 00:00:00 2001 From: "tomas@whalegate.ndb.mysql.com" <> Date: Fri, 6 Jul 2007 12:39:03 +0200 Subject: [PATCH 095/127] Bug #29570 original error lost in write_event on slave - make sure error gets propagated to thd->net by calling print_error - also print the full error message --- sql/log_event.cc | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/sql/log_event.cc b/sql/log_event.cc index 1241d0b02ed..6565278e6d3 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -6057,8 +6057,9 @@ int Rows_log_event::do_apply_event(RELAY_LOG_INFO const *rli) default: slave_print_msg(ERROR_LEVEL, rli, thd->net.last_errno, - "Error in %s event: row application failed", - get_type_str()); + "Error in %s event: row application failed. %s", + get_type_str(), + thd->net.last_error ? thd->net.last_error : ""); thd->query_error= 1; break; } @@ -6079,9 +6080,10 @@ int Rows_log_event::do_apply_event(RELAY_LOG_INFO const *rli) { /* error has occured during the transaction */ slave_print_msg(ERROR_LEVEL, rli, thd->net.last_errno, "Error in %s event: error during transaction execution " - "on table %s.%s", + "on table %s.%s. %s", get_type_str(), table->s->db.str, - table->s->table_name.str); + table->s->table_name.str, + thd->net.last_error ? thd->net.last_error : ""); /* If one day we honour --skip-slave-errors in row-based replication, and @@ -6997,7 +6999,12 @@ replace_record(THD *thd, TABLE *table, } if ((keynum= table->file->get_dup_key(error)) < 0) { - /* We failed to retrieve the duplicate key */ + table->file->print_error(error, MYF(0)); + /* + We failed to retrieve the duplicate key + - either because the error was not "duplicate key" error + - or because the information which key is not available + */ DBUG_RETURN(error); } From 1988c1c66853d40d5ff3d6feb230256a9b117977 Mon Sep 17 00:00:00 2001 From: "antony@ppcg5.local" <> Date: Fri, 6 Jul 2007 11:35:10 -0700 Subject: [PATCH 096/127] fix test for bug29299 --- mysql-test/r/fulltext2.result | 12 ------------ mysql-test/r/fulltext3.result | 13 +++++++++++++ mysql-test/t/fulltext2.test | 12 ------------ mysql-test/t/fulltext3.test | 24 ++++++++++++++++++++++++ 4 files changed, 37 insertions(+), 24 deletions(-) create mode 100644 mysql-test/r/fulltext3.result create mode 100644 mysql-test/t/fulltext3.test diff --git a/mysql-test/r/fulltext2.result b/mysql-test/r/fulltext2.result index f6bb4e4965a..f6a4b20bc22 100644 --- a/mysql-test/r/fulltext2.result +++ b/mysql-test/r/fulltext2.result @@ -241,15 +241,3 @@ select * from t1 where match a against('ab c' in boolean mode); a drop table t1; set names latin1; -CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a)); -SET NAMES utf8; -INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161); -SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE); -HEX(a) -BEF361616197C22061616161 -DELETE FROM t1 LIMIT 1; -CHECK TABLE t1; -Table Op Msg_type Msg_text -test.t1 check status OK -SET NAMES latin1; -DROP TABLE t1; diff --git a/mysql-test/r/fulltext3.result b/mysql-test/r/fulltext3.result new file mode 100644 index 00000000000..019d5f472ed --- /dev/null +++ b/mysql-test/r/fulltext3.result @@ -0,0 +1,13 @@ +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a)); +SET NAMES utf8; +INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161); +SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE); +HEX(a) +BEF361616197C22061616161 +DELETE FROM t1 LIMIT 1; +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +SET NAMES latin1; +DROP TABLE t1; diff --git a/mysql-test/t/fulltext2.test b/mysql-test/t/fulltext2.test index 99209dc8543..fd97f795534 100644 --- a/mysql-test/t/fulltext2.test +++ b/mysql-test/t/fulltext2.test @@ -220,16 +220,4 @@ select * from t1 where match a against('ab c' in boolean mode); drop table t1; set names latin1; -# -# BUG#29299 - repeatable myisam fulltext index corruption -# -CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a)); -SET NAMES utf8; -INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161); -SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE); -DELETE FROM t1 LIMIT 1; -CHECK TABLE t1; -SET NAMES latin1; -DROP TABLE t1; - # End of 4.1 tests diff --git a/mysql-test/t/fulltext3.test b/mysql-test/t/fulltext3.test new file mode 100644 index 00000000000..a57fd48daaa --- /dev/null +++ b/mysql-test/t/fulltext3.test @@ -0,0 +1,24 @@ +--source include/have_gbk.inc +# +# test of new fulltext search features +# + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + + +# +# BUG#29299 - repeatable myisam fulltext index corruption +# +CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a)); +SET NAMES utf8; +INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161); +SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE); +DELETE FROM t1 LIMIT 1; +CHECK TABLE t1; +SET NAMES latin1; +DROP TABLE t1; + +# End of 5.0 tests + From db649ad5d1428051fe39cb42c782fb2ecea4d961 Mon Sep 17 00:00:00 2001 From: "knielsen@ymer.(none)" <> Date: Sat, 7 Jul 2007 07:46:17 +0200 Subject: [PATCH 097/127] Bug #29543 GCov information not written in case of crash. For GCov builds, if the server crashes, the normal exit handler for writing coverage information is not executed due to the abnormal termination. Fix this by explicitly calling the __gcov_flush function in our crash handler. --- BUILD/compile-pentium-gcov | 5 +++-- sql/stacktrace.c | 9 +++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/BUILD/compile-pentium-gcov b/BUILD/compile-pentium-gcov index 26475824570..0d561d5b147 100755 --- a/BUILD/compile-pentium-gcov +++ b/BUILD/compile-pentium-gcov @@ -13,8 +13,9 @@ export LDFLAGS="-fprofile-arcs -ftest-coverage" # The -fprofile-arcs and -ftest-coverage options cause GCC to instrument the # code with profiling information used by gcov. -# the -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl. -extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM $debug_cflags $max_cflags -DMYSQL_SERVER_SUFFIX=-gcov" +# The -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl. +# The -DHAVE_gcov enables code to write out coverage info even when crashing. +extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM $debug_cflags $max_cflags -DMYSQL_SERVER_SUFFIX=-gcov -DHAVE_gcov" c_warnings="$c_warnings $debug_extra_warnings" cxx_warnings="$cxx_warnings $debug_extra_warnings" extra_configs="$pentium_configs $debug_configs --disable-shared $static_link" diff --git a/sql/stacktrace.c b/sql/stacktrace.c index d8e9b7fd883..c947beafac3 100644 --- a/sql/stacktrace.c +++ b/sql/stacktrace.c @@ -241,6 +241,15 @@ void write_core(int sig) void write_core(int sig) { signal(sig, SIG_DFL); +#ifdef HAVE_gcov + /* + For GCOV build, crashing will prevent the writing of code coverage + information from this process, causing gcov output to be incomplete. + So we force the writing of coverage information here before terminating. + */ + extern void __gcov_flush(void); + __gcov_flush(); +#endif pthread_kill(pthread_self(), sig); #if defined(P_MYID) && !defined(SCO) /* On Solaris, the above kill is not enough */ From 6cb186883f81428a98aac924cbd4ed4f555ea7e0 Mon Sep 17 00:00:00 2001 From: "antony@ppcg5.local" <> Date: Sat, 7 Jul 2007 09:28:35 -0700 Subject: [PATCH 098/127] disable federated_innodb test until bug29522 is fixed --- mysql-test/t/disabled.def | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 827598d0585..cca73c38831 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -53,3 +53,4 @@ im_options_set : Bug#20294: Instance manager tests fail randomly im_options_unset : Bug#20294: Instance manager tests fail randomly mysql_upgrade : Bug#28560 test links to /usr/local/mysql/lib libraries, causes non-determinism and failures on ABI breakage ndb_dd_sql_features : Bug#29102 ndb_dd_sql_features fails in pushbuild +federated_innodb : Bug#29522 failed assertion in binlog_close_connection() From 87c3d18f6fa0e143944192d380ec8225fb12b1b1 Mon Sep 17 00:00:00 2001 From: "igor@olga.mysql.com" <> Date: Sat, 7 Jul 2007 10:33:02 -0700 Subject: [PATCH 099/127] Fixed bug #29415. The cast operation ignored the cases when the precision and/or the scale exceeded the limits, 65 and 30 respectively. No errors were reported in these cases. For some queries this may lead to an assertion abort. Fixed by throwing errors for such cases. --- mysql-test/r/type_newdecimal.result | 20 ++++++++++++++++++++ mysql-test/t/type_newdecimal.test | 23 +++++++++++++++++++++++ sql/item_create.cc | 12 ++++++++++++ 3 files changed, 55 insertions(+) diff --git a/mysql-test/r/type_newdecimal.result b/mysql-test/r/type_newdecimal.result index 9e165721033..d858c3cbdd6 100644 --- a/mysql-test/r/type_newdecimal.result +++ b/mysql-test/r/type_newdecimal.result @@ -1471,4 +1471,24 @@ drop table t1; SELECT 1.000000000000 * 99.999999999998 / 100 a,1.000000000000 * (99.999999999998 / 100) b; a b 0.9999999999999800000000000000 0.9999999999999800000000000000 +SELECT CAST(1 AS decimal(65,10)); +CAST(1 AS decimal(65,10)) +1.0000000000 +SELECT CAST(1 AS decimal(66,10)); +ERROR 42000: Too big precision 66 specified for column '1'. Maximum is 65. +SELECT CAST(1 AS decimal(65,30)); +CAST(1 AS decimal(65,30)) +1.000000000000000000000000000000 +SELECT CAST(1 AS decimal(65,31)); +ERROR 42000: Too big scale 31 specified for column '1'. Maximum is 30. +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 +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; End of 5.0 tests diff --git a/mysql-test/t/type_newdecimal.test b/mysql-test/t/type_newdecimal.test index d2b808bd5e0..73142eb41c0 100644 --- a/mysql-test/t/type_newdecimal.test +++ b/mysql-test/t/type_newdecimal.test @@ -1162,4 +1162,27 @@ drop table t1; # SELECT 1.000000000000 * 99.999999999998 / 100 a,1.000000000000 * (99.999999999998 / 100) b; + +# +# Bug #29415: CAST AS DECIMAL(P,S) with too big precision/scale +# + +SELECT CAST(1 AS decimal(65,10)); +--error ER_TOO_BIG_PRECISION +SELECT CAST(1 AS decimal(66,10)); + +SELECT CAST(1 AS decimal(65,30)); +--error ER_TOO_BIG_SCALE +SELECT CAST(1 AS decimal(65,31)); + +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; +--error ER_TOO_BIG_SCALE +SELECT a+CAST(1 AS decimal(65,31)) AS aa, SUM(b) FROM t1 GROUP BY aa; + +DROP TABLE t1; + --echo End of 5.0 tests + + diff --git a/sql/item_create.cc b/sql/item_create.cc index 42cbdc8c280..50db1c37371 100644 --- a/sql/item_create.cc +++ b/sql/item_create.cc @@ -471,6 +471,18 @@ Item *create_func_cast(Item *a, Cast_target cast_type, my_error(ER_M_BIGGER_THAN_D, MYF(0), ""); return 0; } + if (len > DECIMAL_MAX_PRECISION) + { + my_error(ER_TOO_BIG_PRECISION, MYF(0), len, a->name, + DECIMAL_MAX_PRECISION); + return 0; + } + if (dec > DECIMAL_MAX_SCALE) + { + my_error(ER_TOO_BIG_SCALE, MYF(0), dec, a->name, + DECIMAL_MAX_SCALE); + return 0; + } res= new Item_decimal_typecast(a, len, dec); break; case ITEM_CAST_CHAR: From 63d538575b7c1142e5467692fd70ed2042041294 Mon Sep 17 00:00:00 2001 From: "igor@olga.mysql.com" <> Date: Sat, 7 Jul 2007 12:31:55 -0700 Subject: [PATCH 100/127] Fixed bug #29417. An assertion abort could occur for some grouping queries that employed decimal user variables with assignments to them. The problem appeared the constructors of the class Field_new_decimal because the function my_decimal_length_to_precision did not guarantee returning decimal precision not greater than DECIMAL_MAX_PRECISION. --- mysql-test/r/type_newdecimal.result | 8 ++++++++ mysql-test/t/type_newdecimal.test | 13 +++++++++++++ sql/field.cc | 2 ++ 3 files changed, 23 insertions(+) diff --git a/mysql-test/r/type_newdecimal.result b/mysql-test/r/type_newdecimal.result index 9e165721033..c580568f3d4 100644 --- a/mysql-test/r/type_newdecimal.result +++ b/mysql-test/r/type_newdecimal.result @@ -1471,4 +1471,12 @@ drop table t1; SELECT 1.000000000000 * 99.999999999998 / 100 a,1.000000000000 * (99.999999999998 / 100) b; a b 0.9999999999999800000000000000 0.9999999999999800000000000000 +CREATE TABLE t1 (a int DEFAULT NULL, b int DEFAULT NULL); +INSERT INTO t1 VALUES (3,30), (1,10), (2,10); +SET @a= CAST(1 AS decimal); +SELECT 1 FROM t1 GROUP BY @b := @a, @b; +1 +1 +1 +DROP TABLE t1; End of 5.0 tests diff --git a/mysql-test/t/type_newdecimal.test b/mysql-test/t/type_newdecimal.test index d2b808bd5e0..da321cc9932 100644 --- a/mysql-test/t/type_newdecimal.test +++ b/mysql-test/t/type_newdecimal.test @@ -1162,4 +1162,17 @@ drop table t1; # SELECT 1.000000000000 * 99.999999999998 / 100 a,1.000000000000 * (99.999999999998 / 100) b; + +# +# Bug #29417: assertion abort for a grouping query with decimal user variable +# + +CREATE TABLE t1 (a int DEFAULT NULL, b int DEFAULT NULL); +INSERT INTO t1 VALUES (3,30), (1,10), (2,10); + +SET @a= CAST(1 AS decimal); +SELECT 1 FROM t1 GROUP BY @b := @a, @b; + +DROP TABLE t1; + --echo End of 5.0 tests diff --git a/sql/field.cc b/sql/field.cc index f81b1c33fa7..2e227f0e67e 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -2267,6 +2267,7 @@ Field_new_decimal::Field_new_decimal(char *ptr_arg, dec_arg, zero_arg, unsigned_arg) { precision= my_decimal_length_to_precision(len_arg, dec_arg, unsigned_arg); + set_if_smaller(precision, DECIMAL_MAX_PRECISION); DBUG_ASSERT((precision <= DECIMAL_MAX_PRECISION) && (dec <= DECIMAL_MAX_SCALE)); bin_size= my_decimal_get_binary_size(precision, dec); @@ -2286,6 +2287,7 @@ Field_new_decimal::Field_new_decimal(uint32 len_arg, 0, unsigned_arg) { precision= my_decimal_length_to_precision(len_arg, dec_arg, unsigned_arg); + set_if_smaller(precision, DECIMAL_MAX_PRECISION); DBUG_ASSERT((precision <= DECIMAL_MAX_PRECISION) && (dec <= DECIMAL_MAX_SCALE)); bin_size= my_decimal_get_binary_size(precision, dec); From 4d8e0fb50a4b05db02522c7c094f89118ed795d1 Mon Sep 17 00:00:00 2001 From: "igor@olga.mysql.com" <> Date: Sat, 7 Jul 2007 20:03:00 -0700 Subject: [PATCH 101/127] Post-merge fix. --- mysql-test/r/type_newdecimal.result | 28 ++++++++++++++++++++++++++++ sql/item_create.cc | 12 ++++++++++++ 2 files changed, 40 insertions(+) diff --git a/mysql-test/r/type_newdecimal.result b/mysql-test/r/type_newdecimal.result index fc6955f11d2..24be10a7a29 100644 --- a/mysql-test/r/type_newdecimal.result +++ b/mysql-test/r/type_newdecimal.result @@ -1481,6 +1481,34 @@ drop table t1; SELECT 1.000000000000 * 99.999999999998 / 100 a,1.000000000000 * (99.999999999998 / 100) b; a b 0.9999999999999800000000000000 0.9999999999999800000000000000 +SELECT CAST(1 AS decimal(65,10)); +CAST(1 AS decimal(65,10)) +1.0000000000 +SELECT CAST(1 AS decimal(66,10)); +ERROR 42000: Too big precision 66 specified for column '1'. Maximum is 65. +SELECT CAST(1 AS decimal(65,30)); +CAST(1 AS decimal(65,30)) +1.000000000000000000000000000000 +SELECT CAST(1 AS decimal(65,31)); +ERROR 42000: Too big scale 31 specified for column '1'. Maximum is 30. +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 +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; +CREATE TABLE t1 (a int DEFAULT NULL, b int DEFAULT NULL); +INSERT INTO t1 VALUES (3,30), (1,10), (2,10); +SET @a= CAST(1 AS decimal); +SELECT 1 FROM t1 GROUP BY @b := @a, @b; +1 +1 +1 +DROP TABLE t1; End of 5.0 tests select cast(143.481 as decimal(4,1)); cast(143.481 as decimal(4,1)) diff --git a/sql/item_create.cc b/sql/item_create.cc index 20041b1176a..e20926c564f 100644 --- a/sql/item_create.cc +++ b/sql/item_create.cc @@ -5039,6 +5039,18 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type, my_error(ER_M_BIGGER_THAN_D, MYF(0), ""); return 0; } + if (len > DECIMAL_MAX_PRECISION) + { + my_error(ER_TOO_BIG_PRECISION, MYF(0), len, a->name, + DECIMAL_MAX_PRECISION); + return 0; + } + if (dec > DECIMAL_MAX_SCALE) + { + my_error(ER_TOO_BIG_SCALE, MYF(0), dec, a->name, + DECIMAL_MAX_SCALE); + return 0; + } res= new (thd->mem_root) Item_decimal_typecast(a, len, dec); break; } From 42d1e3c4574c375e6f10fb1b1c5c0122689cd25e Mon Sep 17 00:00:00 2001 From: "evgen@moonbone.local" <> Date: Sun, 8 Jul 2007 18:13:04 +0400 Subject: [PATCH 102/127] Bug#29310: An InnoDB table was updated when the data wasn't actually changed. When a table is being updated it has two set of fields - fields required for checks of conditions and fields to be updated. A storage engine is allowed not to retrieve columns marked for update. Due to this fact records can't be compared to see whether the data has been changed or not. This makes the server always update records independently of data change. Now when an auto-updatable timestamp field is present and server sees that a table handle isn't going to retrieve write-only fields then all of such fields are marked as to be read to force the handler to retrieve them. --- mysql-test/include/mix1.inc | 24 ++++++++++++++++++++++++ mysql-test/r/innodb_mysql.result | 28 ++++++++++++++++++++++++++++ sql/sql_insert.cc | 3 ++- sql/sql_update.cc | 11 +++++++++++ 4 files changed, 65 insertions(+), 1 deletion(-) diff --git a/mysql-test/include/mix1.inc b/mysql-test/include/mix1.inc index d8034e19898..03df7c33a00 100644 --- a/mysql-test/include/mix1.inc +++ b/mysql-test/include/mix1.inc @@ -948,5 +948,29 @@ unlock tables; select * from t1; drop tables t1; +# +# Bug#29310: An InnoDB table was updated when the data wasn't actually changed. +# +create table t1(f1 varchar(5) unique, f2 timestamp NOT NULL DEFAULT + CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP); +insert into t1(f1) values(1); +--replace_column 1 # +select @a:=f2 from t1; +--sleep 5 +update t1 set f1=1; +--replace_column 1 # +select @b:=f2 from t1; +select if(@a=@b,"ok","wrong"); +--sleep 5 +insert into t1(f1) values (1) on duplicate key update f1="1"; +--replace_column 1 # +select @b:=f2 from t1; +select if(@a=@b,"ok","wrong"); +--sleep 5 +insert into t1(f1) select f1 from t1 on duplicate key update f1="1"; +--replace_column 1 # +select @b:=f2 from t1; +select if(@a=@b,"ok","wrong"); +drop table t1; --echo End of 5.1 tests diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index db912c650c3..93b78143de7 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -951,4 +951,32 @@ NULL 1 Two drop tables t1; +create table t1(f1 varchar(5) unique, f2 timestamp NOT NULL DEFAULT +CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP); +insert into t1(f1) values(1); +select @a:=f2 from t1; +@a:=f2 +# +update t1 set f1=1; +select @b:=f2 from t1; +@b:=f2 +# +select if(@a=@b,"ok","wrong"); +if(@a=@b,"ok","wrong") +ok +insert into t1(f1) values (1) on duplicate key update f1="1"; +select @b:=f2 from t1; +@b:=f2 +# +select if(@a=@b,"ok","wrong"); +if(@a=@b,"ok","wrong") +ok +insert into t1(f1) select f1 from t1 on duplicate key update f1="1"; +select @b:=f2 from t1; +@b:=f2 +# +select if(@a=@b,"ok","wrong"); +if(@a=@b,"ok","wrong") +ok +drop table t1; End of 5.1 tests diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index eeac5e7c4fe..7717d2c92c1 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -1419,7 +1419,8 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) goto before_trg_err; table->file->restore_auto_increment(prev_insert_id); - if ((table->file->ha_table_flags() & HA_PARTIAL_COLUMN_READ) || + if ((table->file->ha_table_flags() & HA_PARTIAL_COLUMN_READ && + !bitmap_is_subset(table->write_set, table->read_set)) || compare_record(table)) { if ((error=table->file->ha_update_row(table->record[1], diff --git a/sql/sql_update.cc b/sql/sql_update.cc index ef1f46bfdd2..6927835762b 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -231,6 +231,17 @@ int mysql_update(THD *thd, if (cond_value == Item::COND_FALSE) limit= 0; // Impossible WHERE } + + /* + If a timestamp field settable on UPDATE is present then to avoid wrong + update force the table handler to retrieve write-only fields to be able + to compare records and detect data change. + */ + if (table->file->ha_table_flags() & HA_PARTIAL_COLUMN_READ && + table->timestamp_field && + (table->timestamp_field_type == TIMESTAMP_AUTO_SET_ON_UPDATE || + table->timestamp_field_type == TIMESTAMP_AUTO_SET_ON_BOTH)) + bitmap_union(table->read_set, table->write_set); // Don't count on usage of 'only index' when calculating which key to use table->covering_keys.clear_all(); From ff3fd46c329e3e37a4e4d342fd7a429c7f8a173c Mon Sep 17 00:00:00 2001 From: "evgen@moonbone.local" <> Date: Mon, 9 Jul 2007 01:23:33 +0400 Subject: [PATCH 103/127] Bug#29461: Sort order of the collation wasn't used when comparing characters with the space character. When the my_strnncollsp_simple function compares two strings and one is a prefix of another then this function compares characters in the rest of longer key with the space character to find whether the longer key is greater or less. But the sort order of the collation isn't used in this comparison. This may lead to a wrong comparison result, wrongly created index or wrong order of the result set of a query with the ORDER BY clause. Now the my_strnncollsp_simple function uses collation sort order to compare the characters in the rest of longer key with the space character. --- mysql-test/r/ctype_collate.result | 8 ++++++++ mysql-test/t/ctype_collate.test | 11 +++++++++++ strings/ctype-simple.c | 2 +- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/ctype_collate.result b/mysql-test/r/ctype_collate.result index 52ee76d1948..5c9bb93103e 100644 --- a/mysql-test/r/ctype_collate.result +++ b/mysql-test/r/ctype_collate.result @@ -603,3 +603,11 @@ check table t1 extended; Table Op Msg_type Msg_text test.t1 check status OK drop table t1; +create table t1 (a varchar(2) character set latin7 collate latin7_general_ci,key(a)); +insert into t1 set a=0x4c20; +insert into t1 set a=0x6c; +insert into t1 set a=0x4c98; +check table t1 extended; +Table Op Msg_type Msg_text +test.t1 check status OK +drop table t1; diff --git a/mysql-test/t/ctype_collate.test b/mysql-test/t/ctype_collate.test index 4bbae42559a..cfef8dfe81a 100644 --- a/mysql-test/t/ctype_collate.test +++ b/mysql-test/t/ctype_collate.test @@ -218,3 +218,14 @@ insert into t1 set f1=0x3F3F1E563F; insert into t1 set f1=0x3F3F; check table t1 extended; drop table t1; + +# +# Bug#29461: Sort order of the collation wasn't used when comparing characters +# with the space character. +# +create table t1 (a varchar(2) character set latin7 collate latin7_general_ci,key(a)); +insert into t1 set a=0x4c20; +insert into t1 set a=0x6c; +insert into t1 set a=0x4c98; +check table t1 extended; +drop table t1; diff --git a/strings/ctype-simple.c b/strings/ctype-simple.c index fca5607e152..8b1b0d6790d 100644 --- a/strings/ctype-simple.c +++ b/strings/ctype-simple.c @@ -179,7 +179,7 @@ int my_strnncollsp_simple(CHARSET_INFO * cs, const uchar *a, uint a_length, } for (end= a + a_length-length; a < end ; a++) { - if (*a != ' ') + if (map[*a] != ' ') return (map[*a] < ' ') ? -swap : swap; } } From b37c24c439282ed2497534b1515cde1fdf32057e Mon Sep 17 00:00:00 2001 From: "ramil/ram@mysql.com/ramil.myoffice.izhnet.ru" <> Date: Mon, 9 Jul 2007 10:39:49 +0500 Subject: [PATCH 104/127] after-merge fix. --- mysql-test/r/show_check.result | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result index 9ef10865cd7..3f8e48a0069 100644 --- a/mysql-test/r/show_check.result +++ b/mysql-test/r/show_check.result @@ -1148,7 +1148,37 @@ DROP TABLE t1; DROP VIEW v1; DROP PROCEDURE p1; DROP FUNCTION f1; -End of 5.0 tests. +flush status; +show variables like "log_queries_not_using_indexes"; +Variable_name Value +log_queries_not_using_indexes ON +select 1 from information_schema.tables limit 1; +1 +1 +show status like 'slow_queries'; +Variable_name Value +Slow_queries 2 +set global log_queries_not_using_indexes=OFF; +show variables like "log_queries_not_using_indexes"; +Variable_name Value +log_queries_not_using_indexes OFF +select 1 from information_schema.tables limit 1; +1 +1 +show status like 'slow_queries'; +Variable_name Value +Slow_queries 2 +set global log_queries_not_using_indexes=ON; +show variables like "log_queries_not_using_indexes"; +Variable_name Value +log_queries_not_using_indexes ON +select 1 from information_schema.tables limit 1; +1 +1 +show status like 'slow_queries'; +Variable_name Value +Slow_queries 4 +End of 5.0 tests SHOW AUTHORS; create database mysqltest; show create database mysqltest; From 7dd1f323a84c9acdd7deba7e4d94cb8986f32fe0 Mon Sep 17 00:00:00 2001 From: "tomas@whalegate.ndb.mysql.com" <> Date: Mon, 9 Jul 2007 09:35:27 +0200 Subject: [PATCH 105/127] Bug #29570 - correct result files --- mysql-test/r/rpl_row_tabledefs_2myisam.result | 2 +- mysql-test/r/rpl_row_tabledefs_3innodb.result | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/rpl_row_tabledefs_2myisam.result b/mysql-test/r/rpl_row_tabledefs_2myisam.result index 4eca19ff098..e41f8be055b 100644 --- a/mysql-test/r/rpl_row_tabledefs_2myisam.result +++ b/mysql-test/r/rpl_row_tabledefs_2myisam.result @@ -123,7 +123,7 @@ Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno 1105 -Last_Error Error in Write_rows event: error during transaction execution on table test.t1_nodef +Last_Error Error in Write_rows event: error during transaction execution on table test.t1_nodef. Unknown error Skip_Counter 0 Exec_Master_Log_Pos # Relay_Log_Space # diff --git a/mysql-test/r/rpl_row_tabledefs_3innodb.result b/mysql-test/r/rpl_row_tabledefs_3innodb.result index 687108e17e5..72c088d5a6b 100644 --- a/mysql-test/r/rpl_row_tabledefs_3innodb.result +++ b/mysql-test/r/rpl_row_tabledefs_3innodb.result @@ -123,7 +123,7 @@ Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno 1105 -Last_Error Error in Write_rows event: error during transaction execution on table test.t1_nodef +Last_Error Error in Write_rows event: error during transaction execution on table test.t1_nodef. Unknown error Skip_Counter 0 Exec_Master_Log_Pos # Relay_Log_Space # From 5cba44239aaf6cb889ce06db7247d9a4172d9452 Mon Sep 17 00:00:00 2001 From: "tsmith@sita.local" <> Date: Mon, 9 Jul 2007 03:31:27 -0600 Subject: [PATCH 106/127] disabled.def: post-merge fix: re-enable rpl_udf test --- mysql-test/suite/rpl/t/disabled.def | 1 - 1 file changed, 1 deletion(-) diff --git a/mysql-test/suite/rpl/t/disabled.def b/mysql-test/suite/rpl/t/disabled.def index 1c72d184739..fda40c30340 100644 --- a/mysql-test/suite/rpl/t/disabled.def +++ b/mysql-test/suite/rpl/t/disabled.def @@ -14,4 +14,3 @@ rpl_ddl : BUG#26418 2007-03-01 mleich Slave out of sync after C rpl_innodb_mixed_ddl : Bug #29363 rpl.rpl_innodb_mixed_* test failures rpl_innodb_mixed_dml : Bug #29363 rpl.rpl_innodb_mixed_* test failures rpl_invoked_features : BUG#29020 2007-06-21 Lars Non-deterministic test case -rpl_udf : Bug#28993 rpl_udf test causes server crash and valgrind warning in pushbuild From 3e9679e1fa36a1d788da106cd2629a0e87f1a630 Mon Sep 17 00:00:00 2001 From: "gkodinov/kgeorge@magare.gmz" <> Date: Mon, 9 Jul 2007 17:41:24 +0300 Subject: [PATCH 107/127] Bug #29070: Error in spatial index 1. Threat MBR for a key as double[] and convert it only when about to store it on disk. 2. Remove the redundant function get_double(). --- myisam/sp_key.c | 71 ++++++++++++++--------------------- mysql-test/r/gis-rtree.result | 13 +++++++ mysql-test/t/gis-rtree.test | 19 ++++++++++ 3 files changed, 61 insertions(+), 42 deletions(-) diff --git a/myisam/sp_key.c b/myisam/sp_key.c index 34c96a219c7..e9728df4a14 100644 --- a/myisam/sp_key.c +++ b/myisam/sp_key.c @@ -31,11 +31,6 @@ static int sp_get_geometry_mbr(uchar *(*wkb), uchar *end, uint n_dims, double *mbr, int top); static int sp_mbr_from_wkb(uchar (*wkb), uint size, uint n_dims, double *mbr); -static void get_double(double *d, const byte *pos) -{ - float8get(*d, pos); -} - uint sp_make_key(register MI_INFO *info, uint keynr, uchar *key, const byte *record, my_off_t filepos) { @@ -62,48 +57,40 @@ uint sp_make_key(register MI_INFO *info, uint keynr, uchar *key, for (i = 0, keyseg = keyinfo->seg; keyseg->type; keyseg++, i++) { - uint length = keyseg->length; + uint length = keyseg->length, start= keyseg->start; + double val; + + DBUG_ASSERT(length == sizeof(double)); + DBUG_ASSERT(!(start % sizeof(double))); + DBUG_ASSERT(start < sizeof(mbr)); + DBUG_ASSERT(keyseg->type == HA_KEYTYPE_DOUBLE); - pos = ((byte*)mbr) + keyseg->start; + val= mbr[start / sizeof (double)]; +#ifdef HAVE_ISNAN + if (isnan(val)) + { + bzero(key, length); + key+= length; + len+= length; + continue; + } +#endif + if (keyseg->flag & HA_SWAP_KEY) { -#ifdef HAVE_ISNAN - if (keyseg->type == HA_KEYTYPE_FLOAT) - { - float nr; - float4get(nr, pos); - if (isnan(nr)) - { - /* Replace NAN with zero */ - bzero(key, length); - key+= length; - continue; - } - } - else if (keyseg->type == HA_KEYTYPE_DOUBLE) - { - double nr; - get_double(&nr, pos); - if (isnan(nr)) - { - bzero(key, length); - key+= length; - continue; - } - } -#endif - pos += length; - while (length--) - { + char buf[sizeof(double)]; + + float8store(buf, val); + pos= &buf[length]; + while (pos > buf) *key++ = *--pos; - } } else { - memcpy((byte*)key, pos, length); - key += keyseg->length; + float8store((byte *)key, val); + key += length; } - len += keyseg->length; + len+= length; } _mi_dpointer(info, key, filepos); return len; @@ -141,13 +128,13 @@ static int sp_add_point_to_mbr(uchar *(*wkb), uchar *end, uint n_dims, { if ((*wkb) > end - 8) return -1; - get_double(&ord, (const byte*) *wkb); + float8get(ord, (const byte*) *wkb); (*wkb)+= 8; if (ord < *mbr) - float8store((char*) mbr, ord); + *mbr= ord; mbr++; if (ord > *mbr) - float8store((char*) mbr, ord); + *mbr= ord; mbr++; } return 0; diff --git a/mysql-test/r/gis-rtree.result b/mysql-test/r/gis-rtree.result index e4b52fc0392..8476ea9e838 100644 --- a/mysql-test/r/gis-rtree.result +++ b/mysql-test/r/gis-rtree.result @@ -1444,3 +1444,16 @@ OPTIMIZE TABLE t1; Table Op Msg_type Msg_text test.t1 optimize status OK DROP TABLE t1; +CREATE TABLE t1 (a INT, b GEOMETRY NOT NULL, SPATIAL KEY b(b)); +INSERT INTO t1 VALUES (1, GEOMFROMTEXT('LINESTRING(1102218.456 1,2000000 2)')); +INSERT INTO t1 VALUES (2, GEOMFROMTEXT('LINESTRING(1102218.456 1,2000000 2)')); +SELECT COUNT(*) FROM t1 WHERE +MBRINTERSECTS(b, GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') ); +COUNT(*) +2 +SELECT COUNT(*) FROM t1 IGNORE INDEX (b) WHERE +MBRINTERSECTS(b, GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') ); +COUNT(*) +2 +DROP TABLE t1; +End of 5.0 tests. diff --git a/mysql-test/t/gis-rtree.test b/mysql-test/t/gis-rtree.test index 3368aea9741..74b12caca41 100644 --- a/mysql-test/t/gis-rtree.test +++ b/mysql-test/t/gis-rtree.test @@ -827,3 +827,22 @@ INSERT INTO t1 (b) SELECT b FROM t1; OPTIMIZE TABLE t1; DROP TABLE t1; + + +# +# Bug #29070: Error in spatial index +# + +CREATE TABLE t1 (a INT, b GEOMETRY NOT NULL, SPATIAL KEY b(b)); +INSERT INTO t1 VALUES (1, GEOMFROMTEXT('LINESTRING(1102218.456 1,2000000 2)')); +INSERT INTO t1 VALUES (2, GEOMFROMTEXT('LINESTRING(1102218.456 1,2000000 2)')); + +# must return the same number as the next select +SELECT COUNT(*) FROM t1 WHERE + MBRINTERSECTS(b, GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') ); +SELECT COUNT(*) FROM t1 IGNORE INDEX (b) WHERE + MBRINTERSECTS(b, GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') ); + +DROP TABLE t1; + +--echo End of 5.0 tests. From 4b1da38b13592083503b4edbc06a3c64c6473efe Mon Sep 17 00:00:00 2001 From: "tsmith@sita.local" <> Date: Mon, 9 Jul 2007 13:18:27 -0600 Subject: [PATCH 108/127] rpl_misc_functions.result, rpl_misc_functions.test: Backport from 5.1 a fix to make this test deterministic --- mysql-test/r/rpl_misc_functions.result | 19 ++++++++++--------- mysql-test/t/rpl_misc_functions.test | 23 ++++++++++++----------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/mysql-test/r/rpl_misc_functions.result b/mysql-test/r/rpl_misc_functions.result index ca7403316b1..a8e5520ca8f 100644 --- a/mysql-test/r/rpl_misc_functions.result +++ b/mysql-test/r/rpl_misc_functions.result @@ -20,11 +20,12 @@ select * from t1, t2 where (t1.id=t2.id) and not(t1.i=t2.i and t1.r1=t2.r1 and t id i r1 r2 p id i r1 r2 p drop table t1; DROP TABLE IF EXISTS t1; -CREATE TABLE t1 (col_a double default NULL); +CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, +col_a DOUBLE DEFAULT NULL); CREATE PROCEDURE test_replication_sp1() BEGIN -INSERT INTO t1 VALUES (rand()), (rand()); -INSERT INTO t1 VALUES (rand()); +INSERT INTO t1 (col_a) VALUES (rand()), (rand()); +INSERT INTO t1 (col_a) VALUES (rand()); END| CREATE PROCEDURE test_replication_sp2() BEGIN @@ -37,18 +38,18 @@ RETURN (rand() + rand()); END| CALL test_replication_sp1(); CALL test_replication_sp2(); -INSERT INTO t1 VALUES (test_replication_sf()); -INSERT INTO t1 VALUES (test_replication_sf()); -INSERT INTO t1 VALUES (test_replication_sf()); +INSERT INTO t1 (col_a) VALUES (test_replication_sf()); +INSERT INTO t1 (col_a) VALUES (test_replication_sf()); +INSERT INTO t1 (col_a) VALUES (test_replication_sf()); select * from t1 into outfile "../tmp/t1_slave.txt"; create temporary table t1_slave select * from t1 where 1=0; load data infile '../tmp/t1_slave.txt' into table t1_slave; -select count(*) into @aux from t1, t1_slave -where ABS(t1.col_a - t1_slave.col_a) < 0.0001 ; +select count(*) into @aux from t1 join t1_slave using (id) +where ABS(t1.col_a - t1_slave.col_a) < 0.0000001 ; SELECT @aux; @aux 12 +DROP TABLE t1, t1_slave; DROP PROCEDURE test_replication_sp1; DROP PROCEDURE test_replication_sp2; DROP FUNCTION test_replication_sf; -DROP TABLE t1, t1_slave; diff --git a/mysql-test/t/rpl_misc_functions.test b/mysql-test/t/rpl_misc_functions.test index b87fff919b2..1c94471c975 100644 --- a/mysql-test/t/rpl_misc_functions.test +++ b/mysql-test/t/rpl_misc_functions.test @@ -43,15 +43,16 @@ drop table t1; DROP TABLE IF EXISTS t1; --enable_warnings -CREATE TABLE t1 (col_a double default NULL); +CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, + col_a DOUBLE DEFAULT NULL); DELIMITER |; # Use a SP that calls rand() multiple times CREATE PROCEDURE test_replication_sp1() BEGIN - INSERT INTO t1 VALUES (rand()), (rand()); - INSERT INTO t1 VALUES (rand()); + INSERT INTO t1 (col_a) VALUES (rand()), (rand()); + INSERT INTO t1 (col_a) VALUES (rand()); END| # Use a SP that calls another SP to call rand() multiple times @@ -73,9 +74,9 @@ DELIMITER ;| # the master to those on the slave. CALL test_replication_sp1(); CALL test_replication_sp2(); -INSERT INTO t1 VALUES (test_replication_sf()); -INSERT INTO t1 VALUES (test_replication_sf()); -INSERT INTO t1 VALUES (test_replication_sf()); +INSERT INTO t1 (col_a) VALUES (test_replication_sf()); +INSERT INTO t1 (col_a) VALUES (test_replication_sf()); +INSERT INTO t1 (col_a) VALUES (test_replication_sf()); --sync_slave_with_master @@ -90,24 +91,24 @@ load data infile '../tmp/t1_slave.txt' into table t1_slave; # Compare master and slave temp table, use subtraction # for floating point comparison of "double" -select count(*) into @aux from t1, t1_slave -where ABS(t1.col_a - t1_slave.col_a) < 0.0001 ; +select count(*) into @aux from t1 join t1_slave using (id) +where ABS(t1.col_a - t1_slave.col_a) < 0.0000001 ; SELECT @aux; if (`SELECT @aux <> 12 OR @aux IS NULL`) { --echo # ERROR: We expected to get count(*) = 12. - SELECT col_a FROM t1; - SELECT col_a FROM t1_slave; + SELECT id, col_a FROM t1; + SELECT id, col_a FROM t1_slave; --echo # abort exit; } # Cleanup connection master; +DROP TABLE t1, t1_slave; DROP PROCEDURE test_replication_sp1; DROP PROCEDURE test_replication_sp2; DROP FUNCTION test_replication_sf; -DROP TABLE t1, t1_slave; --sync_slave_with_master From e345a242f4ea5ded5216e2e1b14f01836da2a217 Mon Sep 17 00:00:00 2001 From: "tsmith@sita.local" <> Date: Mon, 9 Jul 2007 15:30:19 -0600 Subject: [PATCH 109/127] mysqld_safe.sh: Fix a few typos in comments (from Paul DuBois) --- scripts/mysqld_safe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/mysqld_safe.sh b/scripts/mysqld_safe.sh index 357dd275d1f..987c714d3ff 100644 --- a/scripts/mysqld_safe.sh +++ b/scripts/mysqld_safe.sh @@ -14,7 +14,7 @@ KILL_MYSQLD=1; MYSQLD= niceness=0 -# Default on, unless --log-err is specified (and before options are parsed) +# Default on, unless --log-error is specified (and before options are parsed) syslog=2 user=@MYSQLD_USER@ pid_file= @@ -256,7 +256,7 @@ if [ -n "$err_log" -o $syslog -eq 0 ] then if [ -n "$err_log" ] then - # mysqld adds ".err" if there is no extension on the --log-err + # mysqld adds ".err" if there is no extension on the --log-error # argument; must match that here, or mysqld_safe will write to a # different log file than mysqld From 63dd4251e4c6e631cc27a5a6a5128889f24e04b5 Mon Sep 17 00:00:00 2001 From: "tsmith@sita.local" <> Date: Mon, 9 Jul 2007 16:10:43 -0600 Subject: [PATCH 110/127] Bug #29634: mysqld_safe does not set err_log variable, error log file is not created Dont touch & chmod the err_log file if using syslog (mysqld_safe) --- scripts/mysqld_safe.sh | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/scripts/mysqld_safe.sh b/scripts/mysqld_safe.sh index 987c714d3ff..597bf38a518 100644 --- a/scripts/mysqld_safe.sh +++ b/scripts/mysqld_safe.sh @@ -289,6 +289,25 @@ then syslog=0 fi +USER_OPTION="" +if test -w / -o "$USER" = "root" +then + if test "$user" != "root" -o $SET_USER = 1 + then + USER_OPTION="--user=$user" + fi + # Change the err log to the right user, if it is in use + if [ $syslog -eq 0 ]; then + touch $err_log + chown $user $err_log + fi + if test -n "$open_files" + then + ulimit -n $open_files + append_arg_to_args "--open-files-limit=$open_files" + fi +fi + safe_mysql_unix_port=${mysql_unix_port:-${MYSQL_UNIX_PORT:-@MYSQL_UNIX_ADDR@}} # Make sure that directory for $safe_mysql_unix_port exists mysql_unix_port_dir=`dirname $safe_mysql_unix_port` @@ -387,22 +406,6 @@ else fi fi -USER_OPTION="" -if test -w / -o "$USER" = "root" -then - if test "$user" != "root" -o $SET_USER = 1 - then - USER_OPTION="--user=$user" - fi - # If we are root, change the err log to the right user. - touch $err_log; chown $user $err_log - if test -n "$open_files" - then - ulimit -n $open_files - append_arg_to_args "--open-files-limit=$open_files" - fi -fi - # Try to set the core file size (even if we aren't root) because many systems # don't specify a hard limit on core file size. if test -n "$core_file_size" From 503f86f3baa10c9af92600623180e4154f231477 Mon Sep 17 00:00:00 2001 From: "tomas@whalegate.ndb.mysql.com" <> Date: Tue, 10 Jul 2007 09:00:15 +0200 Subject: [PATCH 111/127] Bug #29570 - correct result files --- mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result | 4 ++-- mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result b/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result index 4b0c59f97e7..1ccceb65317 100644 --- a/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result +++ b/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result @@ -123,7 +123,7 @@ Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno 1364 -Last_Error Error in Write_rows event: error during transaction execution on table test.t1_nodef. Unknown error +Last_Error Error in Write_rows event: error during transaction execution on table test.t1_nodef. Skip_Counter 0 Exec_Master_Log_Pos # Relay_Log_Space # @@ -141,7 +141,7 @@ Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error Last_SQL_Errno 1364 -Last_SQL_Error Error in Write_rows event: error during transaction execution on table test.t1_nodef +Last_SQL_Error Error in Write_rows event: error during transaction execution on table test.t1_nodef. SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; INSERT INTO t9 VALUES (2); diff --git a/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result b/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result index e94af83df3f..bec95c4370f 100644 --- a/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result +++ b/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result @@ -123,7 +123,7 @@ Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno 1364 -Last_Error Error in Write_rows event: error during transaction execution on table test.t1_nodef. Unknown error +Last_Error Error in Write_rows event: error during transaction execution on table test.t1_nodef. Skip_Counter 0 Exec_Master_Log_Pos # Relay_Log_Space # @@ -141,7 +141,7 @@ Master_SSL_Verify_Server_Cert No Last_IO_Errno 0 Last_IO_Error Last_SQL_Errno 1364 -Last_SQL_Error Error in Write_rows event: error during transaction execution on table test.t1_nodef +Last_SQL_Error Error in Write_rows event: error during transaction execution on table test.t1_nodef. SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; START SLAVE; INSERT INTO t9 VALUES (2); From 7735a2f2ebe54e6df926097b6c43d2aaba5fbcc5 Mon Sep 17 00:00:00 2001 From: "gkodinov/kgeorge@magare.gmz" <> Date: Tue, 10 Jul 2007 10:43:12 +0300 Subject: [PATCH 112/127] Bug #29469: Client dies if a query is issued after hitting Ctrl + C The Ctrl-C handler in mysql closes the console while ReadConsole() waits for console input. But the main thread was detecting that ReadConsole() haven't read anything and was processing as if there're data in the buffer. Fixed to handle correctly this error condition. No test case added as the test relies on Ctrl-C sent to the client from its console. --- client/mysql.cc | 7 ++++++- mysys/my_conio.c | 7 +++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/client/mysql.cc b/client/mysql.cc index 368fce30d67..277b56328a6 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -1086,7 +1086,12 @@ static int read_and_execute(bool interactive) something else is still in console input buffer */ } while (tmpbuf.alloced_length() <= clen); - line= buffer.c_ptr(); + /* + An empty line is returned from my_cgets when there's error reading : + Ctrl-c for example + */ + if (line) + line= buffer.c_ptr(); #else /* OS2 */ buffer.length(0); /* _cgets() expects the buffer size - 3 as the first byte */ diff --git a/mysys/my_conio.c b/mysys/my_conio.c index 23b0c55e7a9..def15674f26 100644 --- a/mysys/my_conio.c +++ b/mysys/my_conio.c @@ -184,16 +184,19 @@ char* my_cgets(char *buffer, unsigned long clen, unsigned long* plen) } while (GetLastError() == ERROR_NOT_ENOUGH_MEMORY); + /* We go here on error reading the string (Ctrl-C for example) */ + if (!*plen) + result= NULL; /* purecov: inspected */ if (result != NULL) { - if (buffer[*plen - 2] == '\r') + if (*plen > 1 && buffer[*plen - 2] == '\r') { *plen= *plen - 2; } else { - if (buffer[*plen - 1] == '\r') + if (*plen > 0 && buffer[*plen - 1] == '\r') { char tmp[3]; int tmplen= sizeof(tmp); From 5fb5f2a9a5f898eeceeb6398ce67fef84423ec6c Mon Sep 17 00:00:00 2001 From: "ramil/ram@mysql.com/ramil.myoffice.izhnet.ru" <> Date: Tue, 10 Jul 2007 13:09:07 +0500 Subject: [PATCH 113/127] Fix for bug #29652: csv.test failure: two changes conflict after merge Problem: we don't take into account the length of the data written to the temporary data file during update on a CSV table. Fix: properly calculate the data file length during update. --- mysql-test/r/csv.result | 2 ++ storage/csv/ha_tina.cc | 15 +++++++++++++-- storage/csv/ha_tina.h | 1 + 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/csv.result b/mysql-test/r/csv.result index 65677e75ceb..86ba5002af8 100644 --- a/mysql-test/r/csv.result +++ b/mysql-test/r/csv.result @@ -4945,6 +4945,8 @@ SELECT * FROM bug13894; val 6 6 +5 +11 DROP TABLE bug13894; DROP TABLE IF EXISTS bug14672; CREATE TABLE bug14672 (c1 integer) engine = CSV; diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc index 8b0359fdc21..07bd28f8e65 100644 --- a/storage/csv/ha_tina.cc +++ b/storage/csv/ha_tina.cc @@ -904,6 +904,7 @@ int ha_tina::open_update_temp_file_if_needed() 0, O_RDWR | O_TRUNC, MYF(MY_WME))) < 0) return 1; share->update_file_opened= TRUE; + temp_file_length= 0; } return 0; } @@ -928,6 +929,13 @@ int ha_tina::update_row(const uchar * old_data, uchar * new_data) size= encode_quote(new_data); + /* + During update we mark each updating record as deleted + (see the chain_append()) then write new one to the temporary data file. + At the end of the sequence in the rnd_end() we append all non-marked + records from the data file to the temporary data file then rename it. + The temp_file_length is used to calculate new data file length. + */ if (chain_append()) DBUG_RETURN(-1); @@ -937,6 +945,7 @@ int ha_tina::update_row(const uchar * old_data, uchar * new_data) if (my_write(update_temp_file, (uchar*)buffer.ptr(), size, MYF(MY_WME | MY_NABP))) DBUG_RETURN(-1); + temp_file_length+= size; /* UPDATE should never happen on the log tables */ DBUG_ASSERT(!share->is_log_table); @@ -1154,7 +1163,6 @@ int ha_tina::rnd_end() if ((chain_ptr - chain) > 0) { - off_t temp_file_length= 0; tina_set *ptr= chain; /* @@ -1244,7 +1252,10 @@ int ha_tina::rnd_end() Here we record this fact to the meta-file. */ (void)write_meta_file(share->meta_file, share->rows_recorded, FALSE); - + /* + Update local_saved_data_file_length with the real length of the + data file. + */ local_saved_data_file_length= temp_file_length; } diff --git a/storage/csv/ha_tina.h b/storage/csv/ha_tina.h index 8d2c6855b84..2e43f1a2307 100644 --- a/storage/csv/ha_tina.h +++ b/storage/csv/ha_tina.h @@ -63,6 +63,7 @@ class ha_tina: public handler off_t current_position; /* Current position in the file during a file scan */ off_t next_position; /* Next position in the file scan */ off_t local_saved_data_file_length; /* save position for reads */ + off_t temp_file_length; uchar byte_buffer[IO_SIZE]; Transparent_file *file_buff; File data_file; /* File handler for readers */ From 015e1290a1db21e02560447ffd72238827add8f7 Mon Sep 17 00:00:00 2001 From: "gkodinov/kgeorge@magare.gmz" <> Date: Wed, 11 Jul 2007 10:49:54 +0300 Subject: [PATCH 114/127] Bug #29325: By default MyISAM overwrites .MYD and .MYI files no DATA DIRECTORY option is used. This can lead to two tables using the same .MYD and .MYI files (that can't be dropped). To prevent CREATE TABLE from overwriting a file a new option is introduced : keep_files_on_create When this is on the CREATE TABLE throws an error if either the .MYD or .MYI exists for a MyISAM table. The option is off by default (resulting in compatible behavior). --- include/my_base.h | 1 + myisam/mi_create.c | 6 ++++-- mysql-test/r/create.result | 17 +++++++++++++++++ mysql-test/t/create.test | 31 +++++++++++++++++++++++++++++++ sql/ha_myisam.cc | 2 ++ sql/set_var.cc | 6 ++++++ sql/sql_class.h | 1 + sql/sql_table.cc | 2 ++ sql/unireg.cc | 2 ++ 9 files changed, 66 insertions(+), 2 deletions(-) diff --git a/include/my_base.h b/include/my_base.h index d07a4de8e6a..d8732808cee 100644 --- a/include/my_base.h +++ b/include/my_base.h @@ -279,6 +279,7 @@ enum ha_base_keytype { #define HA_PACK_RECORD 2 /* Request packed record format */ #define HA_CREATE_TMP_TABLE 4 #define HA_CREATE_CHECKSUM 8 +#define HA_CREATE_KEEP_FILES 16 /* don't overwrite .MYD and MYI */ #define HA_CREATE_DELAY_KEY_WRITE 64 /* diff --git a/myisam/mi_create.c b/myisam/mi_create.c index ea1d8c7b83e..dd8a5b0d525 100644 --- a/myisam/mi_create.c +++ b/myisam/mi_create.c @@ -586,7 +586,8 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, 32 : 0)); linkname_ptr=0; /* Replace the current file */ - create_flag=MY_DELETE_OLD; + if (!(flags & HA_CREATE_KEEP_FILES)) + create_flag=MY_DELETE_OLD; } /* @@ -647,7 +648,8 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, { fn_format(filename,name,"",MI_NAME_DEXT,4); linkname_ptr=0; - create_flag=MY_DELETE_OLD; + if (!(flags & HA_CREATE_KEEP_FILES)) + create_flag=MY_DELETE_OLD; } if ((dfile= my_create_with_symlink(linkname_ptr, filename, 0, create_mode, diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index e692dbf3938..16bc534ba92 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -1503,4 +1503,21 @@ t1 CREATE TABLE `t1` ( `c17` int(11) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; +CREATE DATABASE db1; +CREATE DATABASE db2; +USE db2; +INSERT INTO db2.t1 VALUES (1); +SELECT * FROM db2.t1; +b +1 +RESET QUERY CACHE; +USE db1; +SET SESSION keep_files_on_create = TRUE; +CREATE TABLE t1 (a INT) ENGINE MYISAM; +ERROR HY000: Can't create/write to file './db1/t1.MYD' (Errcode: 17) +SET SESSION keep_files_on_create = DEFAULT; +DROP TABLE db2.t1; +DROP DATABASE db1; +DROP DATABASE db2; +USE test; End of 5.0 tests diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index 99f3fea416a..610a208ebf0 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -1118,5 +1118,36 @@ show create table t1; drop table t1; +# +# Bug #29325: create table overwrites .MYD file of other table (datadir) +# + +CREATE DATABASE db1; +CREATE DATABASE db2; + +USE db2; +--disable_query_log +eval CREATE TABLE t1 (b INT) ENGINE MYISAM +DATA DIRECTORY = '$MYSQLTEST_VARDIR/master-data/db1/'; +--enable_query_log + +INSERT INTO db2.t1 VALUES (1); +SELECT * FROM db2.t1; +RESET QUERY CACHE; + +USE db1; + +#no warning from create table +SET SESSION keep_files_on_create = TRUE; +--disable_abort_on_error +CREATE TABLE t1 (a INT) ENGINE MYISAM; +--enable_abort_on_error +SET SESSION keep_files_on_create = DEFAULT; + +DROP TABLE db2.t1; +DROP DATABASE db1; +DROP DATABASE db2; +USE test; + --echo End of 5.0 tests diff --git a/sql/ha_myisam.cc b/sql/ha_myisam.cc index 5e953092436..4efa19bad78 100644 --- a/sql/ha_myisam.cc +++ b/sql/ha_myisam.cc @@ -1809,6 +1809,8 @@ int ha_myisam::create(const char *name, register TABLE *table_arg, if (ha_create_info->options & HA_LEX_CREATE_TMP_TABLE) create_flags|= HA_CREATE_TMP_TABLE; + if (ha_create_info->options & HA_CREATE_KEEP_FILES) + create_flags|= HA_CREATE_KEEP_FILES; if (options & HA_OPTION_PACK_RECORD) create_flags|= HA_PACK_RECORD; if (options & HA_OPTION_CHECKSUM) diff --git a/sql/set_var.cc b/sql/set_var.cc index 09cdc34f803..b30aa008366 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -592,6 +592,10 @@ sys_var_const_str sys_license("license", STRINGIFY_ARG(LICENSE)); /* Global read-only variable containing hostname */ sys_var_const_str sys_hostname("hostname", glob_hostname); +sys_var_thd_bool sys_keep_files_on_create("keep_files_on_create", + &SV::keep_files_on_create); + + /* @@ -637,6 +641,7 @@ sys_var *sys_variables[]= &sys_delayed_insert_limit, &sys_delayed_insert_timeout, &sys_delayed_queue_size, + &sys_keep_files_on_create, &sys_error_count, &sys_expire_logs_days, &sys_flush, @@ -849,6 +854,7 @@ struct show_var_st init_vars[]= { {sys_delayed_insert_timeout.name, (char*) &sys_delayed_insert_timeout, SHOW_SYS}, {sys_delayed_queue_size.name,(char*) &sys_delayed_queue_size, SHOW_SYS}, {sys_div_precincrement.name,(char*) &sys_div_precincrement,SHOW_SYS}, + {sys_keep_files_on_create.name,(char*) &sys_keep_files_on_create, SHOW_SYS}, {sys_engine_condition_pushdown.name, (char*) &sys_engine_condition_pushdown, SHOW_SYS}, {sys_expire_logs_days.name, (char*) &sys_expire_logs_days, SHOW_SYS}, diff --git a/sql/sql_class.h b/sql/sql_class.h index a5cbc21684f..112538cbe95 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -566,6 +566,7 @@ struct system_variables my_bool new_mode; my_bool query_cache_wlock_invalidate; my_bool engine_condition_pushdown; + my_bool keep_files_on_create; #ifdef HAVE_INNOBASE_DB my_bool innodb_table_locks; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 87f23097a66..e02595836ca 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -2841,6 +2841,8 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, TABLE_LIST *src_table, and temporary tables). */ *fn_ext(dst_path)= 0; + if (thd->variables.keep_files_on_create) + create_info->options|= HA_CREATE_KEEP_FILES; err= ha_create_table(dst_path, create_info, 1); if (create_info->options & HA_LEX_CREATE_TMP_TABLE) diff --git a/sql/unireg.cc b/sql/unireg.cc index c01e6a0f00c..d8e63bb78e1 100644 --- a/sql/unireg.cc +++ b/sql/unireg.cc @@ -285,6 +285,8 @@ int rea_create_table(THD *thd, my_string file_name, if (mysql_create_frm(thd, file_name, db, table, create_info, create_fields, keys, key_info, NULL)) DBUG_RETURN(1); + if (thd->variables.keep_files_on_create) + create_info->options|= HA_CREATE_KEEP_FILES; if (!create_info->frm_only && ha_create_table(file_name,create_info,0)) { my_delete(file_name,MYF(0)); From 1e4d690476cf97ff4c2656da1ad7840ddd6217f7 Mon Sep 17 00:00:00 2001 From: "gkodinov/kgeorge@magare.gmz" <> Date: Wed, 11 Jul 2007 12:37:47 +0300 Subject: [PATCH 115/127] fixed uninitialized variable introduced by the fix for bug 29325 --- myisam/mi_create.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/myisam/mi_create.c b/myisam/mi_create.c index dd8a5b0d525..75863ed976f 100644 --- a/myisam/mi_create.c +++ b/myisam/mi_create.c @@ -586,8 +586,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, 32 : 0)); linkname_ptr=0; /* Replace the current file */ - if (!(flags & HA_CREATE_KEEP_FILES)) - create_flag=MY_DELETE_OLD; + create_flag=(flags & HA_CREATE_KEEP_FILES) ? 0 : MY_DELETE_OLD; } /* @@ -648,8 +647,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, { fn_format(filename,name,"",MI_NAME_DEXT,4); linkname_ptr=0; - if (!(flags & HA_CREATE_KEEP_FILES)) - create_flag=MY_DELETE_OLD; + create_flag=(flags & HA_CREATE_KEEP_FILES) ? 0 : MY_DELETE_OLD; } if ((dfile= my_create_with_symlink(linkname_ptr, filename, 0, create_mode, From 8acb73363ff2d9aac60862a9072ff6006277be16 Mon Sep 17 00:00:00 2001 From: "gkodinov/kgeorge@magare.gmz" <> Date: Wed, 11 Jul 2007 13:09:39 +0300 Subject: [PATCH 116/127] porting 29070 to 5.1-opt --- storage/myisam/sp_key.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/storage/myisam/sp_key.c b/storage/myisam/sp_key.c index 21965fad6b3..3748a38ff81 100644 --- a/storage/myisam/sp_key.c +++ b/storage/myisam/sp_key.c @@ -78,7 +78,7 @@ uint sp_make_key(register MI_INFO *info, uint keynr, uchar *key, if (keyseg->flag & HA_SWAP_KEY) { - char buf[sizeof(double)]; + uchar buf[sizeof(double)]; float8store(buf, val); pos= &buf[length]; @@ -87,7 +87,7 @@ uint sp_make_key(register MI_INFO *info, uint keynr, uchar *key, } else { - float8store((byte *)key, val); + float8store((uchar *)key, val); key += length; } len+= length; @@ -128,7 +128,7 @@ static int sp_add_point_to_mbr(uchar *(*wkb), uchar *end, uint n_dims, { if ((*wkb) > end - 8) return -1; - float8get(ord, (const byte*) *wkb); + float8get(ord, (const uchar*) *wkb); (*wkb)+= 8; if (ord < *mbr) *mbr= ord; From d76af64aa3186a2be505917af7c083d13bb61309 Mon Sep 17 00:00:00 2001 From: "sergefp@mysql.com" <> Date: Wed, 11 Jul 2007 15:16:54 +0400 Subject: [PATCH 117/127] BUG#29610: crash in func_group on 64bit platform: - make merge_buffers():sort_length have type size_t as this type is expected by, e.g. ptr_compare_1, which will receive pointer to sort_length as comparison parameter. --- sql/filesort.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/filesort.cc b/sql/filesort.cc index e547940797b..b6a5d844eac 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -1120,7 +1120,8 @@ int merge_buffers(SORTPARAM *param, IO_CACHE *from_file, int flag) { int error; - uint rec_length,sort_length,res_length,offset; + uint rec_length,res_length,offset; + size_t sort_length; ulong maxcount; ha_rows max_rows,org_max_rows; my_off_t to_start_filepos; From b5aa55e107e9d9ca0a9dfc18c21768318d971438 Mon Sep 17 00:00:00 2001 From: "gkodinov/kgeorge@magare.gmz" <> Date: Wed, 11 Jul 2007 18:02:47 +0300 Subject: [PATCH 118/127] Addendum to bug 29325: test if TRUNCATE TABLE works with keep_files_on_create --- mysql-test/r/create.result | 7 ++++++- mysql-test/t/create.test | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index 16bc534ba92..ff963892bc9 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -1515,8 +1515,13 @@ USE db1; SET SESSION keep_files_on_create = TRUE; CREATE TABLE t1 (a INT) ENGINE MYISAM; ERROR HY000: Can't create/write to file './db1/t1.MYD' (Errcode: 17) +CREATE TABLE t3 (a INT) Engine=MyISAM; +INSERT INTO t3 VALUES (1),(2),(3); +TRUNCATE TABLE t3; +SELECT * from t3; +a SET SESSION keep_files_on_create = DEFAULT; -DROP TABLE db2.t1; +DROP TABLE db2.t1, db1.t3; DROP DATABASE db1; DROP DATABASE db2; USE test; diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index 610a208ebf0..a1d3d488f1c 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -1142,9 +1142,15 @@ SET SESSION keep_files_on_create = TRUE; --disable_abort_on_error CREATE TABLE t1 (a INT) ENGINE MYISAM; --enable_abort_on_error + +CREATE TABLE t3 (a INT) Engine=MyISAM; +INSERT INTO t3 VALUES (1),(2),(3); +TRUNCATE TABLE t3; +SELECT * from t3; + SET SESSION keep_files_on_create = DEFAULT; -DROP TABLE db2.t1; +DROP TABLE db2.t1, db1.t3; DROP DATABASE db1; DROP DATABASE db2; USE test; From 13844b2533862ba6c746e3233e7693a90162c9ea Mon Sep 17 00:00:00 2001 From: "gshchepa/uchum@gleb.loc" <> Date: Thu, 12 Jul 2007 00:03:08 +0500 Subject: [PATCH 119/127] Fixed bug #29360. The special `zero' enum value was coerced to the normal empty string enum value during a field-to-field copy. This bug affected CREATE ... SELECT statements and SELECT aggregate GROUP BY enum field statements. Also this bug made unnecessary warnings during the execution of CREATE ... SELECT statements: Warning 1265 Data truncated for column... --- mysql-test/r/type_enum.result | 20 ++++++++++++++++++++ mysql-test/r/type_ranges.result | 4 ---- mysql-test/t/type_enum.test | 18 ++++++++++++++++++ sql/field_conv.cc | 16 +++++++++++----- 4 files changed, 49 insertions(+), 9 deletions(-) diff --git a/mysql-test/r/type_enum.result b/mysql-test/r/type_enum.result index f537b7140ba..ca516f027ba 100644 --- a/mysql-test/r/type_enum.result +++ b/mysql-test/r/type_enum.result @@ -1809,3 +1809,23 @@ f1 drop table t1; +CREATE TABLE t1 (c1 ENUM('a', '', 'b')); +INSERT INTO t1 (c1) VALUES ('b'); +INSERT INTO t1 (c1) VALUES (''); +INSERT INTO t1 (c1) VALUES (0); +Warnings: +Warning 1265 Data truncated for column 'c1' at row 1 +INSERT INTO t1 (c1) VALUES (''); +SELECT c1 + 0, COUNT(c1) FROM t1 GROUP BY c1; +c1 + 0 COUNT(c1) +0 1 +2 2 +3 1 +CREATE TABLE t2 SELECT * FROM t1; +SELECT c1 + 0 FROM t2; +c1 + 0 +3 +2 +0 +2 +DROP TABLE t1,t2; diff --git a/mysql-test/r/type_ranges.result b/mysql-test/r/type_ranges.result index e949d734944..5c2d3b84d89 100644 --- a/mysql-test/r/type_ranges.result +++ b/mysql-test/r/type_ranges.result @@ -208,10 +208,6 @@ options flags one one drop table t2; create table t2 select * from t1; -Warnings: -Warning 1265 Data truncated for column 'options' at row 4 -Warning 1265 Data truncated for column 'options' at row 5 -Warning 1265 Data truncated for column 'options' at row 6 update t2 set string="changed" where auto=16; show full columns from t1; Field Type Collation Null Key Default Extra Privileges Comment diff --git a/mysql-test/t/type_enum.test b/mysql-test/t/type_enum.test index ecc945a3157..fbba38f926d 100644 --- a/mysql-test/t/type_enum.test +++ b/mysql-test/t/type_enum.test @@ -182,3 +182,21 @@ create table t1(f1 set('a','b'), index(f1)); insert into t1 values(''),(''),('a'),('b'); select * from t1 where f1=''; drop table t1; + +# +# Bug#29360: Confluence of the special 0 enum value with the normal empty string +# value during field to field copy. +# + +CREATE TABLE t1 (c1 ENUM('a', '', 'b')); +INSERT INTO t1 (c1) VALUES ('b'); +INSERT INTO t1 (c1) VALUES (''); +INSERT INTO t1 (c1) VALUES (0); +INSERT INTO t1 (c1) VALUES (''); + +SELECT c1 + 0, COUNT(c1) FROM t1 GROUP BY c1; + +CREATE TABLE t2 SELECT * FROM t1; +SELECT c1 + 0 FROM t2; + +DROP TABLE t1,t2; diff --git a/sql/field_conv.cc b/sql/field_conv.cc index a286255ec23..2df65b62de6 100644 --- a/sql/field_conv.cc +++ b/sql/field_conv.cc @@ -790,11 +790,17 @@ int field_conv(Field *to,Field *from) blob->value.copy(); return blob->store(blob->value.ptr(),blob->value.length(),from->charset()); } - if ((from->result_type() == STRING_RESULT && - (to->result_type() == STRING_RESULT || - (from->real_type() != FIELD_TYPE_ENUM && - from->real_type() != FIELD_TYPE_SET))) || - to->type() == FIELD_TYPE_DECIMAL) + if (from->real_type() == FIELD_TYPE_ENUM && + to->real_type() == FIELD_TYPE_ENUM && + from->val_int() == 0) + { + ((Field_enum *)(to))->store_type(0); + } + else if ((from->result_type() == STRING_RESULT && + (to->result_type() == STRING_RESULT || + (from->real_type() != FIELD_TYPE_ENUM && + from->real_type() != FIELD_TYPE_SET))) || + to->type() == FIELD_TYPE_DECIMAL) { char buff[MAX_FIELD_WIDTH]; String result(buff,sizeof(buff),from->charset()); From df9c376e7279d7b2574f4a051dcadce1d72026d5 Mon Sep 17 00:00:00 2001 From: "evgen@moonbone.local" <> Date: Wed, 11 Jul 2007 23:18:02 +0400 Subject: [PATCH 120/127] Bug#29555: Comparing time values as strings may lead to a wrong result. Time values were compared as strings. This led to a wrong comparison result when comparing values one of which is under 100 hours and another is over 100 hours. Now when the Arg_comparator::set_cmp_func function sees that both items to compare are of the TIME type it sets the comparator to the Arg_comparator::compare_e_int or the Arg_comparator::compare_int_unsigned functions. --- mysql-test/r/type_time.result | 18 ++++++++++++++++++ mysql-test/t/type_time.test | 10 ++++++++++ sql/item_cmpfunc.cc | 12 ++++++++++++ 3 files changed, 40 insertions(+) diff --git a/mysql-test/r/type_time.result b/mysql-test/r/type_time.result index 442435b0459..6124f6e39f1 100644 --- a/mysql-test/r/type_time.result +++ b/mysql-test/r/type_time.result @@ -85,3 +85,21 @@ sec_to_time(time_to_sec(t)) 13:00:00 09:00:00 drop table t1; +select cast('100:55:50' as time) < cast('24:00:00' as time); +cast('100:55:50' as time) < cast('24:00:00' as time) +0 +select cast('100:55:50' as time) < cast('024:00:00' as time); +cast('100:55:50' as time) < cast('024:00:00' as time) +0 +select cast('300:55:50' as time) < cast('240:00:00' as time); +cast('300:55:50' as time) < cast('240:00:00' as time) +0 +select cast('100:55:50' as time) > cast('24:00:00' as time); +cast('100:55:50' as time) > cast('24:00:00' as time) +1 +select cast('100:55:50' as time) > cast('024:00:00' as time); +cast('100:55:50' as time) > cast('024:00:00' as time) +1 +select cast('300:55:50' as time) > cast('240:00:00' as time); +cast('300:55:50' as time) > cast('240:00:00' as time) +1 diff --git a/mysql-test/t/type_time.test b/mysql-test/t/type_time.test index cb7e4f85ad1..d294e53a12f 100644 --- a/mysql-test/t/type_time.test +++ b/mysql-test/t/type_time.test @@ -40,3 +40,13 @@ drop table t1; # ########################################################## # End of 4.1 tests + +# +# Bug#29555: Comparing time values as strings may lead to a wrong result. +# +select cast('100:55:50' as time) < cast('24:00:00' as time); +select cast('100:55:50' as time) < cast('024:00:00' as time); +select cast('300:55:50' as time) < cast('240:00:00' as time); +select cast('100:55:50' as time) > cast('24:00:00' as time); +select cast('100:55:50' as time) > cast('024:00:00' as time); +select cast('300:55:50' as time) > cast('240:00:00' as time); diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index ed0c09f0b32..70df1b4d09c 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -706,6 +706,18 @@ int Arg_comparator::set_cmp_func(Item_bool_func2 *owner_arg, func= &Arg_comparator::compare_datetime; return 0; } + else if (type == STRING_RESULT && (*a)->field_type() == MYSQL_TYPE_TIME && + (*b)->field_type() == MYSQL_TYPE_TIME) + { + /* Compare TIME values as integers. */ + thd= current_thd; + owner= owner_arg; + func= ((test(owner && owner->functype() == Item_func::EQUAL_FUNC)) ? + &Arg_comparator::compare_e_int : + &Arg_comparator::compare_int_unsigned); + return 0; + } + return set_compare_func(owner_arg, type); } From b01237b9cbd0917c09b8a7453dc9d2cfe16b1d92 Mon Sep 17 00:00:00 2001 From: "gshchepa/uchum@gleb.loc" <> Date: Thu, 12 Jul 2007 00:55:40 +0500 Subject: [PATCH 121/127] field_conv.cc: Additional fix for bug #29360. --- sql/field_conv.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/sql/field_conv.cc b/sql/field_conv.cc index 2df65b62de6..2705d4f617b 100644 --- a/sql/field_conv.cc +++ b/sql/field_conv.cc @@ -795,6 +795,7 @@ int field_conv(Field *to,Field *from) from->val_int() == 0) { ((Field_enum *)(to))->store_type(0); + return 0; } else if ((from->result_type() == STRING_RESULT && (to->result_type() == STRING_RESULT || From 7f64144bf0a2bb0ec7ada60685993a1c9bba80c1 Mon Sep 17 00:00:00 2001 From: "igor@olga.mysql.com" <> Date: Wed, 11 Jul 2007 18:45:35 -0700 Subject: [PATCH 122/127] Fixed bug #29604. A bug in the restore_prev_nj_state function allowed interleaving inner tables of outer join operations with outer tables. With the current implementation of the nested loops algorithm it could lead to wrong result sets for queries with nested outer joins. Another bug in this procedure effectively blocked evaluation of some valid execution plans for queries with nested outer joins. --- mysql-test/r/join_nested.result | 111 +++++++++++++++++++++++++++++++ mysql-test/t/join_nested.test | 114 ++++++++++++++++++++++++++++++++ sql/sql_select.cc | 10 ++- 3 files changed, 233 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/join_nested.result b/mysql-test/r/join_nested.result index 006488f9d43..daf63579e9c 100644 --- a/mysql-test/r/join_nested.result +++ b/mysql-test/r/join_nested.result @@ -1632,4 +1632,115 @@ INSERT INTO t3 VALUES (1,1); SELECT * FROM t1 JOIN (t2 JOIN t3 USING (b)) USING (a); ERROR 23000: Column 'a' in from clause is ambiguous DROP TABLE t1,t2,t3; +CREATE TABLE t1 ( +carrier char(2) default NULL, +id int NOT NULL auto_increment PRIMARY KEY +); +INSERT INTO t1 VALUES +('CO',235371754),('CO',235376554),('CO',235376884),('CO',235377874), +('CO',231060394),('CO',231059224),('CO',231059314),('CO',231060484), +('CO',231060274),('CO',231060124),('CO',231060244),('CO',231058594), +('CO',231058924),('CO',231058504),('CO',231059344),('CO',231060424), +('CO',231059554),('CO',231060304),('CO',231059644),('CO',231059464), +('CO',231059764),('CO',231058294),('CO',231058624),('CO',231058864), +('CO',231059374),('CO',231059584),('CO',231059734),('CO',231059014), +('CO',231059854),('CO',231059494),('CO',231059794),('CO',231058534), +('CO',231058324),('CO',231058684),('CO',231059524),('CO',231059974); +CREATE TABLE t2 ( +scan_date date default NULL, +package_id int default NULL, +INDEX scan_date(scan_date), +INDEX package_id(package_id) +); +INSERT INTO t2 VALUES +('2008-12-29',231062944),('2008-12-29',231065764),('2008-12-29',231066124), +('2008-12-29',231060094),('2008-12-29',231061054),('2008-12-29',231065644), +('2008-12-29',231064384),('2008-12-29',231064444),('2008-12-29',231073774), +('2008-12-29',231058594),('2008-12-29',231059374),('2008-12-29',231066004), +('2008-12-29',231068494),('2008-12-29',231070174),('2008-12-29',231071884), +('2008-12-29',231063274),('2008-12-29',231063754),('2008-12-29',231064144), +('2008-12-29',231069424),('2008-12-29',231073714),('2008-12-29',231058414), +('2008-12-29',231060994),('2008-12-29',231069154),('2008-12-29',231068614), +('2008-12-29',231071464),('2008-12-29',231074014),('2008-12-29',231059614), +('2008-12-29',231059074),('2008-12-29',231059464),('2008-12-29',231069094), +('2008-12-29',231067294),('2008-12-29',231070144),('2008-12-29',231073804), +('2008-12-29',231072634),('2008-12-29',231058294),('2008-12-29',231065344), +('2008-12-29',231066094),('2008-12-29',231069034),('2008-12-29',231058594), +('2008-12-29',231059854),('2008-12-29',231059884),('2008-12-29',231059914), +('2008-12-29',231063664),('2008-12-29',231063814),('2008-12-29',231063904); +CREATE TABLE t3 ( +package_id int default NULL, +INDEX package_id(package_id) +); +INSERT INTO t3 VALUES +(231058294),(231058324),(231058354),(231058384),(231058414),(231058444), +(231058474),(231058504),(231058534),(231058564),(231058594),(231058624), +(231058684),(231058744),(231058804),(231058864),(231058924),(231058954), +(231059014),(231059074),(231059104),(231059134),(231059164),(231059194), +(231059224),(231059254),(231059284),(231059314),(231059344),(231059374), +(231059404),(231059434),(231059464),(231059494),(231059524),(231059554), +(231059584),(231059614),(231059644),(231059674),(231059704),(231059734), +(231059764),(231059794),(231059824),(231059854),(231059884),(231059914), +(231059944),(231059974),(231060004),(231060034),(231060064),(231060094), +(231060124),(231060154),(231060184),(231060214),(231060244),(231060274), +(231060304),(231060334),(231060364),(231060394),(231060424),(231060454), +(231060484),(231060514),(231060544),(231060574),(231060604),(231060634), +(231060664),(231060694),(231060724),(231060754),(231060784),(231060814), +(231060844),(231060874),(231060904),(231060934),(231060964),(231060994), +(231061024),(231061054),(231061084),(231061144),(231061174),(231061204), +(231061234),(231061294),(231061354),(231061384),(231061414),(231061474), +(231061564),(231061594),(231061624),(231061684),(231061714),(231061774), +(231061804),(231061894),(231061984),(231062074),(231062134),(231062224), +(231062254),(231062314),(231062374),(231062434),(231062494),(231062554), +(231062584),(231062614),(231062644),(231062704),(231062734),(231062794), +(231062854),(231062884),(231062944),(231063004),(231063034),(231063064), +(231063124),(231063154),(231063184),(231063214),(231063274),(231063334), +(231063394),(231063424),(231063454),(231063514),(231063574),(231063664); +CREATE TABLE t4 ( +carrier char(2) NOT NULL default '' PRIMARY KEY, +id int(11) default NULL, +INDEX id(id) +); +INSERT INTO t4 VALUES +('99',6),('SK',456),('UA',486),('AI',1081),('OS',1111),('VS',1510); +CREATE TABLE t5 ( +carrier_id int default NULL, +INDEX carrier_id(carrier_id) +); +INSERT INTO t5 VALUES +(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6), +(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6), +(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6), +(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6), +(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6), +(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(456),(456),(456), +(456),(456),(456),(456),(456),(456),(456),(456),(456),(456),(456),(456), +(456),(486),(1081),(1111),(1111),(1111),(1111),(1510); +SELECT COUNT(*) +FROM((t2 JOIN t1 ON t2.package_id = t1.id) +JOIN t3 ON t3.package_id = t1.id); +COUNT(*) +6 +EXPLAIN +SELECT COUNT(*) +FROM ((t2 JOIN t1 ON t2.package_id = t1.id) +JOIN t3 ON t3.package_id = t1.id) +LEFT JOIN +(t5 JOIN t4 ON t5.carrier_id = t4.id) +ON t4.carrier = t1.carrier; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 index package_id package_id 5 NULL 45 Using index +1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.package_id 1 +1 SIMPLE t4 eq_ref PRIMARY,id PRIMARY 2 test.t1.carrier 1 +1 SIMPLE t5 ref carrier_id carrier_id 5 test.t4.id 22 Using index +1 SIMPLE t3 ref package_id package_id 5 test.t1.id 1 Using where; Using index +SELECT COUNT(*) +FROM ((t2 JOIN t1 ON t2.package_id = t1.id) +JOIN t3 ON t3.package_id = t1.id) +LEFT JOIN +(t5 JOIN t4 ON t5.carrier_id = t4.id) +ON t4.carrier = t1.carrier; +COUNT(*) +6 +DROP TABLE t1,t2,t3,t4,t5; End of 5.0 tests diff --git a/mysql-test/t/join_nested.test b/mysql-test/t/join_nested.test index f29366797f6..5b07d8966f1 100644 --- a/mysql-test/t/join_nested.test +++ b/mysql-test/t/join_nested.test @@ -1083,4 +1083,118 @@ SELECT * FROM t1 JOIN (t2 JOIN t3 USING (b)) USING (a); DROP TABLE t1,t2,t3; +# +# BUG#29604: inner nest of left join interleaves with outer tables +# + +CREATE TABLE t1 ( + carrier char(2) default NULL, + id int NOT NULL auto_increment PRIMARY KEY +); +INSERT INTO t1 VALUES + ('CO',235371754),('CO',235376554),('CO',235376884),('CO',235377874), + ('CO',231060394),('CO',231059224),('CO',231059314),('CO',231060484), + ('CO',231060274),('CO',231060124),('CO',231060244),('CO',231058594), + ('CO',231058924),('CO',231058504),('CO',231059344),('CO',231060424), + ('CO',231059554),('CO',231060304),('CO',231059644),('CO',231059464), + ('CO',231059764),('CO',231058294),('CO',231058624),('CO',231058864), + ('CO',231059374),('CO',231059584),('CO',231059734),('CO',231059014), + ('CO',231059854),('CO',231059494),('CO',231059794),('CO',231058534), + ('CO',231058324),('CO',231058684),('CO',231059524),('CO',231059974); + +CREATE TABLE t2 ( + scan_date date default NULL, + package_id int default NULL, + INDEX scan_date(scan_date), + INDEX package_id(package_id) +); +INSERT INTO t2 VALUES + ('2008-12-29',231062944),('2008-12-29',231065764),('2008-12-29',231066124), + ('2008-12-29',231060094),('2008-12-29',231061054),('2008-12-29',231065644), + ('2008-12-29',231064384),('2008-12-29',231064444),('2008-12-29',231073774), + ('2008-12-29',231058594),('2008-12-29',231059374),('2008-12-29',231066004), + ('2008-12-29',231068494),('2008-12-29',231070174),('2008-12-29',231071884), + ('2008-12-29',231063274),('2008-12-29',231063754),('2008-12-29',231064144), + ('2008-12-29',231069424),('2008-12-29',231073714),('2008-12-29',231058414), + ('2008-12-29',231060994),('2008-12-29',231069154),('2008-12-29',231068614), + ('2008-12-29',231071464),('2008-12-29',231074014),('2008-12-29',231059614), + ('2008-12-29',231059074),('2008-12-29',231059464),('2008-12-29',231069094), + ('2008-12-29',231067294),('2008-12-29',231070144),('2008-12-29',231073804), + ('2008-12-29',231072634),('2008-12-29',231058294),('2008-12-29',231065344), + ('2008-12-29',231066094),('2008-12-29',231069034),('2008-12-29',231058594), + ('2008-12-29',231059854),('2008-12-29',231059884),('2008-12-29',231059914), + ('2008-12-29',231063664),('2008-12-29',231063814),('2008-12-29',231063904); + +CREATE TABLE t3 ( + package_id int default NULL, + INDEX package_id(package_id) +); +INSERT INTO t3 VALUES + (231058294),(231058324),(231058354),(231058384),(231058414),(231058444), + (231058474),(231058504),(231058534),(231058564),(231058594),(231058624), + (231058684),(231058744),(231058804),(231058864),(231058924),(231058954), + (231059014),(231059074),(231059104),(231059134),(231059164),(231059194), + (231059224),(231059254),(231059284),(231059314),(231059344),(231059374), + (231059404),(231059434),(231059464),(231059494),(231059524),(231059554), + (231059584),(231059614),(231059644),(231059674),(231059704),(231059734), + (231059764),(231059794),(231059824),(231059854),(231059884),(231059914), + (231059944),(231059974),(231060004),(231060034),(231060064),(231060094), + (231060124),(231060154),(231060184),(231060214),(231060244),(231060274), + (231060304),(231060334),(231060364),(231060394),(231060424),(231060454), + (231060484),(231060514),(231060544),(231060574),(231060604),(231060634), + (231060664),(231060694),(231060724),(231060754),(231060784),(231060814), + (231060844),(231060874),(231060904),(231060934),(231060964),(231060994), + (231061024),(231061054),(231061084),(231061144),(231061174),(231061204), + (231061234),(231061294),(231061354),(231061384),(231061414),(231061474), + (231061564),(231061594),(231061624),(231061684),(231061714),(231061774), + (231061804),(231061894),(231061984),(231062074),(231062134),(231062224), + (231062254),(231062314),(231062374),(231062434),(231062494),(231062554), + (231062584),(231062614),(231062644),(231062704),(231062734),(231062794), + (231062854),(231062884),(231062944),(231063004),(231063034),(231063064), + (231063124),(231063154),(231063184),(231063214),(231063274),(231063334), + (231063394),(231063424),(231063454),(231063514),(231063574),(231063664); + +CREATE TABLE t4 ( + carrier char(2) NOT NULL default '' PRIMARY KEY, + id int(11) default NULL, + INDEX id(id) +); +INSERT INTO t4 VALUES + ('99',6),('SK',456),('UA',486),('AI',1081),('OS',1111),('VS',1510); + +CREATE TABLE t5 ( + carrier_id int default NULL, + INDEX carrier_id(carrier_id) +); +INSERT INTO t5 VALUES + (6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6), + (6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6), + (6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6), + (6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6), + (6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6), + (6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(456),(456),(456), + (456),(456),(456),(456),(456),(456),(456),(456),(456),(456),(456),(456), + (456),(486),(1081),(1111),(1111),(1111),(1111),(1510); + +SELECT COUNT(*) + FROM((t2 JOIN t1 ON t2.package_id = t1.id) + JOIN t3 ON t3.package_id = t1.id); + +EXPLAIN +SELECT COUNT(*) + FROM ((t2 JOIN t1 ON t2.package_id = t1.id) + JOIN t3 ON t3.package_id = t1.id) + LEFT JOIN + (t5 JOIN t4 ON t5.carrier_id = t4.id) + ON t4.carrier = t1.carrier; +SELECT COUNT(*) + FROM ((t2 JOIN t1 ON t2.package_id = t1.id) + JOIN t3 ON t3.package_id = t1.id) + LEFT JOIN + (t5 JOIN t4 ON t5.carrier_id = t4.id) + ON t4.carrier = t1.carrier; + +DROP TABLE t1,t2,t3,t4,t5; + --echo End of 5.0 tests + diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 9d27ab4bb4e..c62a19b2752 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -8486,9 +8486,15 @@ static void restore_prev_nj_state(JOIN_TAB *last) { TABLE_LIST *last_emb= last->table->pos_in_table_list->embedding; JOIN *join= last->join; - while (last_emb && !(--last_emb->nested_join->counter)) + while (last_emb) { - join->cur_embedding_map &= last_emb->nested_join->nj_map; + if (!(--last_emb->nested_join->counter)) + join->cur_embedding_map&= ~last_emb->nested_join->nj_map; + else if (last_emb->nested_join->join_list.elements-1 == + last_emb->nested_join->counter) + join->cur_embedding_map|= last_emb->nested_join->nj_map; + else + break; last_emb= last_emb->embedding; } } From c118fe53a6f2259fe22073f4de2b92a82b9672e1 Mon Sep 17 00:00:00 2001 From: "gkodinov/kgeorge@magare.gmz" <> Date: Thu, 12 Jul 2007 15:12:56 +0300 Subject: [PATCH 123/127] Bug 29325: test suite is not applicable on windows --- mysql-test/r/create.result | 22 --------------- mysql-test/r/create_not_windows.result | 22 +++++++++++++++ mysql-test/t/create.test | 37 ------------------------ mysql-test/t/create_not_windows.test | 39 ++++++++++++++++++++++++++ 4 files changed, 61 insertions(+), 59 deletions(-) diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index ff963892bc9..e692dbf3938 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -1503,26 +1503,4 @@ t1 CREATE TABLE `t1` ( `c17` int(11) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; -CREATE DATABASE db1; -CREATE DATABASE db2; -USE db2; -INSERT INTO db2.t1 VALUES (1); -SELECT * FROM db2.t1; -b -1 -RESET QUERY CACHE; -USE db1; -SET SESSION keep_files_on_create = TRUE; -CREATE TABLE t1 (a INT) ENGINE MYISAM; -ERROR HY000: Can't create/write to file './db1/t1.MYD' (Errcode: 17) -CREATE TABLE t3 (a INT) Engine=MyISAM; -INSERT INTO t3 VALUES (1),(2),(3); -TRUNCATE TABLE t3; -SELECT * from t3; -a -SET SESSION keep_files_on_create = DEFAULT; -DROP TABLE db2.t1, db1.t3; -DROP DATABASE db1; -DROP DATABASE db2; -USE test; End of 5.0 tests diff --git a/mysql-test/r/create_not_windows.result b/mysql-test/r/create_not_windows.result index b975c98c2b1..a07ffa82610 100644 --- a/mysql-test/r/create_not_windows.result +++ b/mysql-test/r/create_not_windows.result @@ -12,3 +12,25 @@ about:text CREATE TABLE `about:text` ( PRIMARY KEY (`_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table `about:text`; +CREATE DATABASE db1; +CREATE DATABASE db2; +USE db2; +INSERT INTO db2.t1 VALUES (1); +SELECT * FROM db2.t1; +b +1 +RESET QUERY CACHE; +USE db1; +SET SESSION keep_files_on_create = TRUE; +CREATE TABLE t1 (a INT) ENGINE MYISAM; +ERROR HY000: Can't create/write to file './db1/t1.MYD' (Errcode: 17) +CREATE TABLE t3 (a INT) Engine=MyISAM; +INSERT INTO t3 VALUES (1),(2),(3); +TRUNCATE TABLE t3; +SELECT * from t3; +a +SET SESSION keep_files_on_create = DEFAULT; +DROP TABLE db2.t1, db1.t3; +DROP DATABASE db1; +DROP DATABASE db2; +USE test; diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index a1d3d488f1c..99f3fea416a 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -1118,42 +1118,5 @@ show create table t1; drop table t1; -# -# Bug #29325: create table overwrites .MYD file of other table (datadir) -# - -CREATE DATABASE db1; -CREATE DATABASE db2; - -USE db2; ---disable_query_log -eval CREATE TABLE t1 (b INT) ENGINE MYISAM -DATA DIRECTORY = '$MYSQLTEST_VARDIR/master-data/db1/'; ---enable_query_log - -INSERT INTO db2.t1 VALUES (1); -SELECT * FROM db2.t1; -RESET QUERY CACHE; - -USE db1; - -#no warning from create table -SET SESSION keep_files_on_create = TRUE; ---disable_abort_on_error -CREATE TABLE t1 (a INT) ENGINE MYISAM; ---enable_abort_on_error - -CREATE TABLE t3 (a INT) Engine=MyISAM; -INSERT INTO t3 VALUES (1),(2),(3); -TRUNCATE TABLE t3; -SELECT * from t3; - -SET SESSION keep_files_on_create = DEFAULT; - -DROP TABLE db2.t1, db1.t3; -DROP DATABASE db1; -DROP DATABASE db2; -USE test; - --echo End of 5.0 tests diff --git a/mysql-test/t/create_not_windows.test b/mysql-test/t/create_not_windows.test index 71ad9ccd7fe..c6547b1376b 100644 --- a/mysql-test/t/create_not_windows.test +++ b/mysql-test/t/create_not_windows.test @@ -17,4 +17,43 @@ primary key (_id) show create table `about:text`; drop table `about:text`; + +# +# Bug #29325: create table overwrites .MYD file of other table (datadir) +# + +CREATE DATABASE db1; +CREATE DATABASE db2; + +USE db2; +--disable_query_log +eval CREATE TABLE t1 (b INT) ENGINE MYISAM +DATA DIRECTORY = '$MYSQLTEST_VARDIR/master-data/db1/'; +--enable_query_log + +INSERT INTO db2.t1 VALUES (1); +SELECT * FROM db2.t1; +RESET QUERY CACHE; + +USE db1; + +#no warning from create table +SET SESSION keep_files_on_create = TRUE; +--disable_abort_on_error +CREATE TABLE t1 (a INT) ENGINE MYISAM; +--enable_abort_on_error + +CREATE TABLE t3 (a INT) Engine=MyISAM; +INSERT INTO t3 VALUES (1),(2),(3); +TRUNCATE TABLE t3; +SELECT * from t3; + +SET SESSION keep_files_on_create = DEFAULT; + +DROP TABLE db2.t1, db1.t3; +DROP DATABASE db1; +DROP DATABASE db2; +USE test; + + # End of 5.0 tests From 1b1464ba30f05a9b3ea4b1e5bd982fb6e44b03c8 Mon Sep 17 00:00:00 2001 From: "evgen@moonbone.local" <> Date: Thu, 12 Jul 2007 23:09:55 +0400 Subject: [PATCH 124/127] Bug#29739: Incorrect time comparison in BETWEEN. Time values were compared by the BETWEEN function as strings. This led to a wrong result in cases when some of arguments are less than 100 hours and other are greater. Now if all 3 arguments of the BETWEEN function are of the TIME type then they are compared as integers. --- mysql-test/r/type_time.result | 6 ++++++ mysql-test/t/type_time.test | 8 ++++++++ sql/item_cmpfunc.cc | 24 ++++++++++++++++-------- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/mysql-test/r/type_time.result b/mysql-test/r/type_time.result index 6124f6e39f1..71bd8b68a0b 100644 --- a/mysql-test/r/type_time.result +++ b/mysql-test/r/type_time.result @@ -103,3 +103,9 @@ cast('100:55:50' as time) > cast('024:00:00' as time) select cast('300:55:50' as time) > cast('240:00:00' as time); cast('300:55:50' as time) > cast('240:00:00' as time) 1 +create table t1(f1 time, f2 time); +insert into t1 values('20:00:00','150:00:00'); +select 1 from t1 where cast('100:00:00' as time) between f1 and f2; +1 +1 +drop table t1; diff --git a/mysql-test/t/type_time.test b/mysql-test/t/type_time.test index d294e53a12f..82d701e29b5 100644 --- a/mysql-test/t/type_time.test +++ b/mysql-test/t/type_time.test @@ -50,3 +50,11 @@ select cast('300:55:50' as time) < cast('240:00:00' as time); select cast('100:55:50' as time) > cast('24:00:00' as time); select cast('100:55:50' as time) > cast('024:00:00' as time); select cast('300:55:50' as time) > cast('240:00:00' as time); + +# +# Bug#29739: Incorrect time comparison in BETWEEN. +# +create table t1(f1 time, f2 time); +insert into t1 values('20:00:00','150:00:00'); +select 1 from t1 where cast('100:00:00' as time) between f1 and f2; +drop table t1; diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 70df1b4d09c..555384b2bfc 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -1728,6 +1728,7 @@ void Item_func_between::fix_length_and_dec() THD *thd= current_thd; int i; bool datetime_found= FALSE; + int time_items_found= 0; compare_as_dates= TRUE; /* @@ -1747,17 +1748,19 @@ void Item_func_between::fix_length_and_dec() At least one of items should be a DATE/DATETIME item and other items should return the STRING result. */ - for (i= 0; i < 3; i++) + if (cmp_type == STRING_RESULT) { - if (args[i]->is_datetime()) + for (i= 0; i < 3; i++) { - datetime_found= TRUE; - continue; + if (args[i]->is_datetime()) + { + datetime_found= TRUE; + continue; + } + if (args[i]->field_type() == MYSQL_TYPE_TIME && + args[i]->result_as_longlong()) + time_items_found++; } - if (args[i]->result_type() == STRING_RESULT) - continue; - compare_as_dates= FALSE; - break; } if (!datetime_found) compare_as_dates= FALSE; @@ -1767,6 +1770,11 @@ void Item_func_between::fix_length_and_dec() ge_cmp.set_datetime_cmp_func(args, args + 1); le_cmp.set_datetime_cmp_func(args, args + 2); } + else if (time_items_found == 3) + { + /* Compare TIME items as integers. */ + cmp_type= INT_RESULT; + } else if (args[0]->real_item()->type() == FIELD_ITEM && thd->lex->sql_command != SQLCOM_CREATE_VIEW && thd->lex->sql_command != SQLCOM_SHOW_CREATE) From 2b8e46263783690c6265dcb2b7e95bcd34b0e6ee Mon Sep 17 00:00:00 2001 From: "gkodinov/kgeorge@magare.gmz" <> Date: Fri, 13 Jul 2007 13:56:22 +0300 Subject: [PATCH 125/127] Bug 29325: moved the test from create_not_windows to symlink. --- mysql-test/r/create_not_windows.result | 22 --------------- mysql-test/r/symlink.result | 24 ++++++++++++++++ mysql-test/t/create_not_windows.test | 38 -------------------------- mysql-test/t/symlink.test | 36 ++++++++++++++++++++++++ 4 files changed, 60 insertions(+), 60 deletions(-) diff --git a/mysql-test/r/create_not_windows.result b/mysql-test/r/create_not_windows.result index a07ffa82610..b975c98c2b1 100644 --- a/mysql-test/r/create_not_windows.result +++ b/mysql-test/r/create_not_windows.result @@ -12,25 +12,3 @@ about:text CREATE TABLE `about:text` ( PRIMARY KEY (`_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table `about:text`; -CREATE DATABASE db1; -CREATE DATABASE db2; -USE db2; -INSERT INTO db2.t1 VALUES (1); -SELECT * FROM db2.t1; -b -1 -RESET QUERY CACHE; -USE db1; -SET SESSION keep_files_on_create = TRUE; -CREATE TABLE t1 (a INT) ENGINE MYISAM; -ERROR HY000: Can't create/write to file './db1/t1.MYD' (Errcode: 17) -CREATE TABLE t3 (a INT) Engine=MyISAM; -INSERT INTO t3 VALUES (1),(2),(3); -TRUNCATE TABLE t3; -SELECT * from t3; -a -SET SESSION keep_files_on_create = DEFAULT; -DROP TABLE db2.t1, db1.t3; -DROP DATABASE db1; -DROP DATABASE db2; -USE test; diff --git a/mysql-test/r/symlink.result b/mysql-test/r/symlink.result index 4725bcc0ac9..02c3a085eef 100644 --- a/mysql-test/r/symlink.result +++ b/mysql-test/r/symlink.result @@ -133,4 +133,28 @@ a 42 drop table t1; End of 4.1 tests +CREATE DATABASE db1; +CREATE DATABASE db2; +USE db2; +CREATE TABLE t1 (b INT) ENGINE MYISAM +DATA DIRECTORY = '/home/kgeorge/mysql/work/B29325-winfix-5.0-opt/mysql-test/var/master-data/db1/'; +INSERT INTO db2.t1 VALUES (1); +SELECT * FROM db2.t1; +b +1 +RESET QUERY CACHE; +USE db1; +SET SESSION keep_files_on_create = TRUE; +CREATE TABLE t1 (a INT) ENGINE MYISAM; +ERROR HY000: Can't create/write to file './db1/t1.MYD' (Errcode: 17) +CREATE TABLE t3 (a INT) Engine=MyISAM; +INSERT INTO t3 VALUES (1),(2),(3); +TRUNCATE TABLE t3; +SELECT * from t3; +a +SET SESSION keep_files_on_create = DEFAULT; +DROP TABLE db2.t1, db1.t3; +DROP DATABASE db1; +DROP DATABASE db2; +USE test; End of 5.0 tests diff --git a/mysql-test/t/create_not_windows.test b/mysql-test/t/create_not_windows.test index c6547b1376b..7e51ff51024 100644 --- a/mysql-test/t/create_not_windows.test +++ b/mysql-test/t/create_not_windows.test @@ -18,42 +18,4 @@ show create table `about:text`; drop table `about:text`; -# -# Bug #29325: create table overwrites .MYD file of other table (datadir) -# - -CREATE DATABASE db1; -CREATE DATABASE db2; - -USE db2; ---disable_query_log -eval CREATE TABLE t1 (b INT) ENGINE MYISAM -DATA DIRECTORY = '$MYSQLTEST_VARDIR/master-data/db1/'; ---enable_query_log - -INSERT INTO db2.t1 VALUES (1); -SELECT * FROM db2.t1; -RESET QUERY CACHE; - -USE db1; - -#no warning from create table -SET SESSION keep_files_on_create = TRUE; ---disable_abort_on_error -CREATE TABLE t1 (a INT) ENGINE MYISAM; ---enable_abort_on_error - -CREATE TABLE t3 (a INT) Engine=MyISAM; -INSERT INTO t3 VALUES (1),(2),(3); -TRUNCATE TABLE t3; -SELECT * from t3; - -SET SESSION keep_files_on_create = DEFAULT; - -DROP TABLE db2.t1, db1.t3; -DROP DATABASE db1; -DROP DATABASE db2; -USE test; - - # End of 5.0 tests diff --git a/mysql-test/t/symlink.test b/mysql-test/t/symlink.test index d79b6905224..46a9ead5829 100644 --- a/mysql-test/t/symlink.test +++ b/mysql-test/t/symlink.test @@ -178,4 +178,40 @@ drop table t1; --echo End of 4.1 tests +# +# Bug #29325: create table overwrites .MYD file of other table (datadir) +# + +CREATE DATABASE db1; +CREATE DATABASE db2; + +USE db2; +eval CREATE TABLE t1 (b INT) ENGINE MYISAM +DATA DIRECTORY = '$MYSQLTEST_VARDIR/master-data/db1/'; + +INSERT INTO db2.t1 VALUES (1); +SELECT * FROM db2.t1; +RESET QUERY CACHE; + +USE db1; + +#no warning from create table +SET SESSION keep_files_on_create = TRUE; +--disable_abort_on_error +CREATE TABLE t1 (a INT) ENGINE MYISAM; +--enable_abort_on_error + +CREATE TABLE t3 (a INT) Engine=MyISAM; +INSERT INTO t3 VALUES (1),(2),(3); +TRUNCATE TABLE t3; +SELECT * from t3; + +SET SESSION keep_files_on_create = DEFAULT; + +DROP TABLE db2.t1, db1.t3; +DROP DATABASE db1; +DROP DATABASE db2; +USE test; + + --echo End of 5.0 tests From d6ad4e6eb91b88145090f03d2e1338d065f775ca Mon Sep 17 00:00:00 2001 From: "gkodinov/kgeorge@magare.gmz" <> Date: Fri, 13 Jul 2007 16:32:29 +0300 Subject: [PATCH 126/127] disabled the output of the full path in tesing bug 29325 --- mysql-test/r/symlink.result | 2 -- mysql-test/t/symlink.test | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/symlink.result b/mysql-test/r/symlink.result index 02c3a085eef..18299bf4298 100644 --- a/mysql-test/r/symlink.result +++ b/mysql-test/r/symlink.result @@ -136,8 +136,6 @@ End of 4.1 tests CREATE DATABASE db1; CREATE DATABASE db2; USE db2; -CREATE TABLE t1 (b INT) ENGINE MYISAM -DATA DIRECTORY = '/home/kgeorge/mysql/work/B29325-winfix-5.0-opt/mysql-test/var/master-data/db1/'; INSERT INTO db2.t1 VALUES (1); SELECT * FROM db2.t1; b diff --git a/mysql-test/t/symlink.test b/mysql-test/t/symlink.test index 46a9ead5829..8c67a4c1048 100644 --- a/mysql-test/t/symlink.test +++ b/mysql-test/t/symlink.test @@ -186,8 +186,10 @@ CREATE DATABASE db1; CREATE DATABASE db2; USE db2; +--disable_query_log eval CREATE TABLE t1 (b INT) ENGINE MYISAM DATA DIRECTORY = '$MYSQLTEST_VARDIR/master-data/db1/'; +--enable_query_log INSERT INTO db2.t1 VALUES (1); SELECT * FROM db2.t1; From b434254e0e77885039472062bf9a766481749a15 Mon Sep 17 00:00:00 2001 From: "gshchepa/uchum@gleb.loc" <> Date: Sat, 14 Jul 2007 01:34:46 +0500 Subject: [PATCH 127/127] symlink.test, symlink.result: Minor fix for test case of bug #29325 to make emb test happy. --- mysql-test/r/symlink.result | 2 +- mysql-test/t/symlink.test | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/symlink.result b/mysql-test/r/symlink.result index 093e1fd57cf..aba60f757c6 100644 --- a/mysql-test/r/symlink.result +++ b/mysql-test/r/symlink.result @@ -144,7 +144,7 @@ RESET QUERY CACHE; USE db1; SET SESSION keep_files_on_create = TRUE; CREATE TABLE t1 (a INT) ENGINE MYISAM; -ERROR HY000: Can't create/write to file './db1/t1.MYD' (Errcode: 17) +Got one of the listed errors CREATE TABLE t3 (a INT) Engine=MyISAM; INSERT INTO t3 VALUES (1),(2),(3); TRUNCATE TABLE t3; diff --git a/mysql-test/t/symlink.test b/mysql-test/t/symlink.test index edad6a11392..15f50b11e73 100644 --- a/mysql-test/t/symlink.test +++ b/mysql-test/t/symlink.test @@ -196,6 +196,7 @@ USE db1; #no warning from create table SET SESSION keep_files_on_create = TRUE; --disable_abort_on_error +--error 1,1 CREATE TABLE t1 (a INT) ENGINE MYISAM; --enable_abort_on_error