List:Commits« Previous MessageNext Message »
From:Chad MILLER Date:May 3 2006 3:55pm
Subject:bk commit into 5.1 tree (cmiller:1.2387) BUG#18078
View as plain text  
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.2387 06/05/03 09:55:34 cmiller@zippy.(none) +3 -0
  Added code to remove closing comment code from event text, as would be
  supplied inside a  /*!VERSION event-text */  segment.  (Fixes Bug#18078

  sql/event_timed.cc
    1.50 06/05/03 09:55:30 cmiller@zippy.(none) +43 -3
    Remove  */  close-comment characters at the end, just as sp_head does.
        
    The parser should be smarter about not giving us text that jumps semantic 
    levels, but that's an issue for another day.

  mysql-test/t/mysqldump.test
    1.94 06/05/03 09:55:30 cmiller@zippy.(none) +5 -5
    Add spaces and tabs to the end of statements, to prove trimming of 
    whitespace.

  mysql-test/t/disabled.def
    1.150 06/05/03 09:55:30 cmiller@zippy.(none) +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:	zippy.(none)
# Root:	/home/cmiller/work/mysql/mysql-5.1-new__bug18078

--- 1.49/sql/event_timed.cc	2006-04-18 15:21:33 -04:00
+++ 1.50/sql/event_timed.cc	2006-05-03 09:55:30 -04: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,46 @@
              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))

--- 1.149/mysql-test/t/disabled.def	2006-04-30 16:27:32 -04:00
+++ 1.150/mysql-test/t/disabled.def	2006-05-03 09:55:30 -04:00
@@ -33,7 +33,6 @@
 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

--- 1.93/mysql-test/t/mysqldump.test	2006-03-09 22:23:15 -05:00
+++ 1.94/mysql-test/t/mysqldump.test	2006-05-03 09:55:30 -04:00
@@ -1174,8 +1174,8 @@
 use first;
 set time_zone = 'UTC';
 
-## prove one works
-create event ee1 on schedule at '2035-12-31 20:01:23' do set @a=5;
+## 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;
 --exec $MYSQL_DUMP --events first > $MYSQLTEST_VARDIR/tmp/bug16853-1.sql
@@ -1187,10 +1187,10 @@
 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;
+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;    		
 show events;
 --exec $MYSQL_DUMP --events second > $MYSQLTEST_VARDIR/tmp/bug16853-2.sql
 drop database second;
Thread
bk commit into 5.1 tree (cmiller:1.2387) BUG#18078Chad MILLER3 May