初版
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
n
|
||||
1
|
||||
2
|
||||
@@ -0,0 +1,2 @@
|
||||
sum(length(word))
|
||||
71
|
||||
11
build/lib/mysql/mysql-test/suite/rpl/r/rpl_000010.result
Normal file
11
build/lib/mysql/mysql-test/suite/rpl/r/rpl_000010.result
Normal file
@@ -0,0 +1,11 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
create table t1 (n int not null auto_increment primary key);
|
||||
insert into t1 values(NULL);
|
||||
insert into t1 values(2);
|
||||
select n from t1;
|
||||
n
|
||||
1
|
||||
2
|
||||
drop table t1;
|
||||
include/rpl_end.inc
|
||||
13
build/lib/mysql/mysql-test/suite/rpl/r/rpl_000011.result
Normal file
13
build/lib/mysql/mysql-test/suite/rpl/r/rpl_000011.result
Normal file
@@ -0,0 +1,13 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
create table t1 (n int);
|
||||
insert into t1 values(1);
|
||||
stop slave;
|
||||
start slave;
|
||||
insert into t1 values(2);
|
||||
select * from t1;
|
||||
n
|
||||
1
|
||||
2
|
||||
drop table t1;
|
||||
include/rpl_end.inc
|
||||
25
build/lib/mysql/mysql-test/suite/rpl/r/rpl_000013.result
Normal file
25
build/lib/mysql/mysql-test/suite/rpl/r/rpl_000013.result
Normal file
@@ -0,0 +1,25 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
create table t2(n int);
|
||||
create temporary table t1 (n int);
|
||||
insert into t1 values(1),(2),(3);
|
||||
insert into t2 select * from t1;
|
||||
create temporary table t1 (n int);
|
||||
insert into t1 values (4),(5);
|
||||
insert into t2 select * from t1 as t10;
|
||||
insert into t2 values(6);
|
||||
select * from t2;
|
||||
n
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
show status like 'Slave_open_temp_tables';
|
||||
Variable_name Value
|
||||
Slave_open_temp_tables 0
|
||||
drop table if exists t1,t2;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 't1'
|
||||
include/rpl_end.inc
|
||||
13
build/lib/mysql/mysql-test/suite/rpl/r/rpl_000017.result
Normal file
13
build/lib/mysql/mysql-test/suite/rpl/r/rpl_000017.result
Normal file
@@ -0,0 +1,13 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
grant replication slave on *.* to replicate@localhost identified by 'aaaaaaaaaaaaaaab';
|
||||
grant replication slave on *.* to replicate@127.0.0.1 identified by 'aaaaaaaaaaaaaaab';
|
||||
include/start_slave.inc
|
||||
create table t1(n int);
|
||||
insert into t1 values(24);
|
||||
select * from t1;
|
||||
n
|
||||
24
|
||||
drop table t1;
|
||||
delete from mysql.user where user="replicate";
|
||||
include/rpl_end.inc
|
||||
8
build/lib/mysql/mysql-test/suite/rpl/r/rpl_EE_err.result
Normal file
8
build/lib/mysql/mysql-test/suite/rpl/r/rpl_EE_err.result
Normal file
@@ -0,0 +1,8 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
create table t1 (a int) engine=myisam;
|
||||
flush tables;
|
||||
drop table if exists t1;
|
||||
Warnings:
|
||||
Error 2 Can't find file: 't1' (errno: 2)
|
||||
include/rpl_end.inc
|
||||
114
build/lib/mysql/mysql-test/suite/rpl/r/rpl_LD_INFILE.result
Normal file
114
build/lib/mysql/mysql-test/suite/rpl/r/rpl_LD_INFILE.result
Normal file
@@ -0,0 +1,114 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
DROP TABLE IF EXISTS test.t1;
|
||||
CREATE TABLE test.t1 (a VARCHAR(255), PRIMARY KEY(a));
|
||||
LOAD DATA INFILE '../../std_data/words2.dat' INTO TABLE test.t1;
|
||||
DELETE FROM test.t1 WHERE a = 'abashed';
|
||||
DELETE FROM test.t1;
|
||||
LOAD DATA INFILE '../../std_data/words2.dat' INTO TABLE test.t1;
|
||||
SELECT * FROM test.t1 ORDER BY a DESC;
|
||||
a
|
||||
aberration
|
||||
aberrant
|
||||
Abernathy
|
||||
Aberdeen
|
||||
Abelson
|
||||
Abelian
|
||||
Abel
|
||||
abed
|
||||
Abe
|
||||
abducts
|
||||
abductors
|
||||
abductor
|
||||
abductions
|
||||
abduction
|
||||
abducted
|
||||
abduct
|
||||
abdominal
|
||||
abdomens
|
||||
abdomen
|
||||
Abby
|
||||
abbreviations
|
||||
abbreviation
|
||||
abbreviating
|
||||
abbreviates
|
||||
abbreviated
|
||||
abbreviate
|
||||
Abbott
|
||||
abbots
|
||||
abbot
|
||||
abbeys
|
||||
abbey
|
||||
abbe
|
||||
Abba
|
||||
abating
|
||||
abates
|
||||
abater
|
||||
abatements
|
||||
abatement
|
||||
abated
|
||||
abate
|
||||
abasing
|
||||
abashing
|
||||
abashes
|
||||
abashed
|
||||
abash
|
||||
abases
|
||||
abasements
|
||||
abasement
|
||||
abased
|
||||
abase
|
||||
SELECT * FROM test.t1 ORDER BY a DESC;
|
||||
a
|
||||
aberration
|
||||
aberrant
|
||||
Abernathy
|
||||
Aberdeen
|
||||
Abelson
|
||||
Abelian
|
||||
Abel
|
||||
abed
|
||||
Abe
|
||||
abducts
|
||||
abductors
|
||||
abductor
|
||||
abductions
|
||||
abduction
|
||||
abducted
|
||||
abduct
|
||||
abdominal
|
||||
abdomens
|
||||
abdomen
|
||||
Abby
|
||||
abbreviations
|
||||
abbreviation
|
||||
abbreviating
|
||||
abbreviates
|
||||
abbreviated
|
||||
abbreviate
|
||||
Abbott
|
||||
abbots
|
||||
abbot
|
||||
abbeys
|
||||
abbey
|
||||
abbe
|
||||
Abba
|
||||
abating
|
||||
abates
|
||||
abater
|
||||
abatements
|
||||
abatement
|
||||
abated
|
||||
abate
|
||||
abasing
|
||||
abashing
|
||||
abashes
|
||||
abashed
|
||||
abash
|
||||
abases
|
||||
abasements
|
||||
abasement
|
||||
abased
|
||||
abase
|
||||
DROP TABLE test.t1;
|
||||
include/rpl_end.inc
|
||||
37
build/lib/mysql/mysql-test/suite/rpl/r/rpl_alter.result
Normal file
37
build/lib/mysql/mysql-test/suite/rpl/r/rpl_alter.result
Normal file
@@ -0,0 +1,37 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
create database mysqltest;
|
||||
create table mysqltest.t1 ( n int);
|
||||
alter table mysqltest.t1 add m int;
|
||||
insert into mysqltest.t1 values (1,2);
|
||||
create table mysqltest.t2 (n int);
|
||||
insert into mysqltest.t2 values (45);
|
||||
rename table mysqltest.t2 to mysqltest.t3, mysqltest.t1 to mysqltest.t2;
|
||||
select * from mysqltest.t2;
|
||||
n m
|
||||
1 2
|
||||
select * from mysqltest.t3;
|
||||
n
|
||||
45
|
||||
drop database mysqltest;
|
||||
|
||||
# BUG#56226 Table map set to 0 after altering MyISAM table
|
||||
|
||||
SET SESSION binlog_format='ROW';
|
||||
USE test;
|
||||
CREATE TABLE t1 (a INT, b INT) ENGINE MyISAM;
|
||||
CREATE TABLE t2 (a VARCHAR(255), b VARCHAR(255)) ENGINE MyISAM;
|
||||
CREATE TRIGGER trg_t1ai
|
||||
AFTER INSERT ON t1 FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO t2 (a) VALUES (NEW.a);
|
||||
END;//
|
||||
ALTER TABLE t1 CHANGE b c INT;
|
||||
ALTER TABLE t2 CHANGE b c VARCHAR(255);
|
||||
|
||||
INSERT INTO t1 (a) VALUES(2);
|
||||
include/diff_tables.inc [master:t1, slave:t1]
|
||||
include/diff_tables.inc [master:t2, slave:t2]
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,9 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
==== Verify that alter database does not stop replication ====
|
||||
create database temp_db;
|
||||
use temp_db;
|
||||
alter database collate latin1_bin;
|
||||
==== Clean up ====
|
||||
drop database temp_db;
|
||||
include/rpl_end.inc
|
||||
323
build/lib/mysql/mysql-test/suite/rpl/r/rpl_auto_increment.result
Normal file
323
build/lib/mysql/mysql-test/suite/rpl/r/rpl_auto_increment.result
Normal file
@@ -0,0 +1,323 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
create table t1 (a int not null auto_increment,b int, primary key (a)) engine=myisam auto_increment=3;
|
||||
insert into t1 values (NULL,1),(NULL,2),(NULL,3);
|
||||
select * from t1;
|
||||
a b
|
||||
12 1
|
||||
22 2
|
||||
32 3
|
||||
select * from t1;
|
||||
a b
|
||||
12 1
|
||||
22 2
|
||||
32 3
|
||||
drop table t1;
|
||||
create table t1 (a int not null auto_increment,b int, primary key (a)) engine=myisam;
|
||||
insert into t1 values (1,1),(NULL,2),(3,3),(NULL,4);
|
||||
delete from t1 where b=4;
|
||||
insert into t1 values (NULL,5),(NULL,6);
|
||||
select * from t1;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
22 5
|
||||
32 6
|
||||
select * from t1;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
22 5
|
||||
32 6
|
||||
drop table t1;
|
||||
set @@session.auto_increment_increment=100, @@session.auto_increment_offset=10;
|
||||
show variables like "%auto_inc%";
|
||||
Variable_name Value
|
||||
auto_increment_increment 100
|
||||
auto_increment_offset 10
|
||||
create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
|
||||
insert into t1 values (NULL),(5),(NULL);
|
||||
insert into t1 values (250),(NULL);
|
||||
select * from t1;
|
||||
a
|
||||
5
|
||||
10
|
||||
110
|
||||
250
|
||||
310
|
||||
insert into t1 values (1000);
|
||||
set @@insert_id=400;
|
||||
insert into t1 values(NULL),(NULL);
|
||||
select * from t1;
|
||||
a
|
||||
5
|
||||
10
|
||||
110
|
||||
250
|
||||
310
|
||||
400
|
||||
410
|
||||
1000
|
||||
select * from t1;
|
||||
a
|
||||
5
|
||||
10
|
||||
110
|
||||
250
|
||||
310
|
||||
400
|
||||
410
|
||||
1000
|
||||
drop table t1;
|
||||
create table t1 (a int not null auto_increment, primary key (a)) engine=innodb;
|
||||
insert into t1 values (NULL),(5),(NULL);
|
||||
insert into t1 values (250),(NULL);
|
||||
select * from t1;
|
||||
a
|
||||
5
|
||||
10
|
||||
110
|
||||
250
|
||||
310
|
||||
insert into t1 values (1000);
|
||||
set @@insert_id=400;
|
||||
insert into t1 values(NULL),(NULL);
|
||||
select * from t1;
|
||||
a
|
||||
5
|
||||
10
|
||||
110
|
||||
250
|
||||
310
|
||||
400
|
||||
410
|
||||
1000
|
||||
select * from t1;
|
||||
a
|
||||
5
|
||||
10
|
||||
110
|
||||
250
|
||||
310
|
||||
400
|
||||
410
|
||||
1000
|
||||
drop table t1;
|
||||
set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;
|
||||
create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
|
||||
insert into t1 values (NULL),(5),(NULL),(NULL);
|
||||
insert into t1 values (500),(NULL),(502),(NULL),(NULL);
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
5
|
||||
6
|
||||
7
|
||||
500
|
||||
501
|
||||
502
|
||||
503
|
||||
504
|
||||
set @@insert_id=600;
|
||||
insert into t1 values(600),(NULL),(NULL);
|
||||
ERROR 23000: Duplicate entry '600' for key 'PRIMARY'
|
||||
set @@insert_id=600;
|
||||
insert ignore into t1 values(600),(NULL),(NULL),(610),(NULL);
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
5
|
||||
6
|
||||
7
|
||||
500
|
||||
501
|
||||
502
|
||||
503
|
||||
504
|
||||
600
|
||||
610
|
||||
611
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
5
|
||||
6
|
||||
7
|
||||
500
|
||||
501
|
||||
502
|
||||
503
|
||||
504
|
||||
600
|
||||
610
|
||||
611
|
||||
drop table t1;
|
||||
set @@session.auto_increment_increment=10, @@session.auto_increment_offset=1;
|
||||
create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
|
||||
insert into t1 values(2),(12),(22),(32),(42);
|
||||
insert into t1 values (NULL),(NULL);
|
||||
insert into t1 values (3),(NULL),(NULL);
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
3
|
||||
11
|
||||
21
|
||||
31
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
11
|
||||
12
|
||||
21
|
||||
22
|
||||
31
|
||||
32
|
||||
42
|
||||
drop table t1;
|
||||
create table t1 (a tinyint not null auto_increment primary key) engine=myisam;
|
||||
insert into t1 values(103);
|
||||
set auto_increment_increment=11;
|
||||
set auto_increment_offset=4;
|
||||
insert into t1 values(null);
|
||||
insert into t1 values(null);
|
||||
insert into t1 values(null);
|
||||
ERROR 23000: Duplicate entry '125' for key 'PRIMARY'
|
||||
select a, mod(a-@@auto_increment_offset,@@auto_increment_increment) from t1 order by a;
|
||||
a mod(a-@@auto_increment_offset,@@auto_increment_increment)
|
||||
103 0
|
||||
114 0
|
||||
125 0
|
||||
create table t2 (a tinyint unsigned not null auto_increment primary key) engine=myisam;
|
||||
set auto_increment_increment=10;
|
||||
set auto_increment_offset=1;
|
||||
set insert_id=1000;
|
||||
insert into t2 values(null);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
select a, mod(a-@@auto_increment_offset,@@auto_increment_increment) from t2 order by a;
|
||||
a mod(a-@@auto_increment_offset,@@auto_increment_increment)
|
||||
251 0
|
||||
create table t3 like t1;
|
||||
set auto_increment_increment=1000;
|
||||
set auto_increment_offset=700;
|
||||
insert into t3 values(null);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
select * from t3 order by a;
|
||||
a
|
||||
127
|
||||
select * from t1 order by a;
|
||||
a
|
||||
103
|
||||
114
|
||||
125
|
||||
select * from t2 order by a;
|
||||
a
|
||||
251
|
||||
select * from t3 order by a;
|
||||
a
|
||||
127
|
||||
drop table t1,t2,t3;
|
||||
set auto_increment_increment=1;
|
||||
set auto_increment_offset=1;
|
||||
CREATE TABLE t1 (id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE=innodb;
|
||||
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
include/rpl_reset.inc
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE=innodb;
|
||||
CREATE TABLE t2 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE=myisam;
|
||||
SET SQL_MODE='';
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
INSERT INTO t2 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
1
|
||||
SELECT * FROM t2;
|
||||
id
|
||||
1
|
||||
INSERT INTO t1 VALUES();
|
||||
INSERT INTO t2 VALUES();
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
SELECT * FROM t2;
|
||||
id
|
||||
1
|
||||
2
|
||||
INSERT INTO t1 VALUES(0);
|
||||
INSERT INTO t2 VALUES(0);
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
3
|
||||
SELECT * FROM t2;
|
||||
id
|
||||
1
|
||||
2
|
||||
3
|
||||
SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO;
|
||||
INSERT INTO t1 VALUES(0);
|
||||
INSERT INTO t2 VALUES(0);
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
SELECT * FROM t2;
|
||||
id
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
INSERT INTO t1 VALUES(4);
|
||||
INSERT INTO t2 VALUES(4);
|
||||
FLUSH LOGS;
|
||||
include/diff_tables.inc [master:t1, slave:t1]
|
||||
include/diff_tables.inc [master:t2, slave:t2]
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
include/diff_tables.inc [master:t1, slave:t1]
|
||||
include/diff_tables.inc [master:t2, slave:t2]
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
SET SQL_MODE='';
|
||||
CREATE TABLE t1 (id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, data INT) ENGINE=innodb;
|
||||
BEGIN;
|
||||
# Set sql_mode with NO_AUTO_VALUE_ON_ZERO for allowing
|
||||
# zero to fill the auto_increment field.
|
||||
SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO;
|
||||
INSERT INTO t1(id,data) VALUES(0,2);
|
||||
# Resetting sql_mode without NO_AUTO_VALUE_ON_ZERO to
|
||||
# affect the execution of the transaction on slave.
|
||||
SET SQL_MODE=0;
|
||||
COMMIT;
|
||||
SELECT * FROM t1;
|
||||
id data
|
||||
0 2
|
||||
SELECT * FROM t1;
|
||||
id data
|
||||
0 2
|
||||
DROP TABLE t1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,43 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
drop database if exists test1;
|
||||
create database test1;
|
||||
use test1;
|
||||
CREATE TABLE `t1` (
|
||||
`id` int(10) unsigned NOT NULL auto_increment,
|
||||
`fname` varchar(100) default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
|
||||
INSERT INTO `t1` VALUES (1, 'blablabla');
|
||||
CREATE TABLE `t2` (
|
||||
`id` int(10) NOT NULL auto_increment,
|
||||
`comment` varchar(255) NOT NULL default '',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM AUTO_INCREMENT=3 ;
|
||||
INSERT INTO `t2` VALUES (1, 'testtest 1');
|
||||
INSERT INTO `t2` VALUES (2, 'test 2');
|
||||
CREATE PROCEDURE simpleproc3 ()
|
||||
NOT DETERMINISTIC
|
||||
BEGIN
|
||||
INSERT INTO t1 (fname) (SELECT t2.comment FROM t2 WHERE t2.id = '1');
|
||||
INSERT INTO t1 (fname) VALUES('test');
|
||||
END
|
||||
$
|
||||
CALL simpleproc3();
|
||||
select * from t2;
|
||||
id comment
|
||||
1 testtest 1
|
||||
2 test 2
|
||||
TRUNCATE TABLE `t1`;
|
||||
CALL simpleproc3();
|
||||
select * from t1;
|
||||
id fname
|
||||
1 testtest 1
|
||||
2 test
|
||||
use test1;
|
||||
select * from t1;
|
||||
id fname
|
||||
1 testtest 1
|
||||
2 test
|
||||
drop database test1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,45 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
==== Initialize ====
|
||||
SET @old_relay_log_purge= @@global.relay_log_purge;
|
||||
include/setup_fake_relay_log.inc
|
||||
Setting up fake replication from MYSQL_TEST_DIR/std_data/bug33029-slave-relay-bin.000001
|
||||
==== Test ====
|
||||
start slave sql_thread;
|
||||
include/wait_for_slave_param.inc [Exec_Master_Log_Pos]
|
||||
# Result on slave
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
SELECT * FROM t2;
|
||||
id
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
14
|
||||
15
|
||||
16
|
||||
17
|
||||
18
|
||||
19
|
||||
==== Clean up ====
|
||||
stop slave sql_thread;
|
||||
include/cleanup_fake_relay_log.inc
|
||||
DROP TABLE t1, t2;
|
||||
DROP PROCEDURE p1;
|
||||
DROP PROCEDURE p2;
|
||||
DROP FUNCTION f1;
|
||||
SET @@global.relay_log_purge= @old_relay_log_purge;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,36 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.');
|
||||
create table tm (b int auto_increment, a int, primary key (a,b)) engine= myisam;
|
||||
create table ti (b int auto_increment, a int, primary key (a,b)) engine= innodb;
|
||||
ERROR 42000: Incorrect table definition; there can be only one auto column and it must be defined as a key
|
||||
create table ti (b int auto_increment, a int, primary key (b,a)) engine= innodb;
|
||||
set @@binlog_format=statement;
|
||||
*** autoincrement field is not the first in PK warning must be there: ***
|
||||
insert into tm set b=null, a=1;
|
||||
Warnings:
|
||||
Note 1592 Statement may not be safe to log in statement format.
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Note 1592 Statement may not be safe to log in statement format.
|
||||
*** no warning when autoincrement is the first in PK
|
||||
insert into ti set b=null, a=1;
|
||||
show warnings;
|
||||
Level Code Message
|
||||
create function multi_part_pk_with_autoinc (arg int)
|
||||
returns int
|
||||
begin
|
||||
insert into tm set b=null, a=arg;
|
||||
return arg;
|
||||
end//
|
||||
select multi_part_pk_with_autoinc (3);
|
||||
multi_part_pk_with_autoinc (3)
|
||||
3
|
||||
*** No warnings in 5.1 because of Bug11749859-39934 ***
|
||||
show warnings;
|
||||
Level Code Message
|
||||
set @@binlog_format=mixed;
|
||||
insert into tm set b=null, a=2;
|
||||
drop table tm, ti;
|
||||
drop function multi_part_pk_with_autoinc;
|
||||
include/rpl_end.inc
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,169 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
DROP DATABASE IF EXISTS db1;
|
||||
DROP DATABASE IF EXISTS db2;
|
||||
CREATE DATABASE db1;
|
||||
CREATE DATABASE db2;
|
||||
use db1;
|
||||
CREATE TABLE db1.t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE db1.t2 (s CHAR(255)) ENGINE=MyISAM;
|
||||
include/stop_slave.inc
|
||||
[on master]
|
||||
CREATE PROCEDURE db1.p1 ()
|
||||
BEGIN
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t1 VALUES (2);
|
||||
INSERT INTO t1 VALUES (3);
|
||||
INSERT INTO t1 VALUES (4);
|
||||
INSERT INTO t1 VALUES (5);
|
||||
END//
|
||||
CREATE PROCEDURE db1.p2 ()
|
||||
BEGIN
|
||||
INSERT INTO t1 VALUES (6);
|
||||
INSERT INTO t1 VALUES (7);
|
||||
INSERT INTO t1 VALUES (8);
|
||||
INSERT INTO t1 VALUES (9);
|
||||
INSERT INTO t1 VALUES (10);
|
||||
INSERT INTO t2 VALUES ('executed db1.p2()');
|
||||
END//
|
||||
INSERT INTO db1.t2 VALUES ('before call db1.p1()');
|
||||
use test;
|
||||
BEGIN;
|
||||
CALL db1.p1();
|
||||
COMMIT;
|
||||
INSERT INTO db1.t2 VALUES ('after call db1.p1()');
|
||||
SELECT * FROM db1.t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
SELECT * FROM db1.t2;
|
||||
s
|
||||
before call db1.p1()
|
||||
after call db1.p1()
|
||||
[on slave]
|
||||
start slave until master_log_file='master-bin.000001', master_log_pos=MASTER_POS;
|
||||
include/wait_for_slave_sql_to_stop.inc
|
||||
#
|
||||
# If we got non-zero here, then we're suffering BUG#43263
|
||||
#
|
||||
SELECT 0 as 'Must be 0';
|
||||
Must be 0
|
||||
0
|
||||
SELECT * from db1.t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
SELECT * from db1.t2;
|
||||
s
|
||||
before call db1.p1()
|
||||
[on master]
|
||||
INSERT INTO db1.t2 VALUES ('before call db1.p2()');
|
||||
BEGIN;
|
||||
CALL db1.p2();
|
||||
ROLLBACK;
|
||||
INSERT INTO db1.t2 VALUES ('after call db1.p2()');
|
||||
SELECT * FROM db1.t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
SELECT * FROM db1.t2;
|
||||
s
|
||||
before call db1.p1()
|
||||
after call db1.p1()
|
||||
before call db1.p2()
|
||||
executed db1.p2()
|
||||
after call db1.p2()
|
||||
[on slave]
|
||||
start slave until master_log_file='master-bin.000001', master_log_pos=MASTER_POS;
|
||||
include/wait_for_slave_sql_to_stop.inc
|
||||
#
|
||||
# If we got non-zero here, then we're suffering BUG#43263
|
||||
#
|
||||
SELECT 0 as 'Must be 0';
|
||||
Must be 0
|
||||
0
|
||||
SELECT * from db1.t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
SELECT * from db1.t2;
|
||||
s
|
||||
before call db1.p1()
|
||||
executed db1.p2()
|
||||
START SLAVE;
|
||||
include/wait_for_slave_sql_to_start.inc
|
||||
#
|
||||
# SAVEPOINT and ROLLBACK TO have the same problem in BUG#43263
|
||||
# This was reported by BUG#50407
|
||||
[on master]
|
||||
SET SESSION AUTOCOMMIT=0
|
||||
BEGIN;
|
||||
INSERT INTO db1.t1 VALUES(20);
|
||||
#
|
||||
# Verify whether this statement is binlogged correctly
|
||||
/*comment*/ SAVEPOINT has_comment;
|
||||
USE db1;
|
||||
INSERT INTO db1.t1 VALUES(30);
|
||||
INSERT INTO db1.t2 VALUES("in savepoint has_comment");
|
||||
USE db2;
|
||||
SavePoint mixed_cases;
|
||||
USE db1;
|
||||
INSERT INTO db1.t2 VALUES("in savepoint mixed_cases");
|
||||
INSERT INTO db1.t1 VALUES(40);
|
||||
USE db2;
|
||||
ROLLBACK TO mixed_cases;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
ROLLBACK TO has_comment;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
USE db1;
|
||||
INSERT INTO db1.t2 VALUES("after rollback to");
|
||||
INSERT INTO db1.t1 VALUES(50);
|
||||
USE db2;
|
||||
COMMIT;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO db1.t1 VALUES(20)
|
||||
master-bin.000001 # Query # # SAVEPOINT `has_comment`
|
||||
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t1 VALUES(30)
|
||||
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t2 VALUES("in savepoint has_comment")
|
||||
master-bin.000001 # Query # # SAVEPOINT `mixed_cases`
|
||||
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t2 VALUES("in savepoint mixed_cases")
|
||||
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t1 VALUES(40)
|
||||
master-bin.000001 # Query # # ROLLBACK TO `mixed_cases`
|
||||
master-bin.000001 # Query # # ROLLBACK TO `has_comment`
|
||||
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t2 VALUES("after rollback to")
|
||||
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t1 VALUES(50)
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
[on slave]
|
||||
#
|
||||
# Verify INSERT statements in savepoints are executed, for MyISAM table
|
||||
# is not effected by ROLLBACK TO
|
||||
SELECT * FROM db1.t2 WHERE s LIKE '% savepoint %';
|
||||
s
|
||||
in savepoint has_comment
|
||||
in savepoint mixed_cases
|
||||
#
|
||||
# Verify INSERT statements on the Innodb table are rolled back;
|
||||
SELECT * FROM db1.t1 WHERE a IN (30, 40);
|
||||
a
|
||||
#
|
||||
# Clean up
|
||||
#
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db2;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,16 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
call mtr.add_suppression('Found invalid event in binary log');
|
||||
call mtr.add_suppression('Slave SQL.*Relay log read failure: Could not parse relay log event entry.* 1594');
|
||||
==== Initialize ====
|
||||
include/stop_slave.inc
|
||||
RESET SLAVE;
|
||||
include/setup_fake_relay_log.inc
|
||||
Setting up fake replication from MYSQL_TEST_DIR/std_data/bug40482-bin.000001
|
||||
==== Test ====
|
||||
START SLAVE SQL_THREAD;
|
||||
include/wait_for_slave_sql_error.inc [errno=1594]
|
||||
Last_SQL_Error = Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by running 'mysqlbinlog' on the binary log), the slave's relay log is corrupted (you can check this by running 'mysqlbinlog' on the relay log), a network problem, or a bug in the master's or slave's MySQL code. If you want to check the master's binary log or slave's relay log, you will be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave.
|
||||
==== Clean up ====
|
||||
include/cleanup_fake_relay_log.inc
|
||||
include/rpl_end.inc
|
||||
278
build/lib/mysql/mysql-test/suite/rpl/r/rpl_binlog_errors.result
Normal file
278
build/lib/mysql/mysql-test/suite/rpl/r/rpl_binlog_errors.result
Normal file
@@ -0,0 +1,278 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
#######################################################################
|
||||
####################### PART 1: MASTER TESTS ##########################
|
||||
#######################################################################
|
||||
include/stop_slave.inc
|
||||
call mtr.add_suppression("Can't generate a unique log-filename");
|
||||
call mtr.add_suppression("Writing one row to the row-based binary log failed.*");
|
||||
call mtr.add_suppression("Error writing file .*");
|
||||
SET @old_debug= @@global.debug;
|
||||
SELECT repeat('x',8192) INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug_46166.data';
|
||||
SELECT repeat('x',10) INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug_46166-2.data';
|
||||
RESET MASTER;
|
||||
###################### TEST #1
|
||||
FLUSH LOGS;
|
||||
# assert: must show two binlogs
|
||||
show binary logs;
|
||||
Log_name File_size
|
||||
master-bin.000001 #
|
||||
master-bin.000002 #
|
||||
###################### TEST #2
|
||||
RESET MASTER;
|
||||
SET GLOBAL debug="+d,error_unique_log_filename";
|
||||
FLUSH LOGS;
|
||||
ERROR HY000: Can't generate a unique log-filename master-bin.(1-999)
|
||||
|
||||
# assert: must show one binlog
|
||||
show binary logs;
|
||||
Log_name File_size
|
||||
master-bin.000001 #
|
||||
SET GLOBAL debug="";
|
||||
RESET MASTER;
|
||||
###################### TEST #3
|
||||
CREATE TABLE t1 (a INT);
|
||||
CREATE TABLE t2 (a VARCHAR(16384)) Engine=InnoDB;
|
||||
CREATE TABLE t4 (a VARCHAR(16384));
|
||||
INSERT INTO t1 VALUES (1);
|
||||
RESET MASTER;
|
||||
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug_46166.data' INTO TABLE t2;
|
||||
# assert: must show two binlog
|
||||
show binary logs;
|
||||
Log_name File_size
|
||||
master-bin.000001 #
|
||||
master-bin.000002 #
|
||||
SET GLOBAL debug="-d,error_unique_log_filename";
|
||||
DELETE FROM t2;
|
||||
RESET MASTER;
|
||||
###################### TEST #4
|
||||
SET GLOBAL debug="+d,error_unique_log_filename";
|
||||
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug_46166.data' INTO TABLE t2;
|
||||
ERROR HY000: Can't generate a unique log-filename master-bin.(1-999)
|
||||
|
||||
# assert: must show one entry
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
1
|
||||
SET GLOBAL debug="-d,error_unique_log_filename";
|
||||
DELETE FROM t2;
|
||||
RESET MASTER;
|
||||
###################### TEST #5
|
||||
SET GLOBAL debug="+d,error_unique_log_filename";
|
||||
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug_46166-2.data' INTO TABLE t2;
|
||||
# assert: must show one entry
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
1
|
||||
SET GLOBAL debug="-d,error_unique_log_filename";
|
||||
DELETE FROM t2;
|
||||
RESET MASTER;
|
||||
###################### TEST #6
|
||||
SET GLOBAL debug="+d,error_unique_log_filename";
|
||||
SET AUTOCOMMIT=0;
|
||||
INSERT INTO t2 VALUES ('muse');
|
||||
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug_46166.data' INTO TABLE t2;
|
||||
INSERT INTO t2 VALUES ('muse');
|
||||
COMMIT;
|
||||
ERROR HY000: Can't generate a unique log-filename master-bin.(1-999)
|
||||
|
||||
# assert: must show three entries
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
3
|
||||
SET AUTOCOMMIT= 1;
|
||||
SET GLOBAL debug="-d,error_unique_log_filename";
|
||||
DELETE FROM t2;
|
||||
RESET MASTER;
|
||||
###################### TEST #7
|
||||
SET GLOBAL debug="+d,error_unique_log_filename";
|
||||
SELECT count(*) FROM t4;
|
||||
count(*)
|
||||
0
|
||||
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug_46166.data' INTO TABLE t4;
|
||||
ERROR HY000: Can't generate a unique log-filename master-bin.(1-999)
|
||||
|
||||
# assert: must show 1 entry
|
||||
SELECT count(*) FROM t4;
|
||||
count(*)
|
||||
1
|
||||
### check that the incident event is written to the current log
|
||||
SET GLOBAL debug="-d,error_unique_log_filename";
|
||||
FLUSH LOGS;
|
||||
SHOW BINLOG EVENTS IN 'BINLOG_FILE' FROM <binlog_start> LIMIT 1;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
BINLOG_FILE # Incident # # #1 (LOST_EVENTS)
|
||||
DELETE FROM t4;
|
||||
RESET MASTER;
|
||||
###################### TEST #8
|
||||
SET GLOBAL debug="+d,error_unique_log_filename";
|
||||
# must show 0 entries
|
||||
SELECT count(*) FROM t4;
|
||||
count(*)
|
||||
0
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
0
|
||||
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug_46166.data' INTO TABLE t4;
|
||||
ERROR HY000: Can't generate a unique log-filename master-bin.(1-999)
|
||||
|
||||
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug_46166.data' INTO TABLE t2;
|
||||
ERROR HY000: Can't generate a unique log-filename master-bin.(1-999)
|
||||
|
||||
INSERT INTO t2 VALUES ('aaa'), ('bbb'), ('ccc');
|
||||
ERROR HY000: Can't generate a unique log-filename master-bin.(1-999)
|
||||
|
||||
# INFO: Count(*) Before Offending DELETEs
|
||||
# assert: must show 1 entry
|
||||
SELECT count(*) FROM t4;
|
||||
count(*)
|
||||
1
|
||||
# assert: must show 4 entries
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
4
|
||||
DELETE FROM t4;
|
||||
ERROR HY000: Can't generate a unique log-filename master-bin.(1-999)
|
||||
|
||||
DELETE FROM t2;
|
||||
ERROR HY000: Can't generate a unique log-filename master-bin.(1-999)
|
||||
|
||||
# INFO: Count(*) After Offending DELETEs
|
||||
# assert: must show zero entries
|
||||
SELECT count(*) FROM t4;
|
||||
count(*)
|
||||
0
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
0
|
||||
SET GLOBAL debug="-d,error_unique_log_filename";
|
||||
###################### TEST #9
|
||||
SET GLOBAL debug="+d,error_unique_log_filename";
|
||||
SET SQL_LOG_BIN=0;
|
||||
INSERT INTO t2 VALUES ('aaa'), ('bbb'), ('ccc'), ('ddd');
|
||||
INSERT INTO t4 VALUES ('eee'), ('fff'), ('ggg'), ('hhh');
|
||||
# assert: must show four entries
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
4
|
||||
SELECT count(*) FROM t4;
|
||||
count(*)
|
||||
4
|
||||
DELETE FROM t2;
|
||||
DELETE FROM t4;
|
||||
# assert: must show zero entries
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
0
|
||||
SELECT count(*) FROM t4;
|
||||
count(*)
|
||||
0
|
||||
SET SQL_LOG_BIN=1;
|
||||
SET GLOBAL debug="-d,error_unique_log_filename";
|
||||
###################### TEST #10
|
||||
call mtr.add_suppression("MSYQL_BIN_LOG::open failed to sync the index file.");
|
||||
call mtr.add_suppression("Could not open .*");
|
||||
RESET MASTER;
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
SET GLOBAL debug="+d,fault_injection_registering_index";
|
||||
FLUSH LOGS;
|
||||
ERROR HY000: Can't open file: 'master-bin.000002' (errno: 1)
|
||||
SET GLOBAL debug="-d,fault_injection_registering_index";
|
||||
SHOW BINARY LOGS;
|
||||
ERROR HY000: You are not using binary logging
|
||||
CREATE TABLE t5 (a INT);
|
||||
INSERT INTO t4 VALUES ('bbbbb');
|
||||
INSERT INTO t2 VALUES ('aaaaa');
|
||||
DELETE FROM t4;
|
||||
DELETE FROM t2;
|
||||
DROP TABLE t5;
|
||||
###################### TEST #11
|
||||
include/rpl_restart_server.inc [server_number=1]
|
||||
SET GLOBAL debug="+d,fault_injection_openning_index";
|
||||
FLUSH LOGS;
|
||||
ERROR HY000: Can't open file: 'master-bin.index' (errno: 1)
|
||||
SET GLOBAL debug="-d,fault_injection_openning_index";
|
||||
RESET MASTER;
|
||||
ERROR HY000: Binlog closed, cannot RESET MASTER
|
||||
CREATE TABLE t5 (a INT);
|
||||
INSERT INTO t4 VALUES ('bbbbb');
|
||||
INSERT INTO t2 VALUES ('aaaaa');
|
||||
DELETE FROM t4;
|
||||
DELETE FROM t2;
|
||||
DROP TABLE t5;
|
||||
include/rpl_restart_server.inc [server_number=1]
|
||||
###################### TEST #12
|
||||
SET GLOBAL debug="+d,fault_injection_new_file_rotate_event";
|
||||
FLUSH LOGS;
|
||||
ERROR HY000: Can't open file: 'master-bin' (errno: 2)
|
||||
SET GLOBAL debug="-d,fault_injection_new_file_rotate_event";
|
||||
RESET MASTER;
|
||||
ERROR HY000: Binlog closed, cannot RESET MASTER
|
||||
CREATE TABLE t5 (a INT);
|
||||
INSERT INTO t4 VALUES ('bbbbb');
|
||||
INSERT INTO t2 VALUES ('aaaaa');
|
||||
DELETE FROM t4;
|
||||
DELETE FROM t2;
|
||||
DROP TABLE t5;
|
||||
include/rpl_restart_server.inc [server_number=1]
|
||||
SET GLOBAL debug= @old_debug;
|
||||
DROP TABLE t1, t2, t4;
|
||||
RESET MASTER;
|
||||
include/start_slave.inc
|
||||
#######################################################################
|
||||
####################### PART 2: SLAVE TESTS ###########################
|
||||
#######################################################################
|
||||
include/rpl_reset.inc
|
||||
call mtr.add_suppression("Slave I/O: Relay log write failure: could not queue event from master.*");
|
||||
call mtr.add_suppression("Error writing file .*");
|
||||
call mtr.add_suppression("Could not open .*");
|
||||
call mtr.add_suppression("MSYQL_BIN_LOG::open failed to sync the index file.");
|
||||
call mtr.add_suppression("Can't generate a unique log-filename .*");
|
||||
###################### TEST #13
|
||||
SET @old_debug=@@global.debug;
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL debug="+d,error_unique_log_filename";
|
||||
START SLAVE io_thread;
|
||||
include/wait_for_slave_io_error.inc [errno=1595]
|
||||
Last_IO_Error = 'Relay log write failure: could not queue event from master'
|
||||
SET GLOBAL debug="-d,error_unique_log_filename";
|
||||
SET GLOBAL debug=@old_debug;
|
||||
include/rpl_restart_server.inc [server_number=2]
|
||||
###################### TEST #14
|
||||
SET @old_debug=@@global.debug;
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL debug="+d,fault_injection_new_file_rotate_event";
|
||||
START SLAVE io_thread;
|
||||
include/wait_for_slave_io_error.inc [errno=1595]
|
||||
Last_IO_Error = 'Relay log write failure: could not queue event from master'
|
||||
SET GLOBAL debug="-d,fault_injection_new_file_rotate_event";
|
||||
SET GLOBAL debug=@old_debug;
|
||||
include/rpl_restart_server.inc [server_number=2]
|
||||
###################### TEST #15
|
||||
SET @old_debug=@@global.debug;
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL debug="+d,fault_injection_registering_index";
|
||||
START SLAVE io_thread;
|
||||
include/wait_for_slave_io_error.inc [errno=1595]
|
||||
Last_IO_Error = 'Relay log write failure: could not queue event from master'
|
||||
SET GLOBAL debug="-d,fault_injection_registering_index";
|
||||
SET GLOBAL debug=@old_debug;
|
||||
include/rpl_restart_server.inc [server_number=2]
|
||||
###################### TEST #16
|
||||
SET @old_debug=@@global.debug;
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL debug="+d,fault_injection_openning_index";
|
||||
START SLAVE io_thread;
|
||||
include/wait_for_slave_io_error.inc [errno=1595]
|
||||
Last_IO_Error = 'Relay log write failure: could not queue event from master'
|
||||
SET GLOBAL debug="-d,fault_injection_openning_index";
|
||||
SET GLOBAL debug=@old_debug;
|
||||
include/rpl_restart_server.inc [server_number=2]
|
||||
include/stop_slave_sql.inc
|
||||
Warnings:
|
||||
Note 1255 Slave already has been stopped
|
||||
SET GLOBAL debug=@old_debug;
|
||||
RESET SLAVE;
|
||||
RESET MASTER;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,29 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
drop database if exists d1;
|
||||
create database d1;
|
||||
use d1;
|
||||
create table t (s1 int) engine=innodb;
|
||||
set @@autocommit=0;
|
||||
start transaction;
|
||||
insert into t values (1);
|
||||
grant select on t to x@y;
|
||||
rollback;
|
||||
show grants for x@y;
|
||||
Grants for x@y
|
||||
GRANT USAGE ON *.* TO 'x'@'y'
|
||||
GRANT SELECT ON `d1`.`t` TO 'x'@'y'
|
||||
start transaction;
|
||||
insert into t values (2);
|
||||
revoke select on t from x@y;
|
||||
commit;
|
||||
select * from t;
|
||||
s1
|
||||
1
|
||||
2
|
||||
show grants for x@y;
|
||||
Grants for x@y
|
||||
GRANT USAGE ON *.* TO 'x'@'y'
|
||||
drop user x@y;
|
||||
drop database d1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,157 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
SET GLOBAL max_binlog_cache_size = 4096;
|
||||
SET GLOBAL binlog_cache_size = 4096;
|
||||
CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
|
||||
CREATE TABLE t2(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=MyIsam;
|
||||
CREATE TABLE t3(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
|
||||
########################################################################################
|
||||
# 1 - SINGLE STATEMENT
|
||||
########################################################################################
|
||||
*** Single statement on transactional table ***
|
||||
Got one of the listed errors
|
||||
*** Single statement on non-transactional table ***
|
||||
*** After WL#2687 the difference between STATEMENT/MIXED and ROW will not exist. ***
|
||||
Got one of the listed errors
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1590]
|
||||
*** Single statement on both transactional and non-transactional tables. ***
|
||||
*** After WL#2687 we will be able to change the order of the tables. ***
|
||||
Got one of the listed errors
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1590]
|
||||
TRUNCATE TABLE t1;
|
||||
TRUNCATE TABLE t2;
|
||||
TRUNCATE TABLE t3;
|
||||
BEGIN;
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
BEGIN;
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
BEGIN;
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
include/diff_tables.inc [master:t1,slave:t1]
|
||||
########################################################################################
|
||||
# 3 - BEGIN - COMMIT
|
||||
########################################################################################
|
||||
TRUNCATE TABLE t1;
|
||||
TRUNCATE TABLE t2;
|
||||
TRUNCATE TABLE t3;
|
||||
BEGIN;
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
COMMIT;
|
||||
include/diff_tables.inc [master:t1,slave:t1]
|
||||
########################################################################################
|
||||
# 4 - BEGIN - ROLLBACK
|
||||
########################################################################################
|
||||
TRUNCATE TABLE t1;
|
||||
TRUNCATE TABLE t2;
|
||||
TRUNCATE TABLE t3;
|
||||
BEGIN;
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
include/diff_tables.inc [master:t1,slave:t1]
|
||||
########################################################################################
|
||||
# 5 - PROCEDURE
|
||||
########################################################################################
|
||||
TRUNCATE TABLE t1;
|
||||
TRUNCATE TABLE t2;
|
||||
TRUNCATE TABLE t3;
|
||||
CREATE PROCEDURE p1(pd VARCHAR(30000))
|
||||
BEGIN
|
||||
INSERT INTO t1 (a, data) VALUES (1, pd);
|
||||
INSERT INTO t1 (a, data) VALUES (2, pd);
|
||||
INSERT INTO t1 (a, data) VALUES (3, pd);
|
||||
INSERT INTO t1 (a, data) VALUES (4, pd);
|
||||
INSERT INTO t1 (a, data) VALUES (5, 's');
|
||||
END//
|
||||
TRUNCATE TABLE t1;
|
||||
TRUNCATE TABLE t1;
|
||||
BEGIN;
|
||||
Got one of the listed errors
|
||||
COMMIT;
|
||||
TRUNCATE TABLE t1;
|
||||
BEGIN;
|
||||
Got one of the listed errors
|
||||
ROLLBACK;
|
||||
include/diff_tables.inc [master:t1,slave:t1]
|
||||
########################################################################################
|
||||
# 6 - XID
|
||||
########################################################################################
|
||||
TRUNCATE TABLE t1;
|
||||
TRUNCATE TABLE t2;
|
||||
TRUNCATE TABLE t3;
|
||||
BEGIN;
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
ROLLBACK TO sv;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
COMMIT;
|
||||
include/diff_tables.inc [master:t1,slave:t1]
|
||||
########################################################################################
|
||||
# 7 - NON-TRANS TABLE
|
||||
########################################################################################
|
||||
TRUNCATE TABLE t1;
|
||||
TRUNCATE TABLE t2;
|
||||
TRUNCATE TABLE t3;
|
||||
BEGIN;
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
Got one of the listed errors
|
||||
COMMIT;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1590]
|
||||
########################################################################
|
||||
# 8 - Bug#55375(Regression Bug) Transaction bigger than
|
||||
# max_binlog_cache_size crashes slave
|
||||
########################################################################
|
||||
SET GLOBAL max_binlog_cache_size = 4096;
|
||||
SET GLOBAL binlog_cache_size = 4096;
|
||||
include/stop_slave.inc
|
||||
include/start_slave.inc
|
||||
CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage.*");
|
||||
CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*");
|
||||
CALL mtr.add_suppression("Slave SQL.*The incident LOST_EVENTS occured on the master. Message: error writing to the binary log");
|
||||
TRUNCATE t1;
|
||||
SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE;
|
||||
SET GLOBAL binlog_cache_size= ORIGINAL_VALUE;
|
||||
BEGIN;
|
||||
Repeat statement 'INSERT INTO t1 VALUES($n, repeat("a", 32))' 128 times
|
||||
COMMIT;
|
||||
include/wait_for_slave_sql_error.inc [errno=1197]
|
||||
SELECT count(*) FROM t1;
|
||||
count(*)
|
||||
0
|
||||
show binlog events in 'slave-bin.000001' from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE;
|
||||
SET GLOBAL binlog_cache_size= ORIGINAL_VALUE;
|
||||
include/stop_slave.inc
|
||||
include/start_slave.inc
|
||||
SELECT count(*) FROM t1;
|
||||
count(*)
|
||||
128
|
||||
########################################################################################
|
||||
# CLEAN
|
||||
########################################################################################
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t3;
|
||||
DROP TABLE IF EXISTS t4;
|
||||
DROP TABLE t5;
|
||||
DROP PROCEDURE p1;
|
||||
include/rpl_end.inc
|
||||
135
build/lib/mysql/mysql-test/suite/rpl/r/rpl_bit.result
Normal file
135
build/lib/mysql/mysql-test/suite/rpl/r/rpl_bit.result
Normal file
@@ -0,0 +1,135 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
DROP TABLE IF EXISTS test.t1;
|
||||
CREATE TABLE test.t1 (
|
||||
dummyKey INTEGER NOT NULL,
|
||||
f01 TINYINT,
|
||||
f10 TINYINT,
|
||||
f12 TINYINT,
|
||||
f15 TINYINT,
|
||||
f16 TINYINT,
|
||||
f7 TINYINT,
|
||||
f9 TINYINT,
|
||||
f29 TINYINT,
|
||||
f0 TINYINT,
|
||||
fA1 TINYINT,
|
||||
C32 TINYINT,
|
||||
A42 TINYINT,
|
||||
CA3 TINYINT,
|
||||
A044 TINYINT,
|
||||
f001 TINYINT,
|
||||
A3002 TINYINT,
|
||||
fC003 TINYINT,
|
||||
CA300 TINYINT,
|
||||
A305 TINYINT,
|
||||
CA321 TINYINT,
|
||||
r001 TINYINT,
|
||||
bit1 BIT(6),
|
||||
bit2 BIT(6),
|
||||
bit3 BIT(6),
|
||||
State1 TINYINT,
|
||||
State2 TINYINT,
|
||||
State3 TINYINT,
|
||||
State4 TINYINT,
|
||||
SubState TINYINT,
|
||||
gState TINYINT,
|
||||
oSupp TINYINT,
|
||||
tSupp TINYINT,
|
||||
sSuppD TINYINT,
|
||||
mSuppf TINYINT,
|
||||
GSuppDf TINYINT,
|
||||
VNotSupp TINYINT,
|
||||
x034 TINYINT,
|
||||
PRIMARY KEY USING HASH (dummyKey) );
|
||||
LOCK TABLES test.t1 WRITE;
|
||||
INSERT INTO test.t1 VALUES (6,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'111111',b'111110',b'110101',4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||
INSERT INTO test.t1 VALUES (1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'111111',b'000000',b'100100',4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||
INSERT INTO test.t1 VALUES (2,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'000000',b'101010',b'010101',4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||
INSERT INTO test.t1 VALUES (3,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'101010',b'111111',b'000000',4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||
INSERT INTO test.t1 VALUES (4,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||
INSERT INTO test.t1 VALUES (5,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||
INSERT INTO test.t1 VALUES (7,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||
INSERT INTO test.t1 VALUES (8,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||
UNLOCK TABLES;
|
||||
SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034 FROM test.t1;
|
||||
oSupp sSuppD GSuppDf VNotSupp x034
|
||||
5 5 3 2 1
|
||||
5 5 3 2 1
|
||||
5 5 3 2 1
|
||||
5 5 3 2 1
|
||||
5 5 3 2 1
|
||||
5 5 3 2 1
|
||||
5 5 3 2 1
|
||||
5 5 3 2 1
|
||||
SELECT hex(bit1) FROM test.t1 ORDER BY bit1;
|
||||
hex(bit1)
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
2A
|
||||
3F
|
||||
3F
|
||||
SELECT hex(bit2) from test.t1 ORDER BY bit2;
|
||||
hex(bit2)
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
2A
|
||||
3E
|
||||
3F
|
||||
SELECT hex(bit3) from test.t1 ORDER BY bit3;
|
||||
hex(bit3)
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
15
|
||||
24
|
||||
35
|
||||
SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034 FROM test.t1;
|
||||
oSupp sSuppD GSuppDf VNotSupp x034
|
||||
5 5 3 2 1
|
||||
5 5 3 2 1
|
||||
5 5 3 2 1
|
||||
5 5 3 2 1
|
||||
5 5 3 2 1
|
||||
5 5 3 2 1
|
||||
5 5 3 2 1
|
||||
5 5 3 2 1
|
||||
SELECT hex(bit1) FROM test.t1 ORDER BY bit1;
|
||||
hex(bit1)
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
2A
|
||||
3F
|
||||
3F
|
||||
SELECT hex(bit2) from test.t1 ORDER BY bit2;
|
||||
hex(bit2)
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
2A
|
||||
3E
|
||||
3F
|
||||
SELECT hex(bit3) from test.t1 ORDER BY bit3;
|
||||
hex(bit3)
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
15
|
||||
24
|
||||
35
|
||||
DROP TABLE IF EXISTS test.t1;
|
||||
include/rpl_end.inc
|
||||
166
build/lib/mysql/mysql-test/suite/rpl/r/rpl_bit_npk.result
Normal file
166
build/lib/mysql/mysql-test/suite/rpl/r/rpl_bit_npk.result
Normal file
@@ -0,0 +1,166 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
DROP TABLE IF EXISTS test.t1;
|
||||
CREATE TABLE test.t1 (
|
||||
dummyKey INTEGER NOT NULL,
|
||||
f01 TINYINT,
|
||||
f10 TINYINT,
|
||||
f12 TINYINT,
|
||||
f15 TINYINT,
|
||||
f16 TINYINT,
|
||||
f7 TINYINT,
|
||||
f9 TINYINT,
|
||||
f29 TINYINT,
|
||||
f0 TINYINT,
|
||||
fA1 TINYINT,
|
||||
C32 TINYINT,
|
||||
A42 TINYINT,
|
||||
CA3 TINYINT,
|
||||
A044 TINYINT,
|
||||
f001 TINYINT,
|
||||
A3002 TINYINT,
|
||||
fC003 TINYINT,
|
||||
CA300 TINYINT,
|
||||
A305 TINYINT,
|
||||
CA321 TINYINT,
|
||||
r001 TINYINT,
|
||||
bit1 BIT(6),
|
||||
bit2 BIT(6),
|
||||
bit3 BIT(6),
|
||||
State1 TINYINT,
|
||||
State2 TINYINT,
|
||||
State3 TINYINT,
|
||||
State4 TINYINT,
|
||||
SubState TINYINT,
|
||||
gState TINYINT,
|
||||
oSupp TINYINT,
|
||||
tSupp TINYINT,
|
||||
sSuppD TINYINT,
|
||||
mSuppf TINYINT,
|
||||
GSuppDf TINYINT,
|
||||
VNotSupp TINYINT,
|
||||
x034 TINYINT);
|
||||
LOCK TABLES test.t1 WRITE;
|
||||
INSERT INTO test.t1 VALUES (6,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'111111',b'111110',b'110101',4,5,5,5,5,5,5,5,5,5,3,NULL,1);
|
||||
INSERT INTO test.t1 VALUES (1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'111111',b'000000',b'100100',4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||
INSERT INTO test.t1 VALUES (2,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'000000',b'101010',b'010101',4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||
INSERT INTO test.t1 VALUES (3,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'101010',b'111111',b'000000',4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||
INSERT INTO test.t1 VALUES (4,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'0',1,1,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||
INSERT INTO test.t1 VALUES (5,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||
INSERT INTO test.t1 VALUES (7,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||
INSERT INTO test.t1 VALUES (8,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||
UNLOCK TABLES;
|
||||
UPDATE test.t1 set x034 = 50 where bit3 = b'000000';
|
||||
UPDATE test.t1 set VNotSupp = 33 where bit1 = b'0';
|
||||
SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034
|
||||
FROM test.t1
|
||||
ORDER BY oSupp, sSuppD, GSuppDf, VNotSupp, x034;
|
||||
oSupp sSuppD GSuppDf VNotSupp x034
|
||||
5 5 3 NULL 1
|
||||
5 5 3 2 1
|
||||
5 5 3 2 50
|
||||
5 5 3 33 1
|
||||
5 5 3 33 1
|
||||
5 5 3 33 1
|
||||
5 5 3 33 1
|
||||
5 5 3 33 1
|
||||
SELECT hex(bit1) from test.t1 ORDER BY bit1;
|
||||
hex(bit1)
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
2A
|
||||
3F
|
||||
3F
|
||||
SELECT hex(bit2) from test.t1 ORDER BY bit2;
|
||||
hex(bit2)
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
2A
|
||||
3E
|
||||
3F
|
||||
SELECT hex(bit3) from test.t1 ORDER BY bit3;
|
||||
hex(bit3)
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
15
|
||||
24
|
||||
35
|
||||
SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034
|
||||
FROM test.t1
|
||||
ORDER BY oSupp, sSuppD, GSuppDf, VNotSupp, x034;
|
||||
oSupp sSuppD GSuppDf VNotSupp x034
|
||||
5 5 3 NULL 1
|
||||
5 5 3 2 1
|
||||
5 5 3 2 50
|
||||
5 5 3 33 1
|
||||
5 5 3 33 1
|
||||
5 5 3 33 1
|
||||
5 5 3 33 1
|
||||
5 5 3 33 1
|
||||
SELECT hex(bit1) from test.t1 ORDER BY bit1;
|
||||
hex(bit1)
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
2A
|
||||
3F
|
||||
3F
|
||||
SELECT hex(bit2) from test.t1 ORDER BY bit2;
|
||||
hex(bit2)
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
2A
|
||||
3E
|
||||
3F
|
||||
SELECT hex(bit3) from test.t1 ORDER BY bit3;
|
||||
hex(bit3)
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
15
|
||||
24
|
||||
35
|
||||
CREATE TABLE test.t2 (a INT, b BIT(1));
|
||||
INSERT INTO test.t2 VALUES (1, b'0');
|
||||
INSERT INTO test.t2 VALUES (1, b'1');
|
||||
UPDATE test.t2 SET a = 2 WHERE b = b'1';
|
||||
CREATE TABLE test.t3 (a INT, b INT);
|
||||
INSERT INTO test.t3 VALUES (1, NULL);
|
||||
INSERT INTO test.t3 VALUES (1, 0);
|
||||
UPDATE test.t3 SET a = 2 WHERE b = 0;
|
||||
SELECT a, hex(b) FROM test.t2 ORDER BY a,b;
|
||||
a hex(b)
|
||||
1 0
|
||||
2 1
|
||||
SELECT * FROM test.t3 ORDER BY a,b;
|
||||
a b
|
||||
1 NULL
|
||||
2 0
|
||||
SELECT a, hex(b) FROM test.t2 ORDER BY a,b;
|
||||
a hex(b)
|
||||
1 0
|
||||
2 1
|
||||
SELECT * FROM test.t3 ORDER BY a,b;
|
||||
a b
|
||||
1 NULL
|
||||
2 0
|
||||
DROP TABLE IF EXISTS test.t1;
|
||||
DROP TABLE IF EXISTS test.t2;
|
||||
DROP TABLE IF EXISTS test.t3;
|
||||
include/rpl_end.inc
|
||||
98
build/lib/mysql/mysql-test/suite/rpl/r/rpl_blackhole.result
Normal file
98
build/lib/mysql/mysql-test/suite/rpl/r/rpl_blackhole.result
Normal file
@@ -0,0 +1,98 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE t1 (a INT, b INT, c INT);
|
||||
CREATE TABLE t2 (a INT, b INT, c INT);
|
||||
ALTER TABLE t1 ENGINE=BLACKHOLE;
|
||||
INSERT INTO t2 VALUES (1,9,1), (2,9,2), (3,9,3), (4,9,4);
|
||||
[on master]
|
||||
INSERT INTO t1 VALUES (1,1,1),(2,1,2),(3,1,3),(4,1,4);
|
||||
[on slave]
|
||||
# Expect 0
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
>>> Something was written to binary log <<<
|
||||
[on master]
|
||||
UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 1;
|
||||
[on slave]
|
||||
# Expect 0
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
>>> Something was written to binary log <<<
|
||||
[on master]
|
||||
DELETE FROM t1 WHERE a % 2 = 0 AND b = 1;
|
||||
[on slave]
|
||||
# Expect 0
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
>>> Something was written to binary log <<<
|
||||
[on master]
|
||||
INSERT INTO t1 SELECT * FROM t2;
|
||||
[on slave]
|
||||
# Expect 0
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
>>> Something was written to binary log <<<
|
||||
[on master]
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
[on slave]
|
||||
# Expect 0
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
>>> Something was written to binary log <<<
|
||||
ALTER TABLE t1 ADD PRIMARY KEY pk_t1 (a,b);
|
||||
[on master]
|
||||
INSERT INTO t1 VALUES (1,2,1),(2,2,2),(3,2,3),(4,2,4);
|
||||
[on slave]
|
||||
# Expect 0
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
>>> Something was written to binary log <<<
|
||||
[on master]
|
||||
UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 2;
|
||||
[on slave]
|
||||
# Expect 0
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
>>> Something was written to binary log <<<
|
||||
[on master]
|
||||
DELETE FROM t1 WHERE a % 2 = 0 AND b = 2;
|
||||
[on slave]
|
||||
# Expect 0
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
>>> Something was written to binary log <<<
|
||||
ALTER TABLE t1 DROP PRIMARY KEY, ADD KEY key_t1 (a);
|
||||
[on master]
|
||||
INSERT INTO t1 VALUES (1,3,1),(2,3,2),(3,3,3),(4,3,4);
|
||||
[on slave]
|
||||
# Expect 0
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
>>> Something was written to binary log <<<
|
||||
[on master]
|
||||
UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 3;
|
||||
[on slave]
|
||||
# Expect 0
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
>>> Something was written to binary log <<<
|
||||
[on master]
|
||||
DELETE FROM t1 WHERE a % 2 = 0 AND b = 3;
|
||||
[on slave]
|
||||
# Expect 0
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
>>> Something was written to binary log <<<
|
||||
DROP TABLE t1,t2;
|
||||
include/rpl_end.inc
|
||||
39
build/lib/mysql/mysql-test/suite/rpl/r/rpl_bug26395.result
Normal file
39
build/lib/mysql/mysql-test/suite/rpl/r/rpl_bug26395.result
Normal file
@@ -0,0 +1,39 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
==== Initialize ====
|
||||
[on master]
|
||||
CREATE TABLE tinnodb (a INT) ENGINE = INNODB;
|
||||
SHOW CREATE TABLE tinnodb;
|
||||
Table Create Table
|
||||
tinnodb CREATE TABLE `tinnodb` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
set @old_debug= @@debug;
|
||||
set @@debug= 'd,do_not_write_xid';
|
||||
==== Test ====
|
||||
INSERT INTO tinnodb VALUES (1);
|
||||
SELECT * FROM tinnodb ORDER BY a;
|
||||
a
|
||||
1
|
||||
[on slave]
|
||||
include/sync_slave_io_with_master.inc
|
||||
==== Verify results on slave ====
|
||||
include/stop_slave.inc
|
||||
SELECT "" AS Slave_IO_State;
|
||||
Slave_IO_State
|
||||
|
||||
SELECT "" AS Last_SQL_Error;
|
||||
Last_SQL_Error
|
||||
|
||||
SELECT "" AS Last_IO_Error;
|
||||
Last_IO_Error
|
||||
|
||||
SELECT * FROM tinnodb ORDER BY a;
|
||||
a
|
||||
==== Clean up ====
|
||||
[on master]
|
||||
DROP TABLE tinnodb;
|
||||
set @@debug= @old_debug;
|
||||
[on slave]
|
||||
DROP TABLE tinnodb;
|
||||
include/rpl_end.inc
|
||||
66
build/lib/mysql/mysql-test/suite/rpl/r/rpl_bug31076.result
Normal file
66
build/lib/mysql/mysql-test/suite/rpl/r/rpl_bug31076.result
Normal file
@@ -0,0 +1,66 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE DATABASE track;
|
||||
USE track;
|
||||
CREATE TABLE `visits` (
|
||||
`visits_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`myid` varchar(32) NOT NULL DEFAULT '',
|
||||
`src` varchar(64) NOT NULL DEFAULT '',
|
||||
`ip` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`cc` char(2) NOT NULL DEFAULT '',
|
||||
`org` varchar(80) DEFAULT NULL,
|
||||
`ref` varchar(255) NOT NULL DEFAULT '',
|
||||
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`host` varchar(30) NOT NULL DEFAULT '',
|
||||
`entry` varchar(255) NOT NULL DEFAULT '',
|
||||
`visit_exit` varchar(255) NOT NULL DEFAULT '',
|
||||
`user_id` int(11) unsigned NOT NULL DEFAULT '0',
|
||||
`visit_start` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
PRIMARY KEY (`visits_id`),
|
||||
KEY `ip` (`ip`),
|
||||
KEY `time` (`time`),
|
||||
KEY `user_id` (`user_id`)
|
||||
) ENGINE=MyISAM AUTO_INCREMENT=21293381 DEFAULT CHARSET=latin1;
|
||||
CREATE TABLE `visits_events` (
|
||||
`event_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`visit_id` int(11) unsigned NOT NULL DEFAULT '0',
|
||||
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`src` varchar(64) NOT NULL DEFAULT '',
|
||||
`data` varchar(255) NOT NULL DEFAULT '',
|
||||
`visits_events_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
PRIMARY KEY (`visits_events_id`),
|
||||
KEY `event_id` (`event_id`),
|
||||
KEY `visit_id` (`visit_id`),
|
||||
KEY `data` (`data`)
|
||||
) ENGINE=MyISAM AUTO_INCREMENT=33900731 DEFAULT CHARSET=latin1;
|
||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||
BINLOG '
|
||||
O1ZVRw8BAAAAZgAAAGoAAAAAAAQANS4xLjIzLXJjLWRlYnVnLWxvZwAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAA7VlVHEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC
|
||||
'/*!*/;
|
||||
BINLOG '
|
||||
Bk3vRhO0AQAAOAAAALcLyQkAAJlXFwIAAAAABXRyYWNrAA12aXNpdHNfZXZlbnRzAAYJAwcPDwM=
|
||||
Bk3vRhe0AQAAWgAAABEMyQkQAJlXFwIAAAEABv/AIE4AvvVDAQZN70YAK0Rvd25sb2Fkcy9NeVNR
|
||||
TC00LjEvbXlzcWwtNC4xLjEyYS13aW4zMi56aXBPaAIC
|
||||
'/*!*/;
|
||||
SET INSERT_ID=21231039/*!*/;
|
||||
use track/*!*/;
|
||||
SET TIMESTAMP=1190087942/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||
SET @@session.time_zone='UTC'/*!*/;
|
||||
INSERT INTO visits (myid, user_id, src, ip, cc, org, ref, time, host, entry, visit_exit, visit_start)
|
||||
VALUES ('3m3l4rhs6do0sf5p1i9lr94g928a272v', '', '', INET_ATON('71.118.124.98'), '', '', 'http://dev.mysql.com/downloads/connector/j/3.0.html', NULL, 'dev.mysql.com', '/get/Downloads/Connector-J/mysql-connector-java-3.0.17-ga.zip/from/pick', '/get/Downloads/Connector-J/mysql-connector-java-3.0.17-ga.zip/from/pick', NOW())/*!*/;
|
||||
Warnings:
|
||||
Warning 1366 Incorrect integer value: '' for column 'user_id' at row 1
|
||||
SELECT * FROM visits;
|
||||
visits_id myid src ip cc org ref time host entry visit_exit user_id visit_start
|
||||
21231039 3m3l4rhs6do0sf5p1i9lr94g928a272v 1198947426 http://dev.mysql.com/downloads/connector/j/3.0.html 2007-09-18 03:59:02 dev.mysql.com /get/Downloads/Connector-J/mysql-connector-java-3.0.17-ga.zip/from/pick /get/Downloads/Connector-J/mysql-connector-java-3.0.17-ga.zip/from/pick 0 2007-09-18 03:59:02
|
||||
SELECT * FROM visits_events;
|
||||
event_id visit_id timestamp src data visits_events_id
|
||||
20000 21231038 2007-09-18 03:59:02 Downloads/MySQL-4.1/mysql-4.1.12a-win32.zip 33712207
|
||||
DROP DATABASE track;
|
||||
End of 5.1 tests
|
||||
include/rpl_end.inc
|
||||
13
build/lib/mysql/mysql-test/suite/rpl/r/rpl_bug33931.result
Normal file
13
build/lib/mysql/mysql-test/suite/rpl/r/rpl_bug33931.result
Normal file
@@ -0,0 +1,13 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
call mtr.add_suppression("Failed during slave I/O thread initialization");
|
||||
call mtr.add_suppression("Slave SQL.*Failed during slave thread initialization.* 1593");
|
||||
include/stop_slave.inc
|
||||
reset slave;
|
||||
SET GLOBAL debug="d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init";
|
||||
start slave;
|
||||
include/wait_for_slave_sql_error.inc [errno=1593]
|
||||
Last_SQL_Error = 'Failed during slave thread initialization'
|
||||
SET GLOBAL debug="";
|
||||
RESET SLAVE;
|
||||
include/rpl_end.inc
|
||||
12
build/lib/mysql/mysql-test/suite/rpl/r/rpl_bug37426.result
Normal file
12
build/lib/mysql/mysql-test/suite/rpl/r/rpl_bug37426.result
Normal file
@@ -0,0 +1,12 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE char128_utf8 (i1 INT NOT NULL, c CHAR(128) CHARACTER SET utf8 NOT NULL, i2 INT NOT NULL);
|
||||
INSERT INTO char128_utf8 VALUES ( 1, "123", 1 );
|
||||
SELECT * FROM char128_utf8;
|
||||
i1 c i2
|
||||
1 123 1
|
||||
SELECT * FROM char128_utf8;
|
||||
i1 c i2
|
||||
1 123 1
|
||||
DROP TABLE char128_utf8;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,3 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,18 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
create table t1(n int);
|
||||
select * from t1;
|
||||
n
|
||||
stop slave sql_thread;
|
||||
insert into t1 values(1);
|
||||
insert into t1 values(2);
|
||||
include/wait_for_slave_param.inc [Read_Master_Log_Pos]
|
||||
include/stop_slave.inc
|
||||
change master to master_user='root';
|
||||
start slave;
|
||||
select * from t1;
|
||||
n
|
||||
1
|
||||
2
|
||||
drop table t1;
|
||||
include/rpl_end.inc
|
||||
139
build/lib/mysql/mysql-test/suite/rpl/r/rpl_charset.result
Normal file
139
build/lib/mysql/mysql-test/suite/rpl/r/rpl_charset.result
Normal file
@@ -0,0 +1,139 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
set timestamp=1000000000;
|
||||
create database mysqltest2 character set latin2;
|
||||
set @@character_set_server=latin5;
|
||||
create database mysqltest3;
|
||||
|
||||
--- --master--
|
||||
show create database mysqltest2;
|
||||
Database Create Database
|
||||
mysqltest2 CREATE DATABASE `mysqltest2` /*!40100 DEFAULT CHARACTER SET latin2 */
|
||||
show create database mysqltest3;
|
||||
Database Create Database
|
||||
mysqltest3 CREATE DATABASE `mysqltest3` /*!40100 DEFAULT CHARACTER SET latin5 */
|
||||
|
||||
--- --slave--
|
||||
show create database mysqltest2;
|
||||
Database Create Database
|
||||
mysqltest2 CREATE DATABASE `mysqltest2` /*!40100 DEFAULT CHARACTER SET latin2 */
|
||||
show create database mysqltest3;
|
||||
Database Create Database
|
||||
mysqltest3 CREATE DATABASE `mysqltest3` /*!40100 DEFAULT CHARACTER SET latin5 */
|
||||
set @@collation_server=armscii8_bin;
|
||||
drop database mysqltest3;
|
||||
create database mysqltest3;
|
||||
|
||||
--- --master--
|
||||
show create database mysqltest3;
|
||||
Database Create Database
|
||||
mysqltest3 CREATE DATABASE `mysqltest3` /*!40100 DEFAULT CHARACTER SET armscii8 COLLATE armscii8_bin */
|
||||
|
||||
--- --slave--
|
||||
show create database mysqltest3;
|
||||
Database Create Database
|
||||
mysqltest3 CREATE DATABASE `mysqltest3` /*!40100 DEFAULT CHARACTER SET armscii8 COLLATE armscii8_bin */
|
||||
use mysqltest2;
|
||||
create table t1 (a int auto_increment primary key, b varchar(100));
|
||||
set character_set_client=cp850, collation_connection=latin2_croatian_ci;
|
||||
insert into t1 (b) values(@@character_set_server);
|
||||
insert into t1 (b) values(@@collation_server);
|
||||
insert into t1 (b) values(@@character_set_client);
|
||||
insert into t1 (b) values(@@character_set_connection);
|
||||
insert into t1 (b) values(@@collation_connection);
|
||||
--- --master--
|
||||
select * from t1 order by a;
|
||||
a b
|
||||
1 armscii8
|
||||
2 armscii8_bin
|
||||
3 cp850
|
||||
4 latin2
|
||||
5 latin2_croatian_ci
|
||||
--- --slave--
|
||||
select * from mysqltest2.t1 order by a;
|
||||
a b
|
||||
1 armscii8
|
||||
2 armscii8_bin
|
||||
3 cp850
|
||||
4 latin2
|
||||
5 latin2_croatian_ci
|
||||
set character_set_client=latin1, collation_connection=latin1_german1_ci;
|
||||
truncate table t1;
|
||||
insert into t1 (b) values(@@collation_connection);
|
||||
insert into t1 (b) values(LEAST("Müller","Muffler"));
|
||||
set collation_connection=latin1_german2_ci;
|
||||
insert into t1 (b) values(@@collation_connection);
|
||||
insert into t1 (b) values(LEAST("Müller","Muffler"));
|
||||
--- --master--
|
||||
select * from t1 order by a;
|
||||
a b
|
||||
1 latin1_german1_ci
|
||||
2 Muffler
|
||||
3 latin1_german2_ci
|
||||
4 Müller
|
||||
--- --slave--
|
||||
select * from mysqltest2.t1 order by a;
|
||||
a b
|
||||
1 latin1_german1_ci
|
||||
2 Muffler
|
||||
3 latin1_german2_ci
|
||||
4 Müller
|
||||
set @a= _cp850 'Müller' collate cp850_general_ci;
|
||||
truncate table t1;
|
||||
insert into t1 (b) values(collation(@a));
|
||||
--- --master--
|
||||
select * from t1 order by a;
|
||||
a b
|
||||
1 cp850_general_ci
|
||||
--- --slave--
|
||||
select * from mysqltest2.t1 order by a;
|
||||
a b
|
||||
1 cp850_general_ci
|
||||
drop database mysqltest2;
|
||||
drop database mysqltest3;
|
||||
set global character_set_server=latin2;
|
||||
set global character_set_server=latin1;
|
||||
set global character_set_server=latin2;
|
||||
set global character_set_server=latin1;
|
||||
set one_shot @@character_set_server=latin5;
|
||||
set @@max_join_size=1000;
|
||||
select @@character_set_server;
|
||||
@@character_set_server
|
||||
latin5
|
||||
select @@character_set_server;
|
||||
@@character_set_server
|
||||
latin1
|
||||
set @@character_set_server=latin5;
|
||||
select @@character_set_server;
|
||||
@@character_set_server
|
||||
latin5
|
||||
select @@character_set_server;
|
||||
@@character_set_server
|
||||
latin5
|
||||
set one_shot max_join_size=10;
|
||||
ERROR HY000: The 'SET ONE_SHOT' syntax is reserved for purposes internal to the MySQL server
|
||||
set character_set_client=9999999;
|
||||
ERROR 42000: Unknown character set: '9999999'
|
||||
set collation_server=9999998;
|
||||
ERROR HY000: Unknown collation: '9999998'
|
||||
use test;
|
||||
CREATE TABLE t1 (c1 VARBINARY(255), c2 VARBINARY(255));
|
||||
SET CHARACTER_SET_CLIENT=koi8r,
|
||||
CHARACTER_SET_CONNECTION=cp1251,
|
||||
CHARACTER_SET_RESULTS=koi8r;
|
||||
INSERT INTO t1 (c1, c2) VALUES ('îÕ, ÚÁ ÒÙÂÁÌËÕ','îÕ, ÚÁ ÒÙÂÁÌËÕ');
|
||||
select hex(c1), hex(c2) from t1;
|
||||
hex(c1) hex(c2)
|
||||
CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3
|
||||
select hex(c1), hex(c2) from t1;
|
||||
hex(c1) hex(c2)
|
||||
CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3
|
||||
drop table t1;
|
||||
create table `t1` (
|
||||
`pk` varchar(10) not null default '',
|
||||
primary key (`pk`)
|
||||
) engine=myisam default charset=latin1;
|
||||
set @p=_latin1 'test';
|
||||
update t1 set pk='test' where pk=@p;
|
||||
drop table t1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,23 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
drop table if exists t1;
|
||||
drop procedure if exists p1;
|
||||
create table t1 (a varchar(255) character set sjis);
|
||||
create procedure p1 (in a varchar(255) character set sjis) insert into t1 values (a);
|
||||
SET NAMES binary;
|
||||
CALL p1 ('–\\');
|
||||
select "--- on master ---";
|
||||
--- on master ---
|
||||
--- on master ---
|
||||
select hex(a) from t1 ;
|
||||
hex(a)
|
||||
965C
|
||||
select "--- on slave ---";
|
||||
--- on slave ---
|
||||
--- on slave ---
|
||||
select hex(a) from t1;
|
||||
hex(a)
|
||||
965C
|
||||
drop table t1;
|
||||
drop procedure p1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,261 @@
|
||||
*** Set up circular replication on four servers ***
|
||||
include/rpl_init.inc [topology=1->2->3->4->1]
|
||||
|
||||
[connection server_4]
|
||||
SET auto_increment_increment= 4;
|
||||
SET auto_increment_offset= 4;
|
||||
[connection server_3]
|
||||
SET auto_increment_increment= 4;
|
||||
SET auto_increment_offset= 3;
|
||||
[connection server_2]
|
||||
SET auto_increment_increment= 4;
|
||||
SET auto_increment_offset= 2;
|
||||
[connection server_1]
|
||||
SET auto_increment_increment= 4;
|
||||
SET auto_increment_offset= 1;
|
||||
*** Preparing data ***
|
||||
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT, b VARCHAR(100), c INT NOT NULL, PRIMARY KEY(a)) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT, b VARCHAR(100), c INT NOT NULL, PRIMARY KEY(a)) ENGINE=InnoDB;
|
||||
include/rpl_sync.inc
|
||||
|
||||
*** Testing schema A->B->C->D->A ***
|
||||
|
||||
INSERT INTO t1(b,c) VALUES('A',1);
|
||||
INSERT INTO t1(b,c) VALUES('B',1);
|
||||
INSERT INTO t1(b,c) VALUES('C',1);
|
||||
INSERT INTO t1(b,c) VALUES('D',1);
|
||||
include/rpl_sync.inc
|
||||
SELECT 'Master A',a,b FROM t1 WHERE c = 1 ORDER BY a,b;
|
||||
Master A a b
|
||||
Master A 1 A
|
||||
Master A 2 B
|
||||
Master A 3 C
|
||||
Master A 4 D
|
||||
SELECT 'Master B',a,b FROM t1 WHERE c = 1 ORDER BY a,b;
|
||||
Master B a b
|
||||
Master B 1 A
|
||||
Master B 2 B
|
||||
Master B 3 C
|
||||
Master B 4 D
|
||||
SELECT 'Master C',a,b FROM t1 WHERE c = 1 ORDER BY a,b;
|
||||
Master C a b
|
||||
Master C 1 A
|
||||
Master C 2 B
|
||||
Master C 3 C
|
||||
Master C 4 D
|
||||
SELECT 'Master D',a,b FROM t1 WHERE c = 1 ORDER BY a,b;
|
||||
Master D a b
|
||||
Master D 1 A
|
||||
Master D 2 B
|
||||
Master D 3 C
|
||||
Master D 4 D
|
||||
|
||||
*** Testing schema A->B->D->A if C has failure ***
|
||||
|
||||
* Do failure for C and then make new connection B->D *
|
||||
STOP SLAVE;
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
|
||||
include/start_slave.inc
|
||||
INSERT INTO t1 VALUES(6,'C',2);
|
||||
INSERT INTO t1(b,c) VALUES('B',2);
|
||||
call mtr.add_suppression("Slave SQL.*Duplicate entry .6. for key .PRIMARY.* Error_code: 1062");
|
||||
include/wait_for_slave_sql_error.inc [errno=1062]
|
||||
INSERT INTO t1(b,c) VALUES('A',2);
|
||||
INSERT INTO t1(b,c) VALUES('D',2);
|
||||
|
||||
* Data on servers (C failed) *
|
||||
SELECT 'Master A',a,b FROM t1 WHERE c = 2 ORDER BY a,b;
|
||||
Master A a b
|
||||
Master A 5 A
|
||||
Master A 8 D
|
||||
SELECT 'Master B',a,b FROM t1 WHERE c = 2 ORDER BY a,b;
|
||||
Master B a b
|
||||
Master B 5 A
|
||||
Master B 6 B
|
||||
Master B 8 D
|
||||
SELECT 'Master C',a,b FROM t1 WHERE c = 2 ORDER BY a,b;
|
||||
Master C a b
|
||||
Master C 6 C
|
||||
SELECT 'Master D',a,b FROM t1 WHERE c = 2 ORDER BY a,b;
|
||||
Master D a b
|
||||
Master D 8 D
|
||||
|
||||
* Reconfigure replication to schema A->B->D->A *
|
||||
include/stop_slave_io.inc
|
||||
include/stop_slave.inc
|
||||
include/rpl_change_topology.inc [new topology=1->2->4->1,2->3]
|
||||
include/start_slave.inc
|
||||
|
||||
* Check data inserted before failure *
|
||||
SELECT 'Master A',a,b FROM t1 WHERE c = 2 ORDER BY a,b;
|
||||
Master A a b
|
||||
Master A 5 A
|
||||
Master A 6 B
|
||||
Master A 8 D
|
||||
SELECT 'Master B',a,b FROM t1 WHERE c = 2 ORDER BY a,b;
|
||||
Master B a b
|
||||
Master B 5 A
|
||||
Master B 6 B
|
||||
Master B 8 D
|
||||
SELECT 'Master C',a,b FROM t1 WHERE c = 2 ORDER BY a,b;
|
||||
Master C a b
|
||||
Master C 6 C
|
||||
SELECT 'Master D',a,b FROM t1 WHERE c = 2 ORDER BY a,b;
|
||||
Master D a b
|
||||
Master D 5 A
|
||||
Master D 6 B
|
||||
Master D 8 D
|
||||
|
||||
* Check data inserted after failure *
|
||||
INSERT INTO t1(b,c) VALUES('A',3);
|
||||
INSERT INTO t1(b,c) VALUES('B',3);
|
||||
INSERT INTO t1(b,c) VALUES('D',3);
|
||||
include/rpl_sync.inc
|
||||
SELECT 'Master A',a,b FROM t1 WHERE c = 3 ORDER BY a,b;
|
||||
Master A a b
|
||||
Master A 9 A
|
||||
Master A 10 B
|
||||
Master A 12 D
|
||||
SELECT 'Master B',a,b FROM t1 WHERE c = 3 ORDER BY a,b;
|
||||
Master B a b
|
||||
Master B 9 A
|
||||
Master B 10 B
|
||||
Master B 12 D
|
||||
SELECT 'Master C',a,b FROM t1 WHERE c = 3 ORDER BY a,b;
|
||||
Master C a b
|
||||
SELECT 'Master D',a,b FROM t1 WHERE c = 3 ORDER BY a,b;
|
||||
Master D a b
|
||||
Master D 9 A
|
||||
Master D 10 B
|
||||
Master D 12 D
|
||||
|
||||
*** Testing restoring scheme A->B->C->D->A after failure ***
|
||||
|
||||
* Remove wrong event from C and restore B->C->D *
|
||||
include/stop_slave.inc
|
||||
DELETE FROM t1 WHERE a = 6;
|
||||
include/start_slave.inc
|
||||
RESET MASTER;
|
||||
RESET SLAVE;
|
||||
include/rpl_change_topology.inc [new topology=1->2->3->4->1]
|
||||
include/start_slave.inc
|
||||
include/rpl_sync.inc
|
||||
|
||||
* Check data inserted before restoring schema A->B->C->D->A *
|
||||
SELECT 'Master A',a,b FROM t1 WHERE c IN (2,3) ORDER BY a,b;
|
||||
Master A a b
|
||||
Master A 5 A
|
||||
Master A 6 B
|
||||
Master A 8 D
|
||||
Master A 9 A
|
||||
Master A 10 B
|
||||
Master A 12 D
|
||||
SELECT 'Master B',a,b FROM t1 WHERE c IN (2,3) ORDER BY a,b;
|
||||
Master B a b
|
||||
Master B 5 A
|
||||
Master B 6 B
|
||||
Master B 8 D
|
||||
Master B 9 A
|
||||
Master B 10 B
|
||||
Master B 12 D
|
||||
SELECT 'Master C',a,b FROM t1 WHERE c IN (2,3) ORDER BY a,b;
|
||||
Master C a b
|
||||
Master C 5 A
|
||||
Master C 6 B
|
||||
Master C 8 D
|
||||
Master C 9 A
|
||||
Master C 10 B
|
||||
Master C 12 D
|
||||
SELECT 'Master D',a,b FROM t1 WHERE c IN (2,3) ORDER BY a,b;
|
||||
Master D a b
|
||||
Master D 5 A
|
||||
Master D 6 B
|
||||
Master D 8 D
|
||||
Master D 9 A
|
||||
Master D 10 B
|
||||
Master D 12 D
|
||||
|
||||
* Check data inserted after restoring schema A->B->C->D->A *
|
||||
INSERT INTO t1(b,c) VALUES('A',4);
|
||||
INSERT INTO t1(b,c) VALUES('B',4);
|
||||
INSERT INTO t1(b,c) VALUES('C',4);
|
||||
INSERT INTO t1(b,c) VALUES('D',4);
|
||||
include/rpl_sync.inc
|
||||
SELECT 'Master A',a,b FROM t1 WHERE c = 4 ORDER BY a,b;
|
||||
Master A a b
|
||||
Master A 13 A
|
||||
Master A 14 B
|
||||
Master A 15 C
|
||||
Master A 16 D
|
||||
SELECT 'Master B',a,b FROM t1 WHERE c = 4 ORDER BY a,b;
|
||||
Master B a b
|
||||
Master B 13 A
|
||||
Master B 14 B
|
||||
Master B 15 C
|
||||
Master B 16 D
|
||||
SELECT 'Master C',a,b FROM t1 WHERE c = 4 ORDER BY a,b;
|
||||
Master C a b
|
||||
Master C 13 A
|
||||
Master C 14 B
|
||||
Master C 15 C
|
||||
Master C 16 D
|
||||
SELECT 'Master D',a,b FROM t1 WHERE c = 4 ORDER BY a,b;
|
||||
Master D a b
|
||||
Master D 13 A
|
||||
Master D 14 B
|
||||
Master D 15 C
|
||||
Master D 16 D
|
||||
|
||||
* Transactions with commits *
|
||||
BEGIN;
|
||||
BEGIN;
|
||||
include/rpl_sync.inc
|
||||
SELECT 'Master A',b,COUNT(*) FROM t2 WHERE c = 1 GROUP BY b ORDER BY b;
|
||||
Master A b COUNT(*)
|
||||
Master A A 100
|
||||
Master A B 100
|
||||
Master A C 100
|
||||
Master A D 100
|
||||
SELECT 'Master B',b,COUNT(*) FROM t2 WHERE c = 1 GROUP BY b ORDER BY b;
|
||||
Master B b COUNT(*)
|
||||
Master B A 100
|
||||
Master B B 100
|
||||
Master B C 100
|
||||
Master B D 100
|
||||
SELECT 'Master C',b,COUNT(*) FROM t2 WHERE c = 1 GROUP BY b ORDER BY b;
|
||||
Master C b COUNT(*)
|
||||
Master C A 100
|
||||
Master C B 100
|
||||
Master C C 100
|
||||
Master C D 100
|
||||
SELECT 'Master D',b,COUNT(*) FROM t2 WHERE c = 1 GROUP BY b ORDER BY b;
|
||||
Master D b COUNT(*)
|
||||
Master D A 100
|
||||
Master D B 100
|
||||
Master D C 100
|
||||
Master D D 100
|
||||
|
||||
* Transactions with rollbacks *
|
||||
BEGIN;
|
||||
BEGIN;
|
||||
include/rpl_sync.inc
|
||||
SELECT 'Master A',b,COUNT(*) FROM t2 WHERE c = 2 GROUP BY b ORDER BY b;
|
||||
Master A b COUNT(*)
|
||||
Master A B 100
|
||||
Master A D 100
|
||||
SELECT 'Master B',b,COUNT(*) FROM t2 WHERE c = 2 GROUP BY b ORDER BY b;
|
||||
Master B b COUNT(*)
|
||||
Master B B 100
|
||||
Master B D 100
|
||||
SELECT 'Master C',b,COUNT(*) FROM t2 WHERE c = 2 GROUP BY b ORDER BY b;
|
||||
Master C b COUNT(*)
|
||||
Master C B 100
|
||||
Master C D 100
|
||||
SELECT 'Master D',b,COUNT(*) FROM t2 WHERE c = 2 GROUP BY b ORDER BY b;
|
||||
Master D b COUNT(*)
|
||||
Master D B 100
|
||||
Master D D 100
|
||||
|
||||
*** Clean up ***
|
||||
DROP TABLE t1,t2;
|
||||
include/rpl_end.inc
|
||||
176
build/lib/mysql/mysql-test/suite/rpl/r/rpl_colSize.result
Normal file
176
build/lib/mysql/mysql-test/suite/rpl/r/rpl_colSize.result
Normal file
@@ -0,0 +1,176 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
DROP TABLE IF EXISTS t1;
|
||||
**** Testing WL#3228 changes. ****
|
||||
*** Create "wider" table on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t1 (
|
||||
a float (47),
|
||||
b double (143,9),
|
||||
c decimal (65,30),
|
||||
d numeric (4,0),
|
||||
e bit (32),
|
||||
f char (21),
|
||||
g varchar (1300),
|
||||
h binary (33),
|
||||
j varbinary (200),
|
||||
k enum ('5','6','7', '8','9','0'),
|
||||
l set ('1','2','3','4','5','6','7','8','9','0','11','12','13','14','15','16','17','18','19','21','22','23','24','25','26','27','28','29'),
|
||||
m TINYBLOB,
|
||||
n BLOB,
|
||||
o MEDIUMBLOB,
|
||||
p LONGBLOB,
|
||||
q TINYTEXT,
|
||||
r TEXT,
|
||||
s MEDIUMTEXT,
|
||||
t LONGTEXT
|
||||
);
|
||||
*** Create same table on master but with narrow columns ***
|
||||
CREATE TABLE t1 (
|
||||
a float (44),
|
||||
b double (10,3),
|
||||
c decimal (10,2),
|
||||
d numeric (3,0),
|
||||
e bit (16),
|
||||
f char (10),
|
||||
g varchar (100),
|
||||
h binary (20),
|
||||
j varbinary (20),
|
||||
k enum ('5','6','7'),
|
||||
l set ('1','2','3','4','5','6','7','8','9','0'),
|
||||
m TINYBLOB,
|
||||
n BLOB,
|
||||
o MEDIUMBLOB,
|
||||
p LONGBLOB,
|
||||
q TINYTEXT,
|
||||
r TEXT,
|
||||
s MEDIUMTEXT,
|
||||
t LONGTEXT
|
||||
);
|
||||
RESET MASTER;
|
||||
*** Start replication ***
|
||||
START SLAVE;
|
||||
*** Insert data on master and display it. ***
|
||||
INSERT INTO t1 () VALUES (
|
||||
17.567,
|
||||
2.123,
|
||||
10.20,
|
||||
125,
|
||||
hex(64),
|
||||
'TEST',
|
||||
'This is a test',
|
||||
'binary data',
|
||||
'more binary data',
|
||||
'6',
|
||||
'7',
|
||||
"blob 1",
|
||||
"blob 2",
|
||||
"blob 3",
|
||||
"blob 4",
|
||||
"text 1",
|
||||
"text 2",
|
||||
"text 3",
|
||||
"text 4");
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a b c d e f g h j k l m n o p q r s t
|
||||
17.567 2.123 10.20 125 # TEST This is a test # more binary data 6 7 blob 1 blob 2 blob 3 blob 4 text 1 text 2 text 3 text 4
|
||||
*** Select data from slave to compare ***
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a b c d e f g h j k l m n o p q r s t
|
||||
17.567 2.123000000 10.200000000000000000000000000000 125 # TEST This is a test # more binary data 6 7 blob 1 blob 2 blob 3 blob 4 text 1 text 2 text 3 text 4
|
||||
DROP TABLE t1;
|
||||
Create varchar table on master
|
||||
CREATE TABLE t1 (
|
||||
a VARCHAR(50),
|
||||
b VARCHAR(100),
|
||||
c VARCHAR(300),
|
||||
d CHAR(5)
|
||||
);
|
||||
Alter varchar table on slave
|
||||
ALTER TABLE t1 CHANGE COLUMN a a VARCHAR(100);
|
||||
ALTER TABLE t1 CHANGE COLUMN b b VARCHAR(400);
|
||||
ALTER TABLE t1 CHANGE COLUMN c c VARCHAR(500);
|
||||
ALTER TABLE t1 CHANGE COLUMN d d CHAR(100);
|
||||
Insert some values and select them on master
|
||||
INSERT INTO t1 VALUES ("This is a test of col a.",
|
||||
"This is another test of col b.",
|
||||
"This is a test of the large col c.",
|
||||
"Col d");
|
||||
SELECT * FROM t1;
|
||||
a b c d
|
||||
This is a test of col a. This is another test of col b. This is a test of the large col c. Col d
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(50) DEFAULT NULL,
|
||||
`b` varchar(100) DEFAULT NULL,
|
||||
`c` varchar(300) DEFAULT NULL,
|
||||
`d` char(5) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
Insert some values and select them on slave
|
||||
SELECT * FROM t1;
|
||||
a b c d
|
||||
This is a test of col a. This is another test of col b. This is a test of the large col c. Col d
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(100) DEFAULT NULL,
|
||||
`b` varchar(400) DEFAULT NULL,
|
||||
`c` varchar(500) DEFAULT NULL,
|
||||
`d` char(100) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
Create bit table on master
|
||||
CREATE TABLE t1 (
|
||||
a BIT(7),
|
||||
b BIT(8),
|
||||
c BIT(21),
|
||||
d BIT(11),
|
||||
e BIT(11)
|
||||
);
|
||||
Create bit table on slave
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
a BIT(16),
|
||||
b BIT(22),
|
||||
c BIT(54),
|
||||
d BIT(25),
|
||||
e BIT(13)
|
||||
);
|
||||
Insert some values and select them on master
|
||||
INSERT INTO t1 VALUES (
|
||||
b'1010101',
|
||||
b'10101011',
|
||||
b'101010110101010101111',
|
||||
b'10101010101',
|
||||
b'10101011111'
|
||||
);
|
||||
SELECT BIN(a), BIN(b), BIN(c), BIN(d), BIN(e) FROM t1;
|
||||
BIN(a) BIN(b) BIN(c) BIN(d) BIN(e)
|
||||
1010101 10101011 101010110101010101111 10101010101 10101011111
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` bit(7) DEFAULT NULL,
|
||||
`b` bit(8) DEFAULT NULL,
|
||||
`c` bit(21) DEFAULT NULL,
|
||||
`d` bit(11) DEFAULT NULL,
|
||||
`e` bit(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
Insert some values and select them on master
|
||||
SELECT BIN(a), BIN(b), BIN(c), BIN(d), BIN(e) FROM t1;
|
||||
BIN(a) BIN(b) BIN(c) BIN(d) BIN(e)
|
||||
1010101 10101011 101010110101010101111 10101010101 10101011111
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` bit(16) DEFAULT NULL,
|
||||
`b` bit(22) DEFAULT NULL,
|
||||
`c` bit(54) DEFAULT NULL,
|
||||
`d` bit(25) DEFAULT NULL,
|
||||
`e` bit(13) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
*** Cleanup ***
|
||||
DROP TABLE t1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,10 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE t1 (a INT) ENGINE=innodb;
|
||||
begin;
|
||||
insert into t1 values(1);
|
||||
flush tables with read lock;
|
||||
commit;
|
||||
unlock tables;
|
||||
drop table t1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,108 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
########################################################################
|
||||
# Environment
|
||||
########################################################################
|
||||
CREATE TABLE t (i INT, PRIMARY KEY(i), f CHAR(8)) engine = Innodb;
|
||||
CREATE TABLE n (d DATETIME, f CHAR(32)) engine = MyIsam;
|
||||
CREATE TRIGGER tr AFTER UPDATE ON t FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO n VALUES ( now(), concat( 'updated t: ', old.f, ' -> ', new.f ) );
|
||||
END |
|
||||
INSERT INTO t VALUES (4,'black'), (2,'red'), (3,'yelow'), (1,'cyan');
|
||||
########################################################################
|
||||
# Testing ER_LOCK_WAIT_TIMEOUT
|
||||
########################################################################
|
||||
SET AUTOCOMMIT = 1;
|
||||
BEGIN;
|
||||
UPDATE t SET f = 'yellow 2' WHERE i = 3;
|
||||
SET AUTOCOMMIT = 1;
|
||||
BEGIN;
|
||||
UPDATE t SET f = 'magenta 2' WHERE f = 'red';
|
||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||
INSERT INTO t VALUES (5 + (2 * 10),"brown");
|
||||
INSERT INTO n VALUES (now(),"brown");
|
||||
COMMIT;
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE t SET f = 'yellow 2' WHERE i = 3
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE t SET f = 'magenta 2' WHERE f = 'red'
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t VALUES (5 + (2 * 10),"brown")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO n VALUES (now(),"brown")
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
SET AUTOCOMMIT = 1;
|
||||
BEGIN;
|
||||
UPDATE t SET f = 'gray 2' WHERE i = 3;
|
||||
SET AUTOCOMMIT = 1;
|
||||
BEGIN;
|
||||
UPDATE t SET f = 'dark blue 2' WHERE f = 'red';
|
||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||
INSERT INTO t VALUES (6 + (2 * 10),"brown");
|
||||
INSERT INTO n VALUES (now(),"brown");
|
||||
COMMIT;
|
||||
COMMIT;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE t SET f = 'gray 2' WHERE i = 3
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE t SET f = 'dark blue 2' WHERE f = 'red'
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t VALUES (6 + (2 * 10),"brown")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO n VALUES (now(),"brown")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
SET AUTOCOMMIT = 0;
|
||||
UPDATE t SET f = 'yellow 1' WHERE i = 3;
|
||||
SET AUTOCOMMIT = 0;
|
||||
UPDATE t SET f = 'magenta 1' WHERE f = 'red';
|
||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||
INSERT INTO t VALUES (5 + (1 * 10),"brown");
|
||||
INSERT INTO n VALUES (now(),"brown");
|
||||
COMMIT;
|
||||
ROLLBACK;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE t SET f = 'yellow 1' WHERE i = 3
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE t SET f = 'magenta 1' WHERE f = 'red'
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t VALUES (5 + (1 * 10),"brown")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO n VALUES (now(),"brown")
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
SET AUTOCOMMIT = 0;
|
||||
UPDATE t SET f = 'gray 1' WHERE i = 3;
|
||||
SET AUTOCOMMIT = 0;
|
||||
UPDATE t SET f = 'dark blue 1' WHERE f = 'red';
|
||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||
INSERT INTO t VALUES (6 + (1 * 10),"brown");
|
||||
INSERT INTO n VALUES (now(),"brown");
|
||||
COMMIT;
|
||||
COMMIT;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE t SET f = 'gray 1' WHERE i = 3
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; UPDATE t SET f = 'dark blue 1' WHERE f = 'red'
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t VALUES (6 + (1 * 10),"brown")
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO n VALUES (now(),"brown")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
include/rpl_diff.inc
|
||||
include/rpl_diff.inc
|
||||
########################################################################
|
||||
# Cleanup
|
||||
########################################################################
|
||||
DROP TRIGGER tr;
|
||||
DROP TABLE t;
|
||||
DROP TABLE n;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,54 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE t1(c1 INT);
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; CREATE TABLE t1(c1 INT)
|
||||
|
||||
# Case 1:
|
||||
# ------------------------------------------------------------------
|
||||
# In a statement, some CCs are applied while others are not. The CCs
|
||||
# which are not applied on master will be binlogged as common comments.
|
||||
/*!99999 --- */INSERT /*!INTO*/ /*!10000 t1 */ VALUES(10) /*!99999 ,(11)*/;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; /* 99999 --- */INSERT /*!INTO*/ /*!10000 t1 */ VALUES(10) /* 99999 ,(11)*/
|
||||
include/diff_tables.inc [master:t1,slave:t1]
|
||||
|
||||
# Case 2:
|
||||
# -----------------------------------------------------------------
|
||||
# Verify whether it can be binlogged correctly when executing prepared
|
||||
# statement.
|
||||
PREPARE stmt FROM 'INSERT INTO /*!99999 blabla*/ t1 VALUES(60) /*!99999 ,(61)*/';
|
||||
EXECUTE stmt;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(c1 INT);
|
||||
EXECUTE stmt;
|
||||
include/diff_tables.inc [master:t1,slave:t1]
|
||||
|
||||
SET @value=62;
|
||||
PREPARE stmt FROM 'INSERT INTO /*!99999 blabla */ t1 VALUES(?) /*!99999 ,(63)*/';
|
||||
EXECUTE stmt USING @value;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(c1 INT);
|
||||
EXECUTE stmt USING @value;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO /* 99999 blabla*/ t1 VALUES(60) /* 99999 ,(61)*/
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE t1
|
||||
master-bin.000001 # Query # # use `test`; CREATE TABLE t1(c1 INT)
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO /* 99999 blabla*/ t1 VALUES(60) /* 99999 ,(61)*/
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO /* 99999 blabla */ t1 VALUES(62) /* 99999 ,(63)*/
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE t1
|
||||
master-bin.000001 # Query # # use `test`; CREATE TABLE t1(c1 INT)
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO /* 99999 blabla */ t1 VALUES(62) /* 99999 ,(63)*/
|
||||
include/diff_tables.inc [master:t1,slave:t1]
|
||||
|
||||
# Case 3:
|
||||
# -----------------------------------------------------------------
|
||||
# Verify it can restore the '!', if the it is an uncomplete conditional
|
||||
# comments
|
||||
SELECT c1 FROM /*!99999 t1 WHEREN;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/*!99999 t1 WHEREN' at line 1
|
||||
DROP TABLE t1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,59 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
DROP DATABASE IF EXISTS mysqltest_prometheus;
|
||||
DROP DATABASE IF EXISTS mysqltest_sisyfos;
|
||||
DROP DATABASE IF EXISTS mysqltest_bob;
|
||||
DROP DATABASE IF EXISTS mysqltest_bob;
|
||||
CREATE DATABASE mysqltest_prometheus;
|
||||
CREATE DATABASE mysqltest_sisyfos;
|
||||
CREATE DATABASE mysqltest_bob;
|
||||
USE mysqltest_sisyfos;
|
||||
CREATE TABLE t1 (b int);
|
||||
INSERT INTO t1 VALUES(1);
|
||||
USE mysqltest_bob;
|
||||
CREATE TABLE t2 (b int);
|
||||
INSERT INTO t2 VALUES(2);
|
||||
ALTER DATABASE mysqltest_sisyfos CHARACTER SET latin1;
|
||||
USE mysqltest_sisyfos;
|
||||
ALTER DATABASE mysqltest_bob CHARACTER SET latin1;
|
||||
SHOW DATABASES LIKE 'mysql%';
|
||||
Database (mysql%)
|
||||
mysql
|
||||
mysqltest_bob
|
||||
mysqltest_prometheus
|
||||
mysqltest_sisyfos
|
||||
SHOW DATABASES LIKE 'mysql%';
|
||||
Database (mysql%)
|
||||
mysql
|
||||
mysqltest_prometheus
|
||||
mysqltest_sisyfos
|
||||
DROP DATABASE IF EXISTS mysqltest_sisyfos;
|
||||
USE mysqltest_prometheus;
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
CREATE DATABASE mysqltest_sisyfos;
|
||||
USE mysqltest_sisyfos;
|
||||
CREATE TABLE t2 (a INT);
|
||||
SHOW DATABASES LIKE 'mysql%';
|
||||
Database (mysql%)
|
||||
mysql
|
||||
mysqltest_bob
|
||||
mysqltest_prometheus
|
||||
mysqltest_sisyfos
|
||||
SHOW DATABASES LIKE 'mysql%';
|
||||
Database (mysql%)
|
||||
mysql
|
||||
mysqltest_prometheus
|
||||
mysqltest_sisyfos
|
||||
USE mysqltest_prometheus;
|
||||
SHOW TABLES;
|
||||
Tables_in_mysqltest_prometheus
|
||||
t1
|
||||
USE mysqltest_sisyfos;
|
||||
SHOW TABLES;
|
||||
Tables_in_mysqltest_sisyfos
|
||||
t2
|
||||
DROP DATABASE IF EXISTS mysqltest_prometheus;
|
||||
DROP DATABASE IF EXISTS mysqltest_sisyfos;
|
||||
DROP DATABASE IF EXISTS mysqltest_bob;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,73 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
||||
CREATE DATABASE IF NOT EXISTS mysqltest;
|
||||
USE mysqltest;
|
||||
CREATE TABLE IF NOT EXISTS t(c1 int);
|
||||
CREATE TABLE IF NOT EXISTS t1 LIKE t;
|
||||
CREATE TABLE IF NOT EXISTS t2 SELECT * FROM t;
|
||||
CREATE EVENT IF NOT EXISTS e
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
|
||||
DO SELECT now();
|
||||
DROP DATABASE mysqltest;
|
||||
CREATE DATABASE IF NOT EXISTS mysqltest;
|
||||
USE mysqltest;
|
||||
CREATE TABLE IF NOT EXISTS t(c1 int);
|
||||
CREATE TABLE IF NOT EXISTS t1 LIKE t;
|
||||
CREATE TABLE IF NOT EXISTS t2 SELECT * FROM t;
|
||||
CREATE EVENT IF NOT EXISTS e
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
|
||||
DO SELECT now();
|
||||
SHOW TABLES in mysqltest;
|
||||
Tables_in_mysqltest
|
||||
t
|
||||
t1
|
||||
t2
|
||||
SHOW EVENTS in mysqltest;
|
||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||
mysqltest e root@localhost SYSTEM ONE TIME # NULL NULL NULL NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
||||
-------------BUG#47418-------------
|
||||
USE test;
|
||||
DROP TABLE IF EXISTS t3;
|
||||
CREATE TABLE t3(c1 INTEGER);
|
||||
INSERT INTO t3 VALUES(33);
|
||||
CREATE TEMPORARY TABLE t1(c1 INTEGER);
|
||||
CREATE TEMPORARY TABLE t2(c1 INTEGER);
|
||||
INSERT INTO t1 VALUES(1);
|
||||
INSERT INTO t2 VALUES(1);
|
||||
CREATE TABLE IF NOT EXISTS t1(c1 INTEGER) SELECT c1 FROM t3;
|
||||
CREATE TABLE t2(c1 INTEGER) SELECT c1 FROM t3;
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
1
|
||||
SELECT * FROM t2;
|
||||
c1
|
||||
1
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
33
|
||||
SELECT * FROM t2;
|
||||
c1
|
||||
33
|
||||
DROP TEMPORARY TABLE t1;
|
||||
DROP TEMPORARY TABLE t2;
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
33
|
||||
SELECT * FROM t2;
|
||||
c1
|
||||
33
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t3;
|
||||
|
||||
# Bug#55616 Killing thread or query during CREATE IF NOT EXISTS makes
|
||||
# slave SQL thread abort
|
||||
|
||||
CREATE TABLE t1 ( i INT );
|
||||
CREATE TABLE IF NOT EXISTS t1
|
||||
AS SELECT SLEEP(3);
|
||||
KILL QUERY master1;
|
||||
DROP TABLE t1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,24 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp(c1 int);
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp(c1 int);
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp1 LIKE tmp;
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp1 LIKE tmp;
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp2 SELECT * FROM tmp;
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp2 SELECT * FROM tmp;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # DROP DATABASE IF EXISTS mysqltest
|
||||
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp(c1 int)
|
||||
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp(c1 int)
|
||||
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp1 LIKE tmp
|
||||
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp1 LIKE tmp
|
||||
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp2 SELECT * FROM tmp
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS `tmp2` (
|
||||
`c1` int(11) DEFAULT NULL
|
||||
)
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO `test`.`tmp2` (`c1`) SELECT * FROM tmp
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1 @@
|
||||
Turn on parsing to run this test
|
||||
@@ -0,0 +1,56 @@
|
||||
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;
|
||||
CREATE TABLE t1 (data LONGBLOB) ENGINE=MYISAM;
|
||||
CREATE TABLE t2 (data LONGBLOB) ENGINE=MYISAM;
|
||||
INSERT INTO t1 (data) VALUES (repeat('a',1024*1024));
|
||||
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 t2 SELECT * FROM t1;
|
||||
KILL QUERY 2;
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
0
|
||||
SHOW SLAVE STATUS;
|
||||
Slave_IO_State #
|
||||
Master_Host 127.0.0.1
|
||||
Master_User root
|
||||
Master_Port MASTER_PORT
|
||||
Connect_Retry 1
|
||||
Master_Log_File master-bin.000001
|
||||
Read_Master_Log_Pos #
|
||||
Relay_Log_File #
|
||||
Relay_Log_Pos #
|
||||
Relay_Master_Log_File master-bin.000001
|
||||
Slave_IO_Running Yes
|
||||
Slave_SQL_Running No
|
||||
Replicate_Do_DB
|
||||
Replicate_Ignore_DB
|
||||
Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1317
|
||||
Last_Error #
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
Relay_Log_Space #
|
||||
Until_Condition None
|
||||
Until_Log_File
|
||||
Until_Log_Pos 0
|
||||
Master_SSL_Allowed No
|
||||
Master_SSL_CA_File
|
||||
Master_SSL_CA_Path
|
||||
Master_SSL_Cert
|
||||
Master_SSL_Cipher
|
||||
Master_SSL_Key
|
||||
Seconds_Behind_Master #
|
||||
@@ -0,0 +1,19 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
==== Initialize ====
|
||||
include/stop_slave.inc
|
||||
RESET SLAVE;
|
||||
include/setup_fake_relay_log.inc
|
||||
Setting up fake replication from MYSQL_TEST_DIR/suite/binlog/std_data/binlog_old_version_4_1.000001
|
||||
==== Test ====
|
||||
start slave sql_thread;
|
||||
include/wait_for_slave_param.inc [Exec_Master_Log_Pos]
|
||||
==== a prove that the fake has been processed successfully ====
|
||||
SELECT COUNT(*) - 17920 as zero FROM t3;
|
||||
zero
|
||||
0
|
||||
==== Clean up ====
|
||||
include/stop_slave_sql.inc
|
||||
include/cleanup_fake_relay_log.inc
|
||||
drop table t1, t3;
|
||||
include/rpl_end.inc
|
||||
187
build/lib/mysql/mysql-test/suite/rpl/r/rpl_current_user.result
Normal file
187
build/lib/mysql/mysql-test/suite/rpl/r/rpl_current_user.result
Normal file
@@ -0,0 +1,187 @@
|
||||
include/rpl_init.inc [topology=1->2->3]
|
||||
include/rpl_connect.inc [creating master]
|
||||
include/rpl_connect.inc [creating slave]
|
||||
CREATE TABLE t1(c1 char(100));
|
||||
CREATE VIEW test.v_user AS SELECT * FROM mysql.user WHERE User LIKE 'bug48321%';
|
||||
CREATE VIEW test.v_tables_priv AS SELECT * FROM mysql.tables_priv WHERE User LIKE 'bug48321%';
|
||||
CREATE VIEW test.v_procs_priv AS SELECT * FROM mysql.procs_priv WHERE User LIKE 'bug48321%';
|
||||
CREATE VIEW test.v_event AS SELECT definer FROM mysql.event WHERE name = 'e1';
|
||||
CREATE PROCEDURE p1() SELECT 1;
|
||||
# bug48321_1-01234 has the max length(16) of user.
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1-01234'@'localhost' WITH GRANT OPTION;
|
||||
|
||||
# Make sure the max lengths of user and host
|
||||
# the user name is too lengh
|
||||
GRANT CREATE USER ON *.* TO '01234567890123456'@'fakehost';
|
||||
ERROR HY000: String '01234567890123456' is too long for user name (should be no longer than 16)
|
||||
# the host name is too lengh
|
||||
GRANT CREATE USER ON *.* TO 'fakename'@'0123456789012345678901234567890123456789012345678901234567890';
|
||||
ERROR HY000: String '0123456789012345678901234567890123456789012345678901234567890' is too long for host name (should be no longer than 60)
|
||||
|
||||
# User 'bug48321_1-01234' connects to master by conn1
|
||||
# [On conn1]
|
||||
# Verify 'REVOKE ALL' statement
|
||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM CURRENT_USER();
|
||||
include/rpl_sync.inc
|
||||
include/diff_tables.inc [server_1:v_user, server_2:v_user, server_3:v_user]
|
||||
|
||||
# Verify 'GRANT ... ON TABLE ...' statement
|
||||
GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER();
|
||||
include/rpl_sync.inc
|
||||
include/diff_tables.inc [server_1:v_tables_priv, server_2:v_tables_priv, server_3:v_tables_priv]
|
||||
|
||||
# Verify 'GRANT ... ON PROCEDURE...' statement
|
||||
GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO CURRENT_USER();
|
||||
include/rpl_sync.inc
|
||||
include/diff_tables.inc [server_1:v_procs_priv, server_2:v_procs_priv, server_3:v_procs_priv]
|
||||
|
||||
# Verify 'GRANT ... ON *.* ...' statement
|
||||
GRANT ALL PRIVILEGES ON *.* TO CURRENT_USER() WITH GRANT OPTION;
|
||||
include/rpl_sync.inc
|
||||
include/diff_tables.inc [server_1:v_procs_priv, server_2:v_procs_priv, server_3:v_procs_priv]
|
||||
|
||||
# Verify 'REVOKE ... ON TABLE ...' statement
|
||||
REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER();
|
||||
include/rpl_sync.inc
|
||||
include/diff_tables.inc [server_1:v_tables_priv, server_2:v_tables_priv, server_3:v_tables_priv]
|
||||
|
||||
# Verify 'REVOKE ... ON PROCEDURE...' statement
|
||||
REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM CURRENT_USER();
|
||||
include/rpl_sync.inc
|
||||
include/diff_tables.inc [server_1:v_procs_priv, server_2:v_procs_priv, server_3:v_procs_priv]
|
||||
|
||||
# Verify 'REVOKE ... ON *.* ...' statement
|
||||
REVOKE ALL PRIVILEGES ON *.* FROM CURRENT_USER();
|
||||
include/rpl_sync.inc
|
||||
include/diff_tables.inc [server_1:v_user, server_2:v_user, server_3:v_user]
|
||||
|
||||
# Verify 'GRANT ...' statement in the procedure
|
||||
CREATE PROCEDURE my_grant()
|
||||
GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER();
|
||||
call my_grant;
|
||||
include/rpl_sync.inc
|
||||
include/diff_tables.inc [server_1:v_tables_priv, server_2:v_tables_priv, server_3:v_tables_priv]
|
||||
|
||||
# Verify 'REVOKE ... ON TABLE ...' statement in the procedure
|
||||
CREATE PROCEDURE my_revoke()
|
||||
REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER();
|
||||
call my_revoke;
|
||||
include/rpl_sync.inc
|
||||
include/diff_tables.inc [server_1:v_tables_priv, server_2:v_tables_priv, server_3:v_tables_priv]
|
||||
|
||||
# Verify 'RENAME USER ...' statement
|
||||
RENAME USER CURRENT_USER TO 'bug48321_2'@'localhost';
|
||||
include/rpl_sync.inc
|
||||
include/diff_tables.inc [server_1:v_user, server_2:v_user, server_3:v_user]
|
||||
|
||||
# Verify 'DROP USER ...' statement
|
||||
GRANT CREATE USER ON *.* TO 'bug48321_2'@'localhost';
|
||||
DROP USER CURRENT_USER();
|
||||
include/rpl_sync.inc
|
||||
include/diff_tables.inc [server_1:v_user, server_2:v_user, server_3:v_user]
|
||||
|
||||
# Verify 'ALTER EVENT...' statement
|
||||
CREATE EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT * FROM t1;
|
||||
# Explicitly assign CURRENT_USER() to definer
|
||||
ALTER DEFINER=CURRENT_USER() EVENT e1 ENABLE;
|
||||
include/rpl_sync.inc
|
||||
include/diff_tables.inc [server_1:v_event, server_2:v_event, server_3:v_event]
|
||||
|
||||
# Session user will be set as definer, if the statement does not assign
|
||||
# a definer
|
||||
ALTER EVENT e1 ENABLE;
|
||||
include/rpl_sync.inc
|
||||
include/diff_tables.inc [server_1:v_event, server_2:v_event, server_3:v_event]
|
||||
|
||||
# Verify that this patch does not affect the calling of CURRENT_USER()
|
||||
# in the other statements
|
||||
# [On master]
|
||||
INSERT INTO t1 VALUES(CURRENT_USER()), ('1234');
|
||||
Warnings:
|
||||
Note 1592 Statement may not be safe to log in statement format.
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
root@localhost
|
||||
1234
|
||||
# [On slave]
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
@
|
||||
1234
|
||||
# [On server_3]
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
@
|
||||
1234
|
||||
# [On master]
|
||||
UPDATE t1 SET c1=CURRENT_USER() WHERE c1='1234';
|
||||
Warnings:
|
||||
Note 1592 Statement may not be safe to log in statement format.
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
root@localhost
|
||||
root@localhost
|
||||
# [On slave]
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
@
|
||||
@
|
||||
# [On server_3]
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
@
|
||||
@
|
||||
# [On master]
|
||||
DELETE FROM t1 WHERE c1=CURRENT_USER();
|
||||
Warnings:
|
||||
Note 1592 Statement may not be safe to log in statement format.
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
# [On slave]
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
# [On server_3]
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
# [On master]
|
||||
CREATE TABLE t2(c1 char(100));
|
||||
CREATE FUNCTION my_user() RETURNS VARCHAR(64)
|
||||
SQL SECURITY INVOKER
|
||||
BEGIN
|
||||
INSERT INTO t2 VALUES(CURRENT_USER());
|
||||
RETURN CURRENT_USER();
|
||||
END |
|
||||
INSERT INTO t1 VALUES(my_user());
|
||||
Warnings:
|
||||
Note 1592 Statement may not be safe to log in statement format.
|
||||
Note 1592 Statement may not be safe to log in statement format.
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
root@localhost
|
||||
SELECT * FROM t2;
|
||||
c1
|
||||
root@localhost
|
||||
# [On slave]
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
@
|
||||
SELECT * FROM t2;
|
||||
c1
|
||||
@
|
||||
# [On server_3]
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
@
|
||||
SELECT * FROM t2;
|
||||
c1
|
||||
@
|
||||
|
||||
# END
|
||||
DROP TABLE t1, t2;
|
||||
DROP VIEW v_user, v_tables_priv, v_procs_priv, v_event;
|
||||
DROP PROCEDURE p1;
|
||||
DROP PROCEDURE my_grant;
|
||||
DROP PROCEDURE my_revoke;
|
||||
DROP FUNCTION my_user;
|
||||
DROP EVENT e1;
|
||||
include/rpl_end.inc
|
||||
1628
build/lib/mysql/mysql-test/suite/rpl/r/rpl_ddl.result
Normal file
1628
build/lib/mysql/mysql-test/suite/rpl/r/rpl_ddl.result
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,110 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
*** Prepare tables and data ***
|
||||
CREATE TABLE t1 (a INT NOT NULL, KEY(a)) ENGINE=innodb;
|
||||
CREATE TABLE t2 (a INT) ENGINE=innodb;
|
||||
CREATE TABLE t3 (a INT NOT NULL, KEY(a)) ENGINE=innodb;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) NOT NULL,
|
||||
KEY `a` (`a`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE t3;
|
||||
Table Create Table
|
||||
t3 CREATE TABLE `t3` (
|
||||
`a` int(11) NOT NULL,
|
||||
KEY `a` (`a`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
SHOW VARIABLES LIKE 'slave_transaction_retries';
|
||||
Variable_name Value
|
||||
slave_transaction_retries 2
|
||||
include/stop_slave.inc
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (2), (2), (2), (2), (2), (2), (2), (2), (2);
|
||||
INSERT INTO t3 VALUES (3);
|
||||
COMMIT;
|
||||
|
||||
*** Test deadlock ***
|
||||
BEGIN;
|
||||
SELECT * FROM t1 FOR UPDATE;
|
||||
a
|
||||
START SLAVE;
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
0
|
||||
COMMIT;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
SELECT * FROM t3;
|
||||
a
|
||||
3
|
||||
include/check_slave_is_running.inc
|
||||
|
||||
*** Test lock wait timeout ***
|
||||
include/stop_slave.inc
|
||||
DELETE FROM t2;
|
||||
CHANGE MASTER TO MASTER_LOG_POS=MASTER_POS_BEGIN;
|
||||
BEGIN;
|
||||
SELECT * FROM t1 FOR UPDATE;
|
||||
a
|
||||
1
|
||||
START SLAVE;
|
||||
include/wait_for_slave_sql_error.inc [errno=1205]
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
0
|
||||
COMMIT;
|
||||
include/start_slave.inc
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
1
|
||||
SELECT * FROM t3;
|
||||
a
|
||||
3
|
||||
3
|
||||
include/check_slave_is_running.inc
|
||||
|
||||
*** Test lock wait timeout and purged relay logs ***
|
||||
SET @my_max_relay_log_size= @@global.max_relay_log_size;
|
||||
SET global max_relay_log_size=0;
|
||||
include/stop_slave.inc
|
||||
DELETE FROM t2;
|
||||
CHANGE MASTER TO MASTER_LOG_POS=MASTER_POS_BEGIN;
|
||||
BEGIN;
|
||||
SELECT * FROM t1 FOR UPDATE;
|
||||
a
|
||||
1
|
||||
1
|
||||
START SLAVE;
|
||||
include/wait_for_slave_sql_error.inc [errno=1205]
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
0
|
||||
COMMIT;
|
||||
include/start_slave.inc
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
1
|
||||
1
|
||||
SELECT * FROM t3;
|
||||
a
|
||||
3
|
||||
3
|
||||
3
|
||||
include/check_slave_is_running.inc
|
||||
|
||||
*** Clean up ***
|
||||
DROP TABLE t1,t2,t3;
|
||||
SET global max_relay_log_size= @my_max_relay_log_size;
|
||||
End of 5.1 tests
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,12 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
create table t1 (a int, b int) engine=myisam;
|
||||
insert into t1 values(1,1);
|
||||
select * from t1;
|
||||
a b
|
||||
1 1
|
||||
delete from t1;
|
||||
select * from t1;
|
||||
a b
|
||||
drop table t1;
|
||||
include/rpl_end.inc
|
||||
261
build/lib/mysql/mysql-test/suite/rpl/r/rpl_do_grant.result
Normal file
261
build/lib/mysql/mysql-test/suite/rpl/r/rpl_do_grant.result
Normal file
@@ -0,0 +1,261 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
delete from mysql.user where user=_binary'rpl_do_grant';
|
||||
delete from mysql.db where user=_binary'rpl_do_grant';
|
||||
flush privileges;
|
||||
delete from mysql.user where user=_binary'rpl_ignore_grant';
|
||||
delete from mysql.db where user=_binary'rpl_ignore_grant';
|
||||
flush privileges;
|
||||
grant select on *.* to rpl_do_grant@localhost;
|
||||
grant drop on test.* to rpl_do_grant@localhost;
|
||||
show grants for rpl_do_grant@localhost;
|
||||
Grants for rpl_do_grant@localhost
|
||||
GRANT SELECT ON *.* TO 'rpl_do_grant'@'localhost'
|
||||
GRANT DROP ON `test`.* TO 'rpl_do_grant'@'localhost'
|
||||
set password for rpl_do_grant@localhost=password("does it work?");
|
||||
select password<>_binary'' from mysql.user where user=_binary'rpl_do_grant';
|
||||
password<>_binary''
|
||||
1
|
||||
update mysql.user set password='' where user='rpl_do_grant';
|
||||
flush privileges;
|
||||
select password<>'' from mysql.user where user='rpl_do_grant';
|
||||
password<>''
|
||||
0
|
||||
set sql_mode='ANSI_QUOTES';
|
||||
set password for rpl_do_grant@localhost=password('does it work?');
|
||||
set sql_mode='';
|
||||
select password<>'' from mysql.user where user='rpl_do_grant';
|
||||
password<>''
|
||||
1
|
||||
delete from mysql.user where user=_binary'rpl_do_grant';
|
||||
delete from mysql.db where user=_binary'rpl_do_grant';
|
||||
flush privileges;
|
||||
delete from mysql.user where user=_binary'rpl_do_grant';
|
||||
delete from mysql.db where user=_binary'rpl_do_grant';
|
||||
flush privileges;
|
||||
show grants for rpl_do_grant@localhost;
|
||||
ERROR 42000: There is no such grant defined for user 'rpl_do_grant' on host 'localhost'
|
||||
show grants for rpl_do_grant@localhost;
|
||||
ERROR 42000: There is no such grant defined for user 'rpl_do_grant' on host 'localhost'
|
||||
create user rpl_do_grant@localhost;
|
||||
show grants for rpl_do_grant@localhost;
|
||||
Grants for rpl_do_grant@localhost
|
||||
GRANT USAGE ON *.* TO 'rpl_do_grant'@'localhost'
|
||||
show grants for rpl_do_grant2@localhost;
|
||||
ERROR 42000: There is no such grant defined for user 'rpl_do_grant2' on host 'localhost'
|
||||
show grants for rpl_do_grant@localhost;
|
||||
Grants for rpl_do_grant@localhost
|
||||
GRANT USAGE ON *.* TO 'rpl_do_grant'@'localhost'
|
||||
show grants for rpl_do_grant2@localhost;
|
||||
ERROR 42000: There is no such grant defined for user 'rpl_do_grant2' on host 'localhost'
|
||||
rename user rpl_do_grant@localhost to rpl_do_grant2@localhost;
|
||||
show grants for rpl_do_grant2@localhost;
|
||||
Grants for rpl_do_grant2@localhost
|
||||
GRANT USAGE ON *.* TO 'rpl_do_grant2'@'localhost'
|
||||
show grants for rpl_do_grant2@localhost;
|
||||
Grants for rpl_do_grant2@localhost
|
||||
GRANT USAGE ON *.* TO 'rpl_do_grant2'@'localhost'
|
||||
grant DELETE,INSERT on mysqltest1.* to rpl_do_grant2@localhost;
|
||||
show grants for rpl_do_grant2@localhost;
|
||||
Grants for rpl_do_grant2@localhost
|
||||
GRANT USAGE ON *.* TO 'rpl_do_grant2'@'localhost'
|
||||
GRANT INSERT, DELETE ON `mysqltest1`.* TO 'rpl_do_grant2'@'localhost'
|
||||
show grants for rpl_do_grant2@localhost;
|
||||
Grants for rpl_do_grant2@localhost
|
||||
GRANT USAGE ON *.* TO 'rpl_do_grant2'@'localhost'
|
||||
GRANT INSERT, DELETE ON `mysqltest1`.* TO 'rpl_do_grant2'@'localhost'
|
||||
revoke DELETE on mysqltest1.* from rpl_do_grant2@localhost;
|
||||
show grants for rpl_do_grant2@localhost;
|
||||
Grants for rpl_do_grant2@localhost
|
||||
GRANT USAGE ON *.* TO 'rpl_do_grant2'@'localhost'
|
||||
GRANT INSERT ON `mysqltest1`.* TO 'rpl_do_grant2'@'localhost'
|
||||
show grants for rpl_do_grant2@localhost;
|
||||
Grants for rpl_do_grant2@localhost
|
||||
GRANT USAGE ON *.* TO 'rpl_do_grant2'@'localhost'
|
||||
GRANT INSERT ON `mysqltest1`.* TO 'rpl_do_grant2'@'localhost'
|
||||
revoke all privileges, grant option from rpl_do_grant2@localhost;
|
||||
show grants for rpl_do_grant2@localhost;
|
||||
Grants for rpl_do_grant2@localhost
|
||||
GRANT USAGE ON *.* TO 'rpl_do_grant2'@'localhost'
|
||||
show grants for rpl_do_grant2@localhost;
|
||||
Grants for rpl_do_grant2@localhost
|
||||
GRANT USAGE ON *.* TO 'rpl_do_grant2'@'localhost'
|
||||
drop user rpl_do_grant2@localhost;
|
||||
show grants for rpl_do_grant2@localhost;
|
||||
ERROR 42000: There is no such grant defined for user 'rpl_do_grant2' on host 'localhost'
|
||||
show grants for rpl_do_grant2@localhost;
|
||||
ERROR 42000: There is no such grant defined for user 'rpl_do_grant2' on host 'localhost'
|
||||
call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
|
||||
DROP DATABASE IF EXISTS bug42217_db;
|
||||
CREATE DATABASE bug42217_db;
|
||||
GRANT CREATE ROUTINE ON bug42217_db.* TO 'create_rout_db'@'localhost'
|
||||
IDENTIFIED BY 'create_rout_db' WITH GRANT OPTION;
|
||||
USE bug42217_db;
|
||||
CREATE FUNCTION upgrade_del_func() RETURNS CHAR(30)
|
||||
BEGIN
|
||||
RETURN "INSIDE upgrade_del_func()";
|
||||
END//
|
||||
USE bug42217_db;
|
||||
SELECT * FROM mysql.procs_priv;
|
||||
Host Db User Routine_name Routine_type Grantor Proc_priv Timestamp
|
||||
localhost bug42217_db create_rout_db upgrade_del_func FUNCTION create_rout_db@localhost Execute,Alter Routine #
|
||||
SELECT upgrade_del_func();
|
||||
upgrade_del_func()
|
||||
INSIDE upgrade_del_func()
|
||||
SELECT * FROM mysql.procs_priv;
|
||||
Host Db User Routine_name Routine_type Grantor Proc_priv Timestamp
|
||||
localhost bug42217_db create_rout_db upgrade_del_func FUNCTION create_rout_db@localhost Execute,Alter Routine #
|
||||
SHOW GRANTS FOR 'create_rout_db'@'localhost';
|
||||
Grants for create_rout_db@localhost
|
||||
GRANT USAGE ON *.* TO 'create_rout_db'@'localhost' IDENTIFIED BY PASSWORD '*08792480350CBA057BDE781B9DF183B263934601'
|
||||
GRANT CREATE ROUTINE ON `bug42217_db`.* TO 'create_rout_db'@'localhost' WITH GRANT OPTION
|
||||
GRANT EXECUTE, ALTER ROUTINE ON FUNCTION `bug42217_db`.`upgrade_del_func` TO 'create_rout_db'@'localhost'
|
||||
USE bug42217_db;
|
||||
SHOW CREATE FUNCTION upgrade_del_func;
|
||||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||||
upgrade_del_func CREATE DEFINER=`create_rout_db`@`localhost` FUNCTION `upgrade_del_func`() RETURNS char(30) CHARSET latin1
|
||||
BEGIN
|
||||
RETURN "INSIDE upgrade_del_func()";
|
||||
END latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
SELECT upgrade_del_func();
|
||||
upgrade_del_func()
|
||||
INSIDE upgrade_del_func()
|
||||
"Check whether the definer user will be able to execute the replicated routine on slave"
|
||||
USE bug42217_db;
|
||||
SHOW CREATE FUNCTION upgrade_del_func;
|
||||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||||
upgrade_del_func CREATE DEFINER=`create_rout_db`@`localhost` FUNCTION `upgrade_del_func`() RETURNS char(30) CHARSET latin1
|
||||
BEGIN
|
||||
RETURN "INSIDE upgrade_del_func()";
|
||||
END latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
SELECT upgrade_del_func();
|
||||
upgrade_del_func()
|
||||
INSIDE upgrade_del_func()
|
||||
DELETE FROM mysql.procs_priv;
|
||||
FLUSH PRIVILEGES;
|
||||
USE bug42217_db;
|
||||
"Can't execute the replicated routine on slave like before after procs privilege is deleted "
|
||||
SELECT upgrade_del_func();
|
||||
ERROR 42000: execute command denied to user 'create_rout_db'@'localhost' for routine 'bug42217_db.upgrade_del_func'
|
||||
"Test the user who creates a function on master doesn't exist on slave."
|
||||
"Hence SQL thread ACL_GLOBAL privilege jumps in and no mysql.procs_priv is inserted"
|
||||
DROP USER 'create_rout_db'@'localhost';
|
||||
CREATE FUNCTION upgrade_alter_func() RETURNS CHAR(30)
|
||||
BEGIN
|
||||
RETURN "INSIDE upgrade_alter_func()";
|
||||
END//
|
||||
SELECT upgrade_alter_func();
|
||||
upgrade_alter_func()
|
||||
INSIDE upgrade_alter_func()
|
||||
SHOW CREATE FUNCTION upgrade_alter_func;
|
||||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||||
upgrade_alter_func CREATE DEFINER=`create_rout_db`@`localhost` FUNCTION `upgrade_alter_func`() RETURNS char(30) CHARSET latin1
|
||||
BEGIN
|
||||
RETURN "INSIDE upgrade_alter_func()";
|
||||
END latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
"Should no privilege record for upgrade_alter_func in mysql.procs_priv"
|
||||
SELECT * FROM mysql.procs_priv;
|
||||
Host Db User Routine_name Routine_type Grantor Proc_priv Timestamp
|
||||
SELECT upgrade_alter_func();
|
||||
ERROR HY000: The user specified as a definer ('create_rout_db'@'localhost') does not exist
|
||||
USE bug42217_db;
|
||||
DROP FUNCTION upgrade_del_func;
|
||||
DROP FUNCTION upgrade_alter_func;
|
||||
DROP DATABASE bug42217_db;
|
||||
SET SQL_LOG_BIN= 0;
|
||||
DROP USER 'create_rout_db'@'localhost';
|
||||
SET SQL_LOG_BIN= 1;
|
||||
include/rpl_reset.inc
|
||||
USE test;
|
||||
######## BUG#49119 #######
|
||||
### i) test case from the 'how to repeat section'
|
||||
CREATE TABLE t1(c1 INT);
|
||||
CREATE PROCEDURE p1() SELECT * FROM t1 |
|
||||
REVOKE EXECUTE ON PROCEDURE p1 FROM 'root'@'localhost';
|
||||
ERROR 42000: There is no such grant defined for user 'root' on host 'localhost' on routine 'p1'
|
||||
DROP TABLE t1;
|
||||
DROP PROCEDURE p1;
|
||||
### ii) Test case in which REVOKE partially succeeds
|
||||
include/rpl_reset.inc
|
||||
CREATE TABLE t1(c1 INT);
|
||||
CREATE PROCEDURE p1() SELECT * FROM t1 |
|
||||
CREATE USER 'user49119'@'localhost';
|
||||
GRANT EXECUTE ON PROCEDURE p1 TO 'user49119'@'localhost';
|
||||
##############################################################
|
||||
### Showing grants for both users: root and user49119 (master)
|
||||
SHOW GRANTS FOR 'user49119'@'localhost';
|
||||
Grants for user49119@localhost
|
||||
GRANT USAGE ON *.* TO 'user49119'@'localhost'
|
||||
GRANT EXECUTE ON PROCEDURE `test`.`p1` TO 'user49119'@'localhost'
|
||||
SHOW GRANTS FOR CURRENT_USER;
|
||||
Grants for root@localhost
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||
##############################################################
|
||||
##############################################################
|
||||
### Showing grants for both users: root and user49119 (master)
|
||||
SHOW GRANTS FOR 'user49119'@'localhost';
|
||||
Grants for user49119@localhost
|
||||
GRANT USAGE ON *.* TO 'user49119'@'localhost'
|
||||
GRANT EXECUTE ON PROCEDURE `test`.`p1` TO 'user49119'@'localhost'
|
||||
SHOW GRANTS FOR CURRENT_USER;
|
||||
Grants for root@localhost
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||
##############################################################
|
||||
## This statement will make the revoke fail because root has no
|
||||
## execute grant. However, it will still revoke the grant for
|
||||
## user49119.
|
||||
REVOKE EXECUTE ON PROCEDURE p1 FROM 'user49119'@'localhost', 'root'@'localhost';
|
||||
ERROR 42000: There is no such grant defined for user 'root' on host 'localhost' on routine 'p1'
|
||||
##############################################################
|
||||
### Showing grants for both users: root and user49119 (master)
|
||||
### after revoke statement failure
|
||||
SHOW GRANTS FOR 'user49119'@'localhost';
|
||||
Grants for user49119@localhost
|
||||
GRANT USAGE ON *.* TO 'user49119'@'localhost'
|
||||
SHOW GRANTS FOR CURRENT_USER;
|
||||
Grants for root@localhost
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||
##############################################################
|
||||
#############################################################
|
||||
### Showing grants for both users: root and user49119 (slave)
|
||||
### after revoke statement failure (should match
|
||||
SHOW GRANTS FOR 'user49119'@'localhost';
|
||||
Grants for user49119@localhost
|
||||
GRANT USAGE ON *.* TO 'user49119'@'localhost'
|
||||
SHOW GRANTS FOR CURRENT_USER;
|
||||
Grants for root@localhost
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||
##############################################################
|
||||
DROP TABLE t1;
|
||||
DROP PROCEDURE p1;
|
||||
DROP USER 'user49119'@'localhost';
|
||||
include/rpl_reset.inc
|
||||
grant all on *.* to foo@"1.2.3.4";
|
||||
revoke all privileges, grant option from "foo";
|
||||
ERROR HY000: Can't revoke all privileges for one or more of the requested users
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; grant all on *.* to foo@"1.2.3.4"
|
||||
master-bin.000001 # Query # # use `test`; revoke all privileges, grant option from "foo"
|
||||
include/check_slave_no_error.inc
|
||||
DROP USER foo@"1.2.3.4";
|
||||
|
||||
# Bug#27606 GRANT statement should be replicated with DEFINER information
|
||||
include/rpl_reset.inc
|
||||
GRANT SELECT, INSERT ON mysql.user TO user_bug27606@localhost;
|
||||
SELECT Grantor FROM mysql.tables_priv WHERE User='user_bug27606';
|
||||
Grantor
|
||||
root@localhost
|
||||
SELECT Grantor FROM mysql.tables_priv WHERE User='user_bug27606';
|
||||
Grantor
|
||||
root@localhost
|
||||
REVOKE SELECT ON mysql.user FROM user_bug27606@localhost;
|
||||
SELECT Grantor FROM mysql.tables_priv WHERE User='user_bug27606';
|
||||
Grantor
|
||||
root@localhost
|
||||
SELECT Grantor FROM mysql.tables_priv WHERE User='user_bug27606';
|
||||
Grantor
|
||||
root@localhost
|
||||
DROP USER user_bug27606@localhost;
|
||||
"End of test"
|
||||
include/rpl_end.inc
|
||||
30
build/lib/mysql/mysql-test/suite/rpl/r/rpl_drop.result
Normal file
30
build/lib/mysql/mysql-test/suite/rpl/r/rpl_drop.result
Normal file
@@ -0,0 +1,30 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
create table t1 (a int);
|
||||
drop table t1, t2;
|
||||
ERROR 42S02: Unknown table 't2'
|
||||
include/stop_slave.inc
|
||||
SET @old_binlog_format= @@global.binlog_format;
|
||||
SET GLOBAL binlog_format = ROW;
|
||||
include/start_slave.inc
|
||||
SET @old_binlog_format= @@global.binlog_format;
|
||||
SET binlog_format = ROW;
|
||||
CREATE TABLE t2(a INT) ENGINE=MYISAM;
|
||||
CREATE TABLE t3(a INT) ENGINE=INNODB;
|
||||
CREATE FUNCTION f1() RETURNS INT
|
||||
BEGIN
|
||||
insert into t2 values(1);
|
||||
insert into t3 values(1);
|
||||
return 1;
|
||||
END|
|
||||
CREATE TABLE t1(UNIQUE(a)) ENGINE=MYISAM SELECT 1 AS a UNION ALL SELECT f1();
|
||||
ERROR 23000: Duplicate entry '1' for key 'a'
|
||||
CREATE TABLE t1(UNIQUE(a)) ENGINE=INNODB SELECT 1 AS a UNION ALL SELECT f1();
|
||||
ERROR 23000: Duplicate entry '1' for key 'a'
|
||||
show binlog events in 'master-bin.000001' from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE t2, t3;
|
||||
SET @@global.binlog_format= @old_binlog_format;
|
||||
SET @@global.binlog_format= @old_binlog_format;
|
||||
include/rpl_end.inc
|
||||
33
build/lib/mysql/mysql-test/suite/rpl/r/rpl_drop_db.result
Normal file
33
build/lib/mysql/mysql-test/suite/rpl/r/rpl_drop_db.result
Normal file
@@ -0,0 +1,33 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
drop database if exists mysqltest1;
|
||||
create database mysqltest1;
|
||||
create table mysqltest1.t1 (n int);
|
||||
insert into mysqltest1.t1 values (1);
|
||||
select * from mysqltest1.t1 into outfile 'mysqltest1/f1.txt';
|
||||
create table mysqltest1.t2 (n int);
|
||||
create table mysqltest1.t3 (n int);
|
||||
drop database mysqltest1;
|
||||
ERROR HY000: Error dropping database (can't rmdir './mysqltest1/', errno: 17)
|
||||
use mysqltest1;
|
||||
show tables;
|
||||
Tables_in_mysqltest1
|
||||
drop database mysqltest1;
|
||||
ERROR HY000: Error dropping database (can't rmdir './mysqltest1/', errno: 17)
|
||||
use mysqltest1;
|
||||
show tables;
|
||||
Tables_in_mysqltest1
|
||||
use test;
|
||||
create table t1 (n int);
|
||||
insert into t1 values (1234);
|
||||
use mysqltest1;
|
||||
show tables;
|
||||
Tables_in_mysqltest1
|
||||
use test;
|
||||
select * from t1;
|
||||
n
|
||||
1234
|
||||
use test;
|
||||
drop table t1;
|
||||
drop database mysqltest1;
|
||||
include/rpl_end.inc
|
||||
25
build/lib/mysql/mysql-test/suite/rpl/r/rpl_drop_temp.result
Normal file
25
build/lib/mysql/mysql-test/suite/rpl/r/rpl_drop_temp.result
Normal file
@@ -0,0 +1,25 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
create database if not exists mysqltest;
|
||||
use mysqltest;
|
||||
create temporary table mysqltest.t1 (n int)ENGINE=MyISAM;
|
||||
create temporary table mysqltest.t2 (n int)ENGINE=MyISAM;
|
||||
show status like 'Slave_open_temp_tables';
|
||||
Variable_name Value
|
||||
Slave_open_temp_tables 0
|
||||
drop database mysqltest;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp1;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 'tmp1'
|
||||
CREATE TEMPORARY TABLE t1 ( a int );
|
||||
DROP TEMPORARY TABLE t1, t2;
|
||||
ERROR 42S02: Unknown table 't2'
|
||||
DROP TEMPORARY TABLE tmp2;
|
||||
ERROR 42S02: Unknown table 'tmp2'
|
||||
stop slave;
|
||||
**** On Master ****
|
||||
CREATE TEMPORARY TABLE tmp3 (a int);
|
||||
DROP TEMPORARY TABLE tmp3;
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
|
||||
START SLAVE;
|
||||
include/rpl_end.inc
|
||||
26
build/lib/mysql/mysql-test/suite/rpl/r/rpl_drop_view.result
Normal file
26
build/lib/mysql/mysql-test/suite/rpl/r/rpl_drop_view.result
Normal file
@@ -0,0 +1,26 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
drop table if exists t1, t2;
|
||||
drop view if exists v1, v2, v3, not_exist_view;
|
||||
create table t1 (a int);
|
||||
create table t2 (b int);
|
||||
create table t3 (c int);
|
||||
create view v1 as select * from t1;
|
||||
create view v2 as select * from t2;
|
||||
create view v3 as select * from t3;
|
||||
drop view not_exist_view;
|
||||
ERROR 42S02: Unknown table 'not_exist_view'
|
||||
drop view v1, not_exist_view;
|
||||
ERROR 42S02: Unknown table 'not_exist_view'
|
||||
select * from v1;
|
||||
ERROR 42S02: Table 'test.v1' doesn't exist
|
||||
drop view v2, v3;
|
||||
select * from v1;
|
||||
ERROR 42S02: Table 'test.v1' doesn't exist
|
||||
select * from v2;
|
||||
ERROR 42S02: Table 'test.v2' doesn't exist
|
||||
select * from v3;
|
||||
ERROR 42S02: Table 'test.v3' doesn't exist
|
||||
==== clean up ====
|
||||
drop table t1, t2, t3;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,54 @@
|
||||
include/rpl_init.inc [topology=1->2->1]
|
||||
create table t1 (n int);
|
||||
include/stop_slave.inc
|
||||
create table t2 (n int);
|
||||
show tables;
|
||||
Tables_in_test
|
||||
t1
|
||||
t2
|
||||
create table t3 (n int) engine=innodb;
|
||||
set @a=1;
|
||||
insert into t3 values(@a);
|
||||
begin;
|
||||
insert into t3 values(2);
|
||||
insert into t3 values(3);
|
||||
commit;
|
||||
insert into t3 values(4);
|
||||
start slave until master_log_file="MASTER_LOG_FILE",master_log_pos=MASTER_LOG_POS;
|
||||
Warnings:
|
||||
Note 1278 It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mysqld restart
|
||||
include/wait_for_slave_sql_to_stop.inc
|
||||
show tables;
|
||||
Tables_in_test
|
||||
t1
|
||||
t2
|
||||
start slave until master_log_file="MASTER_LOG_FILE",master_log_pos=MASTER_LOG_POS;
|
||||
Warnings:
|
||||
Note 1278 It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mysqld restart
|
||||
include/wait_for_slave_sql_to_stop.inc
|
||||
select * from t3;
|
||||
n
|
||||
1
|
||||
start slave until master_log_file="MASTER_LOG_FILE",master_log_pos=MASTER_LOG_POS;
|
||||
Warnings:
|
||||
Note 1278 It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mysqld restart
|
||||
include/wait_for_slave_sql_to_stop.inc
|
||||
select * from t3;
|
||||
n
|
||||
1
|
||||
2
|
||||
3
|
||||
include/start_slave.inc
|
||||
create table t4 (n int);
|
||||
create table t5 (n int);
|
||||
create table t6 (n int);
|
||||
show tables;
|
||||
Tables_in_test
|
||||
t1
|
||||
t2
|
||||
t3
|
||||
t4
|
||||
t5
|
||||
t6
|
||||
drop table t1, t2, t3, t4, t5, t6;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,15 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CALL mtr.add_suppression("Failed to read an event from active binlog.*");
|
||||
SET @debug_saved= @@GLOBAL.DEBUG;
|
||||
CREATE TABLE t1(c1 INT);
|
||||
INSERT INTO t1 VALUES(1);
|
||||
[connection master]
|
||||
SET GLOBAL debug='+d,dump_fake_io_error';
|
||||
INSERT INTO t1 VALUES(2);
|
||||
INSERT INTO t1 VALUES(3);
|
||||
include/diff_tables.inc [master:t1, slave:t1]
|
||||
[connection master]
|
||||
SET @@GLOBAL.DEBUG= @debug_saved;
|
||||
DROP TABLE t1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,7 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
load table t1 from master;
|
||||
ERROR 08S01: Error connecting to master: Master is not configured
|
||||
load table t1 from master;
|
||||
ERROR HY000: Error from master: 'Table 'test.t1' doesn't exist'
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,40 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||
create table t1 (a int primary key);
|
||||
create table t4 (a int primary key);
|
||||
insert into t1 values (1),(1);
|
||||
Got one of the listed errors
|
||||
insert into t4 values (1),(2);
|
||||
show tables like 't1';
|
||||
Tables_in_test (t1)
|
||||
show tables like 't4';
|
||||
Tables_in_test (t4)
|
||||
t4
|
||||
SELECT * FROM test.t4 ORDER BY a;
|
||||
a
|
||||
1
|
||||
2
|
||||
drop table t1;
|
||||
select get_lock('crash_lock%20C', 10);
|
||||
get_lock('crash_lock%20C', 10)
|
||||
1
|
||||
create table t2 (a int primary key);
|
||||
insert into t2 values(1);
|
||||
create table t3 (id int);
|
||||
insert into t3 values(connection_id());
|
||||
update t2 set a = a + 1 + get_lock('crash_lock%20C', 10);
|
||||
select (@id := id) - id from t3;
|
||||
(@id := id) - id
|
||||
0
|
||||
kill @id;
|
||||
drop table t2,t3;
|
||||
insert into t4 values (3),(4);
|
||||
SELECT * FROM test.t4 ORDER BY a;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
DROP TABLE test.t4;
|
||||
include/rpl_end.inc
|
||||
256
build/lib/mysql/mysql-test/suite/rpl/r/rpl_events.result
Normal file
256
build/lib/mysql/mysql-test/suite/rpl/r/rpl_events.result
Normal file
@@ -0,0 +1,256 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
SET @old_event_scheduler = @@global.event_scheduler;
|
||||
set global event_scheduler=1;
|
||||
set binlog_format=row;
|
||||
DROP EVENT IF EXISTS test.justonce;
|
||||
drop table if exists t1,t2;
|
||||
CREATE TABLE `t1` (
|
||||
`id` INT(10) UNSIGNED NOT NULL,
|
||||
`c` VARCHAR(50) NOT NULL,
|
||||
`ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
INSERT INTO t1 (id, c) VALUES (1, 'manually');
|
||||
"Creating event test.justonce on the master"
|
||||
CREATE EVENT test.justonce ON SCHEDULE EVERY 2 SECOND DO
|
||||
INSERT IGNORE INTO t1 (id, c) VALUES (2, 'from justonce');
|
||||
"Checking event is active on master"
|
||||
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'justonce';
|
||||
db name status originator
|
||||
test justonce ENABLED 1
|
||||
"Checking event data on the master"
|
||||
ONE
|
||||
1
|
||||
"Checking event data on the slave"
|
||||
ZERO
|
||||
0
|
||||
"Checking event is inactive on slave"
|
||||
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'justonce';
|
||||
db name status originator
|
||||
test justonce SLAVESIDE_DISABLED 1
|
||||
"Dropping event test.slave_once on the slave"
|
||||
DROP EVENT IF EXISTS test.slave_once;
|
||||
CREATE EVENT test.slave_once ON SCHEDULE EVERY 5 MINUTE STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
|
||||
INSERT IGNORE INTO t1(id, c) VALUES (3, 'from slave_once');
|
||||
"Checking event status on the slave for originator value = slave's server_id"
|
||||
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_once';
|
||||
db name status originator
|
||||
test slave_once ENABLED 2
|
||||
"Dropping event test.slave_once on the slave"
|
||||
DROP EVENT IF EXISTS test.slave_once;
|
||||
"Dropping event test.justonce on the master"
|
||||
DROP EVENT IF EXISTS test.justonce;
|
||||
"Creating event test.er on the master"
|
||||
CREATE EVENT test.er ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
|
||||
INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er');
|
||||
"Checking event status on the master"
|
||||
SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
|
||||
db name status originator body
|
||||
test er ENABLED 1 INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er')
|
||||
"Checking event status on the slave"
|
||||
SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
|
||||
db name status originator body
|
||||
test er SLAVESIDE_DISABLED 1 INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er')
|
||||
"Altering event test.er on the master"
|
||||
ALTER EVENT test.er ON SCHEDULE EVERY 5 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
|
||||
INSERT IGNORE INTO t1(id, c) VALUES (5, 'from alter er');
|
||||
"Checking event status on the master"
|
||||
SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
|
||||
db name status originator body
|
||||
test er ENABLED 1 INSERT IGNORE INTO t1(id, c) VALUES (5, 'from alter er')
|
||||
"Checking event status on the slave"
|
||||
SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
|
||||
db name status originator body
|
||||
test er SLAVESIDE_DISABLED 1 INSERT IGNORE INTO t1(id, c) VALUES (5, 'from alter er')
|
||||
"Dropping event test.er on the master"
|
||||
DROP EVENT test.er;
|
||||
"Checking event status on the master"
|
||||
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test';
|
||||
db name status originator
|
||||
"Checking event status on the slave"
|
||||
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test';
|
||||
db name status originator
|
||||
"Creating event test.slave_terminate on the slave"
|
||||
CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
|
||||
INSERT IGNORE INTO t1(id, c) VALUES (6, 'from slave_terminate');
|
||||
"Checking event status on the slave"
|
||||
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_terminate';
|
||||
db name status originator
|
||||
test slave_terminate ENABLED 2
|
||||
"Dropping event test.slave_terminate on the slave"
|
||||
DROP EVENT test.slave_terminate;
|
||||
"Creating event test.slave_terminate with DISABLE ON SLAVE on the slave"
|
||||
CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND DISABLE ON SLAVE DO
|
||||
INSERT IGNORE INTO t1(c) VALUES (7, 'from slave_terminate');
|
||||
"Checking event status on the slave"
|
||||
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_terminate';
|
||||
db name status originator
|
||||
test slave_terminate SLAVESIDE_DISABLED 2
|
||||
"Dropping event test.slave_terminate on the slave"
|
||||
DROP EVENT test.slave_terminate;
|
||||
"Cleanup"
|
||||
DROP TABLE t1;
|
||||
set binlog_format=statement;
|
||||
DROP EVENT IF EXISTS test.justonce;
|
||||
drop table if exists t1,t2;
|
||||
CREATE TABLE `t1` (
|
||||
`id` INT(10) UNSIGNED NOT NULL,
|
||||
`c` VARCHAR(50) NOT NULL,
|
||||
`ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
INSERT INTO t1 (id, c) VALUES (1, 'manually');
|
||||
"Creating event test.justonce on the master"
|
||||
CREATE EVENT test.justonce ON SCHEDULE EVERY 2 SECOND DO
|
||||
INSERT IGNORE INTO t1 (id, c) VALUES (2, 'from justonce');
|
||||
"Checking event is active on master"
|
||||
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'justonce';
|
||||
db name status originator
|
||||
test justonce ENABLED 1
|
||||
"Checking event data on the master"
|
||||
ONE
|
||||
1
|
||||
"Checking event data on the slave"
|
||||
ZERO
|
||||
0
|
||||
"Checking event is inactive on slave"
|
||||
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'justonce';
|
||||
db name status originator
|
||||
test justonce SLAVESIDE_DISABLED 1
|
||||
"Dropping event test.slave_once on the slave"
|
||||
DROP EVENT IF EXISTS test.slave_once;
|
||||
CREATE EVENT test.slave_once ON SCHEDULE EVERY 5 MINUTE STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
|
||||
INSERT IGNORE INTO t1(id, c) VALUES (3, 'from slave_once');
|
||||
"Checking event status on the slave for originator value = slave's server_id"
|
||||
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_once';
|
||||
db name status originator
|
||||
test slave_once ENABLED 2
|
||||
"Dropping event test.slave_once on the slave"
|
||||
DROP EVENT IF EXISTS test.slave_once;
|
||||
"Dropping event test.justonce on the master"
|
||||
DROP EVENT IF EXISTS test.justonce;
|
||||
"Creating event test.er on the master"
|
||||
CREATE EVENT test.er ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
|
||||
INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er');
|
||||
"Checking event status on the master"
|
||||
SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
|
||||
db name status originator body
|
||||
test er ENABLED 1 INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er')
|
||||
"Checking event status on the slave"
|
||||
SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
|
||||
db name status originator body
|
||||
test er SLAVESIDE_DISABLED 1 INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er')
|
||||
"Altering event test.er on the master"
|
||||
ALTER EVENT test.er ON SCHEDULE EVERY 5 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
|
||||
INSERT IGNORE INTO t1(id, c) VALUES (5, 'from alter er');
|
||||
"Checking event status on the master"
|
||||
SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
|
||||
db name status originator body
|
||||
test er ENABLED 1 INSERT IGNORE INTO t1(id, c) VALUES (5, 'from alter er')
|
||||
"Checking event status on the slave"
|
||||
SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
|
||||
db name status originator body
|
||||
test er SLAVESIDE_DISABLED 1 INSERT IGNORE INTO t1(id, c) VALUES (5, 'from alter er')
|
||||
"Dropping event test.er on the master"
|
||||
DROP EVENT test.er;
|
||||
"Checking event status on the master"
|
||||
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test';
|
||||
db name status originator
|
||||
"Checking event status on the slave"
|
||||
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test';
|
||||
db name status originator
|
||||
"Creating event test.slave_terminate on the slave"
|
||||
CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
|
||||
INSERT IGNORE INTO t1(id, c) VALUES (6, 'from slave_terminate');
|
||||
"Checking event status on the slave"
|
||||
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_terminate';
|
||||
db name status originator
|
||||
test slave_terminate ENABLED 2
|
||||
"Dropping event test.slave_terminate on the slave"
|
||||
DROP EVENT test.slave_terminate;
|
||||
"Creating event test.slave_terminate with DISABLE ON SLAVE on the slave"
|
||||
CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND DISABLE ON SLAVE DO
|
||||
INSERT IGNORE INTO t1(c) VALUES (7, 'from slave_terminate');
|
||||
"Checking event status on the slave"
|
||||
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_terminate';
|
||||
db name status originator
|
||||
test slave_terminate SLAVESIDE_DISABLED 2
|
||||
"Dropping event test.slave_terminate on the slave"
|
||||
DROP EVENT test.slave_terminate;
|
||||
"Cleanup"
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t28953 (a INT);
|
||||
CREATE EVENT event1 ON SCHEDULE EVERY 1 YEAR
|
||||
DO BEGIN
|
||||
select * from t28953;
|
||||
END;|
|
||||
ALTER EVENT event1 RENAME TO event2;
|
||||
DROP EVENT event2;
|
||||
CREATE TABLE test.t1(details CHAR(30));
|
||||
CREATE EVENT /*!50000 event44331_1 */
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_1 fired - no definer');
|
||||
CREATE DEFINER=CURRENT_USER /*!50000 EVENT event44331_2 */
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_2 fired - DEFINER=CURRENT_USER');
|
||||
CREATE DEFINER=CURRENT_USER() EVENT event44331_3
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_3 fired - DEFINER=CURRENT_USER() function');
|
||||
CREATE /*!50000 DEFINER='user44331' */ EVENT event44331_4
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_4 fired - DEFINER=user1');
|
||||
# Test for bug#50095 Multi-statement including CREATE EVENT causes rotten
|
||||
# binlog entry
|
||||
SELECT 'ABC';
|
||||
SELECT '123'|
|
||||
ABC
|
||||
ABC
|
||||
123
|
||||
123
|
||||
#on master
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_1';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_1 root@localhost
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_2';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_2 root@localhost
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_3';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_3 root@localhost
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_4';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_4 user44331@%
|
||||
#on slave
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_1';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_1 root@localhost
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_2';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_2 root@localhost
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_3';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_3 root@localhost
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_4';
|
||||
EVENT_SCHEMA EVENT_NAME DEFINER
|
||||
test event44331_4 user44331@%
|
||||
SET @@global.event_scheduler= @old_event_scheduler;
|
||||
DROP TABLE t28953;
|
||||
DROP TABLE t1;
|
||||
DROP EVENT event44331_1;
|
||||
DROP EVENT event44331_2;
|
||||
DROP EVENT event44331_3;
|
||||
DROP EVENT event44331_4;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,873 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
|
||||
***********************************************************
|
||||
***********************************************************
|
||||
***************** Start of Testing ************************
|
||||
***********************************************************
|
||||
***********************************************************
|
||||
* This test format == binlog_format ROW and engine == 'InnoDB'
|
||||
***********************************************************
|
||||
***********************************************************
|
||||
|
||||
***** Testing more columns on the Master *****
|
||||
|
||||
CREATE TABLE t1 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
|
||||
/* extra */
|
||||
f5 FLOAT DEFAULT '2.00',
|
||||
f6 CHAR(4) DEFAULT 'TEST',
|
||||
f7 INT DEFAULT '0',
|
||||
f8 TEXT,
|
||||
f9 LONGBLOB,
|
||||
f10 BIT(63),
|
||||
f11 VARBINARY(64))ENGINE='InnoDB';
|
||||
|
||||
* Alter Table on Slave and drop columns f5 through f11 *
|
||||
|
||||
alter table t1 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11;
|
||||
|
||||
* Insert data in Master then update and delete some rows*
|
||||
|
||||
* Select count and 20 rows from Master *
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
40
|
||||
|
||||
SELECT f1,f2,f3,f4,f5,f6,f7,f8,f9,
|
||||
hex(f10),hex(f11) FROM t1 ORDER BY f3 LIMIT 20;
|
||||
f1 f2 f3 f4 f5 f6 f7 f8 f9 hex(f10) hex(f11)
|
||||
2 2 2 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
3 3 3 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
5 5 5 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
6 6 6 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
8 8 8 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
9 9 9 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
11 11 11 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
12 12 12 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
14 14 14 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
15 15 15 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
17 17 17 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
18 18 18 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
20 20 20 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
21 21 21 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
23 23 23 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
24 24 24 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
26 26 26 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
27 27 27 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
29 29 29 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
30 30 30 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
|
||||
* Select count and 20 rows from Slave *
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
40
|
||||
|
||||
SELECT * FROM t1 ORDER BY f3 LIMIT 20;
|
||||
f1 f2 f3 f4
|
||||
2 2 2 second
|
||||
3 3 3 next
|
||||
5 5 5 second
|
||||
6 6 6 next
|
||||
8 8 8 second
|
||||
9 9 9 next
|
||||
11 11 11 second
|
||||
12 12 12 next
|
||||
14 14 14 second
|
||||
15 15 15 next
|
||||
17 17 17 second
|
||||
18 18 18 next
|
||||
20 20 20 second
|
||||
21 21 21 next
|
||||
23 23 23 second
|
||||
24 24 24 next
|
||||
26 26 26 second
|
||||
27 27 27 next
|
||||
29 29 29 second
|
||||
30 30 30 next
|
||||
include/check_slave_is_running.inc
|
||||
|
||||
***** Testing Altering table def scenario *****
|
||||
|
||||
CREATE TABLE t2 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
|
||||
/* extra */
|
||||
f5 DOUBLE DEFAULT '2.00',
|
||||
f6 ENUM('a', 'b', 'c') default 'a',
|
||||
f7 DECIMAL(17,9) default '1000.00',
|
||||
f8 MEDIUMBLOB,
|
||||
f9 NUMERIC(6,4) default '2000.00',
|
||||
f10 VARCHAR(1024),
|
||||
f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
|
||||
f12 SET('a', 'b', 'c') default 'b')
|
||||
ENGINE='InnoDB';
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'f9' at row 1
|
||||
|
||||
CREATE TABLE t3 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
|
||||
/* extra */
|
||||
f5 DOUBLE DEFAULT '2.00',
|
||||
f6 ENUM('a', 'b', 'c') default 'a',
|
||||
f8 MEDIUMBLOB,
|
||||
f10 VARCHAR(1024),
|
||||
f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
|
||||
f12 SET('a', 'b', 'c') default 'b')
|
||||
ENGINE='InnoDB';
|
||||
|
||||
CREATE TABLE t4 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
|
||||
/* extra */
|
||||
f5 DOUBLE DEFAULT '2.00',
|
||||
f6 DECIMAL(17,9) default '1000.00',
|
||||
f7 MEDIUMBLOB,
|
||||
f8 NUMERIC(6,4) default '2000.00',
|
||||
f9 VARCHAR(1024),
|
||||
f10 BINARY(20) not null default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
|
||||
f11 CHAR(255))
|
||||
ENGINE='InnoDB';
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'f8' at row 1
|
||||
|
||||
CREATE TABLE t31 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
|
||||
/* extra */
|
||||
f5 BIGINT,
|
||||
f6 BLOB,
|
||||
f7 DATE,
|
||||
f8 DATETIME,
|
||||
f9 FLOAT,
|
||||
f10 INT,
|
||||
f11 LONGBLOB,
|
||||
f12 LONGTEXT,
|
||||
f13 MEDIUMBLOB,
|
||||
f14 MEDIUMINT,
|
||||
f15 MEDIUMTEXT,
|
||||
f16 REAL,
|
||||
f17 SMALLINT,
|
||||
f18 TEXT,
|
||||
f19 TIME,
|
||||
f20 TIMESTAMP,
|
||||
f21 TINYBLOB,
|
||||
f22 TINYINT,
|
||||
f23 TINYTEXT,
|
||||
f24 YEAR,
|
||||
f25 BINARY(255),
|
||||
f26 BIT(64),
|
||||
f27 CHAR(255),
|
||||
f28 DECIMAL(30,7),
|
||||
f29 DOUBLE,
|
||||
f30 ENUM ('a','b', 'c') default 'a',
|
||||
f31 FLOAT,
|
||||
f32 NUMERIC(17,9),
|
||||
f33 SET ('a', 'b', 'c') default 'b',
|
||||
f34 VARBINARY(1025),
|
||||
f35 VARCHAR(257)
|
||||
) ENGINE='InnoDB';
|
||||
|
||||
** Alter tables on slave and drop columns **
|
||||
|
||||
alter table t2 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11, drop
|
||||
f12;
|
||||
alter table t3 drop f5, drop f6, drop f8, drop f10, drop f11, drop f12;
|
||||
alter table t4 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11;
|
||||
alter table t31
|
||||
drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11,
|
||||
drop f12, drop f13, drop f14, drop f15, drop f16, drop f17, drop f18,
|
||||
drop f19, drop f20, drop f21, drop f22, drop f23, drop f24, drop f25,
|
||||
drop f26, drop f27, drop f28, drop f29, drop f30, drop f31, drop f32,
|
||||
drop f33, drop f34, drop f35;
|
||||
|
||||
** Insert Data into Master **
|
||||
INSERT into t2 set f1=1, f2=1, f3=1, f4='first', f8='f8: medium size blob', f10='f10:
|
||||
some var char';
|
||||
INSERT into t2 values (2, 2, 2, 'second',
|
||||
2.0, 'b', 2000.0002, 'f8: medium size blob', 2000, 'f10: some var char',
|
||||
'01234567', 'c'),
|
||||
(3, 3, 3, 'third',
|
||||
3.0, 'b', 3000.0003, 'f8: medium size blob', 3000, 'f10: some var char',
|
||||
'01234567', 'c');
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'f9' at row 1
|
||||
Warning 1264 Out of range value for column 'f9' at row 2
|
||||
INSERT into t3 set f1=1, f2=1, f3=1, f4='first', f10='f10: some var char';
|
||||
INSERT into t4 set f1=1, f2=1, f3=1, f4='first', f7='f7: medium size blob', f10='f10:
|
||||
binary data';
|
||||
INSERT into t31 set f1=1, f2=1, f3=1, f4='first';
|
||||
INSERT into t31 set f1=1, f2=1, f3=2, f4='second',
|
||||
f9=2.2, f10='seven samurai', f28=222.222, f35='222';
|
||||
Warnings:
|
||||
Warning 1366 Incorrect integer value: 'seven samurai' for column 'f10' at row 1
|
||||
INSERT into t31 values (1, 1, 3, 'third',
|
||||
/* f5 BIGINT, */ 333333333333333333333333,
|
||||
/* f6 BLOB, */ '3333333333333333333333',
|
||||
/* f7 DATE, */ '2007-07-18',
|
||||
/* f8 DATETIME, */ "2007-07-18",
|
||||
/* f9 FLOAT, */ 3.33333333,
|
||||
/* f10 INT, */ 333333333,
|
||||
/* f11 LONGBLOB, */ '3333333333333333333',
|
||||
/* f12 LONGTEXT, */ '3333333333333333333',
|
||||
/* f13 MEDIUMBLOB, */ '3333333333333333333',
|
||||
/* f14 MEDIUMINT, */ 33,
|
||||
/* f15 MEDIUMTEXT, */ 3.3,
|
||||
/* f16 REAL, */ 3.3,
|
||||
/* f17 SMALLINT, */ 3,
|
||||
/* f18 TEXT, */ '33',
|
||||
/* f19 TIME, */ '2:59:58.999',
|
||||
/* f20 TIMESTAMP, */ 20000303000000,
|
||||
/* f21 TINYBLOB, */ '3333',
|
||||
/* f22 TINYINT, */ 3,
|
||||
/* f23 TINYTEXT, */ '3',
|
||||
/* f24 YEAR, */ 3000,
|
||||
/* f25 BINARY(255), */ 'three_33333',
|
||||
/* f26 BIT(64), */ b'011',
|
||||
/* f27 CHAR(255), */ 'three',
|
||||
/* f28 DECIMAL(30,7), */ 3.333,
|
||||
/* f29 DOUBLE, */ 3.333333333333333333333333333,
|
||||
/* f30 ENUM ('a','b','c')*/ 'c',
|
||||
/* f31 FLOAT, */ 3.0,
|
||||
/* f32 NUMERIC(17,9), */ 3.3333,
|
||||
/* f33 SET ('a','b','c'),*/ 'c',
|
||||
/*f34 VARBINARY(1025),*/ '3333 minus 3',
|
||||
/*f35 VARCHAR(257),*/ 'three times three'
|
||||
);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'f5' at row 1
|
||||
Warning 1264 Out of range value for column 'f24' at row 1
|
||||
INSERT into t31 values (1, 1, 4, 'fourth',
|
||||
/* f5 BIGINT, */ 333333333333333333333333,
|
||||
/* f6 BLOB, */ '3333333333333333333333',
|
||||
/* f7 DATE, */ '2007-07-18',
|
||||
/* f8 DATETIME, */ "2007-07-18",
|
||||
/* f9 FLOAT, */ 3.33333333,
|
||||
/* f10 INT, */ 333333333,
|
||||
/* f11 LONGBLOB, */ '3333333333333333333',
|
||||
/* f12 LONGTEXT, */ '3333333333333333333',
|
||||
/* f13 MEDIUMBLOB, */ '3333333333333333333',
|
||||
/* f14 MEDIUMINT, */ 33,
|
||||
/* f15 MEDIUMTEXT, */ 3.3,
|
||||
/* f16 REAL, */ 3.3,
|
||||
/* f17 SMALLINT, */ 3,
|
||||
/* f18 TEXT, */ '33',
|
||||
/* f19 TIME, */ '2:59:58.999',
|
||||
/* f20 TIMESTAMP, */ 20000303000000,
|
||||
/* f21 TINYBLOB, */ '3333',
|
||||
/* f22 TINYINT, */ 3,
|
||||
/* f23 TINYTEXT, */ '3',
|
||||
/* f24 YEAR, */ 3000,
|
||||
/* f25 BINARY(255), */ 'three_33333',
|
||||
/* f26 BIT(64), */ b'011',
|
||||
/* f27 CHAR(255), */ 'three',
|
||||
/* f28 DECIMAL(30,7), */ 3.333,
|
||||
/* f29 DOUBLE, */ 3.333333333333333333333333333,
|
||||
/* f30 ENUM ('a','b','c')*/ 'c',
|
||||
/* f31 FLOAT, */ 3.0,
|
||||
/* f32 NUMERIC(17,9), */ 3.3333,
|
||||
/* f33 SET ('a','b','c'),*/ 'c',
|
||||
/*f34 VARBINARY(1025),*/ '3333 minus 3',
|
||||
/*f35 VARCHAR(257),*/ 'three times three'
|
||||
),
|
||||
(1, 1, 5, 'fifth',
|
||||
/* f5 BIGINT, */ 333333333333333333333333,
|
||||
/* f6 BLOB, */ '3333333333333333333333',
|
||||
/* f7 DATE, */ '2007-07-18',
|
||||
/* f8 DATETIME, */ "2007-07-18",
|
||||
/* f9 FLOAT, */ 3.33333333,
|
||||
/* f10 INT, */ 333333333,
|
||||
/* f11 LONGBLOB, */ '3333333333333333333',
|
||||
/* f12 LONGTEXT, */ '3333333333333333333',
|
||||
/* f13 MEDIUMBLOB, */ '3333333333333333333',
|
||||
/* f14 MEDIUMINT, */ 33,
|
||||
/* f15 MEDIUMTEXT, */ 3.3,
|
||||
/* f16 REAL, */ 3.3,
|
||||
/* f17 SMALLINT, */ 3,
|
||||
/* f18 TEXT, */ '33',
|
||||
/* f19 TIME, */ '2:59:58.999',
|
||||
/* f20 TIMESTAMP, */ 20000303000000,
|
||||
/* f21 TINYBLOB, */ '3333',
|
||||
/* f22 TINYINT, */ 3,
|
||||
/* f23 TINYTEXT, */ '3',
|
||||
/* f24 YEAR, */ 3000,
|
||||
/* f25 BINARY(255), */ 'three_33333',
|
||||
/* f26 BIT(64), */ b'011',
|
||||
/* f27 CHAR(255), */ 'three',
|
||||
/* f28 DECIMAL(30,7), */ 3.333,
|
||||
/* f29 DOUBLE, */ 3.333333333333333333333333333,
|
||||
/* f30 ENUM ('a','b','c')*/ 'c',
|
||||
/* f31 FLOAT, */ 3.0,
|
||||
/* f32 NUMERIC(17,9), */ 3.3333,
|
||||
/* f33 SET ('a','b','c'),*/ 'c',
|
||||
/*f34 VARBINARY(1025),*/ '3333 minus 3',
|
||||
/*f35 VARCHAR(257),*/ 'three times three'
|
||||
),
|
||||
(1, 1, 6, 'sixth',
|
||||
/* f5 BIGINT, */ NULL,
|
||||
/* f6 BLOB, */ '3333333333333333333333',
|
||||
/* f7 DATE, */ '2007-07-18',
|
||||
/* f8 DATETIME, */ "2007-07-18",
|
||||
/* f9 FLOAT, */ 3.33333333,
|
||||
/* f10 INT, */ 333333333,
|
||||
/* f11 LONGBLOB, */ '3333333333333333333',
|
||||
/* f12 LONGTEXT, */ '3333333333333333333',
|
||||
/* f13 MEDIUMBLOB, */ '3333333333333333333',
|
||||
/* f14 MEDIUMINT, */ 33,
|
||||
/* f15 MEDIUMTEXT, */ 3.3,
|
||||
/* f16 REAL, */ 3.3,
|
||||
/* f17 SMALLINT, */ 3,
|
||||
/* f18 TEXT, */ '33',
|
||||
/* f19 TIME, */ '2:59:58.999',
|
||||
/* f20 TIMESTAMP, */ 20000303000000,
|
||||
/* f21 TINYBLOB, */ '3333',
|
||||
/* f22 TINYINT, */ 3,
|
||||
/* f23 TINYTEXT, */ '3',
|
||||
/* f24 YEAR, */ 3000,
|
||||
/* f25 BINARY(255), */ 'three_33333',
|
||||
/* f26 BIT(64), */ b'011',
|
||||
/* f27 CHAR(255), */ 'three',
|
||||
/* f28 DECIMAL(30,7), */ 3.333,
|
||||
/* f29 DOUBLE, */ 3.333333333333333333333333333,
|
||||
/* f30 ENUM ('a','b','c')*/ 'c',
|
||||
/* f31 FLOAT, */ 3.0,
|
||||
/* f32 NUMERIC(17,9), */ 3.3333,
|
||||
/* f33 SET ('a','b','c'),*/ 'c',
|
||||
/*f34 VARBINARY(1025),*/ '3333 minus 3',
|
||||
/*f35 VARCHAR(257),*/ NULL
|
||||
);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'f5' at row 1
|
||||
Warning 1264 Out of range value for column 'f24' at row 1
|
||||
Warning 1264 Out of range value for column 'f5' at row 2
|
||||
Warning 1264 Out of range value for column 'f24' at row 2
|
||||
Warning 1264 Out of range value for column 'f24' at row 3
|
||||
|
||||
** Sync slave with master **
|
||||
** Do selects from tables **
|
||||
|
||||
select * from t1 order by f3;
|
||||
f1 f2 f3 f4
|
||||
2 2 2 second
|
||||
3 3 3 next
|
||||
5 5 5 second
|
||||
6 6 6 next
|
||||
8 8 8 second
|
||||
9 9 9 next
|
||||
11 11 11 second
|
||||
12 12 12 next
|
||||
14 14 14 second
|
||||
15 15 15 next
|
||||
17 17 17 second
|
||||
18 18 18 next
|
||||
20 20 20 second
|
||||
21 21 21 next
|
||||
23 23 23 second
|
||||
24 24 24 next
|
||||
26 26 26 second
|
||||
27 27 27 next
|
||||
29 29 29 second
|
||||
30 30 30 next
|
||||
31 31 31 second
|
||||
32 32 32 second
|
||||
33 33 33 second
|
||||
34 34 34 second
|
||||
35 35 35 second
|
||||
36 36 36 second
|
||||
37 37 37 second
|
||||
38 38 38 second
|
||||
39 39 39 second
|
||||
40 40 40 second
|
||||
41 41 41 second
|
||||
42 42 42 second
|
||||
43 43 43 second
|
||||
44 44 44 second
|
||||
45 45 45 second
|
||||
46 46 46 second
|
||||
47 47 47 second
|
||||
48 48 48 second
|
||||
49 49 49 second
|
||||
50 50 50 second
|
||||
select * from t2 order by f1;
|
||||
f1 f2 f3 f4
|
||||
1 1 1 first
|
||||
2 2 2 second
|
||||
3 3 3 third
|
||||
select * from t3 order by f1;
|
||||
f1 f2 f3 f4
|
||||
1 1 1 first
|
||||
select * from t4 order by f1;
|
||||
f1 f2 f3 f4
|
||||
1 1 1 first
|
||||
select * from t31 order by f3;
|
||||
f1 f2 f3 f4
|
||||
1 1 1 first
|
||||
1 1 2 second
|
||||
1 1 3 third
|
||||
1 1 4 fourth
|
||||
1 1 5 fifth
|
||||
1 1 6 sixth
|
||||
|
||||
** Do updates master **
|
||||
|
||||
update t31 set f5=555555555555555 where f3=6;
|
||||
update t31 set f2=2 where f3=2;
|
||||
update t31 set f1=NULL where f3=1;
|
||||
update t31 set f3=NULL, f27=NULL, f35='f35 new value' where f3=3;
|
||||
Warnings:
|
||||
Warning 1048 Column 'f3' cannot be null
|
||||
|
||||
** Delete from Master **
|
||||
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
delete from t3;
|
||||
delete from t4;
|
||||
delete from t31;
|
||||
select * from t31;
|
||||
f1 f2 f3 f4
|
||||
|
||||
** Check slave status **
|
||||
|
||||
include/check_slave_is_running.inc
|
||||
|
||||
****************************************
|
||||
* columns in master at middle of table *
|
||||
* Expect: Proper error message *
|
||||
****************************************
|
||||
|
||||
** Stop and Reset Slave **
|
||||
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
|
||||
** create table slave side **
|
||||
CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
||||
) ENGINE='InnoDB';
|
||||
|
||||
** Connect to master and create table **
|
||||
|
||||
CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233',
|
||||
c CHAR(5), e INT DEFAULT '1')ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
|
||||
(2,@b1,DEFAULT,'JOE',DEFAULT),
|
||||
(3,@b1,DEFAULT,'QA',DEFAULT);
|
||||
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254'
|
||||
|
||||
*** Drop t10 ***
|
||||
DROP TABLE t10;
|
||||
|
||||
*********************************************
|
||||
* More columns in master at middle of table *
|
||||
* Expect: Proper error message *
|
||||
*********************************************
|
||||
|
||||
*** Create t11 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254)
|
||||
) ENGINE='InnoDB';
|
||||
|
||||
*** Create t11 on Master ***
|
||||
CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT,
|
||||
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
|
||||
(2,@b1,'Testing is cool','JOE',DEFAULT),
|
||||
(3,@b1,DEFAULT,'QA',DEFAULT);
|
||||
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15'
|
||||
|
||||
*** Drop t11 ***
|
||||
DROP TABLE t11;
|
||||
|
||||
*********************************************
|
||||
* More columns in master at middle of table *
|
||||
* Expect: This one should pass blob-text *
|
||||
*********************************************
|
||||
|
||||
*** Create t12 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB
|
||||
) ENGINE='InnoDB';
|
||||
|
||||
*** Create t12 on Master ***
|
||||
CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT,
|
||||
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t12 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
|
||||
(2,@b1,'JOE',DEFAULT,DEFAULT),
|
||||
(3,@b1,'QA',DEFAULT,DEFAULT);
|
||||
|
||||
SELECT a,hex(b),f,c,e FROM t12 ORDER BY a;
|
||||
a hex(b) f c e
|
||||
1 62316231623162316231623162316231 Kyle test 1
|
||||
2 62316231623162316231623162316231 JOE test 1
|
||||
3 62316231623162316231623162316231 QA test 1
|
||||
|
||||
*** Select on Slave ***
|
||||
SELECT a,hex(b),c FROM t12 ORDER BY a;
|
||||
a hex(b) c
|
||||
1 62316231623162316231623162316231 Kyle
|
||||
2 62316231623162316231623162316231 JOE
|
||||
3 62316231623162316231623162316231 QA
|
||||
|
||||
*** Drop t12 ***
|
||||
DROP TABLE t12;
|
||||
|
||||
****************************************************
|
||||
* - Alter Master adding columns at middle of table *
|
||||
* Expect: columns added *
|
||||
****************************************************
|
||||
|
||||
|
||||
*** Create t14 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='InnoDB';
|
||||
|
||||
*** Create t14 on Master ***
|
||||
CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
ALTER TABLE t14 ADD COLUMN c2 DECIMAL(8,2) AFTER c1;
|
||||
ALTER TABLE t14 ADD COLUMN c3 TEXT AFTER c2;
|
||||
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t14 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle',DEFAULT,DEFAULT),
|
||||
(2,2.00,'This Test Should work',@b1,'JOE',DEFAULT,DEFAULT),
|
||||
(3,3.00,'If is does not, I will open a bug',@b1,'QA',DEFAULT,DEFAULT);
|
||||
|
||||
SELECT c1,c2,c3,hex(c4),c5,c6,c7 FROM t14 ORDER BY c1;
|
||||
c1 c2 c3 hex(c4) c5 c6 c7
|
||||
1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 2.00 This Test Should work 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP
|
||||
3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP
|
||||
|
||||
*** Select on Slave ****
|
||||
SELECT c1,c2,c3,hex(c4),c5 FROM t14 ORDER BY c1;
|
||||
c1 c2 c3 hex(c4) c5
|
||||
1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle
|
||||
2 2.00 This Test Should work 62316231623162316231623162316231 JOE
|
||||
3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA
|
||||
|
||||
****************************************************
|
||||
* - Alter Master Dropping columns from the middle. *
|
||||
* Expect: columns dropped *
|
||||
****************************************************
|
||||
|
||||
*** connect to master and drop columns ***
|
||||
ALTER TABLE t14 DROP COLUMN c2;
|
||||
ALTER TABLE t14 DROP COLUMN c7;
|
||||
|
||||
*** Select from Master ***
|
||||
SELECT c1,c3,hex(c4),c5,c6 FROM t14 ORDER BY c1;
|
||||
c1 c3 hex(c4) c5 c6
|
||||
1 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1
|
||||
2 This Test Should work 62316231623162316231623162316231 JOE 1
|
||||
3 If is does not, I will open a bug 62316231623162316231623162316231 QA 1
|
||||
|
||||
************
|
||||
* Bug30415 *
|
||||
************
|
||||
include/wait_for_slave_sql_error.inc [errno=1091]
|
||||
Last_SQL_Error = 'Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7''
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
|
||||
*** Drop t14 ***
|
||||
DROP TABLE t14;
|
||||
DROP TABLE t14;
|
||||
RESET MASTER;
|
||||
START SLAVE;
|
||||
|
||||
*************************************************
|
||||
* - Alter Master adding columns at end of table *
|
||||
* Expect: Error 1054 *
|
||||
*************************************************
|
||||
|
||||
*** Create t15 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t15 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='InnoDB';
|
||||
|
||||
*** Create t15 on Master ***
|
||||
CREATE TABLE t15 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7;
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t15 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT,3.00),
|
||||
(2,@b1,'JOE',DEFAULT,DEFAULT,3.00),
|
||||
(3,@b1,'QA',DEFAULT,DEFAULT,3.00);
|
||||
SELECT c1,hex(c4),c5,c6,c7,c2 FROM t15 ORDER BY c1;
|
||||
c1 hex(c4) c5 c6 c7 c2
|
||||
1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP 3.00
|
||||
2 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP 3.00
|
||||
3 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP 3.00
|
||||
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1054 ***
|
||||
********************************************
|
||||
|
||||
include/wait_for_slave_sql_error.inc [errno=1054]
|
||||
Last_SQL_Error = 'Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7''
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
|
||||
*** Drop t15 ***
|
||||
DROP TABLE t15;
|
||||
DROP TABLE t15;
|
||||
RESET MASTER;
|
||||
START SLAVE;
|
||||
|
||||
************************************************
|
||||
* - Create index on Master column not on slave *
|
||||
* Expect:Warning *
|
||||
************************************************
|
||||
|
||||
*** Create t16 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t16 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='InnoDB';
|
||||
|
||||
*** Create t16 on Master ***
|
||||
CREATE TABLE t16 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Create Index and Data Insert ***
|
||||
CREATE INDEX part_of_c6 ON t16 (c6);
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t16 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
|
||||
(2,@b1,'JOE',2,DEFAULT),
|
||||
(3,@b1,'QA',3,DEFAULT);
|
||||
SELECT c1,hex(c4),c5,c6,c7 FROM t16 ORDER BY c1;
|
||||
c1 hex(c4) c5 c6 c7
|
||||
1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
|
||||
3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
|
||||
|
||||
*****************
|
||||
*** BUG 30434 ***
|
||||
*****************
|
||||
|
||||
include/wait_for_slave_sql_error.inc [errno=1072]
|
||||
Last_SQL_Error = 'Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)''
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
|
||||
*** Drop t16 ***
|
||||
DROP TABLE t16;
|
||||
DROP TABLE t16;
|
||||
RESET MASTER;
|
||||
START SLAVE;
|
||||
|
||||
*****************************************************
|
||||
* - Delete rows using column on Master not on slave *
|
||||
* Expect: Rows Deleted *
|
||||
*****************************************************
|
||||
|
||||
*** Create t17 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t17 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='InnoDB';
|
||||
|
||||
*** Create t17 on Master ***
|
||||
CREATE TABLE t17 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t17 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
|
||||
(2,@b1,'JOE',2,DEFAULT),
|
||||
(3,@b1,'QA',3,DEFAULT);
|
||||
SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1;
|
||||
c1 hex(c4) c5 c6 c7
|
||||
1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
|
||||
3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
|
||||
|
||||
** Select * from Slave **
|
||||
SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1;
|
||||
c1 hex(c4) c5
|
||||
1 62316231623162316231623162316231 Kyle
|
||||
2 62316231623162316231623162316231 JOE
|
||||
3 62316231623162316231623162316231 QA
|
||||
|
||||
** Delete from master **
|
||||
DELETE FROM t17 WHERE c6 = 3;
|
||||
SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1;
|
||||
c1 hex(c4) c5 c6 c7
|
||||
1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
|
||||
|
||||
** Check slave **
|
||||
SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1;
|
||||
c1 hex(c4) c5
|
||||
1 62316231623162316231623162316231 Kyle
|
||||
2 62316231623162316231623162316231 JOE
|
||||
DROP TABLE t17;
|
||||
|
||||
|
||||
*****************************************************
|
||||
* - Update row using column on Master not on slave *
|
||||
* Expect: Rows updated *
|
||||
*****************************************************
|
||||
|
||||
** Bug30674 **
|
||||
|
||||
*** Create t18 on slave ***
|
||||
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t18 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='InnoDB';
|
||||
|
||||
*** Create t18 on Master ***
|
||||
CREATE TABLE t18 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t18 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
|
||||
(2,@b1,'JOE',2,DEFAULT),
|
||||
(3,@b1,'QA',3,DEFAULT);
|
||||
SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1;
|
||||
c1 hex(c4) c5 c6 c7
|
||||
1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
|
||||
3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
|
||||
|
||||
** Select * from Slave **
|
||||
SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1;
|
||||
c1 hex(c4) c5
|
||||
1 62316231623162316231623162316231 Kyle
|
||||
2 62316231623162316231623162316231 JOE
|
||||
3 62316231623162316231623162316231 QA
|
||||
|
||||
** update from master **
|
||||
UPDATE t18 SET c5 = 'TEST' WHERE c6 = 3;
|
||||
SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1;
|
||||
c1 hex(c4) c5 c6 c7
|
||||
1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
|
||||
3 62316231623162316231623162316231 TEST 3 CURRENT_TIMESTAMP
|
||||
|
||||
** Check slave **
|
||||
SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1;
|
||||
c1 hex(c4) c5
|
||||
1 62316231623162316231623162316231 Kyle
|
||||
2 62316231623162316231623162316231 JOE
|
||||
3 62316231623162316231623162316231 TEST
|
||||
DROP TABLE t18;
|
||||
|
||||
|
||||
*****************************************************
|
||||
* - Insert UUID column on Master not on slave *
|
||||
* Expect: Rows inserted *
|
||||
*****************************************************
|
||||
|
||||
*** Create t5 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t5 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='InnoDB';
|
||||
|
||||
*** Create t5 on Master ***
|
||||
CREATE TABLE t5 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 LONG,
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
INSERT INTO t5 () VALUES(1,@b1,'Kyle',UUID(),DEFAULT),
|
||||
(2,@b1,'JOE',UUID(),DEFAULT),
|
||||
(3,@b1,'QA',UUID(),DEFAULT);
|
||||
SELECT c1,hex(c4),c5,c6,c7 FROM t5 ORDER BY c1;
|
||||
c1 hex(c4) c5 c6 c7
|
||||
1 6231623162316231 Kyle UUID TIME
|
||||
2 6231623162316231 JOE UUID TIME
|
||||
3 6231623162316231 QA UUID TIME
|
||||
|
||||
** Select * from Slave **
|
||||
SELECT c1,hex(c4),c5 FROM t5 ORDER BY c1;
|
||||
c1 hex(c4) c5
|
||||
1 6231623162316231 Kyle
|
||||
2 6231623162316231 JOE
|
||||
3 6231623162316231 QA
|
||||
DROP TABLE t5;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,873 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
|
||||
***********************************************************
|
||||
***********************************************************
|
||||
***************** Start of Testing ************************
|
||||
***********************************************************
|
||||
***********************************************************
|
||||
* This test format == binlog_format ROW and engine == 'MyISAM'
|
||||
***********************************************************
|
||||
***********************************************************
|
||||
|
||||
***** Testing more columns on the Master *****
|
||||
|
||||
CREATE TABLE t1 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
|
||||
/* extra */
|
||||
f5 FLOAT DEFAULT '2.00',
|
||||
f6 CHAR(4) DEFAULT 'TEST',
|
||||
f7 INT DEFAULT '0',
|
||||
f8 TEXT,
|
||||
f9 LONGBLOB,
|
||||
f10 BIT(63),
|
||||
f11 VARBINARY(64))ENGINE='MyISAM';
|
||||
|
||||
* Alter Table on Slave and drop columns f5 through f11 *
|
||||
|
||||
alter table t1 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11;
|
||||
|
||||
* Insert data in Master then update and delete some rows*
|
||||
|
||||
* Select count and 20 rows from Master *
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
40
|
||||
|
||||
SELECT f1,f2,f3,f4,f5,f6,f7,f8,f9,
|
||||
hex(f10),hex(f11) FROM t1 ORDER BY f3 LIMIT 20;
|
||||
f1 f2 f3 f4 f5 f6 f7 f8 f9 hex(f10) hex(f11)
|
||||
2 2 2 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
3 3 3 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
5 5 5 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
6 6 6 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
8 8 8 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
9 9 9 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
11 11 11 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
12 12 12 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
14 14 14 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
15 15 15 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
17 17 17 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
18 18 18 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
20 20 20 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
21 21 21 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
23 23 23 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
24 24 24 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
26 26 26 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
27 27 27 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
29 29 29 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
30 30 30 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
|
||||
|
||||
* Select count and 20 rows from Slave *
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
40
|
||||
|
||||
SELECT * FROM t1 ORDER BY f3 LIMIT 20;
|
||||
f1 f2 f3 f4
|
||||
2 2 2 second
|
||||
3 3 3 next
|
||||
5 5 5 second
|
||||
6 6 6 next
|
||||
8 8 8 second
|
||||
9 9 9 next
|
||||
11 11 11 second
|
||||
12 12 12 next
|
||||
14 14 14 second
|
||||
15 15 15 next
|
||||
17 17 17 second
|
||||
18 18 18 next
|
||||
20 20 20 second
|
||||
21 21 21 next
|
||||
23 23 23 second
|
||||
24 24 24 next
|
||||
26 26 26 second
|
||||
27 27 27 next
|
||||
29 29 29 second
|
||||
30 30 30 next
|
||||
include/check_slave_is_running.inc
|
||||
|
||||
***** Testing Altering table def scenario *****
|
||||
|
||||
CREATE TABLE t2 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
|
||||
/* extra */
|
||||
f5 DOUBLE DEFAULT '2.00',
|
||||
f6 ENUM('a', 'b', 'c') default 'a',
|
||||
f7 DECIMAL(17,9) default '1000.00',
|
||||
f8 MEDIUMBLOB,
|
||||
f9 NUMERIC(6,4) default '2000.00',
|
||||
f10 VARCHAR(1024),
|
||||
f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
|
||||
f12 SET('a', 'b', 'c') default 'b')
|
||||
ENGINE='MyISAM';
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'f9' at row 1
|
||||
|
||||
CREATE TABLE t3 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
|
||||
/* extra */
|
||||
f5 DOUBLE DEFAULT '2.00',
|
||||
f6 ENUM('a', 'b', 'c') default 'a',
|
||||
f8 MEDIUMBLOB,
|
||||
f10 VARCHAR(1024),
|
||||
f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
|
||||
f12 SET('a', 'b', 'c') default 'b')
|
||||
ENGINE='MyISAM';
|
||||
|
||||
CREATE TABLE t4 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
|
||||
/* extra */
|
||||
f5 DOUBLE DEFAULT '2.00',
|
||||
f6 DECIMAL(17,9) default '1000.00',
|
||||
f7 MEDIUMBLOB,
|
||||
f8 NUMERIC(6,4) default '2000.00',
|
||||
f9 VARCHAR(1024),
|
||||
f10 BINARY(20) not null default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
|
||||
f11 CHAR(255))
|
||||
ENGINE='MyISAM';
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'f8' at row 1
|
||||
|
||||
CREATE TABLE t31 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
|
||||
/* extra */
|
||||
f5 BIGINT,
|
||||
f6 BLOB,
|
||||
f7 DATE,
|
||||
f8 DATETIME,
|
||||
f9 FLOAT,
|
||||
f10 INT,
|
||||
f11 LONGBLOB,
|
||||
f12 LONGTEXT,
|
||||
f13 MEDIUMBLOB,
|
||||
f14 MEDIUMINT,
|
||||
f15 MEDIUMTEXT,
|
||||
f16 REAL,
|
||||
f17 SMALLINT,
|
||||
f18 TEXT,
|
||||
f19 TIME,
|
||||
f20 TIMESTAMP,
|
||||
f21 TINYBLOB,
|
||||
f22 TINYINT,
|
||||
f23 TINYTEXT,
|
||||
f24 YEAR,
|
||||
f25 BINARY(255),
|
||||
f26 BIT(64),
|
||||
f27 CHAR(255),
|
||||
f28 DECIMAL(30,7),
|
||||
f29 DOUBLE,
|
||||
f30 ENUM ('a','b', 'c') default 'a',
|
||||
f31 FLOAT,
|
||||
f32 NUMERIC(17,9),
|
||||
f33 SET ('a', 'b', 'c') default 'b',
|
||||
f34 VARBINARY(1025),
|
||||
f35 VARCHAR(257)
|
||||
) ENGINE='MyISAM';
|
||||
|
||||
** Alter tables on slave and drop columns **
|
||||
|
||||
alter table t2 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11, drop
|
||||
f12;
|
||||
alter table t3 drop f5, drop f6, drop f8, drop f10, drop f11, drop f12;
|
||||
alter table t4 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11;
|
||||
alter table t31
|
||||
drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11,
|
||||
drop f12, drop f13, drop f14, drop f15, drop f16, drop f17, drop f18,
|
||||
drop f19, drop f20, drop f21, drop f22, drop f23, drop f24, drop f25,
|
||||
drop f26, drop f27, drop f28, drop f29, drop f30, drop f31, drop f32,
|
||||
drop f33, drop f34, drop f35;
|
||||
|
||||
** Insert Data into Master **
|
||||
INSERT into t2 set f1=1, f2=1, f3=1, f4='first', f8='f8: medium size blob', f10='f10:
|
||||
some var char';
|
||||
INSERT into t2 values (2, 2, 2, 'second',
|
||||
2.0, 'b', 2000.0002, 'f8: medium size blob', 2000, 'f10: some var char',
|
||||
'01234567', 'c'),
|
||||
(3, 3, 3, 'third',
|
||||
3.0, 'b', 3000.0003, 'f8: medium size blob', 3000, 'f10: some var char',
|
||||
'01234567', 'c');
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'f9' at row 1
|
||||
Warning 1264 Out of range value for column 'f9' at row 2
|
||||
INSERT into t3 set f1=1, f2=1, f3=1, f4='first', f10='f10: some var char';
|
||||
INSERT into t4 set f1=1, f2=1, f3=1, f4='first', f7='f7: medium size blob', f10='f10:
|
||||
binary data';
|
||||
INSERT into t31 set f1=1, f2=1, f3=1, f4='first';
|
||||
INSERT into t31 set f1=1, f2=1, f3=2, f4='second',
|
||||
f9=2.2, f10='seven samurai', f28=222.222, f35='222';
|
||||
Warnings:
|
||||
Warning 1366 Incorrect integer value: 'seven samurai' for column 'f10' at row 1
|
||||
INSERT into t31 values (1, 1, 3, 'third',
|
||||
/* f5 BIGINT, */ 333333333333333333333333,
|
||||
/* f6 BLOB, */ '3333333333333333333333',
|
||||
/* f7 DATE, */ '2007-07-18',
|
||||
/* f8 DATETIME, */ "2007-07-18",
|
||||
/* f9 FLOAT, */ 3.33333333,
|
||||
/* f10 INT, */ 333333333,
|
||||
/* f11 LONGBLOB, */ '3333333333333333333',
|
||||
/* f12 LONGTEXT, */ '3333333333333333333',
|
||||
/* f13 MEDIUMBLOB, */ '3333333333333333333',
|
||||
/* f14 MEDIUMINT, */ 33,
|
||||
/* f15 MEDIUMTEXT, */ 3.3,
|
||||
/* f16 REAL, */ 3.3,
|
||||
/* f17 SMALLINT, */ 3,
|
||||
/* f18 TEXT, */ '33',
|
||||
/* f19 TIME, */ '2:59:58.999',
|
||||
/* f20 TIMESTAMP, */ 20000303000000,
|
||||
/* f21 TINYBLOB, */ '3333',
|
||||
/* f22 TINYINT, */ 3,
|
||||
/* f23 TINYTEXT, */ '3',
|
||||
/* f24 YEAR, */ 3000,
|
||||
/* f25 BINARY(255), */ 'three_33333',
|
||||
/* f26 BIT(64), */ b'011',
|
||||
/* f27 CHAR(255), */ 'three',
|
||||
/* f28 DECIMAL(30,7), */ 3.333,
|
||||
/* f29 DOUBLE, */ 3.333333333333333333333333333,
|
||||
/* f30 ENUM ('a','b','c')*/ 'c',
|
||||
/* f31 FLOAT, */ 3.0,
|
||||
/* f32 NUMERIC(17,9), */ 3.3333,
|
||||
/* f33 SET ('a','b','c'),*/ 'c',
|
||||
/*f34 VARBINARY(1025),*/ '3333 minus 3',
|
||||
/*f35 VARCHAR(257),*/ 'three times three'
|
||||
);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'f5' at row 1
|
||||
Warning 1264 Out of range value for column 'f24' at row 1
|
||||
INSERT into t31 values (1, 1, 4, 'fourth',
|
||||
/* f5 BIGINT, */ 333333333333333333333333,
|
||||
/* f6 BLOB, */ '3333333333333333333333',
|
||||
/* f7 DATE, */ '2007-07-18',
|
||||
/* f8 DATETIME, */ "2007-07-18",
|
||||
/* f9 FLOAT, */ 3.33333333,
|
||||
/* f10 INT, */ 333333333,
|
||||
/* f11 LONGBLOB, */ '3333333333333333333',
|
||||
/* f12 LONGTEXT, */ '3333333333333333333',
|
||||
/* f13 MEDIUMBLOB, */ '3333333333333333333',
|
||||
/* f14 MEDIUMINT, */ 33,
|
||||
/* f15 MEDIUMTEXT, */ 3.3,
|
||||
/* f16 REAL, */ 3.3,
|
||||
/* f17 SMALLINT, */ 3,
|
||||
/* f18 TEXT, */ '33',
|
||||
/* f19 TIME, */ '2:59:58.999',
|
||||
/* f20 TIMESTAMP, */ 20000303000000,
|
||||
/* f21 TINYBLOB, */ '3333',
|
||||
/* f22 TINYINT, */ 3,
|
||||
/* f23 TINYTEXT, */ '3',
|
||||
/* f24 YEAR, */ 3000,
|
||||
/* f25 BINARY(255), */ 'three_33333',
|
||||
/* f26 BIT(64), */ b'011',
|
||||
/* f27 CHAR(255), */ 'three',
|
||||
/* f28 DECIMAL(30,7), */ 3.333,
|
||||
/* f29 DOUBLE, */ 3.333333333333333333333333333,
|
||||
/* f30 ENUM ('a','b','c')*/ 'c',
|
||||
/* f31 FLOAT, */ 3.0,
|
||||
/* f32 NUMERIC(17,9), */ 3.3333,
|
||||
/* f33 SET ('a','b','c'),*/ 'c',
|
||||
/*f34 VARBINARY(1025),*/ '3333 minus 3',
|
||||
/*f35 VARCHAR(257),*/ 'three times three'
|
||||
),
|
||||
(1, 1, 5, 'fifth',
|
||||
/* f5 BIGINT, */ 333333333333333333333333,
|
||||
/* f6 BLOB, */ '3333333333333333333333',
|
||||
/* f7 DATE, */ '2007-07-18',
|
||||
/* f8 DATETIME, */ "2007-07-18",
|
||||
/* f9 FLOAT, */ 3.33333333,
|
||||
/* f10 INT, */ 333333333,
|
||||
/* f11 LONGBLOB, */ '3333333333333333333',
|
||||
/* f12 LONGTEXT, */ '3333333333333333333',
|
||||
/* f13 MEDIUMBLOB, */ '3333333333333333333',
|
||||
/* f14 MEDIUMINT, */ 33,
|
||||
/* f15 MEDIUMTEXT, */ 3.3,
|
||||
/* f16 REAL, */ 3.3,
|
||||
/* f17 SMALLINT, */ 3,
|
||||
/* f18 TEXT, */ '33',
|
||||
/* f19 TIME, */ '2:59:58.999',
|
||||
/* f20 TIMESTAMP, */ 20000303000000,
|
||||
/* f21 TINYBLOB, */ '3333',
|
||||
/* f22 TINYINT, */ 3,
|
||||
/* f23 TINYTEXT, */ '3',
|
||||
/* f24 YEAR, */ 3000,
|
||||
/* f25 BINARY(255), */ 'three_33333',
|
||||
/* f26 BIT(64), */ b'011',
|
||||
/* f27 CHAR(255), */ 'three',
|
||||
/* f28 DECIMAL(30,7), */ 3.333,
|
||||
/* f29 DOUBLE, */ 3.333333333333333333333333333,
|
||||
/* f30 ENUM ('a','b','c')*/ 'c',
|
||||
/* f31 FLOAT, */ 3.0,
|
||||
/* f32 NUMERIC(17,9), */ 3.3333,
|
||||
/* f33 SET ('a','b','c'),*/ 'c',
|
||||
/*f34 VARBINARY(1025),*/ '3333 minus 3',
|
||||
/*f35 VARCHAR(257),*/ 'three times three'
|
||||
),
|
||||
(1, 1, 6, 'sixth',
|
||||
/* f5 BIGINT, */ NULL,
|
||||
/* f6 BLOB, */ '3333333333333333333333',
|
||||
/* f7 DATE, */ '2007-07-18',
|
||||
/* f8 DATETIME, */ "2007-07-18",
|
||||
/* f9 FLOAT, */ 3.33333333,
|
||||
/* f10 INT, */ 333333333,
|
||||
/* f11 LONGBLOB, */ '3333333333333333333',
|
||||
/* f12 LONGTEXT, */ '3333333333333333333',
|
||||
/* f13 MEDIUMBLOB, */ '3333333333333333333',
|
||||
/* f14 MEDIUMINT, */ 33,
|
||||
/* f15 MEDIUMTEXT, */ 3.3,
|
||||
/* f16 REAL, */ 3.3,
|
||||
/* f17 SMALLINT, */ 3,
|
||||
/* f18 TEXT, */ '33',
|
||||
/* f19 TIME, */ '2:59:58.999',
|
||||
/* f20 TIMESTAMP, */ 20000303000000,
|
||||
/* f21 TINYBLOB, */ '3333',
|
||||
/* f22 TINYINT, */ 3,
|
||||
/* f23 TINYTEXT, */ '3',
|
||||
/* f24 YEAR, */ 3000,
|
||||
/* f25 BINARY(255), */ 'three_33333',
|
||||
/* f26 BIT(64), */ b'011',
|
||||
/* f27 CHAR(255), */ 'three',
|
||||
/* f28 DECIMAL(30,7), */ 3.333,
|
||||
/* f29 DOUBLE, */ 3.333333333333333333333333333,
|
||||
/* f30 ENUM ('a','b','c')*/ 'c',
|
||||
/* f31 FLOAT, */ 3.0,
|
||||
/* f32 NUMERIC(17,9), */ 3.3333,
|
||||
/* f33 SET ('a','b','c'),*/ 'c',
|
||||
/*f34 VARBINARY(1025),*/ '3333 minus 3',
|
||||
/*f35 VARCHAR(257),*/ NULL
|
||||
);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'f5' at row 1
|
||||
Warning 1264 Out of range value for column 'f24' at row 1
|
||||
Warning 1264 Out of range value for column 'f5' at row 2
|
||||
Warning 1264 Out of range value for column 'f24' at row 2
|
||||
Warning 1264 Out of range value for column 'f24' at row 3
|
||||
|
||||
** Sync slave with master **
|
||||
** Do selects from tables **
|
||||
|
||||
select * from t1 order by f3;
|
||||
f1 f2 f3 f4
|
||||
2 2 2 second
|
||||
3 3 3 next
|
||||
5 5 5 second
|
||||
6 6 6 next
|
||||
8 8 8 second
|
||||
9 9 9 next
|
||||
11 11 11 second
|
||||
12 12 12 next
|
||||
14 14 14 second
|
||||
15 15 15 next
|
||||
17 17 17 second
|
||||
18 18 18 next
|
||||
20 20 20 second
|
||||
21 21 21 next
|
||||
23 23 23 second
|
||||
24 24 24 next
|
||||
26 26 26 second
|
||||
27 27 27 next
|
||||
29 29 29 second
|
||||
30 30 30 next
|
||||
31 31 31 second
|
||||
32 32 32 second
|
||||
33 33 33 second
|
||||
34 34 34 second
|
||||
35 35 35 second
|
||||
36 36 36 second
|
||||
37 37 37 second
|
||||
38 38 38 second
|
||||
39 39 39 second
|
||||
40 40 40 second
|
||||
41 41 41 second
|
||||
42 42 42 second
|
||||
43 43 43 second
|
||||
44 44 44 second
|
||||
45 45 45 second
|
||||
46 46 46 second
|
||||
47 47 47 second
|
||||
48 48 48 second
|
||||
49 49 49 second
|
||||
50 50 50 second
|
||||
select * from t2 order by f1;
|
||||
f1 f2 f3 f4
|
||||
1 1 1 first
|
||||
2 2 2 second
|
||||
3 3 3 third
|
||||
select * from t3 order by f1;
|
||||
f1 f2 f3 f4
|
||||
1 1 1 first
|
||||
select * from t4 order by f1;
|
||||
f1 f2 f3 f4
|
||||
1 1 1 first
|
||||
select * from t31 order by f3;
|
||||
f1 f2 f3 f4
|
||||
1 1 1 first
|
||||
1 1 2 second
|
||||
1 1 3 third
|
||||
1 1 4 fourth
|
||||
1 1 5 fifth
|
||||
1 1 6 sixth
|
||||
|
||||
** Do updates master **
|
||||
|
||||
update t31 set f5=555555555555555 where f3=6;
|
||||
update t31 set f2=2 where f3=2;
|
||||
update t31 set f1=NULL where f3=1;
|
||||
update t31 set f3=NULL, f27=NULL, f35='f35 new value' where f3=3;
|
||||
Warnings:
|
||||
Warning 1048 Column 'f3' cannot be null
|
||||
|
||||
** Delete from Master **
|
||||
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
delete from t3;
|
||||
delete from t4;
|
||||
delete from t31;
|
||||
select * from t31;
|
||||
f1 f2 f3 f4
|
||||
|
||||
** Check slave status **
|
||||
|
||||
include/check_slave_is_running.inc
|
||||
|
||||
****************************************
|
||||
* columns in master at middle of table *
|
||||
* Expect: Proper error message *
|
||||
****************************************
|
||||
|
||||
** Stop and Reset Slave **
|
||||
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
|
||||
** create table slave side **
|
||||
CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
||||
) ENGINE='MyISAM';
|
||||
|
||||
** Connect to master and create table **
|
||||
|
||||
CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233',
|
||||
c CHAR(5), e INT DEFAULT '1')ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
|
||||
(2,@b1,DEFAULT,'JOE',DEFAULT),
|
||||
(3,@b1,DEFAULT,'QA',DEFAULT);
|
||||
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254'
|
||||
|
||||
*** Drop t10 ***
|
||||
DROP TABLE t10;
|
||||
|
||||
*********************************************
|
||||
* More columns in master at middle of table *
|
||||
* Expect: Proper error message *
|
||||
*********************************************
|
||||
|
||||
*** Create t11 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254)
|
||||
) ENGINE='MyISAM';
|
||||
|
||||
*** Create t11 on Master ***
|
||||
CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT,
|
||||
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
|
||||
(2,@b1,'Testing is cool','JOE',DEFAULT),
|
||||
(3,@b1,DEFAULT,'QA',DEFAULT);
|
||||
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15'
|
||||
|
||||
*** Drop t11 ***
|
||||
DROP TABLE t11;
|
||||
|
||||
*********************************************
|
||||
* More columns in master at middle of table *
|
||||
* Expect: This one should pass blob-text *
|
||||
*********************************************
|
||||
|
||||
*** Create t12 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB
|
||||
) ENGINE='MyISAM';
|
||||
|
||||
*** Create t12 on Master ***
|
||||
CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT,
|
||||
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t12 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
|
||||
(2,@b1,'JOE',DEFAULT,DEFAULT),
|
||||
(3,@b1,'QA',DEFAULT,DEFAULT);
|
||||
|
||||
SELECT a,hex(b),f,c,e FROM t12 ORDER BY a;
|
||||
a hex(b) f c e
|
||||
1 62316231623162316231623162316231 Kyle test 1
|
||||
2 62316231623162316231623162316231 JOE test 1
|
||||
3 62316231623162316231623162316231 QA test 1
|
||||
|
||||
*** Select on Slave ***
|
||||
SELECT a,hex(b),c FROM t12 ORDER BY a;
|
||||
a hex(b) c
|
||||
1 62316231623162316231623162316231 Kyle
|
||||
2 62316231623162316231623162316231 JOE
|
||||
3 62316231623162316231623162316231 QA
|
||||
|
||||
*** Drop t12 ***
|
||||
DROP TABLE t12;
|
||||
|
||||
****************************************************
|
||||
* - Alter Master adding columns at middle of table *
|
||||
* Expect: columns added *
|
||||
****************************************************
|
||||
|
||||
|
||||
*** Create t14 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='MyISAM';
|
||||
|
||||
*** Create t14 on Master ***
|
||||
CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
ALTER TABLE t14 ADD COLUMN c2 DECIMAL(8,2) AFTER c1;
|
||||
ALTER TABLE t14 ADD COLUMN c3 TEXT AFTER c2;
|
||||
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t14 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle',DEFAULT,DEFAULT),
|
||||
(2,2.00,'This Test Should work',@b1,'JOE',DEFAULT,DEFAULT),
|
||||
(3,3.00,'If is does not, I will open a bug',@b1,'QA',DEFAULT,DEFAULT);
|
||||
|
||||
SELECT c1,c2,c3,hex(c4),c5,c6,c7 FROM t14 ORDER BY c1;
|
||||
c1 c2 c3 hex(c4) c5 c6 c7
|
||||
1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 2.00 This Test Should work 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP
|
||||
3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP
|
||||
|
||||
*** Select on Slave ****
|
||||
SELECT c1,c2,c3,hex(c4),c5 FROM t14 ORDER BY c1;
|
||||
c1 c2 c3 hex(c4) c5
|
||||
1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle
|
||||
2 2.00 This Test Should work 62316231623162316231623162316231 JOE
|
||||
3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA
|
||||
|
||||
****************************************************
|
||||
* - Alter Master Dropping columns from the middle. *
|
||||
* Expect: columns dropped *
|
||||
****************************************************
|
||||
|
||||
*** connect to master and drop columns ***
|
||||
ALTER TABLE t14 DROP COLUMN c2;
|
||||
ALTER TABLE t14 DROP COLUMN c7;
|
||||
|
||||
*** Select from Master ***
|
||||
SELECT c1,c3,hex(c4),c5,c6 FROM t14 ORDER BY c1;
|
||||
c1 c3 hex(c4) c5 c6
|
||||
1 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1
|
||||
2 This Test Should work 62316231623162316231623162316231 JOE 1
|
||||
3 If is does not, I will open a bug 62316231623162316231623162316231 QA 1
|
||||
|
||||
************
|
||||
* Bug30415 *
|
||||
************
|
||||
include/wait_for_slave_sql_error.inc [errno=1091]
|
||||
Last_SQL_Error = 'Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7''
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
|
||||
*** Drop t14 ***
|
||||
DROP TABLE t14;
|
||||
DROP TABLE t14;
|
||||
RESET MASTER;
|
||||
START SLAVE;
|
||||
|
||||
*************************************************
|
||||
* - Alter Master adding columns at end of table *
|
||||
* Expect: Error 1054 *
|
||||
*************************************************
|
||||
|
||||
*** Create t15 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t15 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='MyISAM';
|
||||
|
||||
*** Create t15 on Master ***
|
||||
CREATE TABLE t15 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7;
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t15 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT,3.00),
|
||||
(2,@b1,'JOE',DEFAULT,DEFAULT,3.00),
|
||||
(3,@b1,'QA',DEFAULT,DEFAULT,3.00);
|
||||
SELECT c1,hex(c4),c5,c6,c7,c2 FROM t15 ORDER BY c1;
|
||||
c1 hex(c4) c5 c6 c7 c2
|
||||
1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP 3.00
|
||||
2 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP 3.00
|
||||
3 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP 3.00
|
||||
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1054 ***
|
||||
********************************************
|
||||
|
||||
include/wait_for_slave_sql_error.inc [errno=1054]
|
||||
Last_SQL_Error = 'Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7''
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
|
||||
*** Drop t15 ***
|
||||
DROP TABLE t15;
|
||||
DROP TABLE t15;
|
||||
RESET MASTER;
|
||||
START SLAVE;
|
||||
|
||||
************************************************
|
||||
* - Create index on Master column not on slave *
|
||||
* Expect:Warning *
|
||||
************************************************
|
||||
|
||||
*** Create t16 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t16 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='MyISAM';
|
||||
|
||||
*** Create t16 on Master ***
|
||||
CREATE TABLE t16 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Create Index and Data Insert ***
|
||||
CREATE INDEX part_of_c6 ON t16 (c6);
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t16 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
|
||||
(2,@b1,'JOE',2,DEFAULT),
|
||||
(3,@b1,'QA',3,DEFAULT);
|
||||
SELECT c1,hex(c4),c5,c6,c7 FROM t16 ORDER BY c1;
|
||||
c1 hex(c4) c5 c6 c7
|
||||
1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
|
||||
3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
|
||||
|
||||
*****************
|
||||
*** BUG 30434 ***
|
||||
*****************
|
||||
|
||||
include/wait_for_slave_sql_error.inc [errno=1072]
|
||||
Last_SQL_Error = 'Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)''
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
|
||||
*** Drop t16 ***
|
||||
DROP TABLE t16;
|
||||
DROP TABLE t16;
|
||||
RESET MASTER;
|
||||
START SLAVE;
|
||||
|
||||
*****************************************************
|
||||
* - Delete rows using column on Master not on slave *
|
||||
* Expect: Rows Deleted *
|
||||
*****************************************************
|
||||
|
||||
*** Create t17 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t17 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='MyISAM';
|
||||
|
||||
*** Create t17 on Master ***
|
||||
CREATE TABLE t17 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t17 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
|
||||
(2,@b1,'JOE',2,DEFAULT),
|
||||
(3,@b1,'QA',3,DEFAULT);
|
||||
SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1;
|
||||
c1 hex(c4) c5 c6 c7
|
||||
1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
|
||||
3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
|
||||
|
||||
** Select * from Slave **
|
||||
SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1;
|
||||
c1 hex(c4) c5
|
||||
1 62316231623162316231623162316231 Kyle
|
||||
2 62316231623162316231623162316231 JOE
|
||||
3 62316231623162316231623162316231 QA
|
||||
|
||||
** Delete from master **
|
||||
DELETE FROM t17 WHERE c6 = 3;
|
||||
SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1;
|
||||
c1 hex(c4) c5 c6 c7
|
||||
1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
|
||||
|
||||
** Check slave **
|
||||
SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1;
|
||||
c1 hex(c4) c5
|
||||
1 62316231623162316231623162316231 Kyle
|
||||
2 62316231623162316231623162316231 JOE
|
||||
DROP TABLE t17;
|
||||
|
||||
|
||||
*****************************************************
|
||||
* - Update row using column on Master not on slave *
|
||||
* Expect: Rows updated *
|
||||
*****************************************************
|
||||
|
||||
** Bug30674 **
|
||||
|
||||
*** Create t18 on slave ***
|
||||
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t18 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='MyISAM';
|
||||
|
||||
*** Create t18 on Master ***
|
||||
CREATE TABLE t18 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t18 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
|
||||
(2,@b1,'JOE',2,DEFAULT),
|
||||
(3,@b1,'QA',3,DEFAULT);
|
||||
SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1;
|
||||
c1 hex(c4) c5 c6 c7
|
||||
1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
|
||||
3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP
|
||||
|
||||
** Select * from Slave **
|
||||
SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1;
|
||||
c1 hex(c4) c5
|
||||
1 62316231623162316231623162316231 Kyle
|
||||
2 62316231623162316231623162316231 JOE
|
||||
3 62316231623162316231623162316231 QA
|
||||
|
||||
** update from master **
|
||||
UPDATE t18 SET c5 = 'TEST' WHERE c6 = 3;
|
||||
SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1;
|
||||
c1 hex(c4) c5 c6 c7
|
||||
1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP
|
||||
3 62316231623162316231623162316231 TEST 3 CURRENT_TIMESTAMP
|
||||
|
||||
** Check slave **
|
||||
SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1;
|
||||
c1 hex(c4) c5
|
||||
1 62316231623162316231623162316231 Kyle
|
||||
2 62316231623162316231623162316231 JOE
|
||||
3 62316231623162316231623162316231 TEST
|
||||
DROP TABLE t18;
|
||||
|
||||
|
||||
*****************************************************
|
||||
* - Insert UUID column on Master not on slave *
|
||||
* Expect: Rows inserted *
|
||||
*****************************************************
|
||||
|
||||
*** Create t5 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t5 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='MyISAM';
|
||||
|
||||
*** Create t5 on Master ***
|
||||
CREATE TABLE t5 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 LONG,
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
INSERT INTO t5 () VALUES(1,@b1,'Kyle',UUID(),DEFAULT),
|
||||
(2,@b1,'JOE',UUID(),DEFAULT),
|
||||
(3,@b1,'QA',UUID(),DEFAULT);
|
||||
SELECT c1,hex(c4),c5,c6,c7 FROM t5 ORDER BY c1;
|
||||
c1 hex(c4) c5 c6 c7
|
||||
1 6231623162316231 Kyle UUID TIME
|
||||
2 6231623162316231 JOE UUID TIME
|
||||
3 6231623162316231 QA UUID TIME
|
||||
|
||||
** Select * from Slave **
|
||||
SELECT c1,hex(c4),c5 FROM t5 ORDER BY c1;
|
||||
c1 hex(c4) c5
|
||||
1 6231623162316231 Kyle
|
||||
2 6231623162316231 JOE
|
||||
3 6231623162316231 QA
|
||||
DROP TABLE t5;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,593 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
call mtr.add_suppression("Slave: Unknown table 't6' Error_code: 1051");
|
||||
**** Diff Table Def Start ****
|
||||
*** On Slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t1 (a INT, b INT PRIMARY KEY, c CHAR(20),
|
||||
d FLOAT DEFAULT '2.00',
|
||||
e CHAR(4) DEFAULT 'TEST')
|
||||
ENGINE='InnoDB';
|
||||
*** Create t1 on Master ***
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c CHAR(10)
|
||||
) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
INSERT INTO t1 () VALUES(1,2,'TEXAS'),(2,1,'AUSTIN'),(3,4,'QA');
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a b c
|
||||
1 2 TEXAS
|
||||
2 1 AUSTIN
|
||||
3 4 QA
|
||||
*** Select from slave ***
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a b c d e
|
||||
1 2 TEXAS 2 TEST
|
||||
2 1 AUSTIN 2 TEST
|
||||
3 4 QA 2 TEST
|
||||
*** Drop t1 ***
|
||||
DROP TABLE t1;
|
||||
*** Create t2 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t2 (a INT, b INT PRIMARY KEY, c CHAR(5),
|
||||
d FLOAT DEFAULT '2.00',
|
||||
e CHAR(5) DEFAULT 'TEST2')
|
||||
ENGINE='InnoDB';
|
||||
*** Create t2 on Master ***
|
||||
CREATE TABLE t2 (a INT PRIMARY KEY, b INT, c CHAR(10)
|
||||
) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Master Data Insert ***
|
||||
INSERT INTO t2 () VALUES(1,2,'Kyle, TEX'),(2,1,'JOE AUSTIN'),(3,4,'QA TESTING');
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
a b c
|
||||
1 2 Kyle, TEX
|
||||
2 1 JOE AUSTIN
|
||||
3 4 QA TESTING
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
include/wait_for_slave_sql_error.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size.'
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
a b c d e
|
||||
RESET MASTER;
|
||||
START SLAVE;
|
||||
*** Drop t2 ***
|
||||
DROP TABLE t2;
|
||||
*** Create t3 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t3 (a INT, b INT PRIMARY KEY, c CHAR(20),
|
||||
d FLOAT DEFAULT '2.00',
|
||||
e CHAR(5) DEFAULT 'TEST2')
|
||||
ENGINE='InnoDB';
|
||||
*** Create t3 on Master ***
|
||||
CREATE TABLE t3 (a BLOB, b INT PRIMARY KEY, c CHAR(20)
|
||||
) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TESTING');
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3'
|
||||
*** Drop t3 ***
|
||||
DROP TABLE t3;
|
||||
*** Create t4 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t4 (a INT, b INT PRIMARY KEY, c CHAR(20),
|
||||
d FLOAT DEFAULT '2.00',
|
||||
e CHAR(5) DEFAULT 'TEST2')
|
||||
ENGINE='InnoDB';
|
||||
*** Create t4 on Master ***
|
||||
CREATE TABLE t4 (a DECIMAL(8,2), b INT PRIMARY KEY, c CHAR(20)
|
||||
) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'),
|
||||
(30000.22,4,'QA TESTING');
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3'
|
||||
*** Drop t4 ***
|
||||
DROP TABLE t4;
|
||||
*** Create t5 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t5 (a INT PRIMARY KEY, b CHAR(5),
|
||||
c FLOAT, d INT, e DOUBLE,
|
||||
f DECIMAL(8,2))ENGINE='InnoDB';
|
||||
*** Create t5 on Master ***
|
||||
CREATE TABLE t5 (a INT PRIMARY KEY, b VARCHAR(6),
|
||||
c DECIMAL(8,2), d BIT, e BLOB,
|
||||
f FLOAT) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098),
|
||||
(2,'JOE',300.01,0,'b2b2',1.0000009);
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246'
|
||||
*** Drop t5 ***
|
||||
DROP TABLE t5;
|
||||
*** Create t6 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t6 (a INT PRIMARY KEY, b CHAR(5),
|
||||
c FLOAT, d INT)ENGINE='InnoDB';
|
||||
*** Create t6 on Master ***
|
||||
CREATE TABLE t6 (a INT PRIMARY KEY, b VARCHAR(6),
|
||||
c DECIMAL(8,2), d BIT
|
||||
) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
INSERT INTO t6 () VALUES(1,'Kyle',200.23,1),
|
||||
(2,'JOE',300.01,0);
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error.inc [errno=1535]
|
||||
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 ***
|
||||
DROP TABLE t6;
|
||||
DROP TABLE t6;
|
||||
START SLAVE;
|
||||
**** Diff Table Def End ****
|
||||
**** Extra Colums Start ****
|
||||
*** Create t7 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t7 (a INT KEY, b BLOB, c CHAR(5),
|
||||
d TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
|
||||
e CHAR(20) DEFAULT 'Extra Column Testing')
|
||||
ENGINE='InnoDB';
|
||||
*** Create t7 on Master ***
|
||||
CREATE TABLE t7 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
||||
) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t7 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||
SELECT * FROM t7 ORDER BY a;
|
||||
a b c
|
||||
1 b1b1 Kyle
|
||||
2 b1b1 JOE
|
||||
3 b1b1 QA
|
||||
*** Select from slave ***
|
||||
SELECT * FROM t7 ORDER BY a;
|
||||
a b c d e
|
||||
1 b1b1 Kyle 0000-00-00 00:00:00 Extra Column Testing
|
||||
2 b1b1 JOE 0000-00-00 00:00:00 Extra Column Testing
|
||||
3 b1b1 QA 0000-00-00 00:00:00 Extra Column Testing
|
||||
*** Drop t7 ***
|
||||
DROP TABLE t7;
|
||||
*** Create t8 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t8 (a INT KEY, b BLOB, c CHAR(5),
|
||||
d TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
|
||||
e INT)ENGINE='InnoDB';
|
||||
*** Create t8 on Master ***
|
||||
CREATE TABLE t8 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
||||
) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t8 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||
*** Drop t8 ***
|
||||
DROP TABLE t8;
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
|
||||
d TIMESTAMP,
|
||||
e INT NOT NULL,
|
||||
f text not null,
|
||||
g text,
|
||||
h blob not null,
|
||||
i blob) ENGINE='InnoDB';
|
||||
*** Create t9 on Master ***
|
||||
CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
||||
) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||
select * from t9;
|
||||
a b c d e f g h i
|
||||
1 b1b1b1b1b1b1b1b1 Kyle 0000-00-00 00:00:00 0 NULL NULL
|
||||
2 b1b1b1b1b1b1b1b1 JOE 0000-00-00 00:00:00 0 NULL NULL
|
||||
3 b1b1b1b1b1b1b1b1 QA 0000-00-00 00:00:00 0 NULL NULL
|
||||
DROP TABLE t9;
|
||||
*** Create t10 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233',
|
||||
c CHAR(5), e INT DEFAULT '1')ENGINE='InnoDB';
|
||||
*** Create t10 on Master ***
|
||||
CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
||||
) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5'
|
||||
*** Drop t10 ***
|
||||
DROP TABLE t10;
|
||||
*** Create t11 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT,
|
||||
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='InnoDB';
|
||||
*** Create t11 on Master ***
|
||||
CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254)
|
||||
) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252'
|
||||
*** Drop t11 ***
|
||||
DROP TABLE t11;
|
||||
*** Create t12 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT,
|
||||
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='InnoDB';
|
||||
*** Create t12 on Master ***
|
||||
CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB
|
||||
) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t12 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||
SELECT * FROM t12 ORDER BY a;
|
||||
a b c
|
||||
1 b1b1b1b1b1b1b1b1 Kyle
|
||||
2 b1b1b1b1b1b1b1b1 JOE
|
||||
3 b1b1b1b1b1b1b1b1 QA
|
||||
*** Select on Slave ***
|
||||
SELECT * FROM t12 ORDER BY a;
|
||||
a b f c e
|
||||
1 b1b1b1b1b1b1b1b1 Kyle test 1
|
||||
2 b1b1b1b1b1b1b1b1 JOE test 1
|
||||
3 b1b1b1b1b1b1b1b1 QA test 1
|
||||
*** Drop t12 ***
|
||||
DROP TABLE t12;
|
||||
**** Extra Colums End ****
|
||||
*** BUG 22177 Start ***
|
||||
*** Create t13 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t13 (a INT KEY, b BLOB, c CHAR(5),
|
||||
d INT DEFAULT '1',
|
||||
e TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='InnoDB';
|
||||
*** Create t13 on Master ***
|
||||
CREATE TABLE t13 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
||||
) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t13 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||
SELECT * FROM t13 ORDER BY a;
|
||||
a b c
|
||||
1 b1b1b1b1b1b1b1b1 Kyle
|
||||
2 b1b1b1b1b1b1b1b1 JOE
|
||||
3 b1b1b1b1b1b1b1b1 QA
|
||||
*** Select on Slave ****
|
||||
SELECT * FROM t13 ORDER BY a;
|
||||
a b c d e
|
||||
1 b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
|
||||
3 b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
|
||||
*** Drop t13 ***
|
||||
DROP TABLE t13;
|
||||
*** 22117 END ***
|
||||
*** Alter Master Table Testing Start ***
|
||||
*** Create t14 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='InnoDB';
|
||||
*** Create t14 on Master ***
|
||||
CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
ALTER TABLE t14 ADD COLUMN c2 DECIMAL(8,2) AFTER c1;
|
||||
ALTER TABLE t14 ADD COLUMN c3 TEXT AFTER c2;
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t14 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle'),
|
||||
(2,2.00,'This Test Should work',@b1,'JOE'),
|
||||
(3,3.00,'If is does not, I will open a bug',@b1,'QA');
|
||||
SELECT * FROM t14 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA
|
||||
*** Select on Slave ****
|
||||
SELECT * FROM t14 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5 c6 c7
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
|
||||
*** Create t14a on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t14a (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='InnoDB';
|
||||
*** Create t14a on Master ***
|
||||
CREATE TABLE t14a (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t14a () VALUES(1,@b1,'Kyle'),
|
||||
(2,@b1,'JOE'),
|
||||
(3,@b1,'QA');
|
||||
SELECT * FROM t14a ORDER BY c1;
|
||||
c1 c4 c5
|
||||
1 b1b1b1b1b1b1b1b1 Kyle
|
||||
2 b1b1b1b1b1b1b1b1 JOE
|
||||
3 b1b1b1b1b1b1b1b1 QA
|
||||
*** Select on Slave ****
|
||||
SELECT * FROM t14a ORDER BY c1;
|
||||
c1 c4 c5 c6 c7
|
||||
1 b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
|
||||
3 b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
*** Master Drop c5 ***
|
||||
ALTER TABLE t14a DROP COLUMN c5;
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t14a () VALUES(4,@b1),
|
||||
(5,@b1),
|
||||
(6,@b1);
|
||||
SELECT * FROM t14a ORDER BY c1;
|
||||
c1 c4
|
||||
1 b1b1b1b1b1b1b1b1
|
||||
2 b1b1b1b1b1b1b1b1
|
||||
3 b1b1b1b1b1b1b1b1
|
||||
4 b1b1b1b1b1b1b1b1
|
||||
5 b1b1b1b1b1b1b1b1
|
||||
6 b1b1b1b1b1b1b1b1
|
||||
*** Select on Slave ****
|
||||
SELECT * FROM t14a ORDER BY c1;
|
||||
c1 c4 c5 c6 c7
|
||||
1 b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
|
||||
3 b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
|
||||
4 b1b1b1b1b1b1b1b1 NULL 1 CURRENT_TIMESTAMP
|
||||
5 b1b1b1b1b1b1b1b1 NULL 1 CURRENT_TIMESTAMP
|
||||
6 b1b1b1b1b1b1b1b1 NULL 1 CURRENT_TIMESTAMP
|
||||
DROP TABLE t14a;
|
||||
*** connect to master and drop columns ***
|
||||
ALTER TABLE t14 DROP COLUMN c2;
|
||||
ALTER TABLE t14 DROP COLUMN c4;
|
||||
*** Select from Master ***
|
||||
SELECT * FROM t14 ORDER BY c1;
|
||||
c1 c3 c5
|
||||
1 Replication Testing Extra Col Kyle
|
||||
2 This Test Should work JOE
|
||||
3 If is does not, I will open a bug QA
|
||||
*** Select from Slave ***
|
||||
SELECT * FROM t14 ORDER BY c1;
|
||||
c1 c3 c5 c6 c7
|
||||
1 Replication Testing Extra Col Kyle 1 CURRENT_TIMESTAMP
|
||||
2 This Test Should work JOE 1 CURRENT_TIMESTAMP
|
||||
3 If is does not, I will open a bug QA 1 CURRENT_TIMESTAMP
|
||||
*** Drop t14 ***
|
||||
DROP TABLE t14;
|
||||
*** Create t15 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t15 (c1 INT KEY, c2 DECIMAL(8,2), c3 TEXT,
|
||||
c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='InnoDB';
|
||||
*** Create t15 on Master ***
|
||||
CREATE TABLE t15 (c1 INT PRIMARY KEY, c2 DECIMAL(8,2), c3 TEXT,
|
||||
c4 BLOB, c5 CHAR(5)) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
call mtr.add_suppression("Slave SQL.*Error .Unknown table .t6.. on query.* Error_code: 1051");
|
||||
call mtr.add_suppression("Slave SQL.*Error .Duplicate column name .c6.. on query.* Error_code: 1060");
|
||||
call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column . ...e mismatch.* Error_code: 1535");
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t15 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle'),
|
||||
(2,2.00,'This Test Should work',@b1,'JOE'),
|
||||
(3,3.00,'If is does not, I will open a bug',@b1,'QA');
|
||||
SELECT * FROM t15 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA
|
||||
*** Select on Slave ****
|
||||
SELECT * FROM t15 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5 c6 c7
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
|
||||
*** Add column on master that is a Extra on Slave ***
|
||||
ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5;
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1060 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1060]
|
||||
Last_SQL_Error = 'Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5''
|
||||
*** Try to insert in master ****
|
||||
INSERT INTO t15 () VALUES(5,2.00,'Replication Testing',@b1,'Buda',2);
|
||||
SELECT * FROM t15 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5 c6
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle NULL
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE NULL
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA NULL
|
||||
5 2.00 Replication Testing b1b1b1b1b1b1b1b1 Buda 2
|
||||
*** Try to select from slave ****
|
||||
SELECT * FROM t15 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5 c6 c7
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
|
||||
5 2.00 Replication Testing b1b1b1b1b1b1b1b1 Buda 2 CURRENT_TIMESTAMP
|
||||
*** DROP TABLE t15 ***
|
||||
DROP TABLE t15;
|
||||
*** Create t16 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t16 (c1 INT KEY, c2 DECIMAL(8,2), c3 TEXT,
|
||||
c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='InnoDB';
|
||||
*** Create t16 on Master ***
|
||||
CREATE TABLE t16 (c1 INT PRIMARY KEY, c2 DECIMAL(8,2), c3 TEXT,
|
||||
c4 BLOB, c5 CHAR(5))ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t16 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle'),
|
||||
(2,2.00,'This Test Should work',@b1,'JOE'),
|
||||
(3,3.00,'If is does not, I will open a bug',@b1,'QA');
|
||||
SELECT * FROM t16 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA
|
||||
*** Select on Slave ****
|
||||
SELECT * FROM t16 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5 c6 c7
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
|
||||
*** Add Partition on master ***
|
||||
ALTER TABLE t16 PARTITION BY KEY(c1) PARTITIONS 4;
|
||||
INSERT INTO t16 () VALUES(4,1.00,'Replication Rocks',@b1,'Omer');
|
||||
SHOW CREATE TABLE t16;
|
||||
Table Create Table
|
||||
t16 CREATE TABLE `t16` (
|
||||
`c1` int(11) NOT NULL,
|
||||
`c2` decimal(8,2) DEFAULT NULL,
|
||||
`c3` text,
|
||||
`c4` blob,
|
||||
`c5` char(5) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
/*!50100 PARTITION BY KEY (c1)
|
||||
PARTITIONS 4 */
|
||||
*** Show table on Slave ****
|
||||
SHOW CREATE TABLE t16;
|
||||
Table Create Table
|
||||
t16 CREATE TABLE `t16` (
|
||||
`c1` int(11) NOT NULL,
|
||||
`c2` decimal(8,2) DEFAULT NULL,
|
||||
`c3` text,
|
||||
`c4` blob,
|
||||
`c5` char(5) DEFAULT NULL,
|
||||
`c6` int(11) DEFAULT '1',
|
||||
`c7` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`c1`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
/*!50100 PARTITION BY KEY (c1)
|
||||
PARTITIONS 4 */
|
||||
*** DROP TABLE t16 ***
|
||||
DROP TABLE t16;
|
||||
*** Alter Master End ***
|
||||
*** Create t17 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t17 (a SMALLINT, b INT PRIMARY KEY, c CHAR(5),
|
||||
d FLOAT DEFAULT '2.00',
|
||||
e CHAR(5) DEFAULT 'TEST2')
|
||||
ENGINE='InnoDB';
|
||||
*** Create t17 on Master ***
|
||||
CREATE TABLE t17 (a BIGINT PRIMARY KEY, b INT, c CHAR(10)
|
||||
) ENGINE='InnoDB';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX');
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2'
|
||||
** DROP table t17 ***
|
||||
DROP TABLE t17;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,593 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
call mtr.add_suppression("Slave: Unknown table 't6' Error_code: 1051");
|
||||
**** Diff Table Def Start ****
|
||||
*** On Slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t1 (a INT, b INT PRIMARY KEY, c CHAR(20),
|
||||
d FLOAT DEFAULT '2.00',
|
||||
e CHAR(4) DEFAULT 'TEST')
|
||||
ENGINE='MyISAM';
|
||||
*** Create t1 on Master ***
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c CHAR(10)
|
||||
) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
INSERT INTO t1 () VALUES(1,2,'TEXAS'),(2,1,'AUSTIN'),(3,4,'QA');
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a b c
|
||||
1 2 TEXAS
|
||||
2 1 AUSTIN
|
||||
3 4 QA
|
||||
*** Select from slave ***
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a b c d e
|
||||
1 2 TEXAS 2 TEST
|
||||
2 1 AUSTIN 2 TEST
|
||||
3 4 QA 2 TEST
|
||||
*** Drop t1 ***
|
||||
DROP TABLE t1;
|
||||
*** Create t2 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t2 (a INT, b INT PRIMARY KEY, c CHAR(5),
|
||||
d FLOAT DEFAULT '2.00',
|
||||
e CHAR(5) DEFAULT 'TEST2')
|
||||
ENGINE='MyISAM';
|
||||
*** Create t2 on Master ***
|
||||
CREATE TABLE t2 (a INT PRIMARY KEY, b INT, c CHAR(10)
|
||||
) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Master Data Insert ***
|
||||
INSERT INTO t2 () VALUES(1,2,'Kyle, TEX'),(2,1,'JOE AUSTIN'),(3,4,'QA TESTING');
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
a b c
|
||||
1 2 Kyle, TEX
|
||||
2 1 JOE AUSTIN
|
||||
3 4 QA TESTING
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
include/wait_for_slave_sql_error.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size.'
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
a b c d e
|
||||
RESET MASTER;
|
||||
START SLAVE;
|
||||
*** Drop t2 ***
|
||||
DROP TABLE t2;
|
||||
*** Create t3 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t3 (a INT, b INT PRIMARY KEY, c CHAR(20),
|
||||
d FLOAT DEFAULT '2.00',
|
||||
e CHAR(5) DEFAULT 'TEST2')
|
||||
ENGINE='MyISAM';
|
||||
*** Create t3 on Master ***
|
||||
CREATE TABLE t3 (a BLOB, b INT PRIMARY KEY, c CHAR(20)
|
||||
) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TESTING');
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3'
|
||||
*** Drop t3 ***
|
||||
DROP TABLE t3;
|
||||
*** Create t4 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t4 (a INT, b INT PRIMARY KEY, c CHAR(20),
|
||||
d FLOAT DEFAULT '2.00',
|
||||
e CHAR(5) DEFAULT 'TEST2')
|
||||
ENGINE='MyISAM';
|
||||
*** Create t4 on Master ***
|
||||
CREATE TABLE t4 (a DECIMAL(8,2), b INT PRIMARY KEY, c CHAR(20)
|
||||
) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'),
|
||||
(30000.22,4,'QA TESTING');
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3'
|
||||
*** Drop t4 ***
|
||||
DROP TABLE t4;
|
||||
*** Create t5 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t5 (a INT PRIMARY KEY, b CHAR(5),
|
||||
c FLOAT, d INT, e DOUBLE,
|
||||
f DECIMAL(8,2))ENGINE='MyISAM';
|
||||
*** Create t5 on Master ***
|
||||
CREATE TABLE t5 (a INT PRIMARY KEY, b VARCHAR(6),
|
||||
c DECIMAL(8,2), d BIT, e BLOB,
|
||||
f FLOAT) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098),
|
||||
(2,'JOE',300.01,0,'b2b2',1.0000009);
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246'
|
||||
*** Drop t5 ***
|
||||
DROP TABLE t5;
|
||||
*** Create t6 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t6 (a INT PRIMARY KEY, b CHAR(5),
|
||||
c FLOAT, d INT)ENGINE='MyISAM';
|
||||
*** Create t6 on Master ***
|
||||
CREATE TABLE t6 (a INT PRIMARY KEY, b VARCHAR(6),
|
||||
c DECIMAL(8,2), d BIT
|
||||
) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
INSERT INTO t6 () VALUES(1,'Kyle',200.23,1),
|
||||
(2,'JOE',300.01,0);
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error.inc [errno=1535]
|
||||
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 ***
|
||||
DROP TABLE t6;
|
||||
DROP TABLE t6;
|
||||
START SLAVE;
|
||||
**** Diff Table Def End ****
|
||||
**** Extra Colums Start ****
|
||||
*** Create t7 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t7 (a INT KEY, b BLOB, c CHAR(5),
|
||||
d TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
|
||||
e CHAR(20) DEFAULT 'Extra Column Testing')
|
||||
ENGINE='MyISAM';
|
||||
*** Create t7 on Master ***
|
||||
CREATE TABLE t7 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
||||
) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t7 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||
SELECT * FROM t7 ORDER BY a;
|
||||
a b c
|
||||
1 b1b1 Kyle
|
||||
2 b1b1 JOE
|
||||
3 b1b1 QA
|
||||
*** Select from slave ***
|
||||
SELECT * FROM t7 ORDER BY a;
|
||||
a b c d e
|
||||
1 b1b1 Kyle 0000-00-00 00:00:00 Extra Column Testing
|
||||
2 b1b1 JOE 0000-00-00 00:00:00 Extra Column Testing
|
||||
3 b1b1 QA 0000-00-00 00:00:00 Extra Column Testing
|
||||
*** Drop t7 ***
|
||||
DROP TABLE t7;
|
||||
*** Create t8 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t8 (a INT KEY, b BLOB, c CHAR(5),
|
||||
d TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
|
||||
e INT)ENGINE='MyISAM';
|
||||
*** Create t8 on Master ***
|
||||
CREATE TABLE t8 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
||||
) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t8 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||
*** Drop t8 ***
|
||||
DROP TABLE t8;
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
|
||||
d TIMESTAMP,
|
||||
e INT NOT NULL,
|
||||
f text not null,
|
||||
g text,
|
||||
h blob not null,
|
||||
i blob) ENGINE='MyISAM';
|
||||
*** Create t9 on Master ***
|
||||
CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
||||
) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||
select * from t9;
|
||||
a b c d e f g h i
|
||||
1 b1b1b1b1b1b1b1b1 Kyle 0000-00-00 00:00:00 0 NULL NULL
|
||||
2 b1b1b1b1b1b1b1b1 JOE 0000-00-00 00:00:00 0 NULL NULL
|
||||
3 b1b1b1b1b1b1b1b1 QA 0000-00-00 00:00:00 0 NULL NULL
|
||||
DROP TABLE t9;
|
||||
*** Create t10 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233',
|
||||
c CHAR(5), e INT DEFAULT '1')ENGINE='MyISAM';
|
||||
*** Create t10 on Master ***
|
||||
CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
||||
) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5'
|
||||
*** Drop t10 ***
|
||||
DROP TABLE t10;
|
||||
*** Create t11 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT,
|
||||
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='MyISAM';
|
||||
*** Create t11 on Master ***
|
||||
CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254)
|
||||
) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252'
|
||||
*** Drop t11 ***
|
||||
DROP TABLE t11;
|
||||
*** Create t12 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT,
|
||||
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='MyISAM';
|
||||
*** Create t12 on Master ***
|
||||
CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB
|
||||
) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t12 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||
SELECT * FROM t12 ORDER BY a;
|
||||
a b c
|
||||
1 b1b1b1b1b1b1b1b1 Kyle
|
||||
2 b1b1b1b1b1b1b1b1 JOE
|
||||
3 b1b1b1b1b1b1b1b1 QA
|
||||
*** Select on Slave ***
|
||||
SELECT * FROM t12 ORDER BY a;
|
||||
a b f c e
|
||||
1 b1b1b1b1b1b1b1b1 Kyle test 1
|
||||
2 b1b1b1b1b1b1b1b1 JOE test 1
|
||||
3 b1b1b1b1b1b1b1b1 QA test 1
|
||||
*** Drop t12 ***
|
||||
DROP TABLE t12;
|
||||
**** Extra Colums End ****
|
||||
*** BUG 22177 Start ***
|
||||
*** Create t13 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t13 (a INT KEY, b BLOB, c CHAR(5),
|
||||
d INT DEFAULT '1',
|
||||
e TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='MyISAM';
|
||||
*** Create t13 on Master ***
|
||||
CREATE TABLE t13 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
||||
) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t13 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||
SELECT * FROM t13 ORDER BY a;
|
||||
a b c
|
||||
1 b1b1b1b1b1b1b1b1 Kyle
|
||||
2 b1b1b1b1b1b1b1b1 JOE
|
||||
3 b1b1b1b1b1b1b1b1 QA
|
||||
*** Select on Slave ****
|
||||
SELECT * FROM t13 ORDER BY a;
|
||||
a b c d e
|
||||
1 b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
|
||||
3 b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
|
||||
*** Drop t13 ***
|
||||
DROP TABLE t13;
|
||||
*** 22117 END ***
|
||||
*** Alter Master Table Testing Start ***
|
||||
*** Create t14 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='MyISAM';
|
||||
*** Create t14 on Master ***
|
||||
CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
ALTER TABLE t14 ADD COLUMN c2 DECIMAL(8,2) AFTER c1;
|
||||
ALTER TABLE t14 ADD COLUMN c3 TEXT AFTER c2;
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t14 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle'),
|
||||
(2,2.00,'This Test Should work',@b1,'JOE'),
|
||||
(3,3.00,'If is does not, I will open a bug',@b1,'QA');
|
||||
SELECT * FROM t14 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA
|
||||
*** Select on Slave ****
|
||||
SELECT * FROM t14 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5 c6 c7
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
|
||||
*** Create t14a on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t14a (c1 INT KEY, c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='MyISAM';
|
||||
*** Create t14a on Master ***
|
||||
CREATE TABLE t14a (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
|
||||
) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t14a () VALUES(1,@b1,'Kyle'),
|
||||
(2,@b1,'JOE'),
|
||||
(3,@b1,'QA');
|
||||
SELECT * FROM t14a ORDER BY c1;
|
||||
c1 c4 c5
|
||||
1 b1b1b1b1b1b1b1b1 Kyle
|
||||
2 b1b1b1b1b1b1b1b1 JOE
|
||||
3 b1b1b1b1b1b1b1b1 QA
|
||||
*** Select on Slave ****
|
||||
SELECT * FROM t14a ORDER BY c1;
|
||||
c1 c4 c5 c6 c7
|
||||
1 b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
|
||||
3 b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
*** Master Drop c5 ***
|
||||
ALTER TABLE t14a DROP COLUMN c5;
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t14a () VALUES(4,@b1),
|
||||
(5,@b1),
|
||||
(6,@b1);
|
||||
SELECT * FROM t14a ORDER BY c1;
|
||||
c1 c4
|
||||
1 b1b1b1b1b1b1b1b1
|
||||
2 b1b1b1b1b1b1b1b1
|
||||
3 b1b1b1b1b1b1b1b1
|
||||
4 b1b1b1b1b1b1b1b1
|
||||
5 b1b1b1b1b1b1b1b1
|
||||
6 b1b1b1b1b1b1b1b1
|
||||
*** Select on Slave ****
|
||||
SELECT * FROM t14a ORDER BY c1;
|
||||
c1 c4 c5 c6 c7
|
||||
1 b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
|
||||
3 b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
|
||||
4 b1b1b1b1b1b1b1b1 NULL 1 CURRENT_TIMESTAMP
|
||||
5 b1b1b1b1b1b1b1b1 NULL 1 CURRENT_TIMESTAMP
|
||||
6 b1b1b1b1b1b1b1b1 NULL 1 CURRENT_TIMESTAMP
|
||||
DROP TABLE t14a;
|
||||
*** connect to master and drop columns ***
|
||||
ALTER TABLE t14 DROP COLUMN c2;
|
||||
ALTER TABLE t14 DROP COLUMN c4;
|
||||
*** Select from Master ***
|
||||
SELECT * FROM t14 ORDER BY c1;
|
||||
c1 c3 c5
|
||||
1 Replication Testing Extra Col Kyle
|
||||
2 This Test Should work JOE
|
||||
3 If is does not, I will open a bug QA
|
||||
*** Select from Slave ***
|
||||
SELECT * FROM t14 ORDER BY c1;
|
||||
c1 c3 c5 c6 c7
|
||||
1 Replication Testing Extra Col Kyle 1 CURRENT_TIMESTAMP
|
||||
2 This Test Should work JOE 1 CURRENT_TIMESTAMP
|
||||
3 If is does not, I will open a bug QA 1 CURRENT_TIMESTAMP
|
||||
*** Drop t14 ***
|
||||
DROP TABLE t14;
|
||||
*** Create t15 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t15 (c1 INT KEY, c2 DECIMAL(8,2), c3 TEXT,
|
||||
c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='MyISAM';
|
||||
*** Create t15 on Master ***
|
||||
CREATE TABLE t15 (c1 INT PRIMARY KEY, c2 DECIMAL(8,2), c3 TEXT,
|
||||
c4 BLOB, c5 CHAR(5)) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
call mtr.add_suppression("Slave SQL.*Error .Unknown table .t6.. on query.* Error_code: 1051");
|
||||
call mtr.add_suppression("Slave SQL.*Error .Duplicate column name .c6.. on query.* Error_code: 1060");
|
||||
call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column . ...e mismatch.* Error_code: 1535");
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t15 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle'),
|
||||
(2,2.00,'This Test Should work',@b1,'JOE'),
|
||||
(3,3.00,'If is does not, I will open a bug',@b1,'QA');
|
||||
SELECT * FROM t15 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA
|
||||
*** Select on Slave ****
|
||||
SELECT * FROM t15 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5 c6 c7
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
|
||||
*** Add column on master that is a Extra on Slave ***
|
||||
ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5;
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1060 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1060]
|
||||
Last_SQL_Error = 'Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5''
|
||||
*** Try to insert in master ****
|
||||
INSERT INTO t15 () VALUES(5,2.00,'Replication Testing',@b1,'Buda',2);
|
||||
SELECT * FROM t15 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5 c6
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle NULL
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE NULL
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA NULL
|
||||
5 2.00 Replication Testing b1b1b1b1b1b1b1b1 Buda 2
|
||||
*** Try to select from slave ****
|
||||
SELECT * FROM t15 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5 c6 c7
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
|
||||
5 2.00 Replication Testing b1b1b1b1b1b1b1b1 Buda 2 CURRENT_TIMESTAMP
|
||||
*** DROP TABLE t15 ***
|
||||
DROP TABLE t15;
|
||||
*** Create t16 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t16 (c1 INT KEY, c2 DECIMAL(8,2), c3 TEXT,
|
||||
c4 BLOB, c5 CHAR(5),
|
||||
c6 INT DEFAULT '1',
|
||||
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)ENGINE='MyISAM';
|
||||
*** Create t16 on Master ***
|
||||
CREATE TABLE t16 (c1 INT PRIMARY KEY, c2 DECIMAL(8,2), c3 TEXT,
|
||||
c4 BLOB, c5 CHAR(5))ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
set @b1 = 'b1b1b1b1';
|
||||
set @b1 = concat(@b1,@b1);
|
||||
INSERT INTO t16 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle'),
|
||||
(2,2.00,'This Test Should work',@b1,'JOE'),
|
||||
(3,3.00,'If is does not, I will open a bug',@b1,'QA');
|
||||
SELECT * FROM t16 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA
|
||||
*** Select on Slave ****
|
||||
SELECT * FROM t16 ORDER BY c1;
|
||||
c1 c2 c3 c4 c5 c6 c7
|
||||
1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP
|
||||
2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
|
||||
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
|
||||
*** Add Partition on master ***
|
||||
ALTER TABLE t16 PARTITION BY KEY(c1) PARTITIONS 4;
|
||||
INSERT INTO t16 () VALUES(4,1.00,'Replication Rocks',@b1,'Omer');
|
||||
SHOW CREATE TABLE t16;
|
||||
Table Create Table
|
||||
t16 CREATE TABLE `t16` (
|
||||
`c1` int(11) NOT NULL,
|
||||
`c2` decimal(8,2) DEFAULT NULL,
|
||||
`c3` text,
|
||||
`c4` blob,
|
||||
`c5` char(5) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
/*!50100 PARTITION BY KEY (c1)
|
||||
PARTITIONS 4 */
|
||||
*** Show table on Slave ****
|
||||
SHOW CREATE TABLE t16;
|
||||
Table Create Table
|
||||
t16 CREATE TABLE `t16` (
|
||||
`c1` int(11) NOT NULL,
|
||||
`c2` decimal(8,2) DEFAULT NULL,
|
||||
`c3` text,
|
||||
`c4` blob,
|
||||
`c5` char(5) DEFAULT NULL,
|
||||
`c6` int(11) DEFAULT '1',
|
||||
`c7` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`c1`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
/*!50100 PARTITION BY KEY (c1)
|
||||
PARTITIONS 4 */
|
||||
*** DROP TABLE t16 ***
|
||||
DROP TABLE t16;
|
||||
*** Alter Master End ***
|
||||
*** Create t17 on slave ***
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
CREATE TABLE t17 (a SMALLINT, b INT PRIMARY KEY, c CHAR(5),
|
||||
d FLOAT DEFAULT '2.00',
|
||||
e CHAR(5) DEFAULT 'TEST2')
|
||||
ENGINE='MyISAM';
|
||||
*** Create t17 on Master ***
|
||||
CREATE TABLE t17 (a BIGINT PRIMARY KEY, b INT, c CHAR(10)
|
||||
) ENGINE='MyISAM';
|
||||
RESET MASTER;
|
||||
*** Start Slave ***
|
||||
START SLAVE;
|
||||
*** Master Data Insert ***
|
||||
INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX');
|
||||
********************************************
|
||||
*** Expect slave to fail with Error 1535 ***
|
||||
********************************************
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1535]
|
||||
Last_SQL_Error = 'Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2'
|
||||
** DROP table t17 ***
|
||||
DROP TABLE t17;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,22 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE t1 ( a int ) ENGINE=InnoDB;
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
OPTIMIZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
|
||||
test.t1 optimize error Lock wait timeout exceeded; try restarting transaction
|
||||
test.t1 optimize status Operation failed
|
||||
Warnings:
|
||||
Error 1205 Lock wait timeout exceeded; try restarting transaction
|
||||
OPTIMIZE TABLE non_existing;
|
||||
Table Op Msg_type Msg_text
|
||||
test.non_existing optimize Error Table 'test.non_existing' doesn't exist
|
||||
test.non_existing optimize status Operation failed
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
commit;
|
||||
drop table t1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,139 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE t1 (id int, a int);
|
||||
CREATE TABLE t2 (id int, b int);
|
||||
CREATE TABLE t3 (id int, c int);
|
||||
CREATE TABLE t4 (id int, d int);
|
||||
CREATE TABLE t5 (id int, e int);
|
||||
CREATE TABLE t6 (id int, f int);
|
||||
CREATE TABLE t7 (id int, g int);
|
||||
CREATE TABLE t8 (id int, h int);
|
||||
CREATE TABLE t9 (id int, i int);
|
||||
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3);
|
||||
INSERT INTO t2 VALUES (1, 1), (2, 2), (3, 3);
|
||||
INSERT INTO t3 VALUES (1, 1), (2, 2), (3, 3);
|
||||
INSERT INTO t4 VALUES (1, 1), (2, 2), (3, 3);
|
||||
INSERT INTO t5 VALUES (1, 1), (2, 2), (3, 3);
|
||||
INSERT INTO t6 VALUES (1, 1), (2, 2), (3, 3);
|
||||
INSERT INTO t7 VALUES (1, 1), (2, 2), (3, 3);
|
||||
INSERT INTO t8 VALUES (1, 1), (2, 2), (3, 3);
|
||||
INSERT INTO t9 VALUES (1, 1), (2, 2), (3, 3);
|
||||
[on slave]
|
||||
SHOW TABLES LIKE 't%';
|
||||
Tables_in_test (t%)
|
||||
t1
|
||||
t2
|
||||
t3
|
||||
[on master]
|
||||
UPDATE t7 LEFT JOIN t4 ON (t4.id=t7.id) SET d=0, g=0 where t7.id=1;
|
||||
UPDATE t7 LEFT JOIN (t4, t5, t6) ON (t7.id=t4.id and t7.id=t5.id and t7.id=t6.id) SET d=0, e=0, f=0, g=0 where t7.id=1;
|
||||
UPDATE t4 LEFT JOIN (t7, t8, t9) ON (t4.id=t7.id and t4.id=t8.id and t4.id=t9.id) SET d=0, g=0, h=0, i=0 where t4.id=1;
|
||||
UPDATE t7 LEFT JOIN (t8, t9) ON (t7.id=t8.id and t7.id=t9.id) SET g=0, h=0, i=0 where t7.id=1;
|
||||
UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET d=0 where t1.id=1;
|
||||
UPDATE t1 LEFT JOIN t7 ON (t1.id=t7.id) SET g=0 where t1.id=1;
|
||||
UPDATE t1 LEFT JOIN (t4, t5, t6) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t6.id) SET d=0, e=0, f=0 where t1.id=1;
|
||||
UPDATE t1 LEFT JOIN (t4, t5, t8) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t8.id) SET d=0, e=0, h=0 where t1.id=1;
|
||||
UPDATE t1 LEFT JOIN (t7, t8, t5) ON (t1.id=t7.id and t1.id=t8.id and t1.id=t5.id) SET g=0, h=0, e=0 where t1.id=1;
|
||||
UPDATE t1 LEFT JOIN (t2, t3, t5) ON (t1.id=t2.id and t1.id=t3.id and t1.id=t5.id) SET e=0 where t1.id=1;
|
||||
UPDATE t4 LEFT JOIN t1 ON (t1.id=t4.id) SET a=0, d=0 where t4.id=1;
|
||||
UPDATE t4 LEFT JOIN (t1, t7) ON (t4.id=t1.id and t7.id=t4.id) SET a = 0, d=0, g=0 where t4.id=1;
|
||||
UPDATE t4 LEFT JOIN (t1, t2, t3) ON (t1.id=t4.id and t2.id=t4.id and t3.id=t4.id) SET a=0, b=0, c=0, d=0 where t4.id=1;
|
||||
UPDATE t4 LEFT JOIN (t1, t2, t5) ON (t1.id=t4.id and t2.id=t4.id and t5.id=t4.id) SET a=0, b=0, e=0, d=0 where t4.id=1;
|
||||
UPDATE t4 LEFT JOIN (t1, t6, t7) ON (t4.id=t1.id and t4.id=t6.id and t4.id=t7.id) SET a=0, d=0, f=0, g=0 where t4.id=1;
|
||||
UPDATE t7 LEFT JOIN (t4, t1, t2) ON (t7.id=t4.id and t7.id=t1.id and t7.id=t2.id) SET a=0, b=0, d=0, g=0 where t7.id=1;
|
||||
UPDATE t7 LEFT JOIN (t8, t4, t1) ON (t7.id=t8.id and t7.id=t4.id and t7.id=t1.id) SET a=0, d=0, g=0, h=0 where t7.id=1;
|
||||
call mtr.add_suppression("Slave SQL.*Error .Table .test.t[47]. doesn.t exist. on query.* Error_code: 1146");
|
||||
UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0 where t1.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0 where t1.id=1''
|
||||
UPDATE t1 LEFT JOIN (t4, t7) ON (t1.id=t4.id and t1.id=t7.id) SET a=0 where t1.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t7) ON (t1.id=t4.id and t1.id=t7.id) SET a=0 where t1.id=1''
|
||||
UPDATE t1 LEFT JOIN (t2, t4, t7) ON (t1.id=t2.id and t1.id=t4.id and t1.id=t7.id) SET a=0, b=0 where t1.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t2, t4, t7) ON (t1.id=t2.id and t1.id=t4.id and t1.id=t7.id) SET a=0, b=0 where t1.id=1''
|
||||
UPDATE t1 LEFT JOIN (t2, t3, t7) ON (t1.id=t2.id and t1.id=t3.id and t1.id=t7.id) SET a=0, b=0, c=0 where t1.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t2, t3, t7) ON (t1.id=t2.id and t1.id=t3.id and t1.id=t7.id) SET a=0, b=0, c=0 where t1.id=1''
|
||||
UPDATE t1 LEFT JOIN t7 ON (t1.id=t7.id) SET a=0, g=0 where t1.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN t7 ON (t1.id=t7.id) SET a=0, g=0 where t1.id=1''
|
||||
UPDATE t7 LEFT JOIN t1 ON (t1.id=t7.id) SET a=0, g=0 where t7.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN t1 ON (t1.id=t7.id) SET a=0, g=0 where t7.id=1''
|
||||
UPDATE t1 LEFT JOIN (t4, t5, t7) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t7.id) SET a=0, g=0 where t1.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t5, t7) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t7.id) SET a=0, g=0 where t1.id=1''
|
||||
UPDATE t1 LEFT JOIN (t4, t7, t8) ON (t1.id=t4.id and t1.id=t7.id and t1.id=t8.id) SET a=0, g=0 where t1.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t7, t8) ON (t1.id=t4.id and t1.id=t7.id and t1.id=t8.id) SET a=0, g=0 where t1.id=1''
|
||||
UPDATE t1 LEFT JOIN (t7, t8, t9) ON (t1.id=t7.id and t1.id=t8.id and t1.id=t9.id) SET a=0, g=0, h=0, i=0 where t1.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t7, t8, t9) ON (t1.id=t7.id and t1.id=t8.id and t1.id=t9.id) SET a=0, g=0, h=0, i=0 where t1.id=1''
|
||||
UPDATE t7 LEFT JOIN (t1, t2, t3) ON (t7.id=t1.id and t7.id=t2.id and t7.id=t3.id) SET g=0, a=0, b=0, c=0 where t7.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t1, t2, t3) ON (t7.id=t1.id and t7.id=t2.id and t7.id=t3.id) SET g=0, a=0, b=0, c=0 where t7.id=1''
|
||||
UPDATE t7 LEFT JOIN (t4, t5, t3) ON (t7.id=t4.id and t7.id=t5.id and t7.id=t3.id) SET g=0, c=0 where t7.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t4, t5, t3) ON (t7.id=t4.id and t7.id=t5.id and t7.id=t3.id) SET g=0, c=0 where t7.id=1''
|
||||
UPDATE t7 LEFT JOIN (t8, t9, t3) ON (t7.id=t8.id and t7.id=t9.id and t7.id=t3.id) SET g=0, h=0, i=0, c=0 where t7.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t8, t9, t3) ON (t7.id=t8.id and t7.id=t9.id and t7.id=t3.id) SET g=0, h=0, i=0, c=0 where t7.id=1''
|
||||
UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0, d=0 where t1.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0, d=0 where t1.id=1''
|
||||
UPDATE t1 LEFT JOIN (t4, t5, t6) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t6.id) SET a=0, d=0, e=0, f=0 where t1.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t5, t6) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t6.id) SET a=0, d=0, e=0, f=0 where t1.id=1''
|
||||
UPDATE t4 LEFT JOIN (t1, t5, t6) ON (t4.id=t1.id and t4.id=t5.id and t4.id=t6.id) SET a=0, e=0, f=0 where t4.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t4 LEFT JOIN (t1, t5, t6) ON (t4.id=t1.id and t4.id=t5.id and t4.id=t6.id) SET a=0, e=0, f=0 where t4.id=1''
|
||||
UPDATE t7 LEFT JOIN (t1, t4, t2) ON (t7.id=t1.id and t7.id=t4.id and t7.id=t2.id) SET a=0, b=0, d=0, g=0 where t7.id=1;
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
|
||||
Last_SQL_Error = 'Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t1, t4, t2) ON (t7.id=t1.id and t7.id=t4.id and t7.id=t2.id) SET a=0, b=0, d=0, g=0 where t7.id=1''
|
||||
[on slave]
|
||||
show tables like 't%';
|
||||
Tables_in_test (t%)
|
||||
t1
|
||||
t2
|
||||
t3
|
||||
SELECT * FROM t1;
|
||||
id a
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
SELECT * FROM t2;
|
||||
id b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
SELECT * FROM t3;
|
||||
id c
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
[on master]
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
CREATE TABLE test.t5 (a INT AUTO_INCREMENT PRIMARY KEY, b DECIMAL(20,20), c INT);
|
||||
CREATE TABLE test.t1 (a INT);
|
||||
INSERT INTO test.t1 VALUES(1);
|
||||
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
|
||||
CREATE TABLE test.t_slave (a INT AUTO_INCREMENT PRIMARY KEY, b DECIMAL(20,20), c INT);
|
||||
CREATE TRIGGER t1_update AFTER UPDATE ON test.t1 FOR EACH ROW
|
||||
INSERT INTO test.t_slave VALUES(NULL, RAND(), @c);
|
||||
SET INSERT_ID=2;
|
||||
SET @c=2;
|
||||
SET @@rand_seed1=10000000, @@rand_seed2=1000000;
|
||||
INSERT INTO t5 VALUES (NULL, RAND(), @c);
|
||||
Warnings:
|
||||
Note 1592 Statement may not be safe to log in statement format.
|
||||
SELECT b into @b FROM test.t5;
|
||||
UPDATE test.t1 SET a=2;
|
||||
SELECT a AS 'ONE' into @a FROM test.t_slave;
|
||||
SELECT c AS 'NULL' into @c FROM test.t_slave;
|
||||
SELECT b into @b FROM test.t_slave;
|
||||
include/assert.inc [Random values from master and slave must be different]
|
||||
drop table test.t5;
|
||||
drop table test.t1;
|
||||
drop table test.t_slave;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,15 @@
|
||||
include/rpl_init.inc [topology=1->2->1]
|
||||
show variables like 'relay_log%';
|
||||
Variable_name Value
|
||||
relay_log
|
||||
relay_log_index
|
||||
relay_log_info_file relay-log.info
|
||||
relay_log_purge ON
|
||||
relay_log_space_limit 0
|
||||
CREATE TABLE t1 (a INT KEY) ENGINE= MyISAM;
|
||||
INSERT INTO t1 VALUE(1);
|
||||
FLUSH LOGS;
|
||||
INSERT INTO t1 VALUE(2);
|
||||
include/check_slave_is_running.inc
|
||||
Relay_Log_File = 'mysqld-relay-bin.000003'
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,52 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE t1 (a INT AUTO_INCREMENT KEY) ENGINE=INNODB;
|
||||
CREATE TABLE t2 (b INT AUTO_INCREMENT KEY, c INT, FOREIGN KEY(b) REFERENCES t1(a)) ENGINE=INNODB;
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
INSERT INTO t1 VALUES (10);
|
||||
INSERT INTO t1 VALUES (NULL),(NULL),(NULL);
|
||||
INSERT INTO t2 VALUES (5,0);
|
||||
INSERT INTO t2 VALUES (NULL,LAST_INSERT_ID());
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
SELECT * FROM t2 ORDER BY b;
|
||||
b c
|
||||
5 0
|
||||
6 11
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
SELECT * FROM t2 ORDER BY b;
|
||||
b c
|
||||
5 0
|
||||
6 11
|
||||
SET TIMESTAMP=1000000000;
|
||||
CREATE TABLE t3 ( a INT UNIQUE );
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
INSERT INTO t3 VALUES (1),(1);
|
||||
Got one of the listed errors
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
DROP TABLE IF EXISTS t1,t2,t3;
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
create table t1 (b int primary key) engine = INNODB;
|
||||
create table t2 (a int primary key, b int, foreign key (b) references t1(b))
|
||||
engine = INNODB;
|
||||
insert into t1 set b=1;
|
||||
insert into t2 set a=1, b=1;
|
||||
set foreign_key_checks=0;
|
||||
set @@session.binlog_format=row;
|
||||
delete from t1;
|
||||
must sync w/o a problem (could not with the buggy code)
|
||||
select count(*) from t1 /* must be zero */;
|
||||
count(*)
|
||||
0
|
||||
drop table t2,t1;
|
||||
include/rpl_end.inc
|
||||
226
build/lib/mysql/mysql-test/suite/rpl/r/rpl_found_rows.result
Normal file
226
build/lib/mysql/mysql-test/suite/rpl/r/rpl_found_rows.result
Normal file
@@ -0,0 +1,226 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
==== 0. Setting it all up ====
|
||||
SET BINLOG_FORMAT=STATEMENT;
|
||||
**** On Master ****
|
||||
CREATE TABLE t1 (a INT);
|
||||
CREATE TABLE logtbl (sect INT, test INT, count INT);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
INSERT INTO t1 SELECT 2*a+3 FROM t1;
|
||||
INSERT INTO t1 SELECT 2*a+3 FROM t1;
|
||||
INSERT INTO t1 SELECT 2*a+3 FROM t1;
|
||||
INSERT INTO t1 SELECT 2*a+3 FROM t1;
|
||||
INSERT INTO t1 SELECT 2*a+3 FROM t1;
|
||||
INSERT INTO t1 SELECT 2*a+3 FROM t1;
|
||||
#### 1. Using statement mode ####
|
||||
==== 1.1. Simple test ====
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
|
||||
a
|
||||
7
|
||||
SELECT FOUND_ROWS() INTO @a;
|
||||
INSERT INTO logtbl VALUES(1,1,@a);
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a < 5 ORDER BY a LIMIT 1;
|
||||
a
|
||||
1
|
||||
SELECT FOUND_ROWS() INTO @a;
|
||||
INSERT INTO logtbl VALUES(1,2,@a);
|
||||
SELECT * FROM logtbl WHERE sect = 1 ORDER BY sect,test;
|
||||
sect test count
|
||||
1 1 183
|
||||
1 2 3
|
||||
**** On Slave ****
|
||||
SELECT * FROM logtbl WHERE sect = 1 ORDER BY sect,test;
|
||||
sect test count
|
||||
1 1 183
|
||||
1 2 3
|
||||
==== 1.2. Stored procedure ====
|
||||
**** On Master ****
|
||||
CREATE PROCEDURE calc_and_log(sect INT, test INT) BEGIN
|
||||
DECLARE cnt INT;
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a < 5 ORDER BY a LIMIT 1;
|
||||
SELECT FOUND_ROWS() INTO cnt;
|
||||
INSERT INTO logtbl VALUES(sect,test,cnt);
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
|
||||
SELECT FOUND_ROWS() INTO cnt;
|
||||
INSERT INTO logtbl VALUES(sect,test+1,cnt);
|
||||
END $$
|
||||
CALL calc_and_log(2,1);
|
||||
a
|
||||
1
|
||||
a
|
||||
7
|
||||
CREATE PROCEDURE just_log(sect INT, test INT, found_rows INT) BEGIN
|
||||
INSERT INTO logtbl VALUES (sect,test,found_rows);
|
||||
END $$
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
|
||||
a
|
||||
7
|
||||
SELECT FOUND_ROWS() INTO @found_rows;
|
||||
CALL just_log(2,3,@found_rows);
|
||||
SELECT * FROM logtbl WHERE sect = 2 ORDER BY sect,test;
|
||||
sect test count
|
||||
2 1 3
|
||||
2 2 183
|
||||
2 3 183
|
||||
**** On Slave ****
|
||||
SELECT * FROM logtbl WHERE sect = 2 ORDER BY sect,test;
|
||||
sect test count
|
||||
2 1 3
|
||||
2 2 183
|
||||
2 3 183
|
||||
==== 1.3. Stored functions ====
|
||||
**** On Master ****
|
||||
CREATE FUNCTION log_rows(sect INT, test INT, found_rows INT)
|
||||
RETURNS INT
|
||||
BEGIN
|
||||
INSERT INTO logtbl VALUES(sect,test,found_rows);
|
||||
RETURN found_rows;
|
||||
END $$
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
|
||||
a
|
||||
7
|
||||
SELECT FOUND_ROWS() INTO @found_rows;
|
||||
SELECT log_rows(3,1,@found_rows), log_rows(3,2,@found_rows);
|
||||
log_rows(3,1,@found_rows) log_rows(3,2,@found_rows)
|
||||
183 183
|
||||
SELECT * FROM logtbl WHERE sect = 3 ORDER BY sect,test;
|
||||
sect test count
|
||||
3 1 183
|
||||
3 2 183
|
||||
**** On Slave ****
|
||||
SELECT * FROM logtbl WHERE sect = 3 ORDER BY sect,test;
|
||||
sect test count
|
||||
3 1 183
|
||||
3 2 183
|
||||
==== 1.9. Cleanup ====
|
||||
**** On Master ****
|
||||
DELETE FROM logtbl;
|
||||
DROP PROCEDURE just_log;
|
||||
DROP PROCEDURE calc_and_log;
|
||||
DROP FUNCTION log_rows;
|
||||
include/rpl_reset.inc
|
||||
#### 2. Using mixed mode ####
|
||||
==== 2.1. Checking a procedure ====
|
||||
**** On Master ****
|
||||
SET BINLOG_FORMAT=MIXED;
|
||||
CREATE PROCEDURE just_log(sect INT, test INT) BEGIN
|
||||
INSERT INTO logtbl VALUES (sect,test,FOUND_ROWS());
|
||||
END $$
|
||||
**** On Master 1 ****
|
||||
SET BINLOG_FORMAT=MIXED;
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
|
||||
a
|
||||
7
|
||||
CALL just_log(1,1);
|
||||
**** On Master ****
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
|
||||
a
|
||||
7
|
||||
CALL just_log(1,2);
|
||||
**** On Master 1 ****
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a < 5 ORDER BY a LIMIT 1;
|
||||
a
|
||||
1
|
||||
CALL just_log(1,3);
|
||||
**** On Master ****
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
|
||||
a
|
||||
7
|
||||
CALL just_log(1,4);
|
||||
SELECT * FROM logtbl WHERE sect = 1 ORDER BY sect,test;
|
||||
sect test count
|
||||
1 1 183
|
||||
1 2 183
|
||||
1 3 3
|
||||
1 4 183
|
||||
**** On Slave ****
|
||||
SELECT * FROM logtbl WHERE sect = 1 ORDER BY sect,test;
|
||||
sect test count
|
||||
1 1 183
|
||||
1 2 183
|
||||
1 3 3
|
||||
1 4 183
|
||||
==== 2.1. Checking a stored function ====
|
||||
**** On Master ****
|
||||
CREATE FUNCTION log_rows(sect INT, test INT)
|
||||
RETURNS INT
|
||||
BEGIN
|
||||
DECLARE found_rows INT;
|
||||
SELECT FOUND_ROWS() INTO found_rows;
|
||||
INSERT INTO logtbl VALUES(sect,test,found_rows);
|
||||
RETURN found_rows;
|
||||
END $$
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a < 5 ORDER BY a LIMIT 1;
|
||||
a
|
||||
1
|
||||
SELECT log_rows(2,1), log_rows(2,2);
|
||||
log_rows(2,1) log_rows(2,2)
|
||||
3 3
|
||||
CREATE TABLE t2 (a INT, b INT);
|
||||
CREATE TRIGGER t2_tr BEFORE INSERT ON t2 FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO logtbl VALUES (NEW.a, NEW.b, FOUND_ROWS());
|
||||
END $$
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a < 5 ORDER BY a LIMIT 1;
|
||||
a
|
||||
1
|
||||
INSERT INTO t2 VALUES (2,3), (2,4);
|
||||
DROP TRIGGER t2_tr;
|
||||
CREATE TRIGGER t2_tr BEFORE INSERT ON t2 FOR EACH ROW
|
||||
BEGIN
|
||||
DECLARE dummy INT;
|
||||
SELECT log_rows(NEW.a, NEW.b) INTO dummy;
|
||||
END $$
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
|
||||
a
|
||||
7
|
||||
INSERT INTO t2 VALUES (2,5), (2,6);
|
||||
DROP TRIGGER t2_tr;
|
||||
CREATE PROCEDURE log_me_inner(sect INT, test INT)
|
||||
BEGIN
|
||||
DECLARE dummy INT;
|
||||
SELECT log_rows(sect, test) INTO dummy;
|
||||
SELECT log_rows(sect, test+1) INTO dummy;
|
||||
END $$
|
||||
CREATE PROCEDURE log_me(sect INT, test INT)
|
||||
BEGIN
|
||||
CALL log_me_inner(sect,test);
|
||||
END $$
|
||||
CREATE TRIGGER t2_tr BEFORE INSERT ON t2 FOR EACH ROW
|
||||
BEGIN
|
||||
CALL log_me(NEW.a, NEW.b);
|
||||
END $$
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a > 5 ORDER BY a LIMIT 1;
|
||||
a
|
||||
7
|
||||
INSERT INTO t2 VALUES (2,5), (2,6);
|
||||
SELECT * FROM logtbl WHERE sect = 2 ORDER BY sect,test;
|
||||
sect test count
|
||||
2 1 3
|
||||
2 2 3
|
||||
2 3 3
|
||||
2 4 3
|
||||
2 5 183
|
||||
2 5 183
|
||||
2 6 183
|
||||
2 6 0
|
||||
2 6 183
|
||||
2 7 0
|
||||
SELECT * FROM logtbl WHERE sect = 2 ORDER BY sect,test;
|
||||
sect test count
|
||||
2 1 3
|
||||
2 2 3
|
||||
2 3 3
|
||||
2 4 3
|
||||
2 5 183
|
||||
2 5 183
|
||||
2 6 183
|
||||
2 6 0
|
||||
2 6 183
|
||||
2 7 0
|
||||
DROP TABLE t1, t2, logtbl;
|
||||
DROP PROCEDURE just_log;
|
||||
DROP PROCEDURE log_me;
|
||||
DROP PROCEDURE log_me_inner;
|
||||
DROP FUNCTION log_rows;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,7 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
create table t1 (a int);
|
||||
create table t2 (a int);
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
include/rpl_end.inc
|
||||
15
build/lib/mysql/mysql-test/suite/rpl/r/rpl_geometry.result
Normal file
15
build/lib/mysql/mysql-test/suite/rpl/r/rpl_geometry.result
Normal file
@@ -0,0 +1,15 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
create table t1(a varchar(100),
|
||||
b multipoint not null,
|
||||
c varchar(256));
|
||||
insert into t1 set
|
||||
a='hello',
|
||||
b=geomfromtext('multipoint(1 1)'),
|
||||
c='geometry';
|
||||
create table t2 (a int(11) not null auto_increment primary key,
|
||||
b geometrycollection default null,
|
||||
c decimal(10,0));
|
||||
insert into t2(c) values (null);
|
||||
drop table t1, t2;
|
||||
include/rpl_end.inc
|
||||
33
build/lib/mysql/mysql-test/suite/rpl/r/rpl_get_lock.result
Normal file
33
build/lib/mysql/mysql-test/suite/rpl/r/rpl_get_lock.result
Normal file
@@ -0,0 +1,33 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||
create table t1(n int);
|
||||
insert into t1 values(get_lock("lock",2));
|
||||
select get_lock("lock",2);
|
||||
get_lock("lock",2)
|
||||
1
|
||||
select release_lock("lock");
|
||||
release_lock("lock")
|
||||
1
|
||||
select get_lock("lock",3);
|
||||
get_lock("lock",3)
|
||||
1
|
||||
select * from t1;
|
||||
n
|
||||
1
|
||||
select is_free_lock("lock"), is_used_lock("lock") = connection_id();
|
||||
is_free_lock("lock") is_used_lock("lock") = connection_id()
|
||||
0 1
|
||||
explain extended select is_free_lock("lock"), is_used_lock("lock");
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select is_free_lock('lock') AS `is_free_lock("lock")`,is_used_lock('lock') AS `is_used_lock("lock")`
|
||||
select is_free_lock("lock2");
|
||||
is_free_lock("lock2")
|
||||
1
|
||||
select is_free_lock(NULL);
|
||||
is_free_lock(NULL)
|
||||
NULL
|
||||
drop table t1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,32 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
call mtr.add_suppression("Slave I/O: Master command COM_REGISTER_SLAVE failed: .*");
|
||||
call mtr.add_suppression("Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; .*");
|
||||
call mtr.add_suppression("Slave I/O thread .* register on master");
|
||||
include/stop_slave.inc
|
||||
SET @@global.debug= "+d,'debug_lock.before_get_UNIX_TIMESTAMP'";
|
||||
include/start_slave.inc
|
||||
slave is going to hang in get_master_version_and_clock
|
||||
include/rpl_stop_server.inc [server_number=1]
|
||||
slave is unblocked
|
||||
SET DEBUG_SYNC='now SIGNAL signal.get_unix_timestamp';
|
||||
Check network error happened here
|
||||
include/wait_for_slave_io_error.inc [errno=1040, 1053, 2002, 2003, 2006, 2013]
|
||||
set @@global.debug = "-d,'debug_lock.before_get_UNIX_TIMESTAMP'";
|
||||
include/rpl_start_server.inc [server_number=1]
|
||||
include/wait_for_slave_param.inc [Slave_IO_Running]
|
||||
include/stop_slave.inc
|
||||
SET @@global.debug= "+d,'debug_lock.before_get_SERVER_ID'";
|
||||
include/start_slave.inc
|
||||
slave is going to hang in get_master_version_and_clock
|
||||
include/rpl_stop_server.inc [server_number=1]
|
||||
slave is unblocked
|
||||
SET DEBUG_SYNC='now SIGNAL signal.get_server_id';
|
||||
Check network error happened here
|
||||
include/wait_for_slave_io_error.inc [errno=1040, 1053, 2002, 2003, 2006, 2013]
|
||||
set @@global.debug = "-d,'debug_lock.before_get_SERVER_ID'";
|
||||
include/rpl_start_server.inc [server_number=1]
|
||||
include/wait_for_slave_param.inc [Slave_IO_Running]
|
||||
set global debug= '';
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
include/rpl_end.inc
|
||||
40
build/lib/mysql/mysql-test/suite/rpl/r/rpl_grant.result
Normal file
40
build/lib/mysql/mysql-test/suite/rpl/r/rpl_grant.result
Normal file
@@ -0,0 +1,40 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
**** On Master ****
|
||||
CREATE USER dummy@localhost;
|
||||
CREATE USER dummy1@localhost, dummy2@localhost;
|
||||
SELECT user, host FROM mysql.user WHERE user like 'dummy%';
|
||||
user host
|
||||
dummy localhost
|
||||
dummy1 localhost
|
||||
dummy2 localhost
|
||||
SELECT COUNT(*) FROM mysql.user WHERE user like 'dummy%';
|
||||
COUNT(*)
|
||||
3
|
||||
**** On Slave ****
|
||||
SELECT user,host FROM mysql.user WHERE user like 'dummy%';
|
||||
user host
|
||||
dummy localhost
|
||||
dummy1 localhost
|
||||
dummy2 localhost
|
||||
SELECT COUNT(*) FROM mysql.user WHERE user like 'dummy%';
|
||||
COUNT(*)
|
||||
3
|
||||
**** On Master ****
|
||||
DROP USER nonexisting@localhost;
|
||||
ERROR HY000: Operation DROP USER failed for 'nonexisting'@'localhost'
|
||||
DROP USER nonexisting@localhost, dummy@localhost;
|
||||
ERROR HY000: Operation DROP USER failed for 'nonexisting'@'localhost'
|
||||
DROP USER dummy1@localhost, dummy2@localhost;
|
||||
SELECT user, host FROM mysql.user WHERE user like 'dummy%';
|
||||
user host
|
||||
SELECT COUNT(*) FROM mysql.user WHERE user like 'dummy%';
|
||||
COUNT(*)
|
||||
0
|
||||
**** On Slave ****
|
||||
SELECT user,host FROM mysql.user WHERE user like 'dummy%';
|
||||
user host
|
||||
SELECT COUNT(*) FROM mysql.user WHERE user like 'dummy%';
|
||||
COUNT(*)
|
||||
0
|
||||
include/rpl_end.inc
|
||||
218
build/lib/mysql/mysql-test/suite/rpl/r/rpl_idempotency.result
Normal file
218
build/lib/mysql/mysql-test/suite/rpl/r/rpl_idempotency.result
Normal file
@@ -0,0 +1,218 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
call mtr.add_suppression("Can.t find record in .t[12].* Error_code: 1032");
|
||||
call mtr.add_suppression("Cannot delete or update a parent row: a foreign key constraint fails .* Error_code: 1451");
|
||||
call mtr.add_suppression("Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
|
||||
call mtr.add_suppression("Slave SQL.*Could not execute Write_rows event on table test.* Duplicate entry .1. for key .PRIMARY.* Error_code: 1062");
|
||||
SET @old_slave_exec_mode= @@global.slave_exec_mode;
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY);
|
||||
CREATE TABLE t2 (a INT);
|
||||
INSERT INTO t1 VALUES (-1),(-2),(-3);
|
||||
INSERT INTO t2 VALUES (-1),(-2),(-3);
|
||||
DELETE FROM t1 WHERE a = -2;
|
||||
DELETE FROM t2 WHERE a = -2;
|
||||
DELETE FROM t1 WHERE a = -2;
|
||||
DELETE FROM t2 WHERE a = -2;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
-3
|
||||
-1
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
a
|
||||
-3
|
||||
-1
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
-3
|
||||
-1
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
a
|
||||
-3
|
||||
-1
|
||||
include/check_slave_no_error.inc
|
||||
INSERT IGNORE INTO t1 VALUES (-2);
|
||||
INSERT IGNORE INTO t1 VALUES (-2);
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
-3
|
||||
-2
|
||||
-1
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
-3
|
||||
-2
|
||||
-1
|
||||
include/check_slave_no_error.inc
|
||||
UPDATE t1 SET a = 1 WHERE a = -1;
|
||||
UPDATE t2 SET a = 1 WHERE a = -1;
|
||||
UPDATE t1 SET a = 1 WHERE a = -1;
|
||||
UPDATE t2 SET a = 1 WHERE a = -1;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
-3
|
||||
-2
|
||||
1
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
a
|
||||
-3
|
||||
1
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
-3
|
||||
-2
|
||||
1
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
a
|
||||
-3
|
||||
1
|
||||
include/check_slave_no_error.inc
|
||||
DROP TABLE t1, t2;
|
||||
select @@global.slave_exec_mode /* must be IDEMPOTENT */;
|
||||
@@global.slave_exec_mode
|
||||
IDEMPOTENT
|
||||
create table ti1 (b int primary key) engine = innodb;
|
||||
create table ti2 (a int primary key, b int, foreign key (b) references ti1(b))
|
||||
engine = innodb;
|
||||
set foreign_key_checks=1 /* ensure the check */;
|
||||
insert into ti1 values (1),(2),(3);
|
||||
insert into ti2 set a=2, b=2;
|
||||
select * from ti1 order by b /* must be (1),(2),(3) */;
|
||||
b
|
||||
1
|
||||
2
|
||||
3
|
||||
insert into ti2 set a=1, b=1;
|
||||
select * from ti2 order by b /* must be (1,1) (2,2) */;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
set @save_binlog_format= @@session.binlog_format;
|
||||
set @@session.binlog_format= row;
|
||||
delete from ti1 where b=1;
|
||||
select * from ti1 order by b /* must be (2),(3) */;
|
||||
b
|
||||
2
|
||||
3
|
||||
select * from ti1 order by b /* must stays as were on master (1),(2),(3) */;
|
||||
b
|
||||
1
|
||||
2
|
||||
3
|
||||
delete from ti1 where b=3;
|
||||
insert into ti2 set a=3, b=3;
|
||||
select * from ti2 order by b /* must be (1,1),(2,2) - not inserted */;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
set global slave_exec_mode='IDEMPOTENT';
|
||||
set global slave_exec_mode='STRICT';
|
||||
set global slave_exec_mode='IDEMPOTENT,STRICT';
|
||||
ERROR HY000: Ambiguous slave modes combination.
|
||||
select @@global.slave_exec_mode /* must be STRICT */;
|
||||
@@global.slave_exec_mode
|
||||
STRICT
|
||||
*** foreign keys errors as above now forces to stop
|
||||
set foreign_key_checks=0;
|
||||
drop table ti2, ti1;
|
||||
create table ti1 (b int primary key) engine = innodb;
|
||||
create table ti2 (a int primary key, b int, foreign key (b) references ti1(b))
|
||||
engine = innodb;
|
||||
set foreign_key_checks=1 /* ensure the check */;
|
||||
insert into ti1 values (1),(2),(3);
|
||||
insert into ti2 set a=2, b=2;
|
||||
select * from ti1 order by b /* must be (1),(2),(3) */;
|
||||
b
|
||||
1
|
||||
2
|
||||
3
|
||||
*** conspire future problem
|
||||
insert into ti2 set a=1, b=1;
|
||||
select * from ti2 order by b /* must be (1,1) (2,2) */;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
delete from ti1 where b=1 /* offending delete event */;
|
||||
select * from ti1 order by b /* must be (2),(3) */;
|
||||
b
|
||||
2
|
||||
3
|
||||
*** slave must stop (Trying to delete a referenced foreing key)
|
||||
include/wait_for_slave_sql_error.inc [errno=1451]
|
||||
select * from ti1 order by b /* must be (1),(2),(3) - not deleted */;
|
||||
b
|
||||
1
|
||||
2
|
||||
3
|
||||
set foreign_key_checks= 0;
|
||||
delete from ti2 where b=1;
|
||||
set foreign_key_checks= 1;
|
||||
set global slave_exec_mode='IDEMPOTENT';
|
||||
start slave sql_thread;
|
||||
set global slave_exec_mode='STRICT';
|
||||
*** conspire the following insert failure
|
||||
*** conspire future problem
|
||||
delete from ti1 where b=3;
|
||||
insert into ti2 set a=3, b=3 /* offending write event */;
|
||||
*** slave must stop (Trying to insert an invalid foreign key)
|
||||
include/wait_for_slave_sql_error.inc [errno=1452]
|
||||
select * from ti2 order by b /* must be (2,2) */;
|
||||
a b
|
||||
2 2
|
||||
set foreign_key_checks= 0;
|
||||
insert into ti1 set b=3;
|
||||
set foreign_key_checks= 1;
|
||||
set global slave_exec_mode='IDEMPOTENT';
|
||||
start slave sql_thread;
|
||||
set global slave_exec_mode='STRICT';
|
||||
select * from ti2 order by b /* must be (2,2),(3,3) */;
|
||||
a b
|
||||
2 2
|
||||
3 3
|
||||
*** other errors
|
||||
*** conspiring query
|
||||
insert into ti1 set b=1;
|
||||
insert into ti1 set b=1 /* offending write event */;
|
||||
*** slave must stop (Trying to insert a dupliacte key)
|
||||
include/wait_for_slave_sql_error.inc [errno=1062]
|
||||
set foreign_key_checks= 0;
|
||||
delete from ti1 where b=1;
|
||||
set foreign_key_checks= 1;
|
||||
set global slave_exec_mode='IDEMPOTENT';
|
||||
start slave sql_thread;
|
||||
set global slave_exec_mode='STRICT';
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY);
|
||||
CREATE TABLE t2 (a INT);
|
||||
INSERT INTO t1 VALUES (-1),(-2),(-3);
|
||||
INSERT INTO t2 VALUES (-1),(-2),(-3);
|
||||
DELETE FROM t1 WHERE a = -2;
|
||||
DELETE FROM t2 WHERE a = -2;
|
||||
DELETE FROM t1 WHERE a = -2;
|
||||
*** slave must stop (Key was not found)
|
||||
include/wait_for_slave_sql_error.inc [errno=1032]
|
||||
set global slave_exec_mode='IDEMPOTENT';
|
||||
start slave sql_thread;
|
||||
set global slave_exec_mode='STRICT';
|
||||
DELETE FROM t2 WHERE a = -2;
|
||||
*** slave must stop (Key was not found)
|
||||
include/wait_for_slave_sql_error.inc [errno=1032]
|
||||
set global slave_exec_mode='IDEMPOTENT';
|
||||
start slave sql_thread;
|
||||
set global slave_exec_mode='STRICT';
|
||||
UPDATE t1 SET a = 1 WHERE a = -1;
|
||||
UPDATE t2 SET a = 1 WHERE a = -1;
|
||||
UPDATE t1 SET a = 1 WHERE a = -1;
|
||||
*** slave must stop (Key was not found)
|
||||
include/wait_for_slave_sql_error.inc [errno=1032]
|
||||
set global slave_exec_mode='IDEMPOTENT';
|
||||
start slave sql_thread;
|
||||
set global slave_exec_mode='STRICT';
|
||||
UPDATE t2 SET a = 1 WHERE a = -1;
|
||||
*** slave must stop (Key was not found)
|
||||
include/wait_for_slave_sql_error.inc [errno=1032]
|
||||
set global slave_exec_mode='IDEMPOTENT';
|
||||
start slave sql_thread;
|
||||
SET @@global.slave_exec_mode= @old_slave_exec_mode;
|
||||
set @@session.binlog_format= @save_binlog_format;
|
||||
drop table t1,t2,ti2,ti1;
|
||||
include/rpl_end.inc
|
||||
*** end of tests
|
||||
@@ -0,0 +1,34 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
delete from mysql.user where user=_binary'rpl_ignore_grant';
|
||||
delete from mysql.db where user=_binary'rpl_ignore_grant';
|
||||
flush privileges;
|
||||
delete from mysql.user where user=_binary'rpl_ignore_grant';
|
||||
delete from mysql.db where user=_binary'rpl_ignore_grant';
|
||||
flush privileges;
|
||||
grant select on *.* to rpl_ignore_grant@localhost;
|
||||
grant drop on test.* to rpl_ignore_grant@localhost;
|
||||
show grants for rpl_ignore_grant@localhost;
|
||||
Grants for rpl_ignore_grant@localhost
|
||||
GRANT SELECT ON *.* TO 'rpl_ignore_grant'@'localhost'
|
||||
GRANT DROP ON `test`.* TO 'rpl_ignore_grant'@'localhost'
|
||||
show grants for rpl_ignore_grant@localhost;
|
||||
ERROR 42000: There is no such grant defined for user 'rpl_ignore_grant' on host 'localhost'
|
||||
select count(*) from mysql.user where user=_binary'rpl_ignore_grant';
|
||||
count(*)
|
||||
0
|
||||
select count(*) from mysql.db where user=_binary'rpl_ignore_grant';
|
||||
count(*)
|
||||
0
|
||||
grant select on *.* to rpl_ignore_grant@localhost;
|
||||
set password for rpl_ignore_grant@localhost=password("does it work?");
|
||||
select password<>_binary'' from mysql.user where user=_binary'rpl_ignore_grant';
|
||||
password<>_binary''
|
||||
0
|
||||
delete from mysql.user where user=_binary'rpl_ignore_grant';
|
||||
delete from mysql.db where user=_binary'rpl_ignore_grant';
|
||||
flush privileges;
|
||||
delete from mysql.user where user=_binary'rpl_ignore_grant';
|
||||
delete from mysql.db where user=_binary'rpl_ignore_grant';
|
||||
flush privileges;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,27 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
grant select on *.* to 'user_foo'@'%' identified by 'user_foopass';
|
||||
revoke select on *.* from 'user_foo'@'%';
|
||||
select select_priv from mysql.user where user='user_foo' /* master:must be N */;
|
||||
select_priv
|
||||
N
|
||||
grant select on *.* to 'user_foo'@'%' identified by 'user_foopass';
|
||||
revoke select on *.* from 'user_foo'@'%';
|
||||
select select_priv from mysql.user where user='user_foo' /* slave:must be N */;
|
||||
select_priv
|
||||
N
|
||||
grant select on *.* to 'user_foo'@'%' identified by 'user_foopass';
|
||||
select select_priv from mysql.user where user='user_foo' /* slave:must be Y */;
|
||||
select_priv
|
||||
Y
|
||||
revoke select on *.* from 'user_foo';
|
||||
select select_priv from mysql.user where user='user_foo' /* master:must be N */;
|
||||
select_priv
|
||||
N
|
||||
select select_priv from mysql.user where user='user_foo' /* slave:must get Y */;
|
||||
select_priv
|
||||
Y
|
||||
revoke select on *.* FROM 'user_foo';
|
||||
delete from mysql.user where user="user_foo";
|
||||
delete from mysql.user where user="user_foo";
|
||||
include/rpl_end.inc
|
||||
141
build/lib/mysql/mysql-test/suite/rpl/r/rpl_ignore_table.result
Normal file
141
build/lib/mysql/mysql-test/suite/rpl/r/rpl_ignore_table.result
Normal file
@@ -0,0 +1,141 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
**** Test case for BUG#16487 ****
|
||||
**** Master ****
|
||||
CREATE TABLE test.t4 (a int);
|
||||
CREATE TABLE test.t1 (a int);
|
||||
UPDATE test.t4 NATURAL JOIN test.t1 SET t1.a=5;
|
||||
**** Slave ****
|
||||
SELECT * FROM t4;
|
||||
a
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t4;
|
||||
**** Test case for BUG#25482 ****
|
||||
**** Adding GRANTS on master ****
|
||||
create table test.t1(a int);
|
||||
create table test.t4(a int);
|
||||
GRANT SELECT ON test.t1 TO mysqltest1@localhost;
|
||||
GRANT INSERT ON test.t4 TO mysqltest2@localhost;
|
||||
GRANT select, update, insert, references on t1
|
||||
to mysqltest2@localhost;
|
||||
GRANT SELECT ON test.* TO mysqltest3@localhost;
|
||||
GRANT INSERT ON test.t4 TO mysqltest3@localhost;
|
||||
GRANT select(a), update(a), insert(a), references(a) on t4
|
||||
to mysqltest3@localhost;
|
||||
create database mysqltest2;
|
||||
create table mysqltest2.t2 (id int);
|
||||
GRANT SELECT ON mysqltest2.t2 TO mysqltest4@localhost IDENTIFIED BY 'pass';
|
||||
insert into mysql.user (user, host) values ("mysqltest5", "somehost");
|
||||
Warnings:
|
||||
Warning 1364 Field 'ssl_cipher' doesn't have a default value
|
||||
Warning 1364 Field 'x509_issuer' doesn't have a default value
|
||||
Warning 1364 Field 'x509_subject' doesn't have a default value
|
||||
GRANT SELECT ON *.* TO mysqltest6@localhost;
|
||||
GRANT INSERT ON *.* TO mysqltest6@localhost;
|
||||
GRANT INSERT ON test.* TO mysqltest6@localhost;
|
||||
GRANT INSERT ON test.t1 TO mysqltest6@localhost;
|
||||
show grants for mysqltest1@localhost;
|
||||
Grants for mysqltest1@localhost
|
||||
GRANT USAGE ON *.* TO 'mysqltest1'@'localhost'
|
||||
GRANT SELECT ON `test`.`t1` TO 'mysqltest1'@'localhost'
|
||||
show grants for mysqltest2@localhost;
|
||||
Grants for mysqltest2@localhost
|
||||
GRANT USAGE ON *.* TO 'mysqltest2'@'localhost'
|
||||
GRANT SELECT, INSERT, UPDATE, REFERENCES ON `test`.`t1` TO 'mysqltest2'@'localhost'
|
||||
GRANT INSERT ON `test`.`t4` TO 'mysqltest2'@'localhost'
|
||||
show grants for mysqltest3@localhost;
|
||||
Grants for mysqltest3@localhost
|
||||
GRANT USAGE ON *.* TO 'mysqltest3'@'localhost'
|
||||
GRANT SELECT ON `test`.* TO 'mysqltest3'@'localhost'
|
||||
GRANT SELECT (a), INSERT, INSERT (a), UPDATE (a), REFERENCES (a) ON `test`.`t4` TO 'mysqltest3'@'localhost'
|
||||
show grants for mysqltest4@localhost;
|
||||
Grants for mysqltest4@localhost
|
||||
GRANT USAGE ON *.* TO 'mysqltest4'@'localhost' IDENTIFIED BY PASSWORD '*196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7'
|
||||
GRANT SELECT ON `mysqltest2`.`t2` TO 'mysqltest4'@'localhost'
|
||||
show grants for mysqltest6@localhost;
|
||||
Grants for mysqltest6@localhost
|
||||
GRANT SELECT, INSERT ON *.* TO 'mysqltest6'@'localhost'
|
||||
GRANT INSERT ON `test`.* TO 'mysqltest6'@'localhost'
|
||||
GRANT INSERT ON `test`.`t1` TO 'mysqltest6'@'localhost'
|
||||
flush privileges;
|
||||
show grants for mysqltest5@somehost;
|
||||
Grants for mysqltest5@somehost
|
||||
GRANT USAGE ON *.* TO 'mysqltest5'@'somehost'
|
||||
**** Checking grants on slave ****
|
||||
show grants for mysqltest2@localhost;
|
||||
Grants for mysqltest2@localhost
|
||||
GRANT USAGE ON *.* TO 'mysqltest2'@'localhost'
|
||||
GRANT INSERT ON `test`.`t4` TO 'mysqltest2'@'localhost'
|
||||
show grants for mysqltest3@localhost;
|
||||
Grants for mysqltest3@localhost
|
||||
GRANT USAGE ON *.* TO 'mysqltest3'@'localhost'
|
||||
GRANT SELECT ON `test`.* TO 'mysqltest3'@'localhost'
|
||||
GRANT SELECT (a), INSERT, INSERT (a), UPDATE (a), REFERENCES (a) ON `test`.`t4` TO 'mysqltest3'@'localhost'
|
||||
show grants for mysqltest4@localhost;
|
||||
Grants for mysqltest4@localhost
|
||||
GRANT USAGE ON *.* TO 'mysqltest4'@'localhost' IDENTIFIED BY PASSWORD '*196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7'
|
||||
GRANT SELECT ON `mysqltest2`.`t2` TO 'mysqltest4'@'localhost'
|
||||
show grants for mysqltest5@somehost;
|
||||
Grants for mysqltest5@somehost
|
||||
GRANT USAGE ON *.* TO 'mysqltest5'@'somehost'
|
||||
show grants for mysqltest6@localhost;
|
||||
Grants for mysqltest6@localhost
|
||||
GRANT SELECT, INSERT ON *.* TO 'mysqltest6'@'localhost'
|
||||
GRANT INSERT ON `test`.* TO 'mysqltest6'@'localhost'
|
||||
show grants for mysqltest1@localhost;
|
||||
ERROR 42000: There is no such grant defined for user 'mysqltest1' on host 'localhost'
|
||||
**** Revoking grants on master ****
|
||||
REVOKE SELECT ON test.t1 FROM mysqltest1@localhost;
|
||||
REVOKE SELECT ON mysqltest2.t2 FROM mysqltest4@localhost;
|
||||
REVOKE select(a) on t4
|
||||
from mysqltest3@localhost;
|
||||
show grants for mysqltest1@localhost;
|
||||
Grants for mysqltest1@localhost
|
||||
GRANT USAGE ON *.* TO 'mysqltest1'@'localhost'
|
||||
show grants for mysqltest3@localhost;
|
||||
Grants for mysqltest3@localhost
|
||||
GRANT USAGE ON *.* TO 'mysqltest3'@'localhost'
|
||||
GRANT SELECT ON `test`.* TO 'mysqltest3'@'localhost'
|
||||
GRANT INSERT, INSERT (a), UPDATE (a), REFERENCES (a) ON `test`.`t4` TO 'mysqltest3'@'localhost'
|
||||
show grants for mysqltest4@localhost;
|
||||
Grants for mysqltest4@localhost
|
||||
GRANT USAGE ON *.* TO 'mysqltest4'@'localhost' IDENTIFIED BY PASSWORD '*196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7'
|
||||
**** Checking grants on slave ****
|
||||
show grants for mysqltest1@localhost;
|
||||
ERROR 42000: There is no such grant defined for user 'mysqltest1' on host 'localhost'
|
||||
show grants for mysqltest3@localhost;
|
||||
Grants for mysqltest3@localhost
|
||||
GRANT USAGE ON *.* TO 'mysqltest3'@'localhost'
|
||||
GRANT SELECT ON `test`.* TO 'mysqltest3'@'localhost'
|
||||
GRANT INSERT, INSERT (a), UPDATE (a), REFERENCES (a) ON `test`.`t4` TO 'mysqltest3'@'localhost'
|
||||
show grants for mysqltest4@localhost;
|
||||
Grants for mysqltest4@localhost
|
||||
GRANT USAGE ON *.* TO 'mysqltest4'@'localhost' IDENTIFIED BY PASSWORD '*196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7'
|
||||
set global slave_exec_mode='IDEMPOTENT';
|
||||
call mtr.add_suppression("Slave SQL.*Could not execute Delete_rows event on table mysql.* Error_code: 1032");
|
||||
drop table t1, mysqltest2.t2;
|
||||
drop table t4;
|
||||
drop database mysqltest2;
|
||||
delete from mysql.user where user like "mysqltest%";
|
||||
delete from mysql.db where user like "mysqltest%";
|
||||
delete from mysql.columns_priv where user like "mysqltest%";
|
||||
delete from mysql.tables_priv where user like "mysqltest%";
|
||||
delete from mysql.tables_priv where user like "mysqltest%";
|
||||
DROP TABLE IF EXISTS t5;
|
||||
CREATE TABLE t5 (
|
||||
word varchar(50) collate utf8_unicode_ci NOT NULL default ''
|
||||
) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||
SET @@session.character_set_client=33,@@session.collation_connection=192;
|
||||
CREATE TEMPORARY TABLE tmptbl504451f4258$1 (id INT NOT NULL) ENGINE=MEMORY;
|
||||
INSERT INTO t5 (word) VALUES ('TEST’');
|
||||
SELECT HEX(word) FROM t5;
|
||||
HEX(word)
|
||||
54455354E28099
|
||||
set @@global.slave_exec_mode= default;
|
||||
SELECT HEX(word) FROM t5;
|
||||
HEX(word)
|
||||
54455354E28099
|
||||
SELECT * FROM tmptbl504451f4258$1;
|
||||
ERROR 42S02: Table 'test.tmptbl504451f4258$1' doesn't exist
|
||||
DROP TABLE t5;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,20 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
use test;
|
||||
drop table if exists mysqltest_foo;
|
||||
drop table if exists mysqltest_bar;
|
||||
create table mysqltest_foo (n int);
|
||||
insert into mysqltest_foo values(4);
|
||||
use test;
|
||||
create table mysqltest_foo (n int);
|
||||
insert into mysqltest_foo values(5);
|
||||
create table mysqltest_bar (m int);
|
||||
insert into mysqltest_bar values(15);
|
||||
create table t1 (k int);
|
||||
insert into t1 values(55);
|
||||
select mysqltest_foo.n,mysqltest_bar.m,t1.k from mysqltest_foo,mysqltest_bar,t1;
|
||||
n m k
|
||||
4 15 55
|
||||
drop table mysqltest_foo,mysqltest_bar,t1;
|
||||
drop table mysqltest_foo,mysqltest_bar,t1;
|
||||
include/rpl_end.inc
|
||||
37
build/lib/mysql/mysql-test/suite/rpl/r/rpl_incident.result
Normal file
37
build/lib/mysql/mysql-test/suite/rpl/r/rpl_incident.result
Normal file
@@ -0,0 +1,37 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
**** On Master ****
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
REPLACE INTO t1 VALUES (4);
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
call mtr.add_suppression("Slave SQL.*The incident LOST_EVENTS occured on the master.* 1590");
|
||||
include/wait_for_slave_sql_error.inc [errno=1590]
|
||||
Last_SQL_Error = 'The incident LOST_EVENTS occured on the master. Message: <none>'
|
||||
**** On Slave ****
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
|
||||
START SLAVE;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
include/check_slave_is_running.inc
|
||||
DROP TABLE t1;
|
||||
include/rpl_end.inc
|
||||
26
build/lib/mysql/mysql-test/suite/rpl/r/rpl_init_slave.result
Normal file
26
build/lib/mysql/mysql-test/suite/rpl/r/rpl_init_slave.result
Normal file
@@ -0,0 +1,26 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
set global max_connections=151;
|
||||
include/stop_slave.inc
|
||||
include/start_slave.inc
|
||||
show variables like 'init_slave';
|
||||
Variable_name Value
|
||||
init_slave set global max_connections=500
|
||||
show variables like 'max_connections';
|
||||
Variable_name Value
|
||||
max_connections 500
|
||||
reset master;
|
||||
show variables like 'init_slave';
|
||||
Variable_name Value
|
||||
init_slave
|
||||
show variables like 'max_connections';
|
||||
Variable_name Value
|
||||
max_connections 151
|
||||
set @my_global_init_connect= @@global.init_connect;
|
||||
set global init_connect="set @c=1";
|
||||
show variables like 'init_connect';
|
||||
Variable_name Value
|
||||
init_connect set @c=1
|
||||
set global init_connect= @my_global_init_connect;
|
||||
set global max_connections= default;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,19 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
stop slave;
|
||||
reset slave;
|
||||
SET GLOBAL debug= "d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init";
|
||||
start slave;
|
||||
include/wait_for_slave_sql_error.inc [errno=1593]
|
||||
Last_SQL_Error = 'Failed during slave thread initialization'
|
||||
call mtr.add_suppression("Failed during slave.* thread initialization");
|
||||
SET GLOBAL debug= "";
|
||||
reset slave;
|
||||
SET GLOBAL init_slave= "garbage";
|
||||
start slave;
|
||||
include/wait_for_slave_sql_error.inc [errno=1064]
|
||||
Last_SQL_Error = 'Slave SQL thread aborted. Can't execute init_slave query'
|
||||
SET GLOBAL init_slave= "";
|
||||
include/stop_slave_io.inc
|
||||
RESET SLAVE;
|
||||
include/rpl_end.inc
|
||||
81
build/lib/mysql/mysql-test/suite/rpl/r/rpl_innodb.result
Normal file
81
build/lib/mysql/mysql-test/suite/rpl/r/rpl_innodb.result
Normal file
@@ -0,0 +1,81 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE t4 (
|
||||
id INT(5) unsigned NOT NULL auto_increment,
|
||||
name varchar(15) NOT NULL default '',
|
||||
number varchar(35) NOT NULL default 'default',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY unique_rec (name,number)
|
||||
) ENGINE=InnoDB;
|
||||
LOAD DATA
|
||||
INFILE '../../std_data/loaddata_pair.dat'
|
||||
REPLACE INTO TABLE t4
|
||||
(name,number);
|
||||
SELECT * FROM t4;
|
||||
id name number
|
||||
1 XXX 12345
|
||||
2 XXY 12345
|
||||
SELECT * FROM t4;
|
||||
id name number
|
||||
1 XXX 12345
|
||||
2 XXY 12345
|
||||
LOAD DATA
|
||||
INFILE '../../std_data/loaddata_pair.dat'
|
||||
REPLACE INTO TABLE t4
|
||||
(name,number);
|
||||
SELECT * FROM t4;
|
||||
id name number
|
||||
3 XXX 12345
|
||||
4 XXY 12345
|
||||
SELECT * FROM t4;
|
||||
id name number
|
||||
3 XXX 12345
|
||||
4 XXY 12345
|
||||
FLUSH LOGS;
|
||||
FLUSH LOGS;
|
||||
DROP DATABASE IF EXISTS mysqltest1;
|
||||
CREATE DATABASE mysqltest1;
|
||||
CREATE TEMPORARY TABLE mysqltest1.tmp (f1 BIGINT);
|
||||
CREATE TABLE mysqltest1.t1 (f1 BIGINT) ENGINE="InnoDB";
|
||||
SET AUTOCOMMIT = 0;
|
||||
-------- switch to slave --------
|
||||
ALTER TABLE mysqltest1.t1 ENGINE = MyISAM;
|
||||
SHOW CREATE TABLE mysqltest1.t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` bigint(20) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
-------- switch to master --------
|
||||
INSERT INTO mysqltest1.t1 SET f1= 1;
|
||||
DROP TEMPORARY TABLE mysqltest1.tmp;
|
||||
ROLLBACK;
|
||||
SHOW CREATE TABLE mysqltest1.tmp;
|
||||
ERROR 42S02: Table 'mysqltest1.tmp' doesn't exist
|
||||
SELECT COUNT(*) FROM mysqltest1.t1;
|
||||
COUNT(*)
|
||||
0
|
||||
INSERT INTO mysqltest1.t1 SET f1= 2;
|
||||
CREATE TEMPORARY TABLE mysqltest1.tmp2(a INT);
|
||||
ROLLBACK;
|
||||
SHOW CREATE TABLE mysqltest1.tmp2;
|
||||
Table Create Table
|
||||
tmp2 CREATE TEMPORARY TABLE `tmp2` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SELECT COUNT(*) FROM mysqltest1.t1;
|
||||
COUNT(*)
|
||||
0
|
||||
-------- switch to slave --------
|
||||
SHOW CREATE TABLE mysqltest1.tmp;
|
||||
ERROR 42S02: Table 'mysqltest1.tmp' doesn't exist
|
||||
SHOW CREATE TABLE mysqltest1.tmp2;
|
||||
ERROR 42S02: Table 'mysqltest1.tmp2' doesn't exist
|
||||
SELECT COUNT(*) FROM mysqltest1.t1;
|
||||
COUNT(*)
|
||||
2
|
||||
FLUSH LOGS;
|
||||
-------- switch to master --------
|
||||
FLUSH LOGS;
|
||||
DROP DATABASE mysqltest1;
|
||||
include/rpl_end.inc
|
||||
End of 5.1 tests
|
||||
@@ -0,0 +1,139 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
use test;
|
||||
CREATE TABLE test.regular_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
|
||||
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
|
||||
fkid MEDIUMINT, filler VARCHAR(255),
|
||||
PRIMARY KEY(id)) ENGINE='innodb';
|
||||
CREATE TABLE test.bykey_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
|
||||
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
|
||||
fkid MEDIUMINT, filler VARCHAR(255),
|
||||
PRIMARY KEY(id)) ENGINE='innodb'
|
||||
PARTITION BY KEY(id) partitions 5;
|
||||
CREATE TABLE test.byrange_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
|
||||
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
|
||||
fkid MEDIUMINT, filler VARCHAR(255),
|
||||
PRIMARY KEY(id)) ENGINE='innodb'
|
||||
PARTITION BY RANGE(id)
|
||||
SUBPARTITION BY hash(id) subpartitions 2
|
||||
(PARTITION pa1 values less than (10),
|
||||
PARTITION pa2 values less than (20),
|
||||
PARTITION pa3 values less than (30),
|
||||
PARTITION pa4 values less than (40),
|
||||
PARTITION pa5 values less than (50),
|
||||
PARTITION pa6 values less than (60),
|
||||
PARTITION pa7 values less than (70),
|
||||
PARTITION pa8 values less than (80),
|
||||
PARTITION pa9 values less than (90),
|
||||
PARTITION pa10 values less than (100),
|
||||
PARTITION pa11 values less than MAXVALUE);
|
||||
CREATE PROCEDURE test.proc_norm()
|
||||
BEGIN
|
||||
DECLARE ins_count INT DEFAULT 1000;
|
||||
DECLARE del_count INT;
|
||||
DECLARE cur_user VARCHAR(255);
|
||||
DECLARE local_uuid VARCHAR(255);
|
||||
DECLARE local_time TIMESTAMP;
|
||||
SET local_time= NOW();
|
||||
SET cur_user= CURRENT_USER();
|
||||
SET local_uuid= UUID();
|
||||
WHILE ins_count > 0 DO
|
||||
INSERT INTO test.regular_tbl VALUES (NULL, NOW(), USER() , UUID(),
|
||||
ins_count,'Going to test MBR for MySQL');
|
||||
SET ins_count = ins_count - 1;
|
||||
END WHILE;
|
||||
SELECT MAX(id) FROM test.regular_tbl INTO del_count;
|
||||
WHILE del_count > 0 DO
|
||||
DELETE FROM test.regular_tbl WHERE id = del_count;
|
||||
SET del_count = del_count - 2;
|
||||
END WHILE;
|
||||
END|
|
||||
CREATE PROCEDURE test.proc_bykey()
|
||||
BEGIN
|
||||
DECLARE ins_count INT DEFAULT 1000;
|
||||
DECLARE del_count INT;
|
||||
DECLARE cur_user VARCHAR(255);
|
||||
DECLARE local_uuid VARCHAR(255);
|
||||
DECLARE local_time TIMESTAMP;
|
||||
SET local_time= NOW();
|
||||
SET cur_user= CURRENT_USER();
|
||||
SET local_uuid= UUID();
|
||||
WHILE ins_count > 0 DO
|
||||
INSERT INTO test.bykey_tbl VALUES (NULL, NOW(), USER() , UUID(),
|
||||
ins_count,'Going to test MBR for MySQL');
|
||||
SET ins_count = ins_count - 1;
|
||||
END WHILE;
|
||||
SELECT MAX(id) FROM test.bykey_tbl INTO del_count;
|
||||
WHILE del_count > 0 DO
|
||||
DELETE FROM test.bykey_tbl WHERE id = del_count;
|
||||
SET del_count = del_count - 2;
|
||||
END WHILE;
|
||||
END|
|
||||
CREATE PROCEDURE test.proc_byrange()
|
||||
BEGIN
|
||||
DECLARE ins_count INT DEFAULT 1000;
|
||||
DECLARE del_count INT;
|
||||
DECLARE cur_user VARCHAR(255);
|
||||
DECLARE local_uuid VARCHAR(255);
|
||||
DECLARE local_time TIMESTAMP;
|
||||
SET local_time= NOW();
|
||||
SET cur_user = CURRENT_USER();
|
||||
SET local_uuid=UUID();
|
||||
WHILE ins_count > 0 DO
|
||||
INSERT INTO test.byrange_tbl VALUES (NULL, NOW(), USER(), UUID(),
|
||||
ins_count,'Going to test MBR for MySQL');
|
||||
SET ins_count = ins_count - 1;
|
||||
END WHILE;
|
||||
SELECT MAX(id) FROM test.byrange_tbl INTO del_count;
|
||||
WHILE del_count > 0 DO
|
||||
DELETE FROM test.byrange_tbl WHERE id = del_count;
|
||||
SET del_count = del_count - 2;
|
||||
END WHILE;
|
||||
END|
|
||||
CALL test.proc_norm();
|
||||
SELECT count(*) as "Master regular" FROM test.regular_tbl;
|
||||
Master regular 500
|
||||
CALL test.proc_bykey();
|
||||
SELECT count(*) as "Master bykey" FROM test.bykey_tbl;
|
||||
Master bykey 500
|
||||
CALL test.proc_byrange();
|
||||
SELECT count(*) as "Master byrange" FROM test.byrange_tbl;
|
||||
Master byrange 500
|
||||
show create table test.byrange_tbl;
|
||||
Table byrange_tbl
|
||||
Create Table CREATE TABLE `byrange_tbl` (
|
||||
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
|
||||
`dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`user` char(255) DEFAULT NULL,
|
||||
`uuidf` longblob,
|
||||
`fkid` mediumint(9) DEFAULT NULL,
|
||||
`filler` varchar(255) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=latin1
|
||||
/*!50100 PARTITION BY RANGE (id)
|
||||
SUBPARTITION BY HASH (id)
|
||||
SUBPARTITIONS 2
|
||||
(PARTITION pa1 VALUES LESS THAN (10) ENGINE = InnoDB,
|
||||
PARTITION pa2 VALUES LESS THAN (20) ENGINE = InnoDB,
|
||||
PARTITION pa3 VALUES LESS THAN (30) ENGINE = InnoDB,
|
||||
PARTITION pa4 VALUES LESS THAN (40) ENGINE = InnoDB,
|
||||
PARTITION pa5 VALUES LESS THAN (50) ENGINE = InnoDB,
|
||||
PARTITION pa6 VALUES LESS THAN (60) ENGINE = InnoDB,
|
||||
PARTITION pa7 VALUES LESS THAN (70) ENGINE = InnoDB,
|
||||
PARTITION pa8 VALUES LESS THAN (80) ENGINE = InnoDB,
|
||||
PARTITION pa9 VALUES LESS THAN (90) ENGINE = InnoDB,
|
||||
PARTITION pa10 VALUES LESS THAN (100) ENGINE = InnoDB,
|
||||
PARTITION pa11 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
|
||||
SELECT count(*) "Slave norm" FROM test.regular_tbl;
|
||||
Slave norm 500
|
||||
SELECT count(*) "Slave bykey" FROM test.bykey_tbl;
|
||||
Slave bykey 500
|
||||
SELECT count(*) "Slave byrange" FROM test.byrange_tbl;
|
||||
Slave byrange 500
|
||||
DROP PROCEDURE test.proc_norm;
|
||||
DROP PROCEDURE test.proc_bykey;
|
||||
DROP PROCEDURE test.proc_byrange;
|
||||
DROP TABLE test.regular_tbl;
|
||||
DROP TABLE test.bykey_tbl;
|
||||
DROP TABLE test.byrange_tbl;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,32 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
use test;
|
||||
CREATE TABLE test.regular_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
|
||||
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
|
||||
fkid MEDIUMINT, filler VARCHAR(255),
|
||||
PRIMARY KEY(id)) ENGINE='innodb';
|
||||
CREATE PROCEDURE test.proc_norm()
|
||||
BEGIN
|
||||
DECLARE ins_count INT DEFAULT 1000;
|
||||
DECLARE del_count INT;
|
||||
DECLARE cur_user VARCHAR(255);
|
||||
DECLARE local_uuid VARCHAR(255);
|
||||
DECLARE local_time TIMESTAMP;
|
||||
SET local_time= NOW();
|
||||
SET cur_user= CURRENT_USER();
|
||||
SET local_uuid= UUID();
|
||||
WHILE ins_count > 0 DO
|
||||
INSERT INTO test.regular_tbl VALUES (NULL, NOW(), USER() , UUID(),
|
||||
ins_count,'Going to test MBR for MySQL');
|
||||
SET ins_count = ins_count - 1;
|
||||
END WHILE;
|
||||
SELECT MAX(id) FROM test.regular_tbl INTO del_count;
|
||||
WHILE del_count > 0 DO
|
||||
DELETE FROM test.regular_tbl WHERE id = del_count;
|
||||
SET del_count = del_count - 2;
|
||||
END WHILE;
|
||||
END|
|
||||
CALL test.proc_norm();
|
||||
DROP PROCEDURE test.proc_norm;
|
||||
DROP TABLE test.regular_tbl;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,156 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
==========MASTER==========
|
||||
show global variables like 'binlog_format%';
|
||||
Variable_name Value
|
||||
binlog_format MIXED
|
||||
show session variables like 'binlog_format%';
|
||||
Variable_name Value
|
||||
binlog_format MIXED
|
||||
select @@global.binlog_format, @@session.binlog_format;
|
||||
@@global.binlog_format @@session.binlog_format
|
||||
MIXED MIXED
|
||||
==========SLAVE===========
|
||||
show global variables like 'binlog_format%';
|
||||
Variable_name Value
|
||||
binlog_format MIXED
|
||||
show session variables like 'binlog_format%';
|
||||
Variable_name Value
|
||||
binlog_format MIXED
|
||||
select @@global.binlog_format, @@session.binlog_format;
|
||||
@@global.binlog_format @@session.binlog_format
|
||||
MIXED MIXED
|
||||
|
||||
******************** DDL for database ********************
|
||||
DROP DATABASE IF EXISTS test_rpl;
|
||||
DROP DATABASE IF EXISTS test_rpl_1;
|
||||
CREATE DATABASE test_rpl_1 CHARACTER SET utf8 COLLATE utf8_general_ci;
|
||||
ALTER DATABASE test_rpl_1 CHARACTER SET latin1 COLLATE latin1_general_ci;
|
||||
DROP DATABASE test_rpl_1;
|
||||
CREATE DATABASE test_rpl CHARACTER SET utf8 COLLATE utf8_general_ci;
|
||||
ALTER DATABASE test_rpl CHARACTER SET latin1 COLLATE latin1_swedish_ci;
|
||||
==========MASTER==========
|
||||
SHOW DATABASES LIKE 'test_rpl%';
|
||||
Database (test_rpl%)
|
||||
test_rpl
|
||||
==========SLAVE===========
|
||||
SHOW DATABASES LIKE 'test_rpl%';
|
||||
Database (test_rpl%)
|
||||
test_rpl
|
||||
USE test_rpl;
|
||||
|
||||
******************** DDL for tables ********************
|
||||
CREATE TABLE t0 (a int auto_increment not null, c int not null, PRIMARY KEY(a), KEY index2 (c)) ENGINE=innodb;
|
||||
ALTER TABLE t0 DROP INDEX index2;
|
||||
ALTER TABLE t0 ADD COLUMN b char(254);
|
||||
ALTER TABLE t0 ADD INDEX index1 (b);
|
||||
ALTER TABLE t0 DROP COLUMN c;
|
||||
RENAME TABLE t0 TO t1;
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
==========MASTER==========
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`b` char(254) DEFAULT NULL,
|
||||
PRIMARY KEY (`a`),
|
||||
KEY `index1` (`b`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`b` char(254) DEFAULT NULL,
|
||||
PRIMARY KEY (`a`),
|
||||
KEY `index1` (`b`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
==========SLAVE===========
|
||||
USE test_rpl;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`b` char(254) DEFAULT NULL,
|
||||
PRIMARY KEY (`a`),
|
||||
KEY `index1` (`b`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`b` char(254) DEFAULT NULL,
|
||||
PRIMARY KEY (`a`),
|
||||
KEY `index1` (`b`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
|
||||
******************** DDL for indexes ********************
|
||||
ALTER TABLE t2 ADD COLUMN d datetime;
|
||||
CREATE INDEX index2 on t2 (d);
|
||||
CREATE INDEX index3 on t2 (a, d);
|
||||
==========MASTER==========
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`b` char(254) DEFAULT NULL,
|
||||
PRIMARY KEY (`a`),
|
||||
KEY `index1` (`b`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`b` char(254) DEFAULT NULL,
|
||||
`d` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`a`),
|
||||
KEY `index1` (`b`),
|
||||
KEY `index2` (`d`),
|
||||
KEY `index3` (`a`,`d`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
==========SLAVE===========
|
||||
USE test_rpl;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`b` char(254) DEFAULT NULL,
|
||||
PRIMARY KEY (`a`),
|
||||
KEY `index1` (`b`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`b` char(254) DEFAULT NULL,
|
||||
`d` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`a`),
|
||||
KEY `index1` (`b`),
|
||||
KEY `index2` (`d`),
|
||||
KEY `index3` (`a`,`d`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
ALTER TABLE t2 DROP COLUMN d;
|
||||
|
||||
|
||||
******************** SHOW BINLOG EVENTS ********************
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # DROP DATABASE IF EXISTS test_rpl
|
||||
master-bin.000001 # Query # # DROP DATABASE IF EXISTS test_rpl_1
|
||||
master-bin.000001 # Query # # CREATE DATABASE test_rpl_1 CHARACTER SET utf8 COLLATE utf8_general_ci
|
||||
master-bin.000001 # Query # # ALTER DATABASE test_rpl_1 CHARACTER SET latin1 COLLATE latin1_general_ci
|
||||
master-bin.000001 # Query # # DROP DATABASE test_rpl_1
|
||||
master-bin.000001 # Query # # CREATE DATABASE test_rpl CHARACTER SET utf8 COLLATE utf8_general_ci
|
||||
master-bin.000001 # Query # # ALTER DATABASE test_rpl CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
||||
master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t0 (a int auto_increment not null, c int not null, PRIMARY KEY(a), KEY index2 (c)) ENGINE=innodb
|
||||
master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 DROP INDEX index2
|
||||
master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 ADD COLUMN b char(254)
|
||||
master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 ADD INDEX index1 (b)
|
||||
master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 DROP COLUMN c
|
||||
master-bin.000001 # Query # # use `test_rpl`; RENAME TABLE t0 TO t1
|
||||
master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t2 LIKE t1
|
||||
master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t2 ADD COLUMN d datetime
|
||||
master-bin.000001 # Query # # use `test_rpl`; CREATE INDEX index2 on t2 (d)
|
||||
master-bin.000001 # Query # # use `test_rpl`; CREATE INDEX index3 on t2 (a, d)
|
||||
master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t2 DROP COLUMN d
|
||||
drop database test_rpl;
|
||||
include/rpl_end.inc
|
||||
1103
build/lib/mysql/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result
Normal file
1103
build/lib/mysql/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result
Normal file
File diff suppressed because it is too large
Load Diff
20
build/lib/mysql/mysql-test/suite/rpl/r/rpl_insert.result
Normal file
20
build/lib/mysql/mysql-test/suite/rpl/r/rpl_insert.result
Normal file
@@ -0,0 +1,20 @@
|
||||
#
|
||||
# Bug#20821: INSERT DELAYED fails to write some rows to binlog
|
||||
#
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE SCHEMA IF NOT EXISTS mysqlslap;
|
||||
USE mysqlslap;
|
||||
CREATE TABLE t1 (id INT, name VARCHAR(64));
|
||||
SELECT COUNT(*) FROM mysqlslap.t1;
|
||||
COUNT(*)
|
||||
5000
|
||||
SELECT COUNT(*) FROM mysqlslap.t1;
|
||||
COUNT(*)
|
||||
5000
|
||||
#
|
||||
# Cleanup
|
||||
#
|
||||
USE test;
|
||||
DROP SCHEMA mysqlslap;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,29 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE t1 (
|
||||
a INT UNSIGNED NOT NULL PRIMARY KEY
|
||||
) ENGINE=innodb;
|
||||
CREATE TABLE t2 (
|
||||
a INT UNSIGNED
|
||||
) ENGINE=innodb;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (1);
|
||||
INSERT INTO t1 SELECT t2.a FROM t2 ORDER BY t2.a ON DUPLICATE KEY UPDATE t1.a= t1.a;
|
||||
include/assert.inc [Sum of elements in t1 should be 1.]
|
||||
include/assert.inc [In SBR or MIXED modes, the event in the binlog should be the same that was executed. In RBR mode, binlog position should stay unchanged.]
|
||||
include/diff_tables.inc [master:test.t1 , slave:test.t1]
|
||||
drop table t1, t2;
|
||||
CREATE TABLE t1 (
|
||||
a INT UNSIGNED NOT NULL PRIMARY KEY
|
||||
) ENGINE=myisam;
|
||||
CREATE TABLE t2 (
|
||||
a INT UNSIGNED
|
||||
) ENGINE=myisam;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (1);
|
||||
INSERT INTO t1 SELECT t2.a FROM t2 ORDER BY t2.a ON DUPLICATE KEY UPDATE t1.a= t1.a;
|
||||
include/assert.inc [Sum of elements in t1 should be 1.]
|
||||
include/assert.inc [In SBR or MIXED modes, the event in the binlog should be the same that was executed. In RBR mode, binlog position should stay unchanged.]
|
||||
include/diff_tables.inc [master:test.t1 , slave:test.t1]
|
||||
drop table t1, t2;
|
||||
include/rpl_end.inc
|
||||
529
build/lib/mysql/mysql-test/suite/rpl/r/rpl_insert_id.result
Normal file
529
build/lib/mysql/mysql-test/suite/rpl/r/rpl_insert_id.result
Normal file
@@ -0,0 +1,529 @@
|
||||
#
|
||||
# Setup
|
||||
#
|
||||
use test;
|
||||
#
|
||||
# See if queries that use both auto_increment and LAST_INSERT_ID()
|
||||
# are replicated well
|
||||
#
|
||||
# We also check how the foreign_key_check variable is replicated
|
||||
#
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
SET @old_concurrent_insert= @@global.concurrent_insert;
|
||||
SET @@global.concurrent_insert= 0;
|
||||
create table t1(a int auto_increment, key(a)) engine=myisam;
|
||||
create table t2(b int auto_increment, c int, key(b)) engine=myisam;
|
||||
insert into t1 values (1),(2),(3);
|
||||
insert into t1 values (null);
|
||||
insert into t2 values (null,last_insert_id());
|
||||
select * from t1 ORDER BY a;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
select * from t2 ORDER BY b;
|
||||
b c
|
||||
1 4
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
create table t1(a int auto_increment, key(a)) engine=myisam;
|
||||
create table t2(b int auto_increment, c int, key(b), foreign key(b) references t1(a)) engine=myisam;
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
insert into t1 values (10);
|
||||
insert into t1 values (null),(null),(null);
|
||||
insert into t2 values (5,0);
|
||||
insert into t2 values (null,last_insert_id());
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
select * from t1;
|
||||
a
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
select * from t2;
|
||||
b c
|
||||
5 0
|
||||
6 11
|
||||
#
|
||||
# check if INSERT SELECT in auto_increment is well replicated (bug #490)
|
||||
#
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
create table t1(a int auto_increment, key(a)) engine=myisam;
|
||||
create table t2(b int auto_increment, c int, key(b)) engine=myisam;
|
||||
insert into t1 values (10);
|
||||
insert into t1 values (null),(null),(null);
|
||||
insert into t2 values (5,0);
|
||||
insert into t2 (c) select * from t1 ORDER BY a;
|
||||
select * from t2 ORDER BY b;
|
||||
b c
|
||||
5 0
|
||||
6 10
|
||||
7 11
|
||||
8 12
|
||||
9 13
|
||||
select * from t1 ORDER BY a;
|
||||
a
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
select * from t2 ORDER BY b;
|
||||
b c
|
||||
5 0
|
||||
6 10
|
||||
7 11
|
||||
8 12
|
||||
9 13
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
#
|
||||
# Bug#8412: Error codes reported in binary log for CHARACTER SET,
|
||||
# FOREIGN_KEY_CHECKS
|
||||
#
|
||||
SET TIMESTAMP=1000000000;
|
||||
CREATE TABLE t1 ( a INT UNIQUE ) engine=myisam;
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
INSERT INTO t1 VALUES (1),(1);
|
||||
Got one of the listed errors
|
||||
drop table t1;
|
||||
#
|
||||
# Bug#14553: NULL in WHERE resets LAST_INSERT_ID
|
||||
#
|
||||
create table t1(a int auto_increment, key(a)) engine=myisam;
|
||||
create table t2(a int) engine=myisam;
|
||||
insert into t1 (a) values (null);
|
||||
insert into t2 (a) select a from t1 where a is null;
|
||||
insert into t2 (a) select a from t1 where a is null;
|
||||
select * from t2;
|
||||
a
|
||||
1
|
||||
select * from t2;
|
||||
a
|
||||
1
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
#
|
||||
# End of 4.1 tests
|
||||
#
|
||||
#
|
||||
# BUG#15728: LAST_INSERT_ID function inside a stored function returns 0
|
||||
#
|
||||
# The solution is not to reset last_insert_id on enter to sub-statement.
|
||||
#
|
||||
drop function if exists bug15728;
|
||||
drop function if exists bug15728_insert;
|
||||
drop table if exists t1, t2;
|
||||
create table t1 (
|
||||
id int not null auto_increment,
|
||||
last_id int,
|
||||
primary key (id)
|
||||
) engine=myisam;
|
||||
create function bug15728() returns int(11)
|
||||
return last_insert_id();
|
||||
insert into t1 (last_id) values (0);
|
||||
insert into t1 (last_id) values (last_insert_id());
|
||||
insert into t1 (last_id) values (bug15728());
|
||||
create table t2 (
|
||||
id int not null auto_increment,
|
||||
last_id int,
|
||||
primary key (id)
|
||||
) engine=myisam;
|
||||
create function bug15728_insert() returns int(11) modifies sql data
|
||||
begin
|
||||
insert into t2 (last_id) values (bug15728());
|
||||
return bug15728();
|
||||
end|
|
||||
create trigger t1_bi before insert on t1 for each row
|
||||
begin
|
||||
declare res int;
|
||||
select bug15728_insert() into res;
|
||||
set NEW.last_id = res;
|
||||
end|
|
||||
insert into t1 (last_id) values (0);
|
||||
drop trigger t1_bi;
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
4
|
||||
select bug15728_insert();
|
||||
bug15728_insert()
|
||||
2
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
4
|
||||
insert into t1 (last_id) values (bug15728());
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
5
|
||||
drop procedure if exists foo;
|
||||
create procedure foo()
|
||||
begin
|
||||
declare res int;
|
||||
insert into t2 (last_id) values (bug15728());
|
||||
insert into t1 (last_id) values (bug15728());
|
||||
end|
|
||||
call foo();
|
||||
select * from t1;
|
||||
id last_id
|
||||
1 0
|
||||
2 1
|
||||
3 2
|
||||
4 1
|
||||
5 4
|
||||
6 3
|
||||
select * from t2;
|
||||
id last_id
|
||||
1 3
|
||||
2 4
|
||||
3 5
|
||||
select * from t1;
|
||||
id last_id
|
||||
1 0
|
||||
2 1
|
||||
3 2
|
||||
4 1
|
||||
5 4
|
||||
6 3
|
||||
select * from t2;
|
||||
id last_id
|
||||
1 3
|
||||
2 4
|
||||
3 5
|
||||
drop function bug15728;
|
||||
drop function bug15728_insert;
|
||||
drop table t1,t2;
|
||||
drop procedure foo;
|
||||
create table t1 (n int primary key auto_increment not null,
|
||||
b int, unique(b)) engine=myisam;
|
||||
set sql_log_bin=0;
|
||||
insert into t1 values(null,100);
|
||||
replace into t1 values(null,50),(null,100),(null,150);
|
||||
select * from t1 order by n;
|
||||
n b
|
||||
2 50
|
||||
3 100
|
||||
4 150
|
||||
truncate table t1;
|
||||
set sql_log_bin=1;
|
||||
insert into t1 values(null,100);
|
||||
select * from t1 order by n;
|
||||
n b
|
||||
1 100
|
||||
insert into t1 values(null,200),(null,300);
|
||||
delete from t1 where b <> 100;
|
||||
select * from t1 order by n;
|
||||
n b
|
||||
1 100
|
||||
replace into t1 values(null,100),(null,350);
|
||||
select * from t1 order by n;
|
||||
n b
|
||||
2 100
|
||||
3 350
|
||||
select * from t1 order by n;
|
||||
n b
|
||||
2 100
|
||||
3 350
|
||||
insert into t1 values (NULL,400),(3,500),(NULL,600) on duplicate key UPDATE n=1000;
|
||||
select * from t1 order by n;
|
||||
n b
|
||||
2 100
|
||||
4 400
|
||||
1000 350
|
||||
1001 600
|
||||
select * from t1 order by n;
|
||||
n b
|
||||
2 100
|
||||
4 400
|
||||
1000 350
|
||||
1001 600
|
||||
drop table t1;
|
||||
create table t1 (n int primary key auto_increment not null,
|
||||
b int, unique(b)) engine=myisam;
|
||||
insert into t1 values(null,100);
|
||||
select * from t1 order by n;
|
||||
n b
|
||||
1 100
|
||||
insert into t1 values(null,200),(null,300);
|
||||
delete from t1 where b <> 100;
|
||||
select * from t1 order by n;
|
||||
n b
|
||||
1 100
|
||||
insert into t1 values(null,100),(null,350) on duplicate key update n=2;
|
||||
select * from t1 order by n;
|
||||
n b
|
||||
2 100
|
||||
3 350
|
||||
select * from t1 order by n;
|
||||
n b
|
||||
2 100
|
||||
3 350
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b INT,
|
||||
UNIQUE(b)) ENGINE=myisam;
|
||||
INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a b
|
||||
1 10
|
||||
2 2
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a b
|
||||
1 10
|
||||
2 2
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
id bigint(20) unsigned NOT NULL auto_increment,
|
||||
field_1 int(10) unsigned NOT NULL,
|
||||
field_2 varchar(255) NOT NULL,
|
||||
field_3 varchar(255) NOT NULL,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY field_1 (field_1, field_2)
|
||||
) ENGINE=myisam;
|
||||
CREATE TABLE t2 (
|
||||
field_a int(10) unsigned NOT NULL,
|
||||
field_b varchar(255) NOT NULL,
|
||||
field_c varchar(255) NOT NULL
|
||||
) ENGINE=myisam;
|
||||
INSERT INTO t2 (field_a, field_b, field_c) VALUES (1, 'a', '1a');
|
||||
INSERT INTO t2 (field_a, field_b, field_c) VALUES (2, 'b', '2b');
|
||||
INSERT INTO t2 (field_a, field_b, field_c) VALUES (3, 'c', '3c');
|
||||
INSERT INTO t2 (field_a, field_b, field_c) VALUES (4, 'd', '4d');
|
||||
INSERT INTO t2 (field_a, field_b, field_c) VALUES (5, 'e', '5e');
|
||||
INSERT INTO t1 (field_1, field_2, field_3)
|
||||
SELECT t2.field_a, t2.field_b, t2.field_c
|
||||
FROM t2
|
||||
ON DUPLICATE KEY UPDATE
|
||||
t1.field_3 = t2.field_c;
|
||||
INSERT INTO t2 (field_a, field_b, field_c) VALUES (6, 'f', '6f');
|
||||
INSERT INTO t1 (field_1, field_2, field_3)
|
||||
SELECT t2.field_a, t2.field_b, t2.field_c
|
||||
FROM t2
|
||||
ON DUPLICATE KEY UPDATE
|
||||
t1.field_3 = t2.field_c;
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
id field_1 field_2 field_3
|
||||
1 1 a 1a
|
||||
2 2 b 2b
|
||||
3 3 c 3c
|
||||
4 4 d 4d
|
||||
5 5 e 5e
|
||||
6 6 f 6f
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
id field_1 field_2 field_3
|
||||
1 1 a 1a
|
||||
2 2 b 2b
|
||||
3 3 c 3c
|
||||
4 4 d 4d
|
||||
5 5 e 5e
|
||||
6 6 f 6f
|
||||
drop table t1, t2;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
SELECT LAST_INSERT_ID(0);
|
||||
LAST_INSERT_ID(0)
|
||||
0
|
||||
CREATE TABLE t1 (
|
||||
id INT NOT NULL DEFAULT 0,
|
||||
last_id INT,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=myisam;
|
||||
CREATE TABLE t2 (
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
last_id INT,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=myisam;
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
INSERT INTO t2 (last_id) VALUES (LAST_INSERT_ID());
|
||||
INSERT INTO t1 (last_id) VALUES (LAST_INSERT_ID());
|
||||
END|
|
||||
CALL p1();
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
id last_id
|
||||
0 1
|
||||
SELECT * FROM t2 ORDER BY id;
|
||||
id last_id
|
||||
1 0
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
id last_id
|
||||
0 1
|
||||
SELECT * FROM t2 ORDER BY id;
|
||||
id last_id
|
||||
1 0
|
||||
DROP PROCEDURE p1;
|
||||
DROP TABLE t1, t2;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
DROP FUNCTION IF EXISTS f2;
|
||||
DROP FUNCTION IF EXISTS f3;
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
CREATE TABLE t1 (
|
||||
i INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
j INT DEFAULT 0
|
||||
) ENGINE=myisam;
|
||||
CREATE TABLE t2 (i INT) ENGINE=myisam;
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
INSERT INTO t1 (i) VALUES (NULL);
|
||||
INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());
|
||||
INSERT INTO t1 (i) VALUES (NULL), (NULL);
|
||||
INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());
|
||||
END |
|
||||
CREATE FUNCTION f1() RETURNS INT MODIFIES SQL DATA
|
||||
BEGIN
|
||||
INSERT INTO t1 (i) VALUES (NULL);
|
||||
INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());
|
||||
INSERT INTO t1 (i) VALUES (NULL), (NULL);
|
||||
INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());
|
||||
RETURN 0;
|
||||
END |
|
||||
CREATE FUNCTION f2() RETURNS INT NOT DETERMINISTIC
|
||||
RETURN LAST_INSERT_ID() |
|
||||
CREATE FUNCTION f3() RETURNS INT MODIFIES SQL DATA
|
||||
BEGIN
|
||||
INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());
|
||||
RETURN 0;
|
||||
END |
|
||||
INSERT INTO t1 VALUES (NULL, -1);
|
||||
CALL p1();
|
||||
SELECT f1();
|
||||
f1()
|
||||
0
|
||||
INSERT INTO t1 VALUES (NULL, f2()), (NULL, LAST_INSERT_ID()),
|
||||
(NULL, LAST_INSERT_ID()), (NULL, f2()), (NULL, f2());
|
||||
INSERT INTO t1 VALUES (NULL, f2());
|
||||
INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID());
|
||||
UPDATE t1 SET j= -1 WHERE i IS NULL;
|
||||
INSERT INTO t1 (i) VALUES (NULL);
|
||||
INSERT INTO t1 (i) VALUES (NULL);
|
||||
SELECT f3();
|
||||
f3()
|
||||
0
|
||||
SELECT * FROM t1 ORDER BY i;
|
||||
i j
|
||||
1 -1
|
||||
2 0
|
||||
3 0
|
||||
4 0
|
||||
5 0
|
||||
6 0
|
||||
7 0
|
||||
8 3
|
||||
9 3
|
||||
10 3
|
||||
11 3
|
||||
12 3
|
||||
13 8
|
||||
14 -1
|
||||
15 13
|
||||
16 0
|
||||
17 0
|
||||
SELECT * FROM t2 ORDER BY i;
|
||||
i
|
||||
2
|
||||
3
|
||||
5
|
||||
6
|
||||
16
|
||||
SELECT * FROM t1;
|
||||
i j
|
||||
1 -1
|
||||
2 0
|
||||
3 0
|
||||
4 0
|
||||
5 0
|
||||
6 0
|
||||
7 0
|
||||
8 3
|
||||
9 3
|
||||
10 3
|
||||
11 3
|
||||
12 3
|
||||
13 8
|
||||
14 -1
|
||||
15 13
|
||||
16 0
|
||||
17 0
|
||||
SELECT * FROM t2;
|
||||
i
|
||||
2
|
||||
3
|
||||
5
|
||||
6
|
||||
16
|
||||
DROP PROCEDURE p1;
|
||||
DROP FUNCTION f1;
|
||||
DROP FUNCTION f2;
|
||||
DROP FUNCTION f3;
|
||||
DROP TABLE t1, t2;
|
||||
#
|
||||
# End of 5.0 tests
|
||||
#
|
||||
create table t2 (
|
||||
id int not null auto_increment,
|
||||
last_id int,
|
||||
primary key (id)
|
||||
) engine=myisam;
|
||||
truncate table t2;
|
||||
create table t1 (id tinyint primary key) engine=myisam;
|
||||
create function insid() returns int
|
||||
begin
|
||||
insert into t2 (last_id) values (0);
|
||||
return 0;
|
||||
end|
|
||||
set sql_log_bin=0;
|
||||
insert into t2 (id) values(1),(2),(3);
|
||||
delete from t2;
|
||||
set sql_log_bin=1;
|
||||
select insid();
|
||||
insid()
|
||||
0
|
||||
set sql_log_bin=0;
|
||||
insert into t2 (id) values(5),(6),(7);
|
||||
delete from t2 where id>=5;
|
||||
set sql_log_bin=1;
|
||||
insert into t1 select insid();
|
||||
select * from t1 order by id;
|
||||
id
|
||||
0
|
||||
select * from t2 order by id;
|
||||
id last_id
|
||||
4 0
|
||||
8 0
|
||||
select * from t1 order by id;
|
||||
id
|
||||
0
|
||||
select * from t2 order by id;
|
||||
id last_id
|
||||
4 0
|
||||
8 0
|
||||
drop table t1;
|
||||
drop function insid;
|
||||
truncate table t2;
|
||||
create table t1 (n int primary key auto_increment not null,
|
||||
b int, unique(b)) engine=myisam;
|
||||
create procedure foo()
|
||||
begin
|
||||
insert into t1 values(null,10);
|
||||
insert ignore into t1 values(null,10);
|
||||
insert ignore into t1 values(null,10);
|
||||
insert into t2 values(null,3);
|
||||
end|
|
||||
call foo();
|
||||
select * from t1 order by n;
|
||||
n b
|
||||
1 10
|
||||
select * from t2 order by id;
|
||||
id last_id
|
||||
1 3
|
||||
select * from t1 order by n;
|
||||
n b
|
||||
1 10
|
||||
select * from t2 order by id;
|
||||
id last_id
|
||||
1 3
|
||||
drop table t1, t2;
|
||||
drop procedure foo;
|
||||
SET @@global.concurrent_insert= @old_concurrent_insert;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,73 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
create table t1(a int auto_increment, primary key(a));
|
||||
create table t2(b int auto_increment, c int, primary key(b));
|
||||
insert into t1 values (1),(2),(3);
|
||||
insert into t1 values (null);
|
||||
insert into t2 values (null,last_insert_id());
|
||||
select * from t1 ORDER BY a;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
select * from t2 ORDER BY b;
|
||||
b c
|
||||
1 4
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
create table t1(a int auto_increment, key(a)) engine=innodb;
|
||||
create table t2(b int auto_increment, c int, key(b), foreign key(b) references t1(a)) engine=innodb;
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
insert into t1 values (10);
|
||||
insert into t1 values (null),(null),(null);
|
||||
insert into t2 values (5,0);
|
||||
insert into t2 values (null,last_insert_id());
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
select * from t1;
|
||||
a
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
select * from t2;
|
||||
b c
|
||||
5 0
|
||||
6 11
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
create table t1(a int auto_increment, primary key(a));
|
||||
create table t2(b int auto_increment, c int, primary key(b));
|
||||
insert into t1 values (10);
|
||||
insert into t1 values (null),(null),(null);
|
||||
insert into t2 values (5,0);
|
||||
insert into t2 (c) select * from t1 ORDER BY a;
|
||||
select * from t2 ORDER BY b;
|
||||
b c
|
||||
5 0
|
||||
6 10
|
||||
7 11
|
||||
8 12
|
||||
9 13
|
||||
select * from t1 ORDER BY a;
|
||||
a
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
select * from t2 ORDER BY b;
|
||||
b c
|
||||
5 0
|
||||
6 10
|
||||
7 11
|
||||
8 12
|
||||
9 13
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
SET TIMESTAMP=1000000000;
|
||||
CREATE TABLE t1 ( a INT UNIQUE );
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
INSERT INTO t1 VALUES (1),(1);
|
||||
Got one of the listed errors
|
||||
drop table t1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,55 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE t1 (
|
||||
a int unsigned not null auto_increment primary key,
|
||||
b int unsigned,
|
||||
unique (b)
|
||||
) ENGINE=innodb;
|
||||
CREATE TABLE t2 (
|
||||
a int unsigned, # to force INSERT SELECT to have a certain order
|
||||
b int unsigned
|
||||
) ENGINE=innodb;
|
||||
INSERT INTO t1 VALUES (NULL, 1);
|
||||
INSERT INTO t1 VALUES (NULL, 2);
|
||||
INSERT INTO t1 VALUES (NULL, 3);
|
||||
INSERT INTO t1 VALUES (NULL, 4);
|
||||
INSERT INTO t2 VALUES (1, 1);
|
||||
INSERT INTO t2 VALUES (2, 2);
|
||||
INSERT INTO t2 VALUES (3, 5);
|
||||
INSERT INTO t2 VALUES (4, 3);
|
||||
INSERT INTO t2 VALUES (5, 4);
|
||||
INSERT INTO t2 VALUES (6, 6);
|
||||
INSERT IGNORE INTO t1 SELECT NULL, t2.b FROM t2 ORDER BY t2.a;
|
||||
include/assert.inc [Count of elements in t1 should be 6.]
|
||||
include/diff_tables.inc [master:test.t1 , slave:test.t1]
|
||||
INSERT IGNORE INTO t1 SELECT NULL, t2.b FROM t2 ORDER BY t2.a;
|
||||
include/assert.inc [Count of elements in t1 should be 6.]
|
||||
include/assert.inc [In SBR or MIXED modes, the event in the binlog should be the same that was executed. In RBR mode, binlog position should stay unchanged.]
|
||||
drop table t1, t2;
|
||||
CREATE TABLE t1 (
|
||||
a int unsigned not null auto_increment primary key,
|
||||
b int unsigned,
|
||||
unique (b)
|
||||
) ENGINE=myisam;
|
||||
CREATE TABLE t2 (
|
||||
a int unsigned, # to force INSERT SELECT to have a certain order
|
||||
b int unsigned
|
||||
) ENGINE=myisam;
|
||||
INSERT INTO t1 VALUES (NULL, 1);
|
||||
INSERT INTO t1 VALUES (NULL, 2);
|
||||
INSERT INTO t1 VALUES (NULL, 3);
|
||||
INSERT INTO t1 VALUES (NULL, 4);
|
||||
INSERT INTO t2 VALUES (1, 1);
|
||||
INSERT INTO t2 VALUES (2, 2);
|
||||
INSERT INTO t2 VALUES (3, 5);
|
||||
INSERT INTO t2 VALUES (4, 3);
|
||||
INSERT INTO t2 VALUES (5, 4);
|
||||
INSERT INTO t2 VALUES (6, 6);
|
||||
INSERT IGNORE INTO t1 SELECT NULL, t2.b FROM t2 ORDER BY t2.a;
|
||||
include/assert.inc [Count of elements in t1 should be 6.]
|
||||
include/diff_tables.inc [master:test.t1 , slave:test.t1]
|
||||
INSERT IGNORE INTO t1 SELECT NULL, t2.b FROM t2 ORDER BY t2.a;
|
||||
include/assert.inc [Count of elements in t1 should be 6.]
|
||||
include/assert.inc [In SBR or MIXED modes, the event in the binlog should be the same that was executed. In RBR mode, binlog position should stay unchanged.]
|
||||
drop table t1, t2;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,14 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
create table t1 (n int not null primary key);
|
||||
insert into t1 values (1);
|
||||
create table t2 (n int);
|
||||
insert into t2 values (1);
|
||||
insert ignore into t1 select * from t2;
|
||||
insert into t1 values (2);
|
||||
select * from t1;
|
||||
n
|
||||
1
|
||||
2
|
||||
drop table t1,t2;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,446 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
USE test;
|
||||
DROP VIEW IF EXISTS v1,v11;
|
||||
DROP TABLE IF EXISTS t1,t2,t3,t11,t12,t13;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP PROCEDURE IF EXISTS p11;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
DROP FUNCTION IF EXISTS f2;
|
||||
DROP EVENT IF EXISTS e1;
|
||||
DROP EVENT IF EXISTS e11;
|
||||
|
||||
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b INT, c VARCHAR(64)) ENGINE=myisam;
|
||||
INSERT INTO t1 VALUES (1,1,'1');
|
||||
INSERT INTO t1 VALUES (2,2,UUID());
|
||||
CREATE TABLE t2 (a INT UNIQUE, b INT, c VARCHAR(64)) ENGINE=myisam;
|
||||
INSERT INTO t2 VALUES (1,1,'1');
|
||||
INSERT INTO t2 VALUES (2,2,UUID());
|
||||
CREATE TABLE t11 (a INT NOT NULL PRIMARY KEY, b INT, c VARCHAR(64)) ENGINE=innodb;
|
||||
INSERT INTO t11 VALUES (1,1,'1');
|
||||
INSERT INTO t11 VALUES (2,2,UUID());
|
||||
CREATE TABLE t12 (a INT UNIQUE, b INT, c VARCHAR(64)) ENGINE=innodb;
|
||||
INSERT INTO t12 VALUES (1,1,'1');
|
||||
INSERT INTO t12 VALUES (2,2,UUID());
|
||||
|
||||
CREATE VIEW v1 AS SELECT * FROM t1;
|
||||
CREATE VIEW v11 AS SELECT * FROM t11;
|
||||
CREATE TRIGGER t1_tr1 BEFORE INSERT ON t1 FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO t2 VALUES (NEW.a, NEW.b, NEW.c);
|
||||
INSERT INTO t3 VALUES (NEW.a, NEW.b, NEW.c);
|
||||
END|
|
||||
CREATE TRIGGER t1_tr2 BEFORE UPDATE ON t1 FOR EACH ROW
|
||||
BEGIN
|
||||
UPDATE t2 SET c = '';
|
||||
UPDATE t3 SET c = '';
|
||||
END|
|
||||
CREATE TRIGGER t11_tr1 BEFORE INSERT ON t11 FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO t12 VALUES (NEW.a, NEW.b, NEW.c);
|
||||
INSERT INTO t13 VALUES (NEW.a, NEW.b, NEW.c);
|
||||
END|
|
||||
CREATE TRIGGER t11_tr2 BEFORE UPDATE ON t11 FOR EACH ROW
|
||||
BEGIN
|
||||
UPDATE t12 SET c = '';
|
||||
UPDATE t13 SET c = '';
|
||||
END|
|
||||
CREATE EVENT e1 ON SCHEDULE EVERY 1 SECOND DISABLE DO
|
||||
BEGIN
|
||||
ALTER EVENT e1 DISABLE;
|
||||
CALL p1(10, '');
|
||||
END|
|
||||
CREATE EVENT e11 ON SCHEDULE EVERY 1 SECOND DISABLE DO
|
||||
BEGIN
|
||||
ALTER EVENT e11 DISABLE;
|
||||
CALL p11(10, '');
|
||||
END|
|
||||
CREATE FUNCTION f1 (x INT) RETURNS VARCHAR(64)
|
||||
BEGIN
|
||||
IF x > 5 THEN
|
||||
RETURN UUID();
|
||||
END IF;
|
||||
RETURN '';
|
||||
END|
|
||||
CREATE FUNCTION f2 (x INT) RETURNS VARCHAR(64)
|
||||
BEGIN
|
||||
RETURN f1(x);
|
||||
END|
|
||||
CREATE PROCEDURE p1 (IN x INT, IN y VARCHAR(64))
|
||||
BEGIN
|
||||
INSERT IGNORE INTO t1 VALUES (x,x,y);
|
||||
END|
|
||||
CREATE PROCEDURE p11 (IN x INT, IN y VARCHAR(64))
|
||||
BEGIN
|
||||
INSERT IGNORE INTO t11 VALUES (x,x,y);
|
||||
END|
|
||||
|
||||
CREATE TABLE t3 SELECT * FROM v1;
|
||||
INSERT INTO t1 VALUES (3,3,'');
|
||||
UPDATE t1 SET c='2' WHERE a = 1;
|
||||
INSERT INTO t1 VALUES(4,4,f1(4));
|
||||
INSERT INTO t1 VALUES (100,100,'');
|
||||
CALL p1(5, UUID());
|
||||
INSERT INTO t1 VALUES (101,101,'');
|
||||
INSERT INTO t1 VALUES(6,6,f1(6));
|
||||
INSERT INTO t1 VALUES (102,102,'');
|
||||
INSERT INTO t1 VALUES(7,7,f2(7));
|
||||
INSERT INTO t1 VALUES (103,103,'');
|
||||
|
||||
CREATE TABLE t13 SELECT * FROM v11;
|
||||
INSERT INTO t11 VALUES (3,3,'');
|
||||
UPDATE t11 SET c='2' WHERE a = 1;
|
||||
INSERT INTO t11 VALUES(4,4,f1(4));
|
||||
INSERT INTO t11 VALUES (100,100,'');
|
||||
CALL p11(5, UUID());
|
||||
INSERT INTO t11 VALUES (101,101,'');
|
||||
INSERT INTO t11 VALUES(6,6,f1(6));
|
||||
INSERT INTO t11 VALUES (102,102,'');
|
||||
INSERT INTO t11 VALUES(7,7,f2(7));
|
||||
INSERT INTO t11 VALUES (103,103,'');
|
||||
|
||||
SET GLOBAL EVENT_SCHEDULER = on;
|
||||
ALTER EVENT e1 ENABLE;
|
||||
ALTER EVENT e11 ENABLE;
|
||||
SET GLOBAL EVENT_SCHEDULER = off;
|
||||
|
||||
SHOW TABLES LIKE 't%';
|
||||
Tables_in_test (t%)
|
||||
t1
|
||||
t11
|
||||
t12
|
||||
t13
|
||||
t2
|
||||
t3
|
||||
SELECT table_name FROM information_schema.views WHERE table_schema='test';
|
||||
table_name
|
||||
v1
|
||||
v11
|
||||
SELECT trigger_name, event_manipulation, event_object_table FROM information_schema.triggers WHERE trigger_schema='test';
|
||||
trigger_name event_manipulation event_object_table
|
||||
t11_tr1 INSERT t11
|
||||
t11_tr2 UPDATE t11
|
||||
t1_tr1 INSERT t1
|
||||
t1_tr2 UPDATE t1
|
||||
SELECT routine_type, routine_name FROM information_schema.routines WHERE routine_schema='test';
|
||||
routine_type routine_name
|
||||
FUNCTION f1
|
||||
FUNCTION f2
|
||||
PROCEDURE p1
|
||||
PROCEDURE p11
|
||||
SELECT event_name, status FROM information_schema.events WHERE event_schema='test';
|
||||
event_name status
|
||||
e1 DISABLED
|
||||
e11 DISABLED
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
12
|
||||
SELECT a,b FROM t1 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
12
|
||||
SELECT a,b FROM t2 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
SELECT COUNT(*) FROM t3;
|
||||
COUNT(*)
|
||||
12
|
||||
SELECT a,b FROM t3 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
SELECT a,b FROM v1 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
SELECT COUNT(*) FROM t11;
|
||||
COUNT(*)
|
||||
12
|
||||
SELECT a,b FROM t11 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
SELECT COUNT(*) FROM t12;
|
||||
COUNT(*)
|
||||
12
|
||||
SELECT a,b FROM t12 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
SELECT COUNT(*) FROM t13;
|
||||
COUNT(*)
|
||||
12
|
||||
SELECT a,b FROM t13 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
SELECT a,b FROM v11 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
|
||||
SHOW TABLES LIKE 't%';
|
||||
Tables_in_test (t%)
|
||||
t1
|
||||
t11
|
||||
t12
|
||||
t13
|
||||
t2
|
||||
t3
|
||||
SELECT table_name FROM information_schema.views WHERE table_schema='test';
|
||||
table_name
|
||||
v1
|
||||
v11
|
||||
SELECT trigger_name, event_manipulation, event_object_table FROM information_schema.triggers WHERE trigger_schema='test';
|
||||
trigger_name event_manipulation event_object_table
|
||||
t11_tr1 INSERT t11
|
||||
t11_tr2 UPDATE t11
|
||||
t1_tr1 INSERT t1
|
||||
t1_tr2 UPDATE t1
|
||||
SELECT routine_type, routine_name FROM information_schema.routines WHERE routine_schema='test';
|
||||
routine_type routine_name
|
||||
FUNCTION f1
|
||||
FUNCTION f2
|
||||
PROCEDURE p1
|
||||
PROCEDURE p11
|
||||
SELECT event_name, status FROM information_schema.events WHERE event_schema='test';
|
||||
event_name status
|
||||
e1 SLAVESIDE_DISABLED
|
||||
e11 SLAVESIDE_DISABLED
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
12
|
||||
SELECT a,b FROM t1 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
12
|
||||
SELECT a,b FROM t2 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
SELECT COUNT(*) FROM t3;
|
||||
COUNT(*)
|
||||
12
|
||||
SELECT a,b FROM t3 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
SELECT a,b FROM v1 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
SELECT COUNT(*) FROM t11;
|
||||
COUNT(*)
|
||||
12
|
||||
SELECT a,b FROM t11 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
SELECT COUNT(*) FROM t12;
|
||||
COUNT(*)
|
||||
12
|
||||
SELECT a,b FROM t12 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
SELECT COUNT(*) FROM t13;
|
||||
COUNT(*)
|
||||
12
|
||||
SELECT a,b FROM t13 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
SELECT a,b FROM v11 ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
10 10
|
||||
100 100
|
||||
101 101
|
||||
102 102
|
||||
103 103
|
||||
|
||||
UPDATE t1 SET c='';
|
||||
UPDATE t2 SET c='';
|
||||
UPDATE t3 SET c='';
|
||||
UPDATE t11 SET c='';
|
||||
UPDATE t12 SET c='';
|
||||
UPDATE t13 SET c='';
|
||||
ALTER TABLE t3 ORDER BY a;
|
||||
ALTER TABLE t13 ORDER BY a;
|
||||
|
||||
|
||||
|
||||
DROP VIEW IF EXISTS v1,v11;
|
||||
DROP TABLE IF EXISTS t1,t2,t3,t11,t12,t13;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP PROCEDURE IF EXISTS p11;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
DROP FUNCTION IF EXISTS f2;
|
||||
DROP EVENT IF EXISTS e1;
|
||||
DROP EVENT IF EXISTS e11;
|
||||
include/rpl_end.inc
|
||||
167
build/lib/mysql/mysql-test/suite/rpl/r/rpl_killed_ddl.result
Normal file
167
build/lib/mysql/mysql-test/suite/rpl/r/rpl_killed_ddl.result
Normal file
@@ -0,0 +1,167 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
DROP DATABASE IF EXISTS d1;
|
||||
DROP DATABASE IF EXISTS d2;
|
||||
DROP DATABASE IF EXISTS d3;
|
||||
DROP DATABASE IF EXISTS d4;
|
||||
DROP EVENT IF EXISTS e1;
|
||||
DROP EVENT IF EXISTS e2;
|
||||
DROP EVENT IF EXISTS e3;
|
||||
DROP EVENT IF EXISTS e4;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
DROP FUNCTION IF EXISTS f2;
|
||||
DROP FUNCTION IF EXISTS f3;
|
||||
DROP FUNCTION IF EXISTS f4;
|
||||
DROP SERVER IF EXISTS s1;
|
||||
DROP SERVER IF EXISTS s2;
|
||||
DROP SERVER IF EXISTS s3;
|
||||
DROP SERVER IF EXISTS s4;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
DROP TABLE IF EXISTS t3;
|
||||
DROP TABLE IF EXISTS t4;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP PROCEDURE IF EXISTS p2;
|
||||
DROP PROCEDURE IF EXISTS p3;
|
||||
DROP PROCEDURE IF EXISTS p4;
|
||||
DROP TRIGGER IF EXISTS tr1;
|
||||
DROP TRIGGER IF EXISTS tr2;
|
||||
DROP TRIGGER IF EXISTS tr3;
|
||||
DROP TRIGGER IF EXISTS tr4;
|
||||
CREATE DATABASE d1;
|
||||
CREATE EVENT e1
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
|
||||
DO INSERT INTO test.t1 VALUES (1);
|
||||
CREATE FUNCTION f1 () RETURNS INT DETERMINISTIC
|
||||
RETURN 1;
|
||||
CREATE PROCEDURE p1 (OUT rows INT)
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO rows FROM t1;
|
||||
END;
|
||||
//
|
||||
CREATE SERVER s1
|
||||
FOREIGN DATA WRAPPER mysql
|
||||
OPTIONS (USER 'user1', HOST '192.168.1.106', DATABASE 'test');
|
||||
CREATE TABLE t1 (a int);
|
||||
CREATE TABLE t3 (a int);
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1
|
||||
FOR EACH ROW BEGIN
|
||||
DELETE FROM t4 WHERE a=NEW.a;
|
||||
END;
|
||||
//
|
||||
CREATE INDEX i1 ON t1 (a);
|
||||
CREATE VIEW v1 AS SELECT a FROM t1 WHERE a < 100;
|
||||
[on master]
|
||||
[on master1]
|
||||
CREATE DATABASE d2;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
DROP DATABASE d1;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
DROP DATABASE IF EXISTS d2;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
CREATE EVENT e2
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
|
||||
DO INSERT INTO test.t1 VALUES (2);
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
DROP EVENT e1;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
DROP EVENT IF EXISTS e2;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
CREATE FUNCTION f2 () RETURNS INT DETERMINISTIC
|
||||
RETURN 1;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
ALTER FUNCTION f1 SQL SECURITY INVOKER;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
DROP FUNCTION f1;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
CREATE PROCEDURE p2 (OUT rows INT)
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO rows FROM t2;
|
||||
END;
|
||||
//
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
ALTER PROCEDURE p1 SQL SECURITY INVOKER COMMENT 'return rows of table t1';
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
DROP PROCEDURE p1;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
CREATE TABLE t2 (b int);
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
ALTER TABLE t1 ADD (d int);
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
RENAME TABLE t3 TO t4;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
CREATE INDEX i2 on t1 (a);
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
DROP INDEX i1 on t1;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
CREATE TABLE IF NOT EXISTS t4 (a int);
|
||||
CREATE TRIGGER tr2 BEFORE INSERT ON t4
|
||||
FOR EACH ROW BEGIN
|
||||
DELETE FROM t1 WHERE a=NEW.a;
|
||||
END;
|
||||
//
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
DROP TRIGGER tr1;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
DROP TRIGGER IF EXISTS tr2;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
CREATE VIEW v2 AS SELECT a FROM t1 WHERE a > 100;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
DROP VIEW v1;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
DROP VIEW IF EXISTS v2;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
DROP TABLE t1;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
DROP TABLE IF EXISTS t2;
|
||||
source include/kill_query.inc;
|
||||
include/rpl_diff.inc
|
||||
DROP DATABASE IF EXISTS d1;
|
||||
DROP DATABASE IF EXISTS d2;
|
||||
DROP DATABASE IF EXISTS d3;
|
||||
DROP DATABASE IF EXISTS d4;
|
||||
DROP EVENT IF EXISTS e1;
|
||||
DROP EVENT IF EXISTS e2;
|
||||
DROP EVENT IF EXISTS e3;
|
||||
DROP EVENT IF EXISTS e4;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
DROP FUNCTION IF EXISTS f2;
|
||||
DROP FUNCTION IF EXISTS f3;
|
||||
DROP FUNCTION IF EXISTS f4;
|
||||
DROP SERVER IF EXISTS s1;
|
||||
DROP SERVER IF EXISTS s2;
|
||||
DROP SERVER IF EXISTS s3;
|
||||
DROP SERVER IF EXISTS s4;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
DROP TABLE IF EXISTS t3;
|
||||
DROP TABLE IF EXISTS t4;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP PROCEDURE IF EXISTS p2;
|
||||
DROP PROCEDURE IF EXISTS p3;
|
||||
DROP PROCEDURE IF EXISTS p4;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,69 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b INT,
|
||||
UNIQUE(b));
|
||||
INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10;
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
1 10
|
||||
2 2
|
||||
call mtr.add_suppression("Slave SQL.*suffer.*http:..bugs.mysql.com.bug.php.id=24432");
|
||||
include/wait_for_slave_sql_error.inc [errno=1105]
|
||||
Last_SQL_Error = 'Error 'master may suffer from http://bugs.mysql.com/bug.php?id=24432 so slave stops; check error log on slave for more info' on query. Default database: 'test'. Query: 'INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10''
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
stop slave;
|
||||
reset slave;
|
||||
reset master;
|
||||
drop table t1;
|
||||
start slave;
|
||||
CREATE TABLE t1 (
|
||||
id bigint(20) unsigned NOT NULL auto_increment,
|
||||
field_1 int(10) unsigned NOT NULL,
|
||||
field_2 varchar(255) NOT NULL,
|
||||
field_3 varchar(255) NOT NULL,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY field_1 (field_1, field_2)
|
||||
);
|
||||
CREATE TABLE t2 (
|
||||
field_a int(10) unsigned NOT NULL,
|
||||
field_b varchar(255) NOT NULL,
|
||||
field_c varchar(255) NOT NULL
|
||||
);
|
||||
INSERT INTO t2 (field_a, field_b, field_c) VALUES (1, 'a', '1a');
|
||||
INSERT INTO t2 (field_a, field_b, field_c) VALUES (2, 'b', '2b');
|
||||
INSERT INTO t2 (field_a, field_b, field_c) VALUES (3, 'c', '3c');
|
||||
INSERT INTO t2 (field_a, field_b, field_c) VALUES (4, 'd', '4d');
|
||||
INSERT INTO t2 (field_a, field_b, field_c) VALUES (5, 'e', '5e');
|
||||
INSERT INTO t1 (field_1, field_2, field_3)
|
||||
SELECT t2.field_a, t2.field_b, t2.field_c
|
||||
FROM t2
|
||||
ON DUPLICATE KEY UPDATE
|
||||
t1.field_3 = t2.field_c;
|
||||
INSERT INTO t2 (field_a, field_b, field_c) VALUES (6, 'f', '6f');
|
||||
INSERT INTO t1 (field_1, field_2, field_3)
|
||||
SELECT t2.field_a, t2.field_b, t2.field_c
|
||||
FROM t2
|
||||
ON DUPLICATE KEY UPDATE
|
||||
t1.field_3 = t2.field_c;
|
||||
SELECT * FROM t1;
|
||||
id field_1 field_2 field_3
|
||||
1 1 a 1a
|
||||
2 2 b 2b
|
||||
3 3 c 3c
|
||||
4 4 d 4d
|
||||
5 5 e 5e
|
||||
6 6 f 6f
|
||||
include/wait_for_slave_sql_error.inc [errno=1105]
|
||||
Last_SQL_Error = 'Error 'master may suffer from http://bugs.mysql.com/bug.php?id=24432 so slave stops; check error log on slave for more info' on query. Default database: 'test'. Query: 'INSERT INTO t1 (field_1, field_2, field_3)
|
||||
SELECT t2.field_a, t2.field_b, t2.field_c
|
||||
FROM t2
|
||||
ON DUPLICATE KEY UPDATE
|
||||
t1.field_3 = t2.field_c''
|
||||
SELECT * FROM t1;
|
||||
id field_1 field_2 field_3
|
||||
drop table t1, t2;
|
||||
drop table t1, t2;
|
||||
include/stop_slave_io.inc
|
||||
RESET SLAVE;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,130 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
drop database if exists mysqltest;
|
||||
drop database if exists mysqltest2;
|
||||
drop database if exists mysqltest3;
|
||||
drop database if exists mysqltest;
|
||||
drop database if exists mysqltest2;
|
||||
drop database if exists mysqltest3;
|
||||
create database mysqltest2;
|
||||
create database mysqltest;
|
||||
create database mysqltest2;
|
||||
create table mysqltest2.foo (n int)ENGINE=MyISAM;
|
||||
insert into mysqltest2.foo values(4);
|
||||
create table mysqltest2.foo (n int)ENGINE=MyISAM;
|
||||
insert into mysqltest2.foo values(5);
|
||||
create table mysqltest.bar (m int)ENGINE=MyISAM;
|
||||
insert into mysqltest.bar values(15);
|
||||
select mysqltest2.foo.n,mysqltest.bar.m from mysqltest2.foo,mysqltest.bar;
|
||||
n m
|
||||
4 15
|
||||
drop database mysqltest;
|
||||
drop database if exists mysqltest2;
|
||||
drop database mysqltest;
|
||||
ERROR HY000: Can't drop database 'mysqltest'; database doesn't exist
|
||||
drop database mysqltest2;
|
||||
set sql_log_bin = 0;
|
||||
create database mysqltest2;
|
||||
create database mysqltest;
|
||||
show databases like 'mysql%';
|
||||
Database (mysql%)
|
||||
mysql
|
||||
mysqltest
|
||||
mysqltest2
|
||||
create table mysqltest2.t1(n int, s char(20))ENGINE=MyISAM;
|
||||
create table mysqltest2.t2(n int, s text)ENGINE=MyISAM;
|
||||
insert into mysqltest2.t1 values (1, 'one'), (2, 'two'), (3, 'three');
|
||||
insert into mysqltest2.t2 values (11, 'eleven'), (12, 'twelve'), (13, 'thirteen');
|
||||
create table mysqltest.t1(n int, s char(20))ENGINE=MyISAM;
|
||||
create table mysqltest.t2(n int, s text)ENGINE=MyISAM;
|
||||
insert into mysqltest.t1 values (1, 'one test'), (2, 'two test'), (3, 'three test');
|
||||
insert into mysqltest.t2 values (11, 'eleven test'), (12, 'twelve test'),
|
||||
(13, 'thirteen test');
|
||||
set sql_log_bin = 1;
|
||||
show databases like 'mysql%';
|
||||
Database (mysql%)
|
||||
mysql
|
||||
create database mysqltest2;
|
||||
create table mysqltest2.t1(n int, s char(20))ENGINE=MyISAM;
|
||||
insert into mysqltest2.t1 values (1, 'original foo.t1');
|
||||
create table mysqltest2.t3(n int, s char(20))ENGINE=MyISAM;
|
||||
insert into mysqltest2.t3 values (1, 'original foo.t3');
|
||||
create database mysqltest3;
|
||||
create table mysqltest3.t1(n int, s char(20))ENGINE=MyISAM;
|
||||
insert into mysqltest3.t1 values (1, 'original foo2.t1');
|
||||
create database mysqltest;
|
||||
create table mysqltest.t1(n int, s char(20))ENGINE=MyISAM;
|
||||
insert into mysqltest.t1 values (1, 'original bar.t1');
|
||||
create table mysqltest.t3(n int, s char(20))ENGINE=MyISAM;
|
||||
insert into mysqltest.t3 values (1, 'original bar.t3');
|
||||
load data from master;
|
||||
show databases like 'mysql%';
|
||||
Database (mysql%)
|
||||
mysql
|
||||
mysqltest
|
||||
mysqltest2
|
||||
mysqltest3
|
||||
use mysqltest2;
|
||||
show tables;
|
||||
Tables_in_mysqltest2
|
||||
t1
|
||||
t3
|
||||
select * from t1;
|
||||
n s
|
||||
1 original foo.t1
|
||||
use mysqltest3;
|
||||
show tables;
|
||||
Tables_in_mysqltest3
|
||||
t1
|
||||
select * from t1;
|
||||
n s
|
||||
1 original foo2.t1
|
||||
use mysqltest;
|
||||
show tables;
|
||||
Tables_in_mysqltest
|
||||
t1
|
||||
t2
|
||||
t3
|
||||
select * from mysqltest.t1;
|
||||
n s
|
||||
1 one test
|
||||
2 two test
|
||||
3 three test
|
||||
select * from mysqltest.t2;
|
||||
n s
|
||||
11 eleven test
|
||||
12 twelve test
|
||||
13 thirteen test
|
||||
select * from mysqltest.t3;
|
||||
n s
|
||||
1 original bar.t3
|
||||
insert into mysqltest.t1 values (4, 'four test');
|
||||
select * from mysqltest.t1;
|
||||
n s
|
||||
1 one test
|
||||
2 two test
|
||||
3 three test
|
||||
4 four test
|
||||
stop slave;
|
||||
reset slave;
|
||||
load data from master;
|
||||
start slave;
|
||||
insert into mysqltest.t1 values (5, 'five bar');
|
||||
select * from mysqltest.t1;
|
||||
n s
|
||||
1 one test
|
||||
2 two test
|
||||
3 three test
|
||||
4 four test
|
||||
5 five bar
|
||||
load table mysqltest.t1 from master;
|
||||
ERROR 42S01: Table 't1' already exists
|
||||
drop table mysqltest.t1;
|
||||
load table mysqltest.t1 from master;
|
||||
load table bar.t1 from master;
|
||||
ERROR HY000: Error from master: 'Table 'bar.t1' doesn't exist'
|
||||
drop database mysqltest;
|
||||
drop database mysqltest2;
|
||||
drop database mysqltest2;
|
||||
drop database mysqltest3;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,48 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
"******************** Test Requirment 1 *************"
|
||||
SET SQL_LOG_BIN=0,timestamp=200006;
|
||||
CREATE TABLE t1(t TIMESTAMP NOT NULL,a CHAR(1))ENGINE=MyISAM;
|
||||
INSERT INTO t1 ( a) VALUE ('F');
|
||||
select unix_timestamp(t) from t1;
|
||||
unix_timestamp(t)
|
||||
200006
|
||||
load table t1 from master;
|
||||
select unix_timestamp(t) from t1;
|
||||
unix_timestamp(t)
|
||||
200006
|
||||
set SQL_LOG_BIN=1,timestamp=default;
|
||||
drop table t1;
|
||||
set SQL_LOG_BIN=0;
|
||||
"******************** Test Requirment 2 *************"
|
||||
CREATE TABLE t1 (a INT NOT NULL) ENGINE=MyISAM MAX_ROWS=4000 CHECKSUM=1;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
load table t1 from master;
|
||||
check table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
drop table t1;
|
||||
drop table t1;
|
||||
set SQL_LOG_BIN=0;
|
||||
create table t1 (word char(20) not null, index(word))ENGINE=MyISAM;
|
||||
load data infile '../../std_data/words.dat' into table t1;
|
||||
create table t2 (word char(20) not null)ENGINE=MyISAM;
|
||||
load data infile '../../std_data/words.dat' into table t2;
|
||||
create table t3 (word char(20) not null primary key)ENGINE=MyISAM;
|
||||
load table t1 from master;
|
||||
load table t2 from master;
|
||||
load table t3 from master;
|
||||
check table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
select count(*) from t2;
|
||||
count(*)
|
||||
70
|
||||
select count(*) from t3;
|
||||
count(*)
|
||||
0
|
||||
set SQL_LOG_BIN=1;
|
||||
drop table if exists t1,t2,t3;
|
||||
create table t1(n int);
|
||||
drop table t1;
|
||||
include/rpl_end.inc
|
||||
119
build/lib/mysql/mysql-test/suite/rpl/r/rpl_loaddata.result
Normal file
119
build/lib/mysql/mysql-test/suite/rpl/r/rpl_loaddata.result
Normal file
@@ -0,0 +1,119 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
0
|
||||
create table t1(a int not null auto_increment, b int, primary key(a) );
|
||||
load data infile '../../std_data/rpl_loaddata.dat' into table t1;
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
1
|
||||
create temporary table t2 (day date,id int(9),category enum('a','b','c'),name varchar(60));
|
||||
load data infile '../../std_data/rpl_loaddata2.dat' into table t2 fields terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by '\n##\n' starting by '>' ignore 1 lines;
|
||||
create table t3 (day date,id int(9),category enum('a','b','c'),name varchar(60));
|
||||
insert into t3 select * from t2;
|
||||
select * from t1;
|
||||
a b
|
||||
1 10
|
||||
2 15
|
||||
select * from t3;
|
||||
day id category name
|
||||
2003-02-22 2461 b a a a @ % ' " a
|
||||
2003-03-22 2161 c asdf
|
||||
2003-03-22 2416 a bbbbb
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop table t3;
|
||||
create table t1(a int, b int, unique(b));
|
||||
insert into t1 values(1,10);
|
||||
load data infile '../../std_data/rpl_loaddata.dat' into table t1;
|
||||
call mtr.add_suppression("Slave SQL.*Error .Duplicate entry .10. for key .b.. on query.* Error_code: 1062");
|
||||
call mtr.add_suppression("Slave SQL.*Query caused different errors on master and slave.*Error on master:.*error code=1062.*Error on slave:.*Error_code: 0");
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1062]
|
||||
include/check_slave_no_error.inc
|
||||
set sql_log_bin=0;
|
||||
delete from t1;
|
||||
set sql_log_bin=1;
|
||||
load data infile '../../std_data/rpl_loaddata.dat' into table t1;
|
||||
include/wait_for_slave_sql_error.inc [errno=1062]
|
||||
include/stop_slave_io.inc
|
||||
change master to master_user='test';
|
||||
change master to master_user='root';
|
||||
include/check_slave_no_error.inc
|
||||
set global sql_slave_skip_counter=1;
|
||||
start slave;
|
||||
set sql_log_bin=0;
|
||||
delete from t1;
|
||||
set sql_log_bin=1;
|
||||
load data infile '../../std_data/rpl_loaddata.dat' into table t1;
|
||||
include/wait_for_slave_sql_error.inc [errno=1062]
|
||||
stop slave;
|
||||
reset slave;
|
||||
include/check_slave_no_error.inc
|
||||
reset master;
|
||||
create table t2 (day date,id int(9),category enum('a','b','c'),name varchar(60),
|
||||
unique(day)) engine=MyISAM;
|
||||
load data infile '../../std_data/rpl_loaddata2.dat' into table t2 fields
|
||||
terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
|
||||
'\n##\n' starting by '>' ignore 1 lines;
|
||||
ERROR 23000: Duplicate entry '2003-03-22' for key 'day'
|
||||
select * from t2;
|
||||
day id category name
|
||||
2003-02-22 2461 b a a a @ % ' " a
|
||||
2003-03-22 2161 c asdf
|
||||
start slave;
|
||||
select * from t2;
|
||||
day id category name
|
||||
2003-02-22 2461 b a a a @ % ' " a
|
||||
2003-03-22 2161 c asdf
|
||||
alter table t2 drop key day;
|
||||
delete from t2;
|
||||
load data infile '../../std_data/rpl_loaddata2.dat' into table t2 fields
|
||||
terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
|
||||
'\n##\n' starting by '>' ignore 1 lines;
|
||||
ERROR 23000: Duplicate entry '2003-03-22' for key 'day'
|
||||
include/wait_for_slave_sql_to_stop.inc
|
||||
drop table t1, t2;
|
||||
include/stop_slave_io.inc
|
||||
drop table t1, t2;
|
||||
CREATE TABLE t1 (word CHAR(20) NOT NULL PRIMARY KEY) ENGINE=INNODB;
|
||||
LOAD DATA INFILE "../../std_data/words.dat" INTO TABLE t1;
|
||||
ERROR 23000: Duplicate entry 'Aarhus' for key 'PRIMARY'
|
||||
DROP TABLE IF EXISTS t1;
|
||||
include/rpl_reset.inc
|
||||
drop database if exists b48297_db1;
|
||||
drop database if exists b42897_db2;
|
||||
create database b48297_db1;
|
||||
create database b42897_db2;
|
||||
use b48297_db1;
|
||||
CREATE TABLE t1 (c1 VARCHAR(256)) engine=MyISAM;;
|
||||
use b42897_db2;
|
||||
### assertion: works with cross-referenced database
|
||||
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/std_data/loaddata5.dat' INTO TABLE b48297_db1.t1;
|
||||
use b48297_db1;
|
||||
### assertion: works with fully qualified name on current database
|
||||
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/std_data/loaddata5.dat' INTO TABLE b48297_db1.t1;
|
||||
### assertion: works without fully qualified name on current database
|
||||
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/std_data/loaddata5.dat' INTO TABLE t1;
|
||||
### create connection without default database
|
||||
### connect (conn2,localhost,root,,*NO-ONE*);
|
||||
### assertion: works without stating the default database
|
||||
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/std_data/loaddata5.dat' INTO TABLE b48297_db1.t1;
|
||||
### disconnect and switch back to master connection
|
||||
use b48297_db1;
|
||||
include/diff_tables.inc [master:b48297_db1.t1, slave:b48297_db1.t1]
|
||||
DROP DATABASE b48297_db1;
|
||||
DROP DATABASE b42897_db2;
|
||||
include/rpl_reset.inc
|
||||
use test;
|
||||
CREATE TABLE t1 (`key` TEXT, `text` TEXT);
|
||||
LOAD DATA INFILE '../../std_data/loaddata2.dat' REPLACE INTO TABLE `t1` FIELDS TERMINATED BY ',';
|
||||
SELECT * FROM t1;
|
||||
key text
|
||||
Field A 'Field B'
|
||||
Field 1 'Field 2'
|
||||
Field 3 'Field 4'
|
||||
'Field 5' 'Field 6'
|
||||
Field 6 'Field 7'
|
||||
DROP TABLE t1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,75 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
create table t1 (a varchar(10) character set utf8);
|
||||
load data infile '../../std_data/loaddata6.dat' into table t1;
|
||||
set @@character_set_database=koi8r;
|
||||
load data infile '../../std_data/loaddata6.dat' into table t1;
|
||||
set @@character_set_database=DEFAULT;
|
||||
load data infile '../../std_data/loaddata6.dat' into table t1;
|
||||
load data infile '../../std_data/loaddata6.dat' into table t1;
|
||||
load data infile '../../std_data/loaddata6.dat' into table t1;
|
||||
set @@character_set_database=koi8r;
|
||||
load data infile '../../std_data/loaddata6.dat' into table t1;
|
||||
set @@character_set_database=DEFAULT;
|
||||
load data infile '../../std_data/loaddata6.dat' into table t1 character set koi8r;
|
||||
select hex(a) from t1;
|
||||
hex(a)
|
||||
C3BF
|
||||
D0AA
|
||||
C3BF
|
||||
C3BF
|
||||
C3BF
|
||||
D0AA
|
||||
D0AA
|
||||
select hex(a) from t1;
|
||||
hex(a)
|
||||
C3BF
|
||||
D0AA
|
||||
C3BF
|
||||
C3BF
|
||||
C3BF
|
||||
D0AA
|
||||
D0AA
|
||||
drop table t1;
|
||||
-------------test bug#45516------------------
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
||||
CREATE DATABASE mysqltest CHARSET UTF8;
|
||||
USE mysqltest;
|
||||
CREATE TABLE t (cl varchar(100)) CHARSET UTF8;
|
||||
LOAD DATA LOCAL INFILE './std_data/loaddata_utf8.dat' INTO TABLE t
|
||||
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
|
||||
----------content on master----------
|
||||
SELECT hex(cl) FROM t;
|
||||
hex(cl)
|
||||
E4B880E4BA8CE4B889
|
||||
E59B9BE4BA94E585AD
|
||||
E4B883E585ABE4B99D
|
||||
----------content on slave----------
|
||||
USE mysqltest;
|
||||
SELECT hex(cl) FROM t;
|
||||
hex(cl)
|
||||
E4B880E4BA8CE4B889
|
||||
E59B9BE4BA94E585AD
|
||||
E4B883E585ABE4B99D
|
||||
DROP DATABASE mysqltest;
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
||||
CREATE DATABASE mysqltest CHARSET UTF8;
|
||||
USE mysqltest;
|
||||
CREATE TABLE t (cl varchar(100)) CHARSET UTF8;
|
||||
LOAD DATA INFILE '../../std_data/loaddata_utf8.dat' INTO TABLE t
|
||||
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
|
||||
----------content on master----------
|
||||
SELECT hex(cl) FROM t;
|
||||
hex(cl)
|
||||
E4B880E4BA8CE4B889
|
||||
E59B9BE4BA94E585AD
|
||||
E4B883E585ABE4B99D
|
||||
----------content on slave----------
|
||||
USE mysqltest;
|
||||
SELECT hex(cl) FROM t;
|
||||
hex(cl)
|
||||
E4B880E4BA8CE4B889
|
||||
E59B9BE4BA94E585AD
|
||||
E4B883E585ABE4B99D
|
||||
DROP DATABASE mysqltest;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,130 @@
|
||||
CREATE TABLE t1 (c1 char(50));
|
||||
LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1;
|
||||
LOAD DATA CONCURRENT INFILE '../../std_data/words.dat' INTO TABLE t1;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (c1 char(50))
|
||||
master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
|
||||
master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`c1`) ;file_id=#
|
||||
master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
|
||||
master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA CONCURRENT INFILE '../../std_data/words.dat' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`c1`) ;file_id=#
|
||||
DROP TABLE t1;
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
0
|
||||
create table t1(a int not null auto_increment, b int, primary key(a) );
|
||||
load data CONCURRENT infile '../../std_data/rpl_loaddata.dat' into table t1;
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
1
|
||||
create temporary table t2 (day date,id int(9),category enum('a','b','c'),name varchar(60));
|
||||
load data CONCURRENT infile '../../std_data/rpl_loaddata2.dat' into table t2 fields terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by '\n##\n' starting by '>' ignore 1 lines;
|
||||
create table t3 (day date,id int(9),category enum('a','b','c'),name varchar(60));
|
||||
insert into t3 select * from t2;
|
||||
select * from t1;
|
||||
a b
|
||||
1 10
|
||||
2 15
|
||||
select * from t3;
|
||||
day id category name
|
||||
2003-02-22 2461 b a a a @ % ' " a
|
||||
2003-03-22 2161 c asdf
|
||||
2003-03-22 2416 a bbbbb
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop table t3;
|
||||
create table t1(a int, b int, unique(b));
|
||||
insert into t1 values(1,10);
|
||||
load data CONCURRENT infile '../../std_data/rpl_loaddata.dat' into table t1;
|
||||
call mtr.add_suppression("Slave SQL.*Error .Duplicate entry .10. for key .b.. on query.* Error_code: 1062");
|
||||
call mtr.add_suppression("Slave SQL.*Query caused different errors on master and slave.*Error on master:.*error code=1062.*Error on slave:.*Error_code: 0");
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1062]
|
||||
include/check_slave_no_error.inc
|
||||
set sql_log_bin=0;
|
||||
delete from t1;
|
||||
set sql_log_bin=1;
|
||||
load data CONCURRENT infile '../../std_data/rpl_loaddata.dat' into table t1;
|
||||
include/wait_for_slave_sql_error.inc [errno=1062]
|
||||
include/stop_slave_io.inc
|
||||
change master to master_user='test';
|
||||
change master to master_user='root';
|
||||
include/check_slave_no_error.inc
|
||||
set global sql_slave_skip_counter=1;
|
||||
start slave;
|
||||
set sql_log_bin=0;
|
||||
delete from t1;
|
||||
set sql_log_bin=1;
|
||||
load data CONCURRENT infile '../../std_data/rpl_loaddata.dat' into table t1;
|
||||
include/wait_for_slave_sql_error.inc [errno=1062]
|
||||
stop slave;
|
||||
reset slave;
|
||||
include/check_slave_no_error.inc
|
||||
reset master;
|
||||
create table t2 (day date,id int(9),category enum('a','b','c'),name varchar(60),
|
||||
unique(day)) engine=MyISAM;
|
||||
load data CONCURRENT infile '../../std_data/rpl_loaddata2.dat' into table t2 fields
|
||||
terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
|
||||
'\n##\n' starting by '>' ignore 1 lines;
|
||||
ERROR 23000: Duplicate entry '2003-03-22' for key 'day'
|
||||
select * from t2;
|
||||
day id category name
|
||||
2003-02-22 2461 b a a a @ % ' " a
|
||||
2003-03-22 2161 c asdf
|
||||
start slave;
|
||||
select * from t2;
|
||||
day id category name
|
||||
2003-02-22 2461 b a a a @ % ' " a
|
||||
2003-03-22 2161 c asdf
|
||||
alter table t2 drop key day;
|
||||
delete from t2;
|
||||
load data CONCURRENT infile '../../std_data/rpl_loaddata2.dat' into table t2 fields
|
||||
terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
|
||||
'\n##\n' starting by '>' ignore 1 lines;
|
||||
ERROR 23000: Duplicate entry '2003-03-22' for key 'day'
|
||||
include/wait_for_slave_sql_to_stop.inc
|
||||
drop table t1, t2;
|
||||
include/stop_slave_io.inc
|
||||
drop table t1, t2;
|
||||
CREATE TABLE t1 (word CHAR(20) NOT NULL PRIMARY KEY) ENGINE=INNODB;
|
||||
LOAD DATA CONCURRENT INFILE "../../std_data/words.dat" INTO TABLE t1;
|
||||
ERROR 23000: Duplicate entry 'Aarhus' for key 'PRIMARY'
|
||||
DROP TABLE IF EXISTS t1;
|
||||
include/rpl_reset.inc
|
||||
drop database if exists b48297_db1;
|
||||
drop database if exists b42897_db2;
|
||||
create database b48297_db1;
|
||||
create database b42897_db2;
|
||||
use b48297_db1;
|
||||
CREATE TABLE t1 (c1 VARCHAR(256)) engine=MyISAM;;
|
||||
use b42897_db2;
|
||||
### assertion: works with cross-referenced database
|
||||
LOAD DATA CONCURRENT LOCAL INFILE 'MYSQLTEST_VARDIR/std_data/loaddata5.dat' INTO TABLE b48297_db1.t1;
|
||||
use b48297_db1;
|
||||
### assertion: works with fully qualified name on current database
|
||||
LOAD DATA CONCURRENT LOCAL INFILE 'MYSQLTEST_VARDIR/std_data/loaddata5.dat' INTO TABLE b48297_db1.t1;
|
||||
### assertion: works without fully qualified name on current database
|
||||
LOAD DATA CONCURRENT LOCAL INFILE 'MYSQLTEST_VARDIR/std_data/loaddata5.dat' INTO TABLE t1;
|
||||
### create connection without default database
|
||||
### connect (conn2,localhost,root,,*NO-ONE*);
|
||||
### assertion: works without stating the default database
|
||||
LOAD DATA CONCURRENT LOCAL INFILE 'MYSQLTEST_VARDIR/std_data/loaddata5.dat' INTO TABLE b48297_db1.t1;
|
||||
### disconnect and switch back to master connection
|
||||
use b48297_db1;
|
||||
include/diff_tables.inc [master:b48297_db1.t1, slave:b48297_db1.t1]
|
||||
DROP DATABASE b48297_db1;
|
||||
DROP DATABASE b42897_db2;
|
||||
include/rpl_reset.inc
|
||||
use test;
|
||||
CREATE TABLE t1 (`key` TEXT, `text` TEXT);
|
||||
LOAD DATA INFILE '../../std_data/loaddata2.dat' REPLACE INTO TABLE `t1` FIELDS TERMINATED BY ',';
|
||||
SELECT * FROM t1;
|
||||
key text
|
||||
Field A 'Field B'
|
||||
Field 1 'Field 2'
|
||||
Field 3 'Field 4'
|
||||
'Field 5' 'Field 6'
|
||||
Field 6 'Field 7'
|
||||
DROP TABLE t1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,10 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE t1 (a INT, b INT);
|
||||
INSERT INTO t1 VALUES (1,10);
|
||||
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE t1;
|
||||
call mtr.add_suppression("Slave SQL.*Fatal error: Not enough memory, Error_code: 1593");
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1593]
|
||||
Last_SQL_Error = 'Fatal error: Not enough memory'
|
||||
DROP TABLE t1;
|
||||
include/rpl_end.inc
|
||||
36
build/lib/mysql/mysql-test/suite/rpl/r/rpl_loaddata_m.result
Normal file
36
build/lib/mysql/mysql-test/suite/rpl/r/rpl_loaddata_m.result
Normal file
@@ -0,0 +1,36 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
drop database if exists mysqltest;
|
||||
USE test;
|
||||
CREATE TABLE t1(a INT, b INT, UNIQUE(b));
|
||||
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE test.t1;
|
||||
SELECT COUNT(*) FROM test.t1;
|
||||
COUNT(*)
|
||||
2
|
||||
CREATE DATABASE mysqltest;
|
||||
USE mysqltest;
|
||||
CREATE TABLE t1(a INT, b INT, UNIQUE(b));
|
||||
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE mysqltest.t1;
|
||||
SELECT COUNT(*) FROM mysqltest.t1;
|
||||
COUNT(*)
|
||||
2
|
||||
SHOW DATABASES;
|
||||
Database
|
||||
information_schema
|
||||
mtr
|
||||
mysql
|
||||
mysqltest
|
||||
test
|
||||
USE test;
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
USE mysqltest;
|
||||
SHOW TABLES;
|
||||
Tables_in_mysqltest
|
||||
t1
|
||||
SELECT COUNT(*) FROM mysqltest.t1;
|
||||
COUNT(*)
|
||||
2
|
||||
DROP DATABASE mysqltest;
|
||||
DROP TABLE IF EXISTS test.t1;
|
||||
include/rpl_end.inc
|
||||
@@ -0,0 +1,28 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
==== Create a big file ====
|
||||
==== Load our big file into a table ====
|
||||
create table t2 (id int not null primary key auto_increment);
|
||||
select @@session.read_buffer_size - @@session.max_allowed_packet > 0 ;
|
||||
@@session.read_buffer_size - @@session.max_allowed_packet > 0
|
||||
1
|
||||
load data infile 'MYSQLTEST_VARDIR/tmp/bug30435_5k.txt' into table t2;
|
||||
select count(*) from t2 /* 5 000 */;
|
||||
count(*)
|
||||
5000
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; create table t2 (id int not null primary key auto_increment)
|
||||
master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
|
||||
master-bin.000001 # Append_block # # ;file_id=#;block_len=#
|
||||
master-bin.000001 # Append_block # # ;file_id=#;block_len=#
|
||||
master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug30435_5k.txt' INTO TABLE `t2` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`id`) ;file_id=#
|
||||
==== Verify results on slave ====
|
||||
[on slave]
|
||||
select count(*) from t2 /* 5 000 */;
|
||||
count(*)
|
||||
5000
|
||||
==== Clean up ====
|
||||
[on master]
|
||||
drop table t2;
|
||||
include/rpl_end.inc
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user