Loading mysql-test/r/outfile.result 0 → 100644 +10 −0 Original line number Diff line number Diff line drop table if exists t1; CREATE TABLE t1 (a INT); EXPLAIN SELECT * INTO OUTFILE '/tmp/t1.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' FROM t1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found DROP TABLE t1; mysql-test/t/outfile.test +16 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,10 @@ # test of into outfile|dumpfile # --disable_warnings drop table if exists t1; --enable_warnings # We need to check that we have 'file' privilege. #drop table if exists t1; Loading @@ -26,3 +30,15 @@ #INSERT INTO t VALUES ('2002-12-20 12:01:20','',1,"aaa","bbb"); #select * from t into outfile "check"; #drop table if exists t; # # Bug #5382: 'explain select into outfile' crashes the server # CREATE TABLE t1 (a INT); EXPLAIN SELECT * INTO OUTFILE '/tmp/t1.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' FROM t1; DROP TABLE t1; sql/sql_yacc.yy +37 −17 Original line number Diff line number Diff line Loading @@ -3871,14 +3871,10 @@ into: INTO OUTFILE TEXT_STRING_sys { LEX *lex= Lex; if (!lex->describe) { lex->uncacheable(UNCACHEABLE_SIDEEFFECT); if (!(lex->exchange= new sql_exchange($3.str,0))) if (!(lex->exchange= new sql_exchange($3.str, 0)) || !(lex->result= new select_export(lex->exchange))) YYABORT; if (!(lex->result= new select_export(lex->exchange))) YYABORT; } } opt_field_term opt_line_term | INTO DUMPFILE TEXT_STRING_sys Loading Loading @@ -4721,15 +4717,28 @@ field_term_list: | field_term; field_term: TERMINATED BY text_string { Lex->exchange->field_term= $3;} TERMINATED BY text_string { DBUG_ASSERT(Lex->exchange); Lex->exchange->field_term= $3; } | OPTIONALLY ENCLOSED BY text_string { LEX *lex= Lex; DBUG_ASSERT(lex->exchange); lex->exchange->enclosed= $4; lex->exchange->opt_enclosed= 1; } | ENCLOSED BY text_string { Lex->exchange->enclosed= $3;} | ESCAPED BY text_string { Lex->exchange->escaped= $3;}; | ENCLOSED BY text_string { DBUG_ASSERT(Lex->exchange); Lex->exchange->enclosed= $3; } | ESCAPED BY text_string { DBUG_ASSERT(Lex->exchange); Lex->exchange->escaped= $3; }; opt_line_term: /* empty */ Loading @@ -4740,13 +4749,24 @@ line_term_list: | line_term; line_term: TERMINATED BY text_string { Lex->exchange->line_term= $3;} | STARTING BY text_string { Lex->exchange->line_start= $3;}; TERMINATED BY text_string { DBUG_ASSERT(Lex->exchange); Lex->exchange->line_term= $3; } | STARTING BY text_string { DBUG_ASSERT(Lex->exchange); Lex->exchange->line_start= $3; }; opt_ignore_lines: /* empty */ | IGNORE_SYM NUM LINES { Lex->exchange->skip_lines=atol($2.str); }; { DBUG_ASSERT(Lex->exchange); Lex->exchange->skip_lines= atol($2.str); }; /* Common definitions */ Loading Loading
mysql-test/r/outfile.result 0 → 100644 +10 −0 Original line number Diff line number Diff line drop table if exists t1; CREATE TABLE t1 (a INT); EXPLAIN SELECT * INTO OUTFILE '/tmp/t1.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' FROM t1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found DROP TABLE t1;
mysql-test/t/outfile.test +16 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,10 @@ # test of into outfile|dumpfile # --disable_warnings drop table if exists t1; --enable_warnings # We need to check that we have 'file' privilege. #drop table if exists t1; Loading @@ -26,3 +30,15 @@ #INSERT INTO t VALUES ('2002-12-20 12:01:20','',1,"aaa","bbb"); #select * from t into outfile "check"; #drop table if exists t; # # Bug #5382: 'explain select into outfile' crashes the server # CREATE TABLE t1 (a INT); EXPLAIN SELECT * INTO OUTFILE '/tmp/t1.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' FROM t1; DROP TABLE t1;
sql/sql_yacc.yy +37 −17 Original line number Diff line number Diff line Loading @@ -3871,14 +3871,10 @@ into: INTO OUTFILE TEXT_STRING_sys { LEX *lex= Lex; if (!lex->describe) { lex->uncacheable(UNCACHEABLE_SIDEEFFECT); if (!(lex->exchange= new sql_exchange($3.str,0))) if (!(lex->exchange= new sql_exchange($3.str, 0)) || !(lex->result= new select_export(lex->exchange))) YYABORT; if (!(lex->result= new select_export(lex->exchange))) YYABORT; } } opt_field_term opt_line_term | INTO DUMPFILE TEXT_STRING_sys Loading Loading @@ -4721,15 +4717,28 @@ field_term_list: | field_term; field_term: TERMINATED BY text_string { Lex->exchange->field_term= $3;} TERMINATED BY text_string { DBUG_ASSERT(Lex->exchange); Lex->exchange->field_term= $3; } | OPTIONALLY ENCLOSED BY text_string { LEX *lex= Lex; DBUG_ASSERT(lex->exchange); lex->exchange->enclosed= $4; lex->exchange->opt_enclosed= 1; } | ENCLOSED BY text_string { Lex->exchange->enclosed= $3;} | ESCAPED BY text_string { Lex->exchange->escaped= $3;}; | ENCLOSED BY text_string { DBUG_ASSERT(Lex->exchange); Lex->exchange->enclosed= $3; } | ESCAPED BY text_string { DBUG_ASSERT(Lex->exchange); Lex->exchange->escaped= $3; }; opt_line_term: /* empty */ Loading @@ -4740,13 +4749,24 @@ line_term_list: | line_term; line_term: TERMINATED BY text_string { Lex->exchange->line_term= $3;} | STARTING BY text_string { Lex->exchange->line_start= $3;}; TERMINATED BY text_string { DBUG_ASSERT(Lex->exchange); Lex->exchange->line_term= $3; } | STARTING BY text_string { DBUG_ASSERT(Lex->exchange); Lex->exchange->line_start= $3; }; opt_ignore_lines: /* empty */ | IGNORE_SYM NUM LINES { Lex->exchange->skip_lines=atol($2.str); }; { DBUG_ASSERT(Lex->exchange); Lex->exchange->skip_lines= atol($2.str); }; /* Common definitions */ Loading