diff options
author | Tatiana A. Nurnberg <azundris@mysql.com> | 2008-09-17 14:54:50 +0200 |
---|---|---|
committer | Tatiana A. Nurnberg <azundris@mysql.com> | 2008-09-17 14:54:50 +0200 |
commit | f90e4c3758c31f99ffaf6fec11a9cc65a812caea (patch) | |
tree | 49f6b211ce77a9af52efb3e05f72bcea1ac12b50 /sql | |
parent | a7bc87b39c7b8333ceda607bede4bb887e0f1bdb (diff) | |
parent | a89d13a7f04c3d2d887b85dc35e0f4089f7e763d (diff) | |
download | mariadb-git-f90e4c3758c31f99ffaf6fec11a9cc65a812caea.tar.gz |
auto-merge
Diffstat (limited to 'sql')
-rw-r--r-- | sql/sql_class.cc | 13 | ||||
-rw-r--r-- | sql/sql_class.h | 1 | ||||
-rw-r--r-- | sql/sql_load.cc | 4 |
3 files changed, 15 insertions, 3 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 6f682368334..c4a4312ad85 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1481,6 +1481,12 @@ sql_exchange::sql_exchange(char *name,bool flag) cs= NULL; } +bool sql_exchange::escaped_given(void) +{ + return escaped != &default_escaped; +} + + bool select_send::send_fields(List<Item> &list, uint flags) { bool res; @@ -1766,8 +1772,11 @@ select_export::prepare(List<Item> &list, SELECT_LEX_UNIT *u) exchange->line_term=exchange->field_term; // Use this if it exists field_sep_char= (exchange->enclosed->length() ? (int) (uchar) (*exchange->enclosed)[0] : field_term_char); - escape_char= (exchange->escaped->length() ? - (int) (uchar) (*exchange->escaped)[0] : -1); + if (exchange->escaped->length() && (exchange->escaped_given() || + !(thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES))) + escape_char= (int) (uchar) (*exchange->escaped)[0]; + else + escape_char= -1; is_ambiguous_field_sep= test(strchr(ESCAPE_CHARS, field_sep_char)); is_unsafe_field_sep= test(strchr(NUMERIC_CHARS, field_sep_char)); line_sep_char= (exchange->line_term->length() ? diff --git a/sql/sql_class.h b/sql/sql_class.h index 019699dff5a..60051ed02cc 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -2250,6 +2250,7 @@ public: ulong skip_lines; CHARSET_INFO *cs; sql_exchange(char *name,bool dumpfile_flag); + bool escaped_given(void); }; #include "log_event.h" diff --git a/sql/sql_load.cc b/sql/sql_load.cc index 255d8e5813d..239fb1d49f3 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -327,7 +327,9 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, bzero((char*) &info,sizeof(info)); info.ignore= ignore; info.handle_duplicates=handle_duplicates; - info.escape_char=escaped->length() ? (*escaped)[0] : INT_MAX; + info.escape_char= (escaped->length() && (ex->escaped_given() || + !(thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES))) + ? (*escaped)[0] : INT_MAX; READ_INFO read_info(file,tot_length, ex->cs ? ex->cs : thd->variables.collation_database, |