mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01:00
Bug#13639125 DELIMITER STRIPS THE NEXT NEW LINE
IN A SQL STATEMENT While processing each lines entered at the prompt, mysql client appends a '\n' to all the lines except for delimiter commands. However the same logic must not apply if 'delimiter' is part of a string or a comment, for which a '\n' should be added. Fixed by adding appropriate checks. Added a test case.
This commit is contained in:
parent
e10d25ef8f
commit
fc311cc623
1 changed files with 7 additions and 5 deletions
|
@ -2283,17 +2283,19 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
|||
{
|
||||
uint length=(uint) (out-line);
|
||||
|
||||
if (!truncated &&
|
||||
(length < 9 ||
|
||||
my_strnncoll (charset_info,
|
||||
(uchar *)line, 9, (const uchar *) "delimiter", 9)))
|
||||
if (!truncated && (length < 9 ||
|
||||
my_strnncoll (charset_info, (uchar *)line, 9,
|
||||
(const uchar *) "delimiter", 9) ||
|
||||
(*in_string || *ml_comment)))
|
||||
{
|
||||
/*
|
||||
Don't add a new line in case there's a DELIMITER command to be
|
||||
added to the glob buffer (e.g. on processing a line like
|
||||
"<command>;DELIMITER <non-eof>") : similar to how a new line is
|
||||
not added in the case when the DELIMITER is the first command
|
||||
entered with an empty glob buffer.
|
||||
entered with an empty glob buffer. However, if the delimiter is
|
||||
part of a string or a comment, the new line should be added. (e.g.
|
||||
SELECT '\ndelimiter\n';\n)
|
||||
*/
|
||||
*out++='\n';
|
||||
length++;
|
||||
|
|
Loading…
Add table
Reference in a new issue