summaryrefslogtreecommitdiff
path: root/sql/sql_load.cc
diff options
context:
space:
mode:
authorunknown <jimw@mysql.com>2005-10-21 17:57:51 -0700
committerunknown <jimw@mysql.com>2005-10-21 17:57:51 -0700
commit2750dc8766017ddc6cbb13d25198df4477eb2a14 (patch)
treecea4796a7b3ab7f6b02ae382afb690e76669aa80 /sql/sql_load.cc
parent07fa475e26e47cc32e4225d1684e877ed19236b3 (diff)
parentc686f699b22c8ff7f3f9f2a6f550cdcb23db4793 (diff)
downloadmariadb-git-2750dc8766017ddc6cbb13d25198df4477eb2a14.tar.gz
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
Diffstat (limited to 'sql/sql_load.cc')
-rw-r--r--sql/sql_load.cc19
1 files changed, 17 insertions, 2 deletions
diff --git a/sql/sql_load.cc b/sql/sql_load.cc
index 4d09da70ef7..3b7c6608aef 100644
--- a/sql/sql_load.cc
+++ b/sql/sql_load.cc
@@ -806,8 +806,23 @@ int READ_INFO::read_field()
*to++= (byte) escape_char;
goto found_eof;
}
- *to++ = (byte) unescape((char) chr);
- continue;
+ /*
+ 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)