Loading mysql-test/t/disabled.def +0 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ rpl_row_blob_innodb : BUG#18980 2006-04-10 kent Test fails randomly rpl_row_func003 : BUG#19074 2006-13-04 andrei test failed rpl_row_inexist_tbl : BUG#18948 2006-03-09 mats Disabled since patch makes this test wait forever rpl_sp : BUG#16456 2006-02-16 jmiller mysqldump : BUG#18078 2006-03-10 lars udf : BUG#18564 2006-03-27 ian (Permission by Brian) # the below testcase have been reworked to avoid the bug, test contains comment, keep bug open Loading mysql-test/t/mysqldump.test +5 −5 Original line number Diff line number Diff line Loading @@ -1174,7 +1174,7 @@ create database first; use first; set time_zone = 'UTC'; ## prove one works ## prove one works (with spaces and tabs on the end) create event ee1 on schedule at '2035-12-31 20:01:23' do set @a=5; show events; show create event ee1; Loading @@ -1187,7 +1187,7 @@ use second; show events; show create event ee1; ## prove three works ## prove three works (with spaces and tabs on the end) # start with one from the previous restore create event ee2 on schedule at '2018-12-31 21:01:23' do set @a=5; create event ee3 on schedule at '2030-12-31 22:01:23' do set @a=5; Loading sql/event_timed.cc +43 −3 Original line number Diff line number Diff line Loading @@ -106,6 +106,9 @@ Event_timed::init_name(THD *thd, sp_name *spn) NOTE The body is extracted by copying all data between the start of the body set by another method and the current pointer in Lex. Some questionable removal of characters is done in here, and that part should be refactored when the parser is smarter. */ void Loading @@ -116,9 +119,46 @@ Event_timed::init_body(THD *thd) body_begin, thd->lex->ptr)); body.length= thd->lex->ptr - body_begin; /* Trim nuls at the end */ while (body.length && body_begin[body.length-1] == '\0') body.length--; const uchar *body_end= body_begin + body.length - 1; /* Trim nuls or close-comments ('*'+'/') or spaces at the end */ while (body_begin < body_end) { if ((*body_end == '\0') || (my_isspace(thd->variables.character_set_client, *body_end))) { /* consume NULs and meaningless whitespace */ --body.length; --body_end; continue; } /* consume closing comments This is arguably wrong, but it's the best we have until the parser is changed to be smarter. FIXME PARSER See also the sp_head code, where something like this is done also. One idea is to keep in the lexer structure the count of the number of open-comments we've entered, and scan left-to-right looking for a closing comment IFF the count is greater than zero. Another idea is to remove the closing comment-characters wholly in the parser, since that's where it "removes" the opening characters. */ if ((*(body_end - 1) == '*') && (*body_end == '/')) { DBUG_PRINT("info", ("consumend one '*" "/' comment in the query '%s'", body_begin)); body.length-= 2; body_end-= 2; continue; } break; /* none were found, so we have excised all we can. */ } /* the first is always whitespace which I cannot skip in the parser */ while (my_isspace(thd->variables.character_set_client, *body_begin)) Loading Loading
mysql-test/t/disabled.def +0 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ rpl_row_blob_innodb : BUG#18980 2006-04-10 kent Test fails randomly rpl_row_func003 : BUG#19074 2006-13-04 andrei test failed rpl_row_inexist_tbl : BUG#18948 2006-03-09 mats Disabled since patch makes this test wait forever rpl_sp : BUG#16456 2006-02-16 jmiller mysqldump : BUG#18078 2006-03-10 lars udf : BUG#18564 2006-03-27 ian (Permission by Brian) # the below testcase have been reworked to avoid the bug, test contains comment, keep bug open Loading
mysql-test/t/mysqldump.test +5 −5 Original line number Diff line number Diff line Loading @@ -1174,7 +1174,7 @@ create database first; use first; set time_zone = 'UTC'; ## prove one works ## prove one works (with spaces and tabs on the end) create event ee1 on schedule at '2035-12-31 20:01:23' do set @a=5; show events; show create event ee1; Loading @@ -1187,7 +1187,7 @@ use second; show events; show create event ee1; ## prove three works ## prove three works (with spaces and tabs on the end) # start with one from the previous restore create event ee2 on schedule at '2018-12-31 21:01:23' do set @a=5; create event ee3 on schedule at '2030-12-31 22:01:23' do set @a=5; Loading
sql/event_timed.cc +43 −3 Original line number Diff line number Diff line Loading @@ -106,6 +106,9 @@ Event_timed::init_name(THD *thd, sp_name *spn) NOTE The body is extracted by copying all data between the start of the body set by another method and the current pointer in Lex. Some questionable removal of characters is done in here, and that part should be refactored when the parser is smarter. */ void Loading @@ -116,9 +119,46 @@ Event_timed::init_body(THD *thd) body_begin, thd->lex->ptr)); body.length= thd->lex->ptr - body_begin; /* Trim nuls at the end */ while (body.length && body_begin[body.length-1] == '\0') body.length--; const uchar *body_end= body_begin + body.length - 1; /* Trim nuls or close-comments ('*'+'/') or spaces at the end */ while (body_begin < body_end) { if ((*body_end == '\0') || (my_isspace(thd->variables.character_set_client, *body_end))) { /* consume NULs and meaningless whitespace */ --body.length; --body_end; continue; } /* consume closing comments This is arguably wrong, but it's the best we have until the parser is changed to be smarter. FIXME PARSER See also the sp_head code, where something like this is done also. One idea is to keep in the lexer structure the count of the number of open-comments we've entered, and scan left-to-right looking for a closing comment IFF the count is greater than zero. Another idea is to remove the closing comment-characters wholly in the parser, since that's where it "removes" the opening characters. */ if ((*(body_end - 1) == '*') && (*body_end == '/')) { DBUG_PRINT("info", ("consumend one '*" "/' comment in the query '%s'", body_begin)); body.length-= 2; body_end-= 2; continue; } break; /* none were found, so we have excised all we can. */ } /* the first is always whitespace which I cannot skip in the parser */ while (my_isspace(thd->variables.character_set_client, *body_begin)) Loading