648 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			648 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | # | ||
|  | # Some simple test of load data | ||
|  | # | ||
|  | 
 | ||
|  | --disable_warnings | ||
|  | drop table if exists t1, t2; | ||
|  | --enable_warnings | ||
|  | 
 | ||
|  | create table t1 (a date, b date, c date not null, d date); | ||
|  | load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ','; | ||
|  | load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',' IGNORE 2 LINES; | ||
|  | SELECT * from t1; | ||
|  | truncate table t1; | ||
|  | 
 | ||
|  | load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',' LINES STARTING BY ',' (b,c,d); | ||
|  | SELECT * from t1; | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | create table t1 (a text, b text); | ||
|  | load data infile '../../std_data/loaddata2.dat' into table t1 fields terminated by ',' enclosed by ''''; | ||
|  | select concat('|',a,'|'), concat('|',b,'|') from t1; | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | create table t1 (a int, b char(10)); | ||
|  | load data infile '../../std_data/loaddata3.dat' into table t1 fields terminated by '' enclosed by '' ignore 1 lines; | ||
|  | select * from t1; | ||
|  | truncate table t1; | ||
|  | load data infile '../../std_data/loaddata4.dat' into table t1 fields terminated by '' enclosed by '' lines terminated by '' ignore 1 lines; | ||
|  | 
 | ||
|  | # The empty line last comes from the end line field in the file | ||
|  | select * from t1; | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Bug #12053 LOAD DATA INFILE ignores NO_AUTO_VALUE_ON_ZERO setting | ||
|  | # | ||
|  | SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE=NO_AUTO_VALUE_ON_ZERO; | ||
|  | create table t1(id integer not null auto_increment primary key); | ||
|  | insert into t1 values(0); | ||
|  | disable_query_log; | ||
|  | eval SELECT * INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/t1' from t1; | ||
|  | delete from t1; | ||
|  | eval load data infile '$MYSQLTEST_VARDIR/tmp/t1' into table t1; | ||
|  | enable_query_log; | ||
|  | select * from t1; | ||
|  | remove_file $MYSQLTEST_VARDIR/tmp/t1; | ||
|  | 
 | ||
|  | disable_query_log; | ||
|  | eval SELECT * INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/t1' | ||
|  | FIELDS TERMINATED BY '' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\r\n' | ||
|  | FROM t1; | ||
|  | delete from t1; | ||
|  | eval load data infile '$MYSQLTEST_VARDIR/tmp/t1' into table t1 | ||
|  | FIELDS TERMINATED BY '' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\r\n'; | ||
|  | enable_query_log; | ||
|  | select * from t1; | ||
|  | remove_file $MYSQLTEST_VARDIR/tmp/t1; | ||
|  | SET @@SQL_MODE=@OLD_SQL_MODE; | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Bug #11203: LOAD DATA does not accept same characters for ESCAPED and | ||
|  | # ENCLOSED | ||
|  | # | ||
|  | create table t1 (a varchar(20), b varchar(20)); | ||
|  | load data infile '../../std_data/loaddata_dq.dat' into table t1 fields terminated by ',' enclosed by '"' escaped by '"' (a,b); | ||
|  | select * from t1; | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Bug #29294 SELECT INTO OUTFILE/LOAD DATA INFILE with special | ||
|  | # characters in the FIELDS ENCLOSED BY clause | ||
|  | # | ||
|  | 
 | ||
|  | CREATE TABLE t1 ( | ||
|  |   id INT AUTO_INCREMENT PRIMARY KEY, | ||
|  |   c1 VARCHAR(255) | ||
|  | ); | ||
|  | 
 | ||
|  | CREATE TABLE t2 ( | ||
|  |   id INT, | ||
|  |   c2 VARCHAR(255) | ||
|  | ); | ||
|  | 
 | ||
|  | INSERT INTO t1 (c1) VALUES | ||
|  |   ('r'),   ('rr'),   ('rrr'),   ('rrrr'), | ||
|  |   ('.r'),  ('.rr'),  ('.rrr'),  ('.rrrr'), | ||
|  |   ('r.'),  ('rr.'),  ('rrr.'),  ('rrrr.'), | ||
|  |   ('.r.'), ('.rr.'), ('.rrr.'), ('.rrrr.'); | ||
|  | SELECT * FROM t1; | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | eval SELECT * INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/t1' FIELDS ENCLOSED BY 'r' FROM t1; | ||
|  | cat_file $MYSQLTEST_VARDIR/tmp/t1; | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/t1' INTO TABLE t2 FIELDS ENCLOSED BY 'r'; | ||
|  | SELECT t1.id, c1, c2 FROM t1 LEFT  JOIN t2 ON t1.id=t2.id WHERE c1 != c2; | ||
|  | SELECT t1.id, c1, c2 FROM t1 RIGHT JOIN t2 ON t1.id=t2.id WHERE c1 != c2; | ||
|  | 
 | ||
|  | remove_file $MYSQLTEST_VARDIR/tmp/t1; | ||
|  | DROP TABLE t1,t2; | ||
|  | 
 | ||
|  | # End of 4.1 tests | ||
|  | 
 | ||
|  | # | ||
|  | # Let us test extended LOAD DATA features | ||
|  | # | ||
|  | create table t1 (a int default 100, b int, c varchar(60)); | ||
|  | # we can do something like this | ||
|  | load data infile '../../std_data/rpl_loaddata.dat' into table t1 (a, @b) set b=@b+10, c=concat("b=",@b); | ||
|  | select * from t1; | ||
|  | truncate table t1; | ||
|  | # we can use filled fields in expressions  | ||
|  | # we also assigning NULL value to field with non-NULL default here | ||
|  | load data infile '../../std_data/rpl_loaddata.dat' into table t1 (a, @b) set c= if(a is null,"oops",a); | ||
|  | select * from t1; | ||
|  | truncate table t1; | ||
|  | # we even can use variables in set clause, and missed columns will be set | ||
|  | # with default values | ||
|  | set @c:=123; | ||
|  | load data infile '../../std_data/rpl_loaddata.dat' into table t1 (@a, b) set c= if(@a is null,@c,b); | ||
|  | select * from t1; | ||
|  | # let us test side-effect of such load | ||
|  | load data infile '../../std_data/rpl_loaddata.dat' into table t1 (@a, @b); | ||
|  | select * from t1; | ||
|  | select @a, @b; | ||
|  | truncate table t1; | ||
|  | # Reading of all columns with set | ||
|  | load data infile '../../std_data/rpl_loaddata.dat' into table t1 set c=b; | ||
|  | select * from t1; | ||
|  | truncate table t1; | ||
|  | # now going to test fixed field-row file format | ||
|  | load data infile '../../std_data/loaddata5.dat' into table t1 fields terminated by '' enclosed by '' (a, b) set c="Wow"; | ||
|  | select * from t1; | ||
|  | truncate table t1; | ||
|  | # this also should work | ||
|  | load data infile '../../std_data/loaddata5.dat' into table t1 fields terminated by '' enclosed by '' (a, b) set c=concat(a,"+",b,"+",@c,"+",b,"+",if(c is null,"NIL",c)); | ||
|  | select * from t1; | ||
|  | # and this should bark | ||
|  | --error 1409  | ||
|  | load data infile '../../std_data/loaddata5.dat' into table t1 fields terminated by '' enclosed by '' (a, @b); | ||
|  | 
 | ||
|  | # Now let us test LOAD DATA with subselect | ||
|  | create table t2 (num int primary key, str varchar(10)); | ||
|  | insert into t2 values (10,'Ten'), (15,'Fifteen'); | ||
|  | truncate table t1; | ||
|  | load data infile '../../std_data/rpl_loaddata.dat' into table t1 (@dummy,@n) set a= @n, c= (select str from t2 where num=@n); | ||
|  | select * from t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Bug#18628 mysql-test-run: security problem | ||
|  | # | ||
|  | # It should not be possible to load from a file outside of vardir | ||
|  | 
 | ||
|  | ## The following lines were disabled because of patch for | ||
|  | ## bug 50373. MYSQLTEST_VARDIR doesn't rewrite symlinks | ||
|  | ## to real paths, but this is done for secure_file_priv. | ||
|  | ## Because of this the result can't be replaced if the | ||
|  | ## test suite runs with the --mem option which creates | ||
|  | ## symlinks to the ramdisk. | ||
|  | #--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | #show variables like "secure_file_pri%"; | ||
|  | #--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | #select @@secure_file_priv; | ||
|  | --error 1238 | ||
|  | set @@secure_file_priv= 0; | ||
|  | 
 | ||
|  | # Test "load data" | ||
|  | truncate table t1; | ||
|  | --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR | ||
|  | --error ER_OPTION_PREVENTS_STATEMENT, ER_TEXTFILE_NOT_READABLE | ||
|  | eval load data infile '$MYSQL_TEST_DIR/t/loaddata.test' into table t1; | ||
|  | select * from t1; | ||
|  | 
 | ||
|  | # Test "load_file" returns NULL | ||
|  | --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR | ||
|  | eval select load_file("$MYSQL_TEST_DIR/t/loaddata.test"); | ||
|  | 
 | ||
|  | # cleanup | ||
|  | drop table t1, t2; | ||
|  | 
 | ||
|  | # | ||
|  | # Bug#27586: Wrong autoinc value assigned by LOAD DATA in the | ||
|  | #            NO_AUTO_VALUE_ON_ZERO mode | ||
|  | # | ||
|  | create table t1(f1 int); | ||
|  | insert into t1 values(1),(null); | ||
|  | create table t2(f2 int auto_increment primary key); | ||
|  | disable_query_log; | ||
|  | eval select * into outfile '$MYSQLTEST_VARDIR/tmp/t1' from t1; | ||
|  | SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE=NO_AUTO_VALUE_ON_ZERO; | ||
|  | eval load data infile '$MYSQLTEST_VARDIR/tmp/t1' into table t2; | ||
|  | enable_query_log; | ||
|  | select * from t2; | ||
|  | remove_file $MYSQLTEST_VARDIR/tmp/t1; | ||
|  | SET @@SQL_MODE=@OLD_SQL_MODE; | ||
|  | drop table t1,t2; | ||
|  | 
 | ||
|  | # | ||
|  | # Bug#27670: LOAD DATA does not set CURRENT_TIMESTAMP default value for a | ||
|  | #            TIMESTAMP field when no value has been provided. | ||
|  | # | ||
|  | create table t1(f1 int, f2 timestamp not null default current_timestamp); | ||
|  | create table t2(f1 int); | ||
|  | insert into t2 values(1),(2); | ||
|  | disable_query_log; | ||
|  | eval select * into outfile '$MYSQLTEST_VARDIR/tmp/t2' from t2; | ||
|  | eval load data infile '$MYSQLTEST_VARDIR/tmp/t2' into table t1; | ||
|  | enable_query_log; | ||
|  | select f1 from t1 where f2 <> '0000-00-00 00:00:00' order by f1; | ||
|  | remove_file $MYSQLTEST_VARDIR/tmp/t2; | ||
|  | delete from t1; | ||
|  | disable_query_log; | ||
|  | eval SELECT * INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/t2' | ||
|  | FIELDS TERMINATED BY '' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\r\n' | ||
|  | FROM t2; | ||
|  | eval load data infile '$MYSQLTEST_VARDIR/tmp/t2' into table t1 | ||
|  | FIELDS TERMINATED BY '' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\r\n'; | ||
|  | enable_query_log; | ||
|  | select f1 from t1 where f2 <> '0000-00-00 00:00:00' order by f1; | ||
|  | remove_file $MYSQLTEST_VARDIR/tmp/t2; | ||
|  | drop table t1,t2; | ||
|  | 
 | ||
|  | # | ||
|  | # Bug#29442: SELECT INTO OUTFILE FIELDS ENCLOSED BY digit, minus sign etc | ||
|  | #            corrupts non-string fields containing this character. | ||
|  | # | ||
|  | 
 | ||
|  | CREATE TABLE t1 (c1 INT, c2 TIMESTAMP, c3 REAL, c4 DOUBLE); | ||
|  | 
 | ||
|  | INSERT INTO t1 (c1, c2, c3, c4) VALUES (10, '1970-02-01 01:02:03', 1.1E-100, 1.1E+100); | ||
|  | SELECT * FROM t1; | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | eval SELECT * INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/t1' FIELDS ENCLOSED BY '-' FROM t1; | ||
|  | cat_file $MYSQLTEST_VARDIR/tmp/t1; | ||
|  | echo EOF; | ||
|  | 
 | ||
|  | TRUNCATE t1; | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/t1' INTO TABLE t1 FIELDS ENCLOSED BY '-'; | ||
|  | SELECT * FROM t1; | ||
|  | 
 | ||
|  | remove_file $MYSQLTEST_VARDIR/tmp/t1; | ||
|  | DROP TABLE t1; | ||
|  | 
 | ||
|  | ########################################################################### | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- | ||
|  | --echo # -- Bug#35469: server crash with LOAD DATA INFILE to a VIEW. | ||
|  | --echo # -- | ||
|  | 
 | ||
|  | --echo | ||
|  | --disable_warnings | ||
|  | DROP TABLE IF EXISTS t1; | ||
|  | DROP VIEW IF EXISTS v1; | ||
|  | DROP VIEW IF EXISTS v2; | ||
|  | DROP VIEW IF EXISTS v3; | ||
|  | --enable_warnings | ||
|  | 
 | ||
|  | --echo | ||
|  | CREATE TABLE t1(c1 INT, c2 VARCHAR(255)); | ||
|  | 
 | ||
|  | --echo | ||
|  | CREATE VIEW v1 AS SELECT * FROM t1; | ||
|  | CREATE VIEW v2 AS SELECT 1 + 2 AS c0, c1, c2 FROM t1; | ||
|  | CREATE VIEW v3 AS SELECT 1 AS d1, 2 AS d2; | ||
|  | 
 | ||
|  | --echo | ||
|  | LOAD DATA INFILE '../../std_data/bug35469.dat' INTO TABLE v1 | ||
|  |   FIELDS ESCAPED BY '\\' | ||
|  |   TERMINATED BY ',' | ||
|  |   ENCLOSED BY '"' | ||
|  |   LINES TERMINATED BY '\n' (c1, c2); | ||
|  | 
 | ||
|  | --echo | ||
|  | SELECT * FROM t1; | ||
|  | 
 | ||
|  | --echo | ||
|  | SELECT * FROM v1; | ||
|  | 
 | ||
|  | --echo | ||
|  | DELETE FROM t1; | ||
|  | 
 | ||
|  | --echo | ||
|  | LOAD DATA INFILE '../../std_data/bug35469.dat' INTO TABLE v2 | ||
|  |   FIELDS ESCAPED BY '\\' | ||
|  |   TERMINATED BY ',' | ||
|  |   ENCLOSED BY '"' | ||
|  |   LINES TERMINATED BY '\n' (c1, c2); | ||
|  | 
 | ||
|  | --echo | ||
|  | SELECT * FROM t1; | ||
|  | 
 | ||
|  | --echo | ||
|  | SELECT * FROM v2; | ||
|  | 
 | ||
|  | --echo | ||
|  | DELETE FROM t1; | ||
|  | 
 | ||
|  | --echo | ||
|  | --error ER_LOAD_DATA_INVALID_COLUMN | ||
|  | LOAD DATA INFILE '../../std_data/bug35469.dat' INTO TABLE v2 | ||
|  |   FIELDS ESCAPED BY '\\' | ||
|  |   TERMINATED BY ',' | ||
|  |   ENCLOSED BY '"' | ||
|  |   LINES TERMINATED BY '\n' (c0, c2); | ||
|  | 
 | ||
|  | --echo | ||
|  | --error ER_NON_UPDATABLE_TABLE | ||
|  | LOAD DATA INFILE '../../std_data/bug35469.dat' INTO TABLE v3 | ||
|  |   FIELDS ESCAPED BY '\\' | ||
|  |   TERMINATED BY ',' | ||
|  |   ENCLOSED BY '"' | ||
|  |   LINES TERMINATED BY '\n' (d1, d2); | ||
|  | 
 | ||
|  | --echo | ||
|  | DROP TABLE t1; | ||
|  | DROP VIEW v1; | ||
|  | DROP VIEW v2; | ||
|  | DROP VIEW v3; | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- End of Bug#35469. | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | ########################################################################### | ||
|  | 
 | ||
|  | # | ||
|  | # Bug#37114: sql_mode NO_BACKSLASH_ESCAPES does not work properly with | ||
|  | #            LOAD DATA INFILE | ||
|  | # | ||
|  | 
 | ||
|  | # - For each plain "SELECT id,...", the 1st pair ("before" SELECT...OUTFILE, | ||
|  | #   LOAD...INFILE) and the 2nd pair of lines ("after") in the result should | ||
|  | #   look the same, otherwise we broke the dumpe/restore cycle! | ||
|  | # | ||
|  | # - the \r is always { '\\', 'r' } in memory, but on-disk format changes | ||
|  | # | ||
|  | # - the \t is { '\t' } or { '\\', 't' } in memory depending on whether \ | ||
|  | #    is magic (that is, NO_BACKSLASH_ESCAPES is not set) at INSERT-time. | ||
|  | #    on-disk format varies. | ||
|  | # | ||
|  | # - while INFILE/OUTFILE behaviour changes according to NO_BACKSLASH_ESCAPES, | ||
|  | #   we can override these defaults using ESCAPED BY '...' | ||
|  | #   1:  NO_BACKSLASH_ESCAPES default,  \  on-disk:  \,t,x,\r | ||
|  | #   2:  NO_BACKSLASH_ESCAPES override, \\ on-disk:  \,\,t,x,\,\,r | ||
|  | #   3: !NO_BACKSLASH_ESCAPES default,  \\ on-disk:  tab,\,\,r | ||
|  | #   3: !NO_BACKSLASH_ESCAPES override, \  on-disk:  tab,\,r | ||
|  | 
 | ||
|  | --echo Bug#37114 | ||
|  | 
 | ||
|  | SET SESSION character_set_client=latin1; | ||
|  | SET SESSION character_set_server=latin1; | ||
|  | SET SESSION character_set_connection=latin1; | ||
|  | SET @OLD_SQL_MODE=@@SESSION.SQL_MODE; | ||
|  | 
 | ||
|  | # 0. test LOAD DATA INFILE first; if that works, all issues in | ||
|  | #    SELECT INTO OUTFILE / LOAD DATA INFILE cycles below are | ||
|  | #    arguably in the saving. | ||
|  | 
 | ||
|  | --echo test LOAD DATA INFILE | ||
|  | 
 | ||
|  | --let $file=$MYSQLTEST_VARDIR/tmp/bug37114.txt | ||
|  | --let $file2=$MYSQLTEST_VARDIR/tmp/bug37114_out.txt | ||
|  | 
 | ||
|  | SET sql_mode = ''; | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | --eval SELECT '1 \\\\aa\n' INTO DUMPFILE '$file' | ||
|  | 
 | ||
|  | CREATE TABLE t1 (id INT, val1 CHAR(3)) ENGINE=MyISAM; | ||
|  | 
 | ||
|  | SET sql_mode = 'NO_BACKSLASH_ESCAPES'; | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | --eval LOAD DATA INFILE '$file' REPLACE INTO TABLE t1 FIELDS TERMINATED BY ' ' | ||
|  | SELECT * FROM t1; | ||
|  | 
 | ||
|  | # show we can write this with OUTFILE, forcing the parameters for now | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | --eval SELECT * INTO OUTFILE '$file2' FIELDS ESCAPED BY '' TERMINATED BY ' ' FROM t1 | ||
|  | --diff_files $file $file2 | ||
|  | --remove_file $file2 | ||
|  | 
 | ||
|  | # now show the OUTFILE defaults are correct with NO_BACKSLASH_ESCAPES | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | --eval SELECT * INTO OUTFILE '$file2' FIELDS               TERMINATED BY ' ' FROM t1 | ||
|  | --diff_files $file $file2 | ||
|  | --remove_file $file2 | ||
|  | 
 | ||
|  | INSERT INTO t1 (id, val1) VALUES (1, '\aa'); | ||
|  | SELECT * FROM t1; | ||
|  | 
 | ||
|  | SET sql_mode=''; | ||
|  | INSERT INTO t1 (id, val1) VALUES (1, '\aa'); | ||
|  | SELECT * FROM t1; | ||
|  | 
 | ||
|  | DROP TABLE t1; | ||
|  | 
 | ||
|  | --remove_file $file | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | --echo test SELECT INTO OUTFILE | ||
|  | 
 | ||
|  | CREATE TABLE t1 (id INT PRIMARY KEY, val1 CHAR(4)); | ||
|  | CREATE TABLE t2 LIKE t1; | ||
|  | 
 | ||
|  | # 1. with NO_BACKSLASH_ESCAPES on | ||
|  | 
 | ||
|  | SET sql_mode = ''; | ||
|  | INSERT INTO t1 (id, val1) VALUES (5, '\ttab'); | ||
|  | INSERT INTO t1 (id, val1) VALUES (4, '\\r'); | ||
|  | SET sql_mode = 'NO_BACKSLASH_ESCAPES'; | ||
|  | INSERT INTO t1 (id, val1) VALUES (3, '\tx'); | ||
|  | 
 | ||
|  | --echo 1.1 NO_BACKSLASH_ESCAPES, use defaults for ESCAPED BY | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | --eval SELECT * INTO OUTFILE '$file' FIELDS TERMINATED BY ' ' FROM t1 ORDER BY id | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | --eval LOAD DATA INFILE '$file' INTO TABLE t2 FIELDS TERMINATED BY ' ' | ||
|  | 
 | ||
|  | SELECT 'before' AS t, id, val1, hex(val1) FROM t1 UNION | ||
|  |  SELECT 'after' AS t, id, val1, hex(val1) FROM t2 ORDER BY id,t DESC; | ||
|  | 
 | ||
|  | TRUNCATE t2; | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | eval SELECT LOAD_FILE("$file"); | ||
|  | --remove_file $file | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | --echo 1.2 NO_BACKSLASH_ESCAPES, override defaults for ESCAPED BY | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | --eval SELECT * INTO OUTFILE '$file' FIELDS ESCAPED BY '\' TERMINATED BY ' ' FROM t1 ORDER BY id | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | --eval LOAD DATA INFILE '$file' INTO TABLE t2 FIELDS ESCAPED BY '\' TERMINATED BY ' ' | ||
|  | 
 | ||
|  | SELECT 'before' AS t, id, val1, hex(val1) FROM t1 UNION | ||
|  |  SELECT 'after' AS t, id, val1, hex(val1) FROM t2 ORDER BY id,t DESC; | ||
|  | 
 | ||
|  | TRUNCATE t2; | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | eval SELECT LOAD_FILE("$file"); | ||
|  | --remove_file $file | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | # 2. with NO_BACKSLASH_ESCAPES off | ||
|  | 
 | ||
|  | SET sql_mode = ''; | ||
|  | 
 | ||
|  | --echo 2.1 !NO_BACKSLASH_ESCAPES, use defaults for ESCAPED BY | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | --eval SELECT * INTO OUTFILE '$file' FIELDS TERMINATED BY ' ' FROM t1 ORDER BY id | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | --eval LOAD DATA INFILE '$file' INTO TABLE t2 FIELDS TERMINATED BY ' ' | ||
|  | 
 | ||
|  | SELECT 'before' AS t, id, val1, hex(val1) FROM t1 UNION | ||
|  |  SELECT 'after' AS t, id, val1, hex(val1) FROM t2 ORDER BY id,t DESC; | ||
|  | 
 | ||
|  | TRUNCATE t2; | ||
|  | 
 | ||
|  | SET sql_mode = 'NO_BACKSLASH_ESCAPES'; | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | eval SELECT LOAD_FILE("$file"); | ||
|  | --remove_file $file | ||
|  | 
 | ||
|  | SET sql_mode = ''; | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | --echo 2.2 !NO_BACKSLASH_ESCAPES, override defaults for ESCAPED BY | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | --eval SELECT * INTO OUTFILE '$file' FIELDS ESCAPED BY '' TERMINATED BY ' ' FROM t1 ORDER BY id | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | --eval LOAD DATA INFILE '$file' INTO TABLE t2 FIELDS ESCAPED BY '' TERMINATED BY ' ' | ||
|  | 
 | ||
|  | SELECT 'before' AS t, id, val1, hex(val1) FROM t1 UNION | ||
|  |  SELECT 'after' AS t, id, val1, hex(val1) FROM t2 ORDER BY id,t DESC; | ||
|  | 
 | ||
|  | TRUNCATE t2; | ||
|  | 
 | ||
|  | SET sql_mode = 'NO_BACKSLASH_ESCAPES'; | ||
|  | 
 | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | eval SELECT LOAD_FILE("$file"); | ||
|  | --remove_file $file | ||
|  | 
 | ||
|  | # clean up | ||
|  | set session sql_mode=@OLD_SQL_MODE; | ||
|  | DROP TABLE t1,t2; | ||
|  | 
 | ||
|  | 
 | ||
|  | --echo # | ||
|  | --echo # Bug #51893: crash with certain characters given to load_file  | ||
|  | --echo #   function on windows | ||
|  | --echo # | ||
|  | 
 | ||
|  | select load_file(0x0A9FB76C661B409C4BEC88098C5DD71B1072F9691F2E827D7EC8F092B299868A3CE196C04F0FB18CAB4E1557EB72331D812379DE7A75CA21C32E7C722C59E5CC33EF262EF04187B0F0EE756FA984DF2EAD37B1E4ADB064C3C5038F2E3B2D661B1C1150AAEB5425512E14D7506166D92D4533872E662F4B2D1428AAB5CCA72E75AA2EF325E196A5A02E2E8278873C64375845994B0F39BE2FF7B478332A7B0AA5E48877C47B6F513E997848AF8CCB8A899F3393AB35333CF0871E36698193862D486B4B9078B70C0A0A507B8A250F3F876F5A067632D5E65193E4445A1EC3A2C9B4C6F07AC334F0F62BC33357CB502E9B1C19D2398B6972AEC2EF21630F8C9134C4F7DD662D8AD7BDC9E19C46720F334B66C22D4BF32ED275144E20E7669FFCF6FC143667C9F02A577F32960FA9F2371BE1FA90E49CBC69C01531F140556854D588DD0E55E1307D78CA38E975CD999F9AEA604266329EE62BFB5ADDA67F549E211ECFBA906C60063696352ABB82AA782D25B17E872EA587871F450446DB1BAE0123D20404A8F2D2698B371002E986C8FCB969A99FF0E150A2709E2ED7633D02ADA87D5B3C9487D27B2BD9D21E2EC3215DCC3CDCD884371281B95A2E9987AAF82EB499C058D9C3E7DC1B66635F60DB121C72F929622DD47B6B2E69F59FF2AE6B63CC2EC60FFBA20EA50569DBAB5DAEFAEB4F03966C9637AB55662EDD28439155A82D053A5299448EDB2E7BEB0F62889E2F84E6C7F34B3212C9AAC32D521D5AB8480993F1906D5450FAB342A0FA6ED223E178BAC036B81E15783604C32A961EA1EF20BE2EBB93D34ED37BC03142B7583303E4557E48551E4BD7CBDDEA146D5485A5D212C35189F0BD6497E66912D2780A59A53B532E12C0A5ED1EC0445D96E8F2DD825221CFE4A65A87AA21DC8750481B9849DD81694C3357A0ED9B78D608D8EDDE28FAFBEC17844DE5709F41E121838DB55639D77E32A259A416D7013B2EB1259FDE1B498CBB9CAEE1D601DF3C915EA91C69B44E6B72062F5F4B3C73F06F2D5AD185E1692E2E0A01E7DD5133693681C52EE13B2BE42D03BDCF48E4E133CF06662339B778E1C3034F9939A433E157449172F7969ACCE1F5D2F65A4E09E4A5D5611EBEDDDBDB0C0C0A); | ||
|  | 
 | ||
|  | 
 | ||
|  | --echo End of 5.0 tests | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | # | ||
|  | # Bug#12448 LOAD DATA / SELECT INTO OUTFILE | ||
|  | # doesn't work with multibyte path name | ||
|  | # | ||
|  | CREATE TABLE t1 (a int); | ||
|  | INSERT INTO t1 VALUES (1); | ||
|  | SET NAMES latin1; | ||
|  | SET character_set_filesystem=filename; | ||
|  | select @@character_set_filesystem; | ||
|  | SELECT * INTO OUTFILE 't-1' FROM t1; | ||
|  | DELETE FROM t1; | ||
|  | LOAD DATA INFILE 't-1' INTO TABLE t1; | ||
|  | SELECT * FROM t1; | ||
|  | DELETE FROM t1; | ||
|  | SET character_set_filesystem=latin1; | ||
|  | select @@character_set_filesystem; | ||
|  | LOAD DATA INFILE 't@002d1' INTO TABLE t1; | ||
|  | SELECT * FROM t1; | ||
|  | DROP TABLE t1; | ||
|  | let $MYSQLD_DATADIR= `select @@datadir`; | ||
|  | remove_file $MYSQLD_DATADIR/test/t@002d1; | ||
|  | SET character_set_filesystem=default; | ||
|  | select @@character_set_filesystem; | ||
|  | 
 | ||
|  | 
 | ||
|  | --echo # | ||
|  | --echo # Bug #51850: crash/memory overlap when using load data infile and set  | ||
|  | --echo #  col equal to itself! | ||
|  | --echo # | ||
|  | 
 | ||
|  | CREATE TABLE t1(col0 LONGBLOB); | ||
|  | SELECT 'test' INTO OUTFILE 't1.txt'; | ||
|  | LOAD DATA INFILE 't1.txt' IGNORE INTO TABLE t1 SET col0=col0; | ||
|  | SELECT * FROM t1; | ||
|  | 
 | ||
|  | DROP TABLE t1; | ||
|  | let $MYSQLD_DATADIR= `select @@datadir`; | ||
|  | remove_file $MYSQLD_DATADIR/test/t1.txt; | ||
|  | 
 | ||
|  | 
 | ||
|  | --echo # | ||
|  | --echo # Bug #52512 : Assertion `! is_set()' in  | ||
|  | --echo #  Diagnostics_area::set_ok_status on LOAD DATA | ||
|  | --echo # | ||
|  | 
 | ||
|  | connect (con1,localhost,root,,test); | ||
|  | 
 | ||
|  | CREATE TABLE t1 (id INT NOT NULL); | ||
|  | --send LOAD DATA LOCAL INFILE 'tb.txt' INTO TABLE t1 | ||
|  | # please keep this is a spearate test file : it's important to have no | ||
|  | # commands after this one | ||
|  | 
 | ||
|  | connection default; | ||
|  | dirty_close con1; | ||
|  | 
 | ||
|  | connect (con1,localhost,root,,test); | ||
|  | DROP TABLE t1; | ||
|  | connection default; | ||
|  | disconnect con1; | ||
|  | 
 | ||
|  | ############################################################################# | ||
|  | #           The below protion is moved to ctype_ucs.test                    # | ||
|  | ############################################################################# | ||
|  | #--echo # | ||
|  | #--echo # Bug #51876 : crash/memory underrun when loading data with ucs2  | ||
|  | #--echo #   and reverse() function | ||
|  | #--echo # | ||
|  | 
 | ||
|  | #--echo # Problem # 1 (original report): wrong parsing of ucs2 data | ||
|  | #SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp.txt'; | ||
|  | #CREATE TABLE t1(a INT); | ||
|  | #LOAD DATA INFILE 'tmpp.txt' INTO TABLE t1 CHARACTER SET ucs2 | ||
|  | #(@b) SET a=REVERSE(@b); | ||
|  | #--echo # should return 2 zeroes (as the value is truncated) | ||
|  | #SELECT * FROM t1; | ||
|  | 
 | ||
|  | #DROP TABLE t1; | ||
|  | #let $MYSQLD_DATADIR= `select @@datadir`; | ||
|  | #remove_file $MYSQLD_DATADIR/test/tmpp.txt; | ||
|  | 
 | ||
|  | 
 | ||
|  | #--echo # Problem # 2 : if you write and read ucs2 data to a file they're lost | ||
|  | #SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp2.txt' CHARACTER SET ucs2; | ||
|  | #CREATE TABLE t1(a INT); | ||
|  | #LOAD DATA INFILE 'tmpp2.txt' INTO TABLE t1 CHARACTER SET ucs2 | ||
|  | #(@b) SET a=REVERSE(@b); | ||
|  | #--echo # should return 0 and 1 (10 reversed) | ||
|  | #SELECT * FROM t1; | ||
|  | 
 | ||
|  | #DROP TABLE t1; | ||
|  | #let $MYSQLD_DATADIR= `select @@datadir`; | ||
|  | #remove_file $MYSQLD_DATADIR/test/tmpp2.txt; | ||
|  | ###################################################################################### | ||
|  | 
 | ||
|  | 
 | ||
|  | --echo # | ||
|  | --echo # Bug#11765139  58069: LOAD DATA INFILE: VALGRIND REPORTS INVALID MEMORY READS AND WRITES WITH U | ||
|  | --echo # | ||
|  | 
 | ||
|  | CREATE TABLE t1(f1 INT); | ||
|  | EVAL SELECT 0xE1BB30 INTO OUTFILE 't1.dat'; | ||
|  | --disable_warnings | ||
|  | LOAD DATA INFILE 't1.dat' IGNORE INTO TABLE t1 CHARACTER SET utf8; | ||
|  | --enable_warnings | ||
|  | 
 | ||
|  | DROP TABLE t1; | ||
|  | let $MYSQLD_DATADIR= `select @@datadir`; | ||
|  | remove_file $MYSQLD_DATADIR/test/t1.dat; | ||
|  | 
 | ||
|  | --echo # | ||
|  | --echo # Bug#11765141 - 58072: LOAD DATA INFILE: LEAKS IO CACHE MEMORY | ||
|  | --echo # WHEN ERROR OCCURS | ||
|  | --echo # | ||
|  | 
 | ||
|  | --let $file=$MYSQLTEST_VARDIR/tmp/bug11735141.txt | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | --eval SELECT '1\n' INTO DUMPFILE '$file' | ||
|  | 
 | ||
|  | create table t1(a point); | ||
|  | --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR | ||
|  | --error ER_CANT_CREATE_GEOMETRY_OBJECT | ||
|  | --eval LOAD DATA INFILE '$file' INTO TABLE t1 | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | --echo End of 5.1 tests |