back-port from 5.1.
Bug#33812: mysql client incorrectly parsing DELIMITER Remove unnecessary and incorrect code that tried to pull delimiter commands out of the middle of statements.
This commit is contained in:
parent
7ad63a7202
commit
9ffe2c02bf
@ -2081,37 +2081,6 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if (!*ml_comment && !*in_string &&
|
||||
(end_of_line - pos) >= 10 &&
|
||||
!my_strnncoll(charset_info, (uchar*) pos, 10,
|
||||
(const uchar*) "delimiter ", 10))
|
||||
{
|
||||
// Flush previously accepted characters
|
||||
if (out != line)
|
||||
{
|
||||
buffer.append(line, (uint32) (out - line));
|
||||
out= line;
|
||||
}
|
||||
|
||||
// Flush possible comments in the buffer
|
||||
if (!buffer.is_empty())
|
||||
{
|
||||
if (com_go(&buffer, 0) > 0) // < 0 is not fatal
|
||||
DBUG_RETURN(1);
|
||||
buffer.length(0);
|
||||
}
|
||||
|
||||
/*
|
||||
Delimiter wants the get rest of the given line as argument to
|
||||
allow one to change ';' to ';;' and back
|
||||
*/
|
||||
buffer.append(pos);
|
||||
if (com_delimiter(&buffer, pos) > 0)
|
||||
DBUG_RETURN(1);
|
||||
|
||||
buffer.length(0);
|
||||
break;
|
||||
}
|
||||
else if (!*ml_comment && !*in_string && is_prefix(pos, delimiter))
|
||||
{
|
||||
// Found a statement. Continue parsing after the delimiter
|
||||
|
@ -38,6 +38,8 @@ t2
|
||||
t3
|
||||
Tables_in_test
|
||||
t1
|
||||
delimiter
|
||||
1
|
||||
_
|
||||
Test delimiter : from command line
|
||||
a
|
||||
|
@ -60,6 +60,12 @@ use test//
|
||||
show tables//
|
||||
delimiter ; # Reset delimiter
|
||||
|
||||
#
|
||||
# Bug #33812: mysql client incorrectly parsing DELIMITER
|
||||
#
|
||||
select a as delimiter from t1
|
||||
delimiter ; # Reset delimiter
|
||||
|
||||
#
|
||||
# Bug #36244: MySQL CLI doesn't recognize standalone -- as comment
|
||||
# before DELIMITER statement
|
||||
|
Loading…
x
Reference in New Issue
Block a user