mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 19:41:47 +01:00
d0a24b1367
escaped field names When in mixed or statement mode, the master logs LOAD DATA queries by resorting to an Execute_load_query_log_event. This event does not contain the original query, but a rewritten version of it, which includes the table field names. However, the rewrite does not escape the field names. If these names match a reserved keyword, then the slave will stop with a syntax error when executing the event. We fix this by escaping the fields names as it happens already for the table name.
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;
|