mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 14:02:32 +01:00
Merge bk-internal.mysql.com:/home/bk/mysql-5.1-new
into zippy.(none):/home/cmiller/work/mysql/mysql-5.1-new__bug18078
This commit is contained in:
commit
2f8b344b06
3 changed files with 48 additions and 9 deletions
|
@ -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_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_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
|
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)
|
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
|
# the below testcase have been reworked to avoid the bug, test contains comment, keep bug open
|
||||||
|
|
|
@ -1174,8 +1174,8 @@ create database first;
|
||||||
use first;
|
use first;
|
||||||
set time_zone = 'UTC';
|
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;
|
create event ee1 on schedule at '2035-12-31 20:01:23' do set @a=5;
|
||||||
show events;
|
show events;
|
||||||
show create event ee1;
|
show create event ee1;
|
||||||
--exec $MYSQL_DUMP --events first > $MYSQLTEST_VARDIR/tmp/bug16853-1.sql
|
--exec $MYSQL_DUMP --events first > $MYSQLTEST_VARDIR/tmp/bug16853-1.sql
|
||||||
|
@ -1187,10 +1187,10 @@ use second;
|
||||||
show events;
|
show events;
|
||||||
show create event ee1;
|
show create event ee1;
|
||||||
|
|
||||||
## prove three works
|
## prove three works (with spaces and tabs on the end)
|
||||||
# start with one from the previous restore
|
# 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 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;
|
create event ee3 on schedule at '2030-12-31 22:01:23' do set @a=5;
|
||||||
show events;
|
show events;
|
||||||
--exec $MYSQL_DUMP --events second > $MYSQLTEST_VARDIR/tmp/bug16853-2.sql
|
--exec $MYSQL_DUMP --events second > $MYSQLTEST_VARDIR/tmp/bug16853-2.sql
|
||||||
drop database second;
|
drop database second;
|
||||||
|
|
|
@ -106,6 +106,9 @@ Event_timed::init_name(THD *thd, sp_name *spn)
|
||||||
NOTE
|
NOTE
|
||||||
The body is extracted by copying all data between the
|
The body is extracted by copying all data between the
|
||||||
start of the body set by another method and the current pointer in Lex.
|
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
|
void
|
||||||
|
@ -116,9 +119,46 @@ Event_timed::init_body(THD *thd)
|
||||||
body_begin, thd->lex->ptr));
|
body_begin, thd->lex->ptr));
|
||||||
|
|
||||||
body.length= thd->lex->ptr - body_begin;
|
body.length= thd->lex->ptr - body_begin;
|
||||||
/* Trim nuls at the end */
|
const uchar *body_end= body_begin + body.length - 1;
|
||||||
while (body.length && body_begin[body.length-1] == '\0')
|
|
||||||
body.length--;
|
/* 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 */
|
/* the first is always whitespace which I cannot skip in the parser */
|
||||||
while (my_isspace(thd->variables.character_set_client, *body_begin))
|
while (my_isspace(thd->variables.character_set_client, *body_begin))
|
||||||
|
|
Loading…
Reference in a new issue