mirror of
https://github.com/MariaDB/server.git
synced 2025-01-23 15:24:16 +01:00
197182d749
"load data" statements were written to the binlog as a mix of the original statement and bits recreated from parse-info. This relied on implementation details and broke with IGNORE_SPACES and versioned comments. We now completely resynthesize the query for LOAD DATA for binlog (which among other things normalizes them somewhat with regard to case, spaces, etc.). We have already parsed the query properly, so we make use of that rather than mix-and-match string literals and parsed items. This should make us safe with regard to versioned comments, even those spanning multiple tokens. Also no longer affected by IGNORE_SPACES.
31 lines
1.3 KiB
Text
31 lines
1.3 KiB
Text
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 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;
|