From: Date: July 19 2008 12:50am Subject: bzr commit into mysql-6.0-backup branch (timothy.smith:2673) Bug#38158 List-Archive: http://lists.mysql.com/commits/50064 X-Bug: 38158 Message-Id: <20080718225031.1293D8000D@ramayana.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit #At file:///home/tsmith/m/bzr/mysql-6.0.6-release/ 2673 Timothy Smith 2008-07-18 Cherry-pick fix for Bug #38158 from 6.0-bugteam into 6.0.6-release. modified: client/mysql.cc mysql-test/r/mysql.result mysql-test/t/mysql_delimiter.sql mysys/default.c === modified file 'client/mysql.cc' --- a/client/mysql.cc 2008-06-25 11:13:03 +0000 +++ b/client/mysql.cc 2008-07-18 22:50:26 +0000 @@ -2128,6 +2128,37 @@ static bool add_line(String &buffer,char 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 === modified file 'mysql-test/r/mysql.result' --- a/mysql-test/r/mysql.result 2008-06-25 11:13:03 +0000 +++ b/mysql-test/r/mysql.result 2008-07-18 22:50:26 +0000 @@ -38,8 +38,6 @@ t2 t3 Tables_in_test t1 -delimiter -1 _ Test delimiter : from command line a === modified file 'mysql-test/t/mysql_delimiter.sql' --- a/mysql-test/t/mysql_delimiter.sql 2008-06-25 11:13:03 +0000 +++ b/mysql-test/t/mysql_delimiter.sql 2008-07-18 22:50:26 +0000 @@ -61,12 +61,6 @@ 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 # === modified file 'mysys/default.c' --- a/mysys/default.c 2008-07-18 21:46:31 +0000 +++ b/mysys/default.c 2008-07-18 22:50:26 +0000 @@ -1025,7 +1025,7 @@ static const char *my_get_module_parent( { char *last= NULL; char *end; - if (!GetModuleFileName(NULL, buf, size)) + if (!GetModuleFileName(NULL, buf, (DWORD) size)) return NULL; end= strend(buf);