mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 10:31:54 +01:00
dccbb5a6db
Commit a923d6f49c
disabled numeric setting
of character_set_* variables with non-default values:
MariaDB [(none)]> set character_set_client=224;
ERROR 1115 (42000): Unknown character set: '224'
However the corresponding binlog functionality still write numeric
values for log event, and this will break binlog replay if the value is
not default. Now make the server use 'String' type for
'character_set_client' when generating binlog events
Before:
/*!\C utf8mb4 *//*!*/;
SET @@session.character_set_client=224,@@session.collation_connection=224,@@session.collation_server=33/*!*/;
After:
/*!\C utf8mb4 *//*!*/;
SET @@session.character_set_client=utf8mb4,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
Note: prior to the previous commit, setting with '224' or '45' or
'utf8mb4' have the same effect, as they all set the parameter to
'utf8mb4'.
All new code of the whole pull request, including one or several files
that are either new files or modified ones, are contributed under the
BSD-new license. I am contributing on behalf of my employer Amazon Web
Services, Inc.
405 lines
11 KiB
Text
405 lines
11 KiB
Text
include/master-slave.inc
|
|
[connection master]
|
|
---Setup Section --
|
|
set timestamp=1000000000;
|
|
CREATE TABLE t1(word VARCHAR(20));
|
|
CREATE TABLE t2(id INT AUTO_INCREMENT NOT NULL PRIMARY KEY);
|
|
CREATE TABLE t3(c1 INT NOT NULL PRIMARY KEY, c2 LONGBLOB, c3 TIMESTAMP, c4 TEXT, c5 FLOAT);
|
|
INSERT INTO t1 VALUES ("abirvalg");
|
|
LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1;
|
|
LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1;
|
|
LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1;
|
|
LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1;
|
|
LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1;
|
|
set @d1 = 'dd1';
|
|
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
|
|
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
|
|
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
|
|
---Test 1 check table load --
|
|
SELECT COUNT(*) from t1;
|
|
COUNT(*)
|
|
351
|
|
SELECT COUNT(*) from t2;
|
|
COUNT(*)
|
|
500
|
|
SELECT COUNT(*) from t3;
|
|
COUNT(*)
|
|
500
|
|
SELECT * FROM t1 ORDER BY word LIMIT 5;
|
|
word
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
SELECT * FROM t2 ORDER BY id LIMIT 5;
|
|
id
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
SELECT c1, c3, c4, c5 FROM t3 ORDER BY c1 LIMIT 5;
|
|
c1 c3 c4 c5
|
|
1 2006-02-22 00:00:00 Tested in Texas 2.2
|
|
2 2006-02-22 00:00:00 Tested in Texas 4.4
|
|
3 2006-02-22 00:00:00 Tested in Texas 6.6
|
|
4 2006-02-22 00:00:00 Tested in Texas 8.8
|
|
5 2006-02-22 00:00:00 Tested in Texas 11
|
|
connection slave;
|
|
SELECT COUNT(*) from t1;
|
|
COUNT(*)
|
|
351
|
|
SELECT COUNT(*) from t2;
|
|
COUNT(*)
|
|
500
|
|
SELECT COUNT(*) from t3;
|
|
COUNT(*)
|
|
500
|
|
SELECT * FROM t1 ORDER BY word LIMIT 5;
|
|
word
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
SELECT * FROM t2 ORDER BY id LIMIT 5;
|
|
id
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
SELECT c1, c3, c4, c5 FROM t3 ORDER BY c1 LIMIT 5;
|
|
c1 c3 c4 c5
|
|
1 2006-02-22 00:00:00 Tested in Texas 2.2
|
|
2 2006-02-22 00:00:00 Tested in Texas 4.4
|
|
3 2006-02-22 00:00:00 Tested in Texas 6.6
|
|
4 2006-02-22 00:00:00 Tested in Texas 8.8
|
|
5 2006-02-22 00:00:00 Tested in Texas 11
|
|
connection master;
|
|
insert into t1 values ("Alas");
|
|
flush logs;
|
|
--- Test 1 Dump binlog to file --
|
|
--- Test 1 delete tables, clean master and slave --
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
DROP TABLE t3;
|
|
connection slave;
|
|
stop slave;
|
|
include/wait_for_slave_to_stop.inc
|
|
connection master;
|
|
reset master;
|
|
connection slave;
|
|
reset slave;
|
|
start slave;
|
|
include/wait_for_slave_to_start.inc
|
|
connection master;
|
|
--- Test 1 Load from Dump binlog file --
|
|
--- Test 1 Check Load Results --
|
|
SELECT COUNT(*) from t1;
|
|
COUNT(*)
|
|
352
|
|
SELECT COUNT(*) from t2;
|
|
COUNT(*)
|
|
500
|
|
SELECT COUNT(*) from t3;
|
|
COUNT(*)
|
|
500
|
|
SELECT * FROM t1 ORDER BY word LIMIT 5;
|
|
word
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
SELECT * FROM t2 ORDER BY id LIMIT 5;
|
|
id
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
SELECT c1, c3, c4, c5 FROM t3 ORDER BY c1 LIMIT 5;
|
|
c1 c3 c4 c5
|
|
1 2006-02-22 00:00:00 Tested in Texas 2.2
|
|
2 2006-02-22 00:00:00 Tested in Texas 4.4
|
|
3 2006-02-22 00:00:00 Tested in Texas 6.6
|
|
4 2006-02-22 00:00:00 Tested in Texas 8.8
|
|
5 2006-02-22 00:00:00 Tested in Texas 11
|
|
connection slave;
|
|
SELECT COUNT(*) from t1;
|
|
COUNT(*)
|
|
352
|
|
SELECT COUNT(*) from t2;
|
|
COUNT(*)
|
|
500
|
|
SELECT COUNT(*) from t3;
|
|
COUNT(*)
|
|
500
|
|
SELECT * FROM t1 ORDER BY word LIMIT 5;
|
|
word
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
SELECT * FROM t2 ORDER BY id LIMIT 5;
|
|
id
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
SELECT c1, c3, c4, c5 FROM t3 ORDER BY c1 LIMIT 5;
|
|
c1 c3 c4 c5
|
|
1 2006-02-22 00:00:00 Tested in Texas 2.2
|
|
2 2006-02-22 00:00:00 Tested in Texas 4.4
|
|
3 2006-02-22 00:00:00 Tested in Texas 6.6
|
|
4 2006-02-22 00:00:00 Tested in Texas 8.8
|
|
5 2006-02-22 00:00:00 Tested in Texas 11
|
|
connection master;
|
|
--- Test 2 position test --
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
ROLLBACK/*!*/;
|
|
use `test`/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.pseudo_thread_id=999999999/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
|
|
SET @@session.sql_mode=1411383296/*!*/;
|
|
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=latin1,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
SET @@session.lc_time_names=0/*!*/;
|
|
SET @@session.collation_database=DEFAULT/*!*/;
|
|
CREATE TABLE t3(c1 INT NOT NULL PRIMARY KEY, c2 LONGBLOB, c3 TIMESTAMP, c4 TEXT, c5 FLOAT)
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
|
|
--- Test 3 First Remote test --
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
ROLLBACK/*!*/;
|
|
use `test`/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.pseudo_thread_id=999999999/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
|
|
SET @@session.sql_mode=1411383296/*!*/;
|
|
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=latin1,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
SET @@session.lc_time_names=0/*!*/;
|
|
SET @@session.collation_database=DEFAULT/*!*/;
|
|
CREATE TABLE t1(word VARCHAR(20))
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
CREATE TABLE t2(id INT AUTO_INCREMENT NOT NULL PRIMARY KEY)
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
CREATE TABLE t3(c1 INT NOT NULL PRIMARY KEY, c2 LONGBLOB, c3 TIMESTAMP, c4 TEXT, c5 FLOAT)
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
|
|
--- Test 4 Second Remote test --
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
DROP TABLE t3;
|
|
connection slave;
|
|
stop slave;
|
|
include/wait_for_slave_to_stop.inc
|
|
connection master;
|
|
reset master;
|
|
connection slave;
|
|
reset slave;
|
|
start slave;
|
|
include/wait_for_slave_to_start.inc
|
|
connection master;
|
|
SELECT COUNT(*) from t1;
|
|
COUNT(*)
|
|
352
|
|
SELECT COUNT(*) from t2;
|
|
COUNT(*)
|
|
500
|
|
SELECT COUNT(*) from t3;
|
|
COUNT(*)
|
|
500
|
|
SELECT * FROM t1 ORDER BY word LIMIT 5;
|
|
word
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
SELECT * FROM t2 ORDER BY id LIMIT 5;
|
|
id
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
SELECT c1, c3, c4, c5 FROM t3 ORDER BY c1 LIMIT 5;
|
|
c1 c3 c4 c5
|
|
1 2006-02-22 00:00:00 Tested in Texas 2.2
|
|
2 2006-02-22 00:00:00 Tested in Texas 4.4
|
|
3 2006-02-22 00:00:00 Tested in Texas 6.6
|
|
4 2006-02-22 00:00:00 Tested in Texas 8.8
|
|
5 2006-02-22 00:00:00 Tested in Texas 11
|
|
connection slave;
|
|
SELECT COUNT(*) from t1;
|
|
COUNT(*)
|
|
352
|
|
SELECT COUNT(*) from t2;
|
|
COUNT(*)
|
|
500
|
|
SELECT COUNT(*) from t3;
|
|
COUNT(*)
|
|
500
|
|
SELECT * FROM t1 ORDER BY word LIMIT 5;
|
|
word
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
SELECT * FROM t2 ORDER BY id LIMIT 5;
|
|
id
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
SELECT c1, c3, c4, c5 FROM t3 ORDER BY c1 LIMIT 5;
|
|
c1 c3 c4 c5
|
|
1 2006-02-22 00:00:00 Tested in Texas 2.2
|
|
2 2006-02-22 00:00:00 Tested in Texas 4.4
|
|
3 2006-02-22 00:00:00 Tested in Texas 6.6
|
|
4 2006-02-22 00:00:00 Tested in Texas 8.8
|
|
5 2006-02-22 00:00:00 Tested in Texas 11
|
|
connection master;
|
|
--- Test 5 LOAD DATA --
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
|
|
--- Test 6 reading stdin --
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
ROLLBACK/*!*/;
|
|
use `test`/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.pseudo_thread_id=999999999/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
|
|
SET @@session.sql_mode=1411383296/*!*/;
|
|
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=latin1,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
SET @@session.lc_time_names=0/*!*/;
|
|
SET @@session.collation_database=DEFAULT/*!*/;
|
|
CREATE TABLE t1(word VARCHAR(20))
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
CREATE TABLE t2(id INT AUTO_INCREMENT NOT NULL PRIMARY KEY)
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
CREATE TABLE t3(c1 INT NOT NULL PRIMARY KEY, c2 LONGBLOB, c3 TIMESTAMP, c4 TEXT, c5 FLOAT)
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
|
|
--- Test 7 reading stdin w/position --
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
ROLLBACK/*!*/;
|
|
use `test`/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.pseudo_thread_id=999999999/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
|
|
SET @@session.sql_mode=1411383296/*!*/;
|
|
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=latin1,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
SET @@session.lc_time_names=0/*!*/;
|
|
SET @@session.collation_database=DEFAULT/*!*/;
|
|
CREATE TABLE t3(c1 INT NOT NULL PRIMARY KEY, c2 LONGBLOB, c3 TIMESTAMP, c4 TEXT, c5 FLOAT)
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
|
|
--- Test 8 switch internal charset --
|
|
connection slave;
|
|
stop slave;
|
|
include/wait_for_slave_to_stop.inc
|
|
connection master;
|
|
reset master;
|
|
connection slave;
|
|
reset slave;
|
|
start slave;
|
|
include/wait_for_slave_to_start.inc
|
|
connection master;
|
|
create table t4 (f text character set utf8);
|
|
create table t5 (f text character set cp932);
|
|
flush logs;
|
|
rename table t4 to t04, t5 to t05;
|
|
select HEX(f) from t04;
|
|
HEX(f)
|
|
E382BD
|
|
select HEX(f) from t4;
|
|
HEX(f)
|
|
E382BD
|
|
select HEX(f) from t05;
|
|
HEX(f)
|
|
835C
|
|
select HEX(f) from t5;
|
|
HEX(f)
|
|
835C
|
|
connection slave;
|
|
select HEX(f) from t04;
|
|
HEX(f)
|
|
E382BD
|
|
select HEX(f) from t4;
|
|
HEX(f)
|
|
E382BD
|
|
select HEX(f) from t05;
|
|
HEX(f)
|
|
835C
|
|
select HEX(f) from t5;
|
|
HEX(f)
|
|
835C
|
|
--- Test cleanup --
|
|
connection master;
|
|
connection slave;
|
|
connection master;
|
|
DROP TABLE t1, t2, t3, t04, t05, t4, t5;
|
|
CREATE TABLE t1 (a INT NOT NULL KEY, b INT);
|
|
INSERT INTO t1 VALUES(1,1);
|
|
SELECT * FROM t1;
|
|
a b
|
|
1 1
|
|
FLUSH LOGS;
|
|
DROP TABLE t1;
|
|
connection slave;
|
|
include/rpl_end.inc
|