Loading client/mysql.cc +9 −33 Original line number Diff line number Diff line Loading @@ -1821,7 +1821,7 @@ static int read_and_execute(bool interactive) the very beginning of a text file when you save the file using "Unicode UTF-8" format. */ if (!line_number && if (line && !line_number && (uchar) line[0] == 0xEF && (uchar) line[1] == 0xBB && (uchar) line[2] == 0xBF) Loading Loading @@ -2101,37 +2101,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 Loading Loading @@ -2176,7 +2145,14 @@ static bool add_line(String &buffer,char *line,char *in_string, } else if (!*ml_comment && (!*in_string && (inchar == '#' || inchar == '-' && pos[1] == '-' && my_isspace(charset_info,pos[2])))) /* The third byte is either whitespace or is the end of the line -- which would occur only because of the user sending newline -- which is itself whitespace and should also match. */ (my_isspace(charset_info,pos[2]) || !pos[2])))) { // Flush previously accepted characters if (out != line) Loading mysql-test/r/mysql.result +2 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,8 @@ t2 t3 Tables_in_test t1 delimiter 1 _ Test delimiter : from command line a Loading mysql-test/t/mysql_delimiter.sql +13 −0 Original line number Diff line number Diff line Loading @@ -59,3 +59,16 @@ source t/mysql_delimiter_19799.sql 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 # -- DELIMITER ; Loading
client/mysql.cc +9 −33 Original line number Diff line number Diff line Loading @@ -1821,7 +1821,7 @@ static int read_and_execute(bool interactive) the very beginning of a text file when you save the file using "Unicode UTF-8" format. */ if (!line_number && if (line && !line_number && (uchar) line[0] == 0xEF && (uchar) line[1] == 0xBB && (uchar) line[2] == 0xBF) Loading Loading @@ -2101,37 +2101,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 Loading Loading @@ -2176,7 +2145,14 @@ static bool add_line(String &buffer,char *line,char *in_string, } else if (!*ml_comment && (!*in_string && (inchar == '#' || inchar == '-' && pos[1] == '-' && my_isspace(charset_info,pos[2])))) /* The third byte is either whitespace or is the end of the line -- which would occur only because of the user sending newline -- which is itself whitespace and should also match. */ (my_isspace(charset_info,pos[2]) || !pos[2])))) { // Flush previously accepted characters if (out != line) Loading
mysql-test/r/mysql.result +2 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,8 @@ t2 t3 Tables_in_test t1 delimiter 1 _ Test delimiter : from command line a Loading
mysql-test/t/mysql_delimiter.sql +13 −0 Original line number Diff line number Diff line Loading @@ -59,3 +59,16 @@ source t/mysql_delimiter_19799.sql 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 # -- DELIMITER ;