mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 02:30:06 +01:00
MDEV-13187 incorrect backslash parsing in clients
don't do backslash escapes inside backticks
This commit is contained in:
parent
ded614d7db
commit
39385ff7b2
4 changed files with 47 additions and 4 deletions
|
@ -2287,8 +2287,8 @@ static bool add_line(String &buffer, char *line, ulong line_length,
|
|||
continue;
|
||||
}
|
||||
#endif
|
||||
if (!*ml_comment && inchar == '\\' &&
|
||||
!(*in_string &&
|
||||
if (!*ml_comment && inchar == '\\' && *in_string != '`' &&
|
||||
!(*in_string &&
|
||||
(mysql.server_status & SERVER_STATUS_NO_BACKSLASH_ESCAPES)))
|
||||
{
|
||||
// Found possbile one character command like \c
|
||||
|
|
|
@ -6594,7 +6594,7 @@ int read_line(char *buf, int size)
|
|||
state= R_Q;
|
||||
}
|
||||
}
|
||||
have_slash= (c == '\\');
|
||||
have_slash= (c == '\\' && last_quote != '`');
|
||||
break;
|
||||
|
||||
case R_COMMENT:
|
||||
|
@ -6664,7 +6664,7 @@ int read_line(char *buf, int size)
|
|||
case R_Q:
|
||||
if (c == last_quote)
|
||||
state= R_NORMAL;
|
||||
else if (c == '\\')
|
||||
else if (c == '\\' && last_quote != '`')
|
||||
state= R_SLASH_IN_Q;
|
||||
break;
|
||||
|
||||
|
|
|
@ -529,3 +529,31 @@ a
|
|||
+-------------------+
|
||||
|
||||
End of tests
|
||||
create table `a1\``b1` (a int);
|
||||
show tables;
|
||||
Tables_in_test
|
||||
a1\`b1
|
||||
insert `a1\``b1` values (1),(2);
|
||||
show create table `a1\``b1`;
|
||||
Table Create Table
|
||||
a1\`b1 CREATE TABLE `a1\``b1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `a1\``b1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
INSERT INTO `a1\``b1` VALUES (1),(2);
|
||||
insert `a1\``b1` values (4),(5);
|
||||
show create table `a1\``b1`;
|
||||
Table Create Table
|
||||
a1\`b1 CREATE TABLE `a1\``b1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
select * from `a1\``b1`;
|
||||
a
|
||||
1
|
||||
2
|
||||
drop table `a1\``b1`;
|
||||
|
|
|
@ -618,3 +618,18 @@ EOF
|
|||
|
||||
--echo
|
||||
--echo End of tests
|
||||
|
||||
#
|
||||
# MDEV-13187 incorrect backslash parsing in clients
|
||||
#
|
||||
create table `a1\``b1` (a int);
|
||||
show tables;
|
||||
insert `a1\``b1` values (1),(2);
|
||||
show create table `a1\``b1`;
|
||||
--exec $MYSQL_DUMP --compact test
|
||||
--exec $MYSQL_DUMP test > $MYSQLTEST_VARDIR/tmp/bug.sql
|
||||
insert `a1\``b1` values (4),(5);
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/bug.sql
|
||||
show create table `a1\``b1`;
|
||||
select * from `a1\``b1`;
|
||||
drop table `a1\``b1`;
|
||||
|
|
Loading…
Add table
Reference in a new issue