Commit 305b58b8 authored by jimw@mysql.com's avatar jimw@mysql.com

Merge bk-internal:/home/bk/mysql-5.0

into  mysql.com:/home/jimw/my/mysql-5.0-clean
parents ff6cfe6d 607c1297
...@@ -77,6 +77,14 @@ id ...@@ -77,6 +77,14 @@ id
0 0
SET @@SQL_MODE=@OLD_SQL_MODE; SET @@SQL_MODE=@OLD_SQL_MODE;
drop table t1; drop table t1;
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;
a b
field1 field2
a"b cd"ef
a"b c"d"e
drop table t1;
create table t1 (a int default 100, b int, c varchar(60)); create table t1 (a int default 100, b int, c varchar(60));
load data infile '../../std_data/rpl_loaddata.dat' into table t1 (a, @b) set b=@b+10, c=concat("b=",@b); load data infile '../../std_data/rpl_loaddata.dat' into table t1 (a, @b) set b=@b+10, c=concat("b=",@b);
select * from t1; select * from t1;
......
"field1","field2"
"a""b","cd""ef"
"a"b",c"d"e
...@@ -31,7 +31,6 @@ load data infile '../../std_data/loaddata4.dat' into table t1 fields terminated ...@@ -31,7 +31,6 @@ load data infile '../../std_data/loaddata4.dat' into table t1 fields terminated
select * from t1; select * from t1;
drop table t1; drop table t1;
# #
# Bug #12053 LOAD DATA INFILE ignores NO_AUTO_VALUE_ON_ZERO setting # Bug #12053 LOAD DATA INFILE ignores NO_AUTO_VALUE_ON_ZERO setting
# #
...@@ -59,6 +58,15 @@ select * from t1; ...@@ -59,6 +58,15 @@ select * from t1;
SET @@SQL_MODE=@OLD_SQL_MODE; SET @@SQL_MODE=@OLD_SQL_MODE;
drop table t1; 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;
# End of 4.1 tests # End of 4.1 tests
# #
...@@ -104,3 +112,5 @@ select * from t1; ...@@ -104,3 +112,5 @@ select * from t1;
# cleanup # cleanup
drop table t1, t2; drop table t1, t2;
# End of 5.0 tests
...@@ -3248,7 +3248,7 @@ bool Item_field::fix_fields(THD *thd, Item **reference) ...@@ -3248,7 +3248,7 @@ bool Item_field::fix_fields(THD *thd, Item **reference)
Item** res= find_item_in_list(this, thd->lex->current_select->item_list, Item** res= find_item_in_list(this, thd->lex->current_select->item_list,
&counter, REPORT_EXCEPT_NOT_FOUND, &counter, REPORT_EXCEPT_NOT_FOUND,
&not_used); &not_used);
if (res != not_found_item && (*res)->type() == Item::FIELD_ITEM) if (res != (Item **)not_found_item && (*res)->type() == Item::FIELD_ITEM)
{ {
set_field((*((Item_field**)res))->field); set_field((*((Item_field**)res))->field);
return 0; return 0;
......
...@@ -1014,9 +1014,24 @@ int READ_INFO::read_field() ...@@ -1014,9 +1014,24 @@ int READ_INFO::read_field()
*to++= (byte) escape_char; *to++= (byte) escape_char;
goto found_eof; goto found_eof;
} }
/*
When escape_char == enclosed_char, we treat it like we do for
handling quotes in SQL parsing -- you can double-up the
escape_char to include it literally, but it doesn't do escapes
like \n. This allows: LOAD DATA ... ENCLOSED BY '"' ESCAPED BY '"'
with data like: "fie""ld1", "field2"
*/
if (escape_char != enclosed_char || chr == escape_char)
{
*to++ = (byte) unescape((char) chr); *to++ = (byte) unescape((char) chr);
continue; continue;
} }
else
{
PUSH(chr);
chr= escape_char;
}
}
#ifdef ALLOW_LINESEPARATOR_IN_STRINGS #ifdef ALLOW_LINESEPARATOR_IN_STRINGS
if (chr == line_term_char) if (chr == line_term_char)
#else #else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment