mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge polly.(none):/home/kaa/src/bug30164/my50-bug30164
into polly.(none):/home/kaa/src/bug30164/my51-bug30164
This commit is contained in:
@ -1261,6 +1261,7 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
||||
char buff[80], *pos, *out;
|
||||
COMMANDS *com;
|
||||
bool need_space= 0;
|
||||
bool ss_comment= 0;
|
||||
DBUG_ENTER("add_line");
|
||||
|
||||
if (!line[0] && buffer.is_empty())
|
||||
@ -1314,6 +1315,19 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
||||
if ((*com->func)(&buffer,pos-1) > 0)
|
||||
DBUG_RETURN(1); // Quit
|
||||
if (com->takes_params)
|
||||
{
|
||||
if (ss_comment)
|
||||
{
|
||||
/*
|
||||
If a client-side macro appears inside a server-side comment,
|
||||
discard all characters in the comment after the macro (that is,
|
||||
until the end of the comment rather than the next delimiter)
|
||||
*/
|
||||
for (pos++; *pos && (*pos != '*' || *(pos + 1) != '/'); pos++)
|
||||
;
|
||||
pos--;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (pos++ ;
|
||||
*pos && (*pos != *delimiter ||
|
||||
@ -1324,6 +1338,7 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
||||
else
|
||||
pos+= delimiter_length - 1; // Point at last delim char
|
||||
}
|
||||
}
|
||||
out=line;
|
||||
}
|
||||
else
|
||||
@ -1384,7 +1399,7 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
||||
out=line;
|
||||
}
|
||||
}
|
||||
else if (*ml_comment && inchar == '*' && *(pos + 1) == '/')
|
||||
else if (*ml_comment && !ss_comment && inchar == '*' && *(pos + 1) == '/')
|
||||
{
|
||||
pos++;
|
||||
*ml_comment= 0;
|
||||
@ -1392,6 +1407,11 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
||||
}
|
||||
else
|
||||
{ // Add found char to buffer
|
||||
if (!*in_string && inchar == '/' && *(pos + 1) == '*' &&
|
||||
*(pos + 2) == '!')
|
||||
ss_comment= 1;
|
||||
else if (!*in_string && ss_comment && inchar == '*' && *(pos + 1) == '/')
|
||||
ss_comment= 0;
|
||||
if (inchar == *in_string)
|
||||
*in_string= 0;
|
||||
else if (!*ml_comment && !*in_string &&
|
||||
|
@ -176,5 +176,7 @@ ERROR at line 1: DELIMITER cannot contain a backslash character
|
||||
ERROR at line 1: DELIMITER cannot contain a backslash character
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
End of 5.0 tests
|
||||
WARNING: --server-arg option not supported in this configuration.
|
||||
|
@ -274,6 +274,11 @@ EOF
|
||||
--exec $MYSQL --pager="540bytelengthstringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -e "select 1" > /dev/null 2>&1
|
||||
--exec $MYSQL --character-sets-dir="540bytelengthstringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -e "select 1" 2>&1
|
||||
|
||||
#
|
||||
# bug #30164: Using client side macro inside server side comments generates broken queries
|
||||
#
|
||||
--exec $MYSQL test -e '/*! \C latin1 */ select 1;'
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
#
|
||||
|
Reference in New Issue
Block a user