mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
ed1696f6b9
we store 7 bytes (1 + 2*3) in every Query_log_event. In the future if users want binlog optimized for small size and less safe, we could add --binlog-no-charset (and binlog-no-sql-mode etc): charset info is something by design optional (even if for now we don't offer possibility to disable it): it's not a binlog format change. We try to reduce the number of get_charset() calls in the slave SQL thread to a minimum by caching the charset read from the previous event (which will often be equal to the one of the current event). We don't use SET ONE_SHOT for charset-aware repl (we still do for timezones, will be fixed later). No more errors if one changes the global value of charset vars on master or slave (as we log charset info in all Query_log_event). Not fixing Load_log_event as it will be rewritten soon by Dmitri. Testing how mysqlbinlog behaves in rpl_charset.test. mysqlbinlog needs to know where charset file is (to be able to convert a charset number found in binlog (e.g. in User_var_log_event) to a charset name); mysql-test-run needs to pass the correct value for this option to mysqlbinlog. Many result udpates (adding charset info into every event shifts log_pos in SHOW BINLOG EVENTS). Roughly the same job is to be done for timezones :)
105 lines
5.2 KiB
Text
105 lines
5.2 KiB
Text
set timestamp=1000000000;
|
|
drop table if exists t1,t2;
|
|
create table t1 (word varchar(20));
|
|
create table t2 (id int auto_increment not null primary key);
|
|
insert into t1 values ("abirvalg");
|
|
insert into t2 values ();
|
|
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;
|
|
load data infile '../../std_data/words.dat' into table t1;
|
|
insert into t1 values ("Alas");
|
|
flush logs;
|
|
|
|
--- Local --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
use test;
|
|
SET TIMESTAMP=1000000000;
|
|
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;
|
|
drop table if exists t1,t2;
|
|
SET TIMESTAMP=1000000000;
|
|
create table t1 (word varchar(20));
|
|
SET TIMESTAMP=1000000000;
|
|
create table t2 (id int auto_increment not null primary key);
|
|
SET TIMESTAMP=1000000000;
|
|
insert into t1 values ("abirvalg");
|
|
SET INSERT_ID=1;
|
|
SET TIMESTAMP=1000000000;
|
|
insert into t2 values ();
|
|
LOAD DATA LOCAL INFILE 'MYSQL_TEST_DIR/var/tmp/words.dat-1-0' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word);
|
|
LOAD DATA LOCAL INFILE 'MYSQL_TEST_DIR/var/tmp/words.dat-2-0' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word);
|
|
LOAD DATA LOCAL INFILE 'MYSQL_TEST_DIR/var/tmp/words.dat-3-0' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word);
|
|
LOAD DATA LOCAL INFILE 'MYSQL_TEST_DIR/var/tmp/words.dat-4-0' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word);
|
|
LOAD DATA LOCAL INFILE 'MYSQL_TEST_DIR/var/tmp/words.dat-5-0' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word);
|
|
|
|
--- Broken LOAD DATA --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
use test;
|
|
SET TIMESTAMP=1000000000;
|
|
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;
|
|
insert into t1 values ("Alas");
|
|
|
|
--- --database --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
SET INSERT_ID=1;
|
|
|
|
--- --position --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
use test;
|
|
SET TIMESTAMP=1000000000;
|
|
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;
|
|
insert into t1 values ("Alas");
|
|
|
|
--- Remote --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
use test;
|
|
SET TIMESTAMP=1000000000;
|
|
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;
|
|
drop table if exists t1,t2;
|
|
SET TIMESTAMP=1000000000;
|
|
create table t1 (word varchar(20));
|
|
SET TIMESTAMP=1000000000;
|
|
create table t2 (id int auto_increment not null primary key);
|
|
SET TIMESTAMP=1000000000;
|
|
insert into t1 values ("abirvalg");
|
|
SET INSERT_ID=1;
|
|
SET TIMESTAMP=1000000000;
|
|
insert into t2 values ();
|
|
LOAD DATA LOCAL INFILE 'MYSQL_TEST_DIR/var/tmp/words.dat-1-1' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word);
|
|
LOAD DATA LOCAL INFILE 'MYSQL_TEST_DIR/var/tmp/words.dat-2-1' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word);
|
|
LOAD DATA LOCAL INFILE 'MYSQL_TEST_DIR/var/tmp/words.dat-3-1' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word);
|
|
LOAD DATA LOCAL INFILE 'MYSQL_TEST_DIR/var/tmp/words.dat-4-1' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word);
|
|
LOAD DATA LOCAL INFILE 'MYSQL_TEST_DIR/var/tmp/words.dat-5-1' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word);
|
|
|
|
--- Broken LOAD DATA --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
use test;
|
|
SET TIMESTAMP=1000000000;
|
|
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;
|
|
insert into t1 values ("Alas");
|
|
|
|
--- --database --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
SET INSERT_ID=1;
|
|
|
|
--- --position --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
use test;
|
|
SET TIMESTAMP=1000000000;
|
|
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;
|
|
insert into t1 values ("Alas");
|
|
drop table t1, t2;
|