Commit 2750dc87 authored by unknown's avatar unknown
Browse files

Merge mysql.com:/home/jimw/my/mysql-4.1-11203

into  mysql.com:/home/jimw/my/mysql-4.1-clean


sql/sql_load.cc:
  Auto merged
mysql-test/r/loaddata.result:
  Resolve conflict
mysql-test/t/loaddata.test:
  Resolve conflict
parents 07fa475e c686f699
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -76,3 +76,11 @@ select * from t1;
id
0
SET @@SQL_MODE=@OLD_SQL_MODE;
create table t1 (a varchar(20), b varchar(20));
load data infile '../../std_data/loaddata5.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;
+3 −0
Original line number Diff line number Diff line
"field1","field2"
"a""b","cd""ef"
"a"b",c"d"e
+9 −1
Original line number Diff line number Diff line
@@ -31,7 +31,6 @@ load data infile '../../std_data/loaddata4.dat' into table t1 fields terminated
select * from t1;
drop table t1;


#
# Bug #12053 LOAD DATA INFILE ignores NO_AUTO_VALUE_ON_ZERO setting
#
@@ -58,4 +57,13 @@ select * from t1;
--exec rm $MYSQL_TEST_DIR/var/tmp/t1
SET @@SQL_MODE=@OLD_SQL_MODE;

#
# 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/loaddata5.dat' into table t1 fields terminated by ',' enclosed by '"' escaped by '"' (a,b);
select * from t1;
drop table t1;

# End of 4.1 tests
+17 −2
Original line number Diff line number Diff line
@@ -806,9 +806,24 @@ int READ_INFO::read_field()
	  *to++= (byte) escape_char;
	  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);
          continue;
        }
        else
        {
          PUSH(chr);
          chr= escape_char;
        }
      }
#ifdef ALLOW_LINESEPARATOR_IN_STRINGS
      if (chr == line_term_char)
#else