Below is the list of changes that have just been committed into a local
5.1 repository of cmiller. When cmiller does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet
1.2163 06/03/10 18:23:32 cmiller@stripped +2 -0
Added code to remove closing comment code from event text, as would be
supplied inside a /*!VERSION event-text */ code. (Fixes Bug#18078)
sql/event_timed.cc
1.48 06/03/10 18:23:19 cmiller@stripped +42 -3
Remove */ close-comment characters at the end, just as sp_head does.
The parser should be smarter about giving us text that jumps semantic
levels, but that's an issue for another day.
mysql-test/t/disabled.def
1.98 06/03/10 18:23:19 cmiller@stripped +0 -1
Enabling 'mysqldump' test because events should load normally now.
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: cmiller
# Host: calliope.local
# Root: /Users/cmiller/work/src/mysql-5.1-new__bug18078
--- 1.47/sql/event_timed.cc 2006-03-09 22:23:15 -05:00
+++ 1.48/sql/event_timed.cc 2006-03-10 18:23:19 -05:00
@@ -106,6 +106,9 @@
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
@@ -116,9 +119,45 @@
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--;
+
+ /* Trim nuls or close-comments ('*'+'/') or spaces at the end */
+ while (TRUE)
+ {
+ if ((body.length >= 1) && (body_begin[body.length-1] == '\0'))
+ { /* consume any NUL characters */
+ body.length--;
+ continue;
+ }
+
+ if ((body.length >= 1) && (body_begin[body.length-1] == ' '))
+ { /* consume meaningless spaces */
+ body.length--;
+ 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.
+ */
+ if ((body.length >= 2) && (body_begin[body.length-2] == '*') &&
+ (body_begin[body.length-1] == '/'))
+ {
+ DBUG_PRINT("info", ("consumend one '*" "/' comment in the query '%s'",
+ body_begin));
+ body.length-= 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))
--- 1.97/mysql-test/t/disabled.def 2006-03-10 09:47:48 -05:00
+++ 1.98/mysql-test/t/disabled.def 2006-03-10 18:23:19 -05:00
@@ -43,4 +43,3 @@
rpl_until : Unstable test case, bug#15886
sp-goto : GOTO is currently is disabled - will be fixed in the future
rpl_rbr_to_sbr : BUG#18108
-mysqldump : BUG#18078
| Thread |
|---|
| • bk commit into 5.1 tree (cmiller:1.2163) BUG#18078 | Chad MILLER | 11 Mar |