summaryrefslogtreecommitdiff
path: root/sql/sql_class.cc
diff options
context:
space:
mode:
authorunknown <gshchepa/uchum@gleb.loc>2007-07-04 02:09:56 +0500
committerunknown <gshchepa/uchum@gleb.loc>2007-07-04 02:09:56 +0500
commitc700a77623b790bf373795c80ac22cdced3a4076 (patch)
tree300828c93ebcb6bfe0b1e0304f1ab84659ed7f7c /sql/sql_class.cc
parent81194444f81b60f1bb4a6c58f676f26c267660eb (diff)
parentf57e4b99e794ef14a845fd4e73ccd1eb6a90d459 (diff)
downloadmariadb-git-c700a77623b790bf373795c80ac22cdced3a4076.tar.gz
Merge gleb.loc:/home/uchum/work/bk/4.1-opt
into gleb.loc:/home/uchum/work/bk/5.0-opt sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_load.cc: Auto merged mysql-test/r/loaddata.result: Merge with 4.1-opt. mysql-test/t/loaddata.test: Merge with 4.1-opt.
Diffstat (limited to 'sql/sql_class.cc')
-rw-r--r--sql/sql_class.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 788026d2f67..117c20352ce 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -1209,6 +1209,7 @@ select_export::prepare(List<Item> &list, SELECT_LEX_UNIT *u)
field_sep_char= (exchange->enclosed->length() ? (*exchange->enclosed)[0] :
field_term_length ? (*exchange->field_term)[0] : INT_MAX);
escape_char= (exchange->escaped->length() ? (*exchange->escaped)[0] : -1);
+ is_ambiguous_field_sep= test(strchr(ESCAPE_CHARS, field_sep_char));
line_sep_char= (exchange->line_term->length() ?
(*exchange->line_term)[0] : INT_MAX);
if (!field_term_length)
@@ -1349,7 +1350,9 @@ bool select_export::send_data(List<Item> &items)
NEED_ESCAPING(pos[1])))
{
char tmp_buff[2];
- tmp_buff[0]= escape_char;
+ tmp_buff[0]= ((int) *pos == field_sep_char &&
+ is_ambiguous_field_sep) ?
+ field_sep_char : escape_char;
tmp_buff[1]= *pos ? *pos : '0';
if (my_b_write(&cache,(byte*) start,(uint) (pos-start)) ||
my_b_write(&cache,(byte*) tmp_buff,2))