summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <jimw@mysql.com>2005-02-07 12:20:08 -0800
committerunknown <jimw@mysql.com>2005-02-07 12:20:08 -0800
commit7814366660c9dc5fa210e4b74d837aa87da1488e (patch)
tree540f7542464f7ded08389366a486a1f19a89c986
parent9c99d6b267944f2282469c793426057cb9eddba8 (diff)
parent3443fdf954dbe604db66386711ba3e36116beba0 (diff)
downloadmariadb-git-7814366660c9dc5fa210e4b74d837aa87da1488e.tar.gz
Merge mysql.com:/home/jimw/my/mysql-5.0-6368
into mysql.com:/home/jimw/my/mysql-5.0-clean sql/sql_lex.cc: Auto merged
-rw-r--r--mysql-test/r/sql_mode.result14
-rw-r--r--mysql-test/t/sql_mode.test10
-rw-r--r--sql/sql_lex.cc3
3 files changed, 26 insertions, 1 deletions
diff --git a/mysql-test/r/sql_mode.result b/mysql-test/r/sql_mode.result
index 5492a7a65fc..09adc48259c 100644
--- a/mysql-test/r/sql_mode.result
+++ b/mysql-test/r/sql_mode.result
@@ -386,4 +386,18 @@ p mask example
20 \\\\% \\\\%
20 \\\\% \\\\_
DROP TABLE t1;
+SET @@SQL_MODE='NO_BACKSLASH_ESCAPES';
+SELECT 'a\\b', 'a\\\"b', 'a''\\b', 'a''\\\"b';
+a\\b a\\\"b a'\\b a'\\\"b
+a\\b a\\\"b a'\\b a'\\\"b
+SELECT "a\\b", "a\\\'b", "a""\\b", "a""\\\'b";
+a\\b a\\\'b a"\\b a"\\\'b
+a\\b a\\\'b a"\\b a"\\\'b
+SET @@SQL_MODE='';
+SELECT 'a\\b', 'a\\\"b', 'a''\\b', 'a''\\\"b';
+a\b a\"b a'\b a'\"b
+a\b a\"b a'\b a'\"b
+SELECT "a\\b", "a\\\'b", "a""\\b", "a""\\\'b";
+a\b a\'b a"\b a"\'b
+a\b a\'b a"\b a"\'b
SET @@SQL_MODE=@OLD_SQL_MODE;
diff --git a/mysql-test/t/sql_mode.test b/mysql-test/t/sql_mode.test
index fa5c6cb8a5b..e80752eb71b 100644
--- a/mysql-test/t/sql_mode.test
+++ b/mysql-test/t/sql_mode.test
@@ -174,4 +174,14 @@ order by masks.p, example;
DROP TABLE t1;
+# Bug #6368: Make sure backslashes mixed with doubled quotes are handled
+# correctly in NO_BACKSLASH_ESCAPES mode
+SET @@SQL_MODE='NO_BACKSLASH_ESCAPES';
+SELECT 'a\\b', 'a\\\"b', 'a''\\b', 'a''\\\"b';
+SELECT "a\\b", "a\\\'b", "a""\\b", "a""\\\'b";
+
+SET @@SQL_MODE='';
+SELECT 'a\\b', 'a\\\"b', 'a''\\b', 'a''\\\"b';
+SELECT "a\\b", "a\\\'b", "a""\\b", "a""\\\'b";
+
SET @@SQL_MODE=@OLD_SQL_MODE;
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index 0644ca5af68..b8c77a822c4 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -337,7 +337,8 @@ static char *get_text(LEX *lex)
continue;
}
#endif
- if (*str == '\\' && str+1 != end)
+ if (!(lex->thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) &&
+ *str == '\\' && str+1 != end)
{
switch(*++str) {
case 'n':