mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug #55413 mysqltest gives parse error for lines matching "^let.*\\.*;$"
Allow escaped quotes also in statements not starting with -- But will not support single unescaped ' or `
This commit is contained in:
@ -5507,6 +5507,8 @@ int read_line(char *buf, int size)
|
|||||||
char c, UNINIT_VAR(last_quote);
|
char c, UNINIT_VAR(last_quote);
|
||||||
char *p= buf, *buf_end= buf + size - 1;
|
char *p= buf, *buf_end= buf + size - 1;
|
||||||
int skip_char= 0;
|
int skip_char= 0;
|
||||||
|
my_bool have_slash= FALSE;
|
||||||
|
|
||||||
enum {R_NORMAL, R_Q, R_SLASH_IN_Q,
|
enum {R_NORMAL, R_Q, R_SLASH_IN_Q,
|
||||||
R_COMMENT, R_LINE_START} state= R_LINE_START;
|
R_COMMENT, R_LINE_START} state= R_LINE_START;
|
||||||
DBUG_ENTER("read_line");
|
DBUG_ENTER("read_line");
|
||||||
@ -5578,9 +5580,13 @@ int read_line(char *buf, int size)
|
|||||||
}
|
}
|
||||||
else if (c == '\'' || c == '"' || c == '`')
|
else if (c == '\'' || c == '"' || c == '`')
|
||||||
{
|
{
|
||||||
last_quote= c;
|
if (! have_slash)
|
||||||
state= R_Q;
|
{
|
||||||
|
last_quote= c;
|
||||||
|
state= R_Q;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
have_slash= (c == '\\');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case R_COMMENT:
|
case R_COMMENT:
|
||||||
|
@ -262,6 +262,9 @@ a long \$where variable content
|
|||||||
|
|
||||||
banana = banana
|
banana = banana
|
||||||
Not a banana: ba\$cat\$cat
|
Not a banana: ba\$cat\$cat
|
||||||
|
with\`some"escaped\'quotes
|
||||||
|
with\`some"escaped\'quotes
|
||||||
|
single'tick`backtick
|
||||||
mysqltest: At line 1: Missing arguments to let
|
mysqltest: At line 1: Missing arguments to let
|
||||||
mysqltest: At line 1: Missing variable name in let
|
mysqltest: At line 1: Missing variable name in let
|
||||||
mysqltest: At line 1: Missing assignment operator in let
|
mysqltest: At line 1: Missing assignment operator in let
|
||||||
|
@ -701,6 +701,16 @@ echo banana = $cat;
|
|||||||
let $cat=ba\\\$cat\\\$cat;
|
let $cat=ba\\\$cat\\\$cat;
|
||||||
echo Not a banana: $cat;
|
echo Not a banana: $cat;
|
||||||
|
|
||||||
|
# Bug #55413 would cause this to fail
|
||||||
|
let $escape= with\`some\"escaped\'quotes;
|
||||||
|
echo $escape;
|
||||||
|
|
||||||
|
--let $escape= with\`some\"escaped\'quotes
|
||||||
|
echo $escape;
|
||||||
|
|
||||||
|
# This only works with "--let" syntax
|
||||||
|
--let $tick= single'tick`backtick
|
||||||
|
echo $tick;
|
||||||
|
|
||||||
# Test illegal uses of let
|
# Test illegal uses of let
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user