~ubuntu-branches/ubuntu/precise/mysql-5.5/precise-201203300109

« back to all changes in this revision

Viewing changes to mysql-test/suite/rpl/t/rpl_loaddatalocal.test

  • Committer: Package Import Robot
  • Author(s): Clint Byrum
  • Date: 2011-11-08 11:31:13 UTC
  • Revision ID: package-import@ubuntu.com-20111108113113-3ulw01fvi4vn8m25
Tags: upstream-5.5.17
ImportĀ upstreamĀ versionĀ 5.5.17

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# See if "LOAD DATA LOCAL INFILE" is well replicated
 
2
# (LOAD DATA LOCAL INFILE is not written to the binlog
 
3
# the same way as LOAD DATA INFILE : Append_blocks are smaller).
 
4
# In MySQL 4.0 <4.0.12 there were 2 bugs with LOAD DATA LOCAL INFILE :
 
5
# - the loaded file was not written entirely to the master's binlog,
 
6
# only the first 4KB, 8KB or 16KB usually.
 
7
# - the loaded file's first line was not written entirely to the
 
8
# master's binlog (1st char was absent)
 
9
source include/master-slave.inc;
 
10
 
 
11
create table t1(a int);
 
12
let $1=10000;
 
13
disable_query_log;
 
14
set SQL_LOG_BIN=0;
 
15
while ($1)
 
16
{
 
17
 insert into t1 values(1);
 
18
 dec $1;
 
19
}
 
20
set SQL_LOG_BIN=1;
 
21
enable_query_log;
 
22
let $MYSQLD_DATADIR= `select @@datadir`;
 
23
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
24
eval select * into outfile '$MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile' from t1;
 
25
#This will generate a 20KB file, now test LOAD DATA LOCAL
 
26
truncate table t1;
 
27
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
28
eval load data local infile '$MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile' into table t1;
 
29
--remove_file $MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile
 
30
sync_slave_with_master;
 
31
select a,count(*) from t1 group by a;
 
32
connection master;
 
33
drop table t1;
 
34
sync_slave_with_master;
 
35
 
 
36
# End of 4.1 tests
 
37
 
 
38
#
 
39
# Now let us test how well we replicate LOAD DATA LOCAL in situation when
 
40
# we met duplicates in tables to which we are adding rows.
 
41
# (It supposed that LOAD DATA LOCAL ignores such errors)
 
42
#
 
43
connection master;
 
44
create table t1(a int);
 
45
insert into t1 values (1), (2), (2), (3);
 
46
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
47
eval select * into outfile '$MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile' from t1;
 
48
drop table t1;
 
49
create table t1(a int primary key);
 
50
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
51
eval load data local infile '$MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile' into table t1;
 
52
--remove_file $MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile
 
53
SELECT * FROM t1 ORDER BY a;
 
54
save_master_pos;
 
55
connection slave;
 
56
sync_with_master;
 
57
SELECT * FROM t1 ORDER BY a;
 
58
connection master;
 
59
drop table t1;
 
60
save_master_pos;
 
61
connection slave;
 
62
sync_with_master;
 
63
 
 
64
 
 
65
#
 
66
# Bug22504 load data infile sql statement in replication architecture get error
 
67
#
 
68
--echo ==== Bug22504 Initialize ====
 
69
 
 
70
--echo [on master]
 
71
--connection master
 
72
 
 
73
SET sql_mode='ignore_space';
 
74
CREATE TABLE t1(a int);
 
75
insert into t1 values (1), (2), (3), (4);
 
76
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
77
eval select * into outfile '$MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile' from t1;
 
78
truncate table t1;
 
79
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
80
eval load data local infile '$MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile' into table t1;
 
81
--remove_file $MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile
 
82
SELECT * FROM t1 ORDER BY a;
 
83
 
 
84
--echo [on slave]
 
85
sync_slave_with_master;
 
86
SELECT * FROM t1 ORDER BY a;
 
87
 
 
88
--echo ==== Clean up ====
 
89
 
 
90
--echo [on master]
 
91
connection master;
 
92
DROP TABLE t1;
 
93
 
 
94
--echo [on slave]
 
95
sync_slave_with_master;
 
96
 
 
97
--echo
 
98
--echo Bug #43746:
 
99
--echo "return wrong query string when parse 'load data infile' sql statement"
 
100
--echo
 
101
 
 
102
--echo [master]
 
103
connection master;
 
104
let $MYSQLD_DATADIR= `select @@datadir`;
 
105
SELECT @@SESSION.sql_mode INTO @old_mode;
 
106
 
 
107
SET sql_mode='ignore_space';
 
108
 
 
109
CREATE TABLE t1(a int);
 
110
INSERT INTO t1 VALUES (1), (2), (3), (4);
 
111
 
 
112
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
113
eval SELECT * INTO OUTFILE '$MYSQLD_DATADIR/bug43746.sql' FROM t1;
 
114
TRUNCATE TABLE t1;
 
115
 
 
116
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
117
eval LOAD DATA LOCAL INFILE '$MYSQLD_DATADIR/bug43746.sql' INTO TABLE t1;
 
118
 
 
119
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
120
eval LOAD/* look mum, with comments in weird places! */DATA/* oh hai */LOCAL INFILE '$MYSQLD_DATADIR/bug43746.sql'/* we are */INTO/* from the internets */TABLE t1;
 
121
 
 
122
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
123
eval LOAD DATA/*!10000 LOCAL */INFILE '$MYSQLD_DATADIR/bug43746.sql' INTO TABLE t1;
 
124
 
 
125
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
126
eval LOAD DATA LOCAL INFILE '$MYSQLD_DATADIR/bug43746.sql' /*!10000 INTO */ TABLE t1;
 
127
 
 
128
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
129
eval LOAD DATA LOCAL INFILE '$MYSQLD_DATADIR/bug43746.sql' /*!10000 INTO TABLE */ t1;
 
130
 
 
131
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
132
eval LOAD DATA /*!10000 LOCAL INFILE '$MYSQLD_DATADIR/bug43746.sql' INTO TABLE */ t1;
 
133
 
 
134
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
135
eval LOAD DATA/*!10000 LOCAL */INFILE '$MYSQLD_DATADIR/bug43746.sql'/*!10000 INTO*/TABLE t1;
 
136
 
 
137
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
138
eval LOAD DATA/*!10000 LOCAL */INFILE '$MYSQLD_DATADIR/bug43746.sql'/* empty */INTO TABLE t1;
 
139
 
 
140
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
141
eval LOAD DATA/*!10000 LOCAL */INFILE '$MYSQLD_DATADIR/bug43746.sql' INTO/* empty */TABLE t1;
 
142
 
 
143
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
144
eval LOAD/*!99999 special comments that do not expand */DATA/*!99999 code from the future */LOCAL INFILE '$MYSQLD_DATADIR/bug43746.sql'/*!99999 have flux capacitor */INTO/*!99999 will travel */TABLE t1;
 
145
 
 
146
SET sql_mode='PIPES_AS_CONCAT,ANSI_QUOTES,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER';
 
147
 
 
148
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
149
eval LOAD DATA LOCAL INFILE '$MYSQLD_DATADIR/bug43746.sql' INTO TABLE t1;
 
150
 
 
151
--echo [slave]
 
152
sync_slave_with_master;
 
153
 
 
154
--echo
 
155
--echo  Bug #59267:
 
156
--echo "LOAD DATA LOCAL INFILE not executed on slave with SBR"
 
157
--echo
 
158
 
 
159
--echo [master]
 
160
connection master;
 
161
 
 
162
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
163
eval SELECT * INTO OUTFILE '$MYSQLD_DATADIR/bug59267.sql' FROM t1;
 
164
TRUNCATE TABLE t1;
 
165
 
 
166
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
167
eval LOAD DATA LOCAL INFILE '$MYSQLD_DATADIR/bug59267.sql' INTO TABLE t1;
 
168
 
 
169
SELECT 'Master', COUNT(*) FROM t1;
 
170
 
 
171
--echo [slave]
 
172
--sync_slave_with_master
 
173
SELECT 'Slave', COUNT(*) FROM t1;
 
174
 
 
175
# cleanup
 
176
--echo [master]
 
177
connection master;
 
178
 
 
179
--remove_file $MYSQLD_DATADIR/bug43746.sql
 
180
--remove_file $MYSQLD_DATADIR/bug59267.sql
 
181
 
 
182
DROP TABLE t1;
 
183
SET SESSION sql_mode=@old_mode;
 
184
 
 
185
--echo [slave]
 
186
sync_slave_with_master;
 
187
 
 
188
connection master;
 
189
 
 
190
--echo
 
191
--echo Bug #60580/#11902767:
 
192
--echo "statement improperly replicated crashes slave sql thread"
 
193
--echo
 
194
 
 
195
--echo [master]
 
196
connection master;
 
197
let $MYSQLD_DATADIR= `select @@datadir`;
 
198
 
 
199
CREATE TABLE t1(f1 INT, f2 INT);
 
200
CREATE TABLE t2(f1 INT, f2 TIMESTAMP);
 
201
 
 
202
INSERT INTO t2 VALUES(1, '2011-03-22 21:01:28');
 
203
INSERT INTO t2 VALUES(2, '2011-03-21 21:01:28');
 
204
INSERT INTO t2 VALUES(3, '2011-03-20 21:01:28');
 
205
 
 
206
CREATE TABLE t3 AS SELECT * FROM t2;
 
207
 
 
208
CREATE VIEW v1 AS SELECT * FROM t2
 
209
  WHERE f1 IN (SELECT f1 FROM t3 WHERE (t3.f2 IS NULL));
 
210
 
 
211
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
212
eval SELECT 1 INTO OUTFILE '$MYSQLD_DATADIR/bug60580.csv' FROM DUAL;
 
213
 
 
214
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
 
215
eval LOAD DATA LOCAL INFILE '$MYSQLD_DATADIR/bug60580.csv' INTO TABLE t1 (@f1) SET f2 = (SELECT f1 FROM v1 WHERE f1=@f1);
 
216
 
 
217
SELECT * FROM t1;
 
218
 
 
219
sleep 1;
 
220
 
 
221
--echo [slave]
 
222
sync_slave_with_master;
 
223
 
 
224
SELECT * FROM t1;
 
225
 
 
226
--remove_file $MYSQLD_DATADIR/bug60580.csv
 
227
 
 
228
--echo [master]
 
229
connection master;
 
230
 
 
231
DROP VIEW v1;
 
232
DROP TABLE t1, t2, t3;
 
233
 
 
234
--echo [slave]
 
235
sync_slave_with_master;
 
236
 
 
237
connection master;
 
238
--source include/rpl_end.inc
 
239
 
 
240
--echo # End of 5.1 tests