diff options
author | Georgi Kodinov <kgeorge@mysql.com> | 2009-02-24 15:06:28 +0200 |
---|---|---|
committer | Georgi Kodinov <kgeorge@mysql.com> | 2009-02-24 15:06:28 +0200 |
commit | 4b05db5cfdfa9d56c7185a8c03ddfaaf4333c963 (patch) | |
tree | 4dfe81a1565d1d9d7fc393906b204b3d46836353 /client | |
parent | 315748a41d5de1ee49e9a2dfaccd4f7dcbbfb8c4 (diff) | |
download | mariadb-git-4b05db5cfdfa9d56c7185a8c03ddfaaf4333c963.tar.gz |
Bug #31060: MySQL CLI parser bug 2
There was a problem when a DELIMITER COMMAND is not the first
command on the line. I this case an extra line feed was added
to the glob buffer and this was causing subsequent attempts
to enter this delimiter to fail.
Fixed by not adding a new line to the glob buffer if the
command being added is a DELIMITER
client/mysql.cc:
Bug #31060: Don't add a new line if DELIMTER is added to
the glob buffer
mysql-test/r/mysql.result:
Bug #31060: test case
mysql-test/t/mysql.test:
Bug #31060: test case
Diffstat (limited to 'client')
-rw-r--r-- | client/mysql.cc | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/client/mysql.cc b/client/mysql.cc index d1d36d79565..1a025345190 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -2222,8 +2222,22 @@ static bool add_line(String &buffer,char *line,char *in_string, } if (out != line || !buffer.is_empty()) { - *out++='\n'; uint length=(uint) (out-line); + + if (length < 9 || + my_strnncoll (charset_info, + (uchar *)line, 9, (const uchar *) "delimiter", 9)) + { + /* + 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. + */ + *out++='\n'; + length++; + } if (buffer.length() + length >= buffer.alloced_length()) buffer.realloc(buffer.length()+length+IO_SIZE); if ((!*ml_comment || preserve_comments) && buffer.append(line, length)) |