From: Georgi Kodinov Date: February 23 2009 3:17pm Subject: bzr commit into mysql-5.0-bugteam branch (kgeorge:2755) Bug#31060 List-Archive: http://lists.mysql.com/commits/67224 X-Bug: 31060 Message-Id: <20090223151745.01ECD158BC3D@macbook.local> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0989695166==" --===============0989695166== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/kgeorge/mysql/work/B31060-5.0-bugteam/ based on revid:patrick.crews@stripped 2755 Georgi Kodinov 2009-02-23 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/mysqltest.result Bug #31060: test case @ mysql-test/t/mysqltest.test Bug #31060: test case modified: client/mysql.cc mysql-test/r/mysqltest.result mysql-test/t/mysqltest.test === modified file 'client/mysql.cc' --- a/client/mysql.cc 2009-02-18 10:18:38 +0000 +++ b/client/mysql.cc 2009-02-23 15:17:22 +0000 @@ -2222,8 +2222,22 @@ static bool add_line(String &buffer,char } 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 + ";DELIMITER ") : 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)) === modified file 'mysql-test/r/mysqltest.result' --- a/mysql-test/r/mysqltest.result 2009-02-19 20:37:40 +0000 +++ b/mysql-test/r/mysqltest.result 2009-02-23 15:17:22 +0000 @@ -723,4 +723,5 @@ drop table t1; mysqltest: At line 1: change user failed: Unknown database 'inexistent' mysqltest: At line 1: change user failed: Access denied for user 'inexistent'@'localhost' (using password: NO) mysqltest: At line 1: change user failed: Access denied for user 'root'@'localhost' (using password: YES) +mysqltest: At line 1: query '' failed: 1065: Query was empty End of tests === modified file 'mysql-test/t/mysqltest.test' --- a/mysql-test/t/mysqltest.test 2009-02-19 20:37:40 +0000 +++ b/mysql-test/t/mysqltest.test 2009-02-23 15:17:22 +0000 @@ -2151,6 +2151,22 @@ rmdir $MYSQLTEST_VARDIR/tmp/testdir; remove_file $MYSQLTEST_VARDIR/tmp/testdir/file1.txt; rmdir $MYSQLTEST_VARDIR/tmp/testdir; +# +# Bug #31060: MySQL CLI parser bug 2 +# + +write_file $MYSQLTEST_VARDIR/tmp/bug31060.sql; +;DELIMITER DELIMITER +; +SELECT 1DELIMITER +DELIMITER ; +SELECT 1; +EOF + +--error 1 +--exec $MYSQL_TEST < $MYSQLTEST_VARDIR/tmp/bug31060.sql 2>&1 + +remove_file $MYSQLTEST_VARDIR/tmp/bug31060.sql; --echo End of tests --===============0989695166== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/kgeorge@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: kgeorge@stripped # target_branch: file:///Users/kgeorge/mysql/work/B31060-5.0-bugteam/ # testament_sha1: 1ec71d3390ac17dd7d77cbe25eb84f5717634618 # timestamp: 2009-02-23 17:17:44 +0200 # base_revision_id: patrick.crews@stripped\ # cjtergoob5c89xod # # Begin bundle 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 FlQ= --===============0989695166==--