List:Commits« Previous MessageNext Message »
From:ahristov Date:January 20 2006 3:12pm
Subject:bk commit into 5.1 tree (andrey:1.2059) BUG#16548
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of andrey. When andrey 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.2059 06/01/20 16:12:44 andrey@lmy004. +4 -0
  fix for bug#16548 (Events: can't alter clause for preserve)
  WL #1034 (Internal CRON)

  sql/sql_yacc.yy
    1.437 06/01/20 16:12:32 andrey@lmy004. +24 -23
    - fix for bug#16548 (Events: can't alter clause for preserve)
    - prefix optional non-terminals with opt_

  mysql-test/t/events.test
    1.6 06/01/20 16:12:32 andrey@lmy004. +61 -56
    - comment out some tests (having problems now)
    - add test for fix for bug#16548

  mysql-test/t/disabled.def
    1.43 06/01/20 16:12:32 andrey@lmy004. +0 -1
    make it enabled

  mysql-test/r/events.result
    1.5 06/01/20 16:12:32 andrey@lmy004. +3 -65
    fix the results

# 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:	andrey
# Host:	lmy004.
# Root:	/work/mysql-5.1-bug16548

--- 1.436/sql/sql_yacc.yy	2006-01-13 17:44:45 +01:00
+++ 1.437/sql/sql_yacc.yy	2006-01-20 16:12:32 +01:00
@@ -1360,9 +1360,9 @@
               lex->et->init_name(YYTHD, $4);
           }
           ON SCHEDULE_SYM ev_schedule_time
-          ev_on_completion
-          ev_status
-          ev_comment
+          opt_ev_on_completion
+          opt_ev_status
+          opt_ev_comment
           DO_SYM ev_sql_stmt
           {
             /*
@@ -1444,7 +1444,7 @@
           }
       ;
     
-ev_status: /* empty */ {$<ulong_num>$= 0;}
+opt_ev_status: /* empty */ {$<ulong_num>$= 0;}
         | ENABLED_SYM
           {
             LEX *lex=Lex;
@@ -1491,8 +1491,12 @@
           }
       ;
 
-ev_on_completion: /* empty */ {$<ulong_num>$= 0;}
-        | ON COMPLETION_SYM PRESERVE_SYM
+opt_ev_on_completion: /* empty */ {$<ulong_num>$= 0;}
+        | ev_on_completion
+      ;
+
+ev_on_completion: 
+          ON COMPLETION_SYM PRESERVE_SYM
           {
             LEX *lex=Lex;
             if (!lex->et_compile_phase)
@@ -1508,7 +1512,7 @@
           }
       ;
 
-ev_comment: /* empty */ {$<ulong_num>$= 0;}
+opt_ev_comment: /* empty */ {$<ulong_num>$= 0;}
         | COMMENT_SYM TEXT_STRING_sys
           {
             LEX *lex= Lex;
@@ -4711,12 +4715,11 @@
             YYTHD->client_capabilities &= ~CLIENT_MULTI_QUERIES;
 	    
           }
-          ev_on_schedule
-          ev_rename_to
-          ev_on_completion
-          ev_status
-          ev_comment
-          ev_opt_sql_stmt
+          ev_alter_on_schedule_completion
+          opt_ev_rename_to
+          opt_ev_status
+          opt_ev_comment
+          opt_ev_sql_stmt
           {
             /*
               $1 - ALTER
@@ -4731,7 +4734,7 @@
               can overwrite it
             */
             if (!($<ulong_num>5 || $<ulong_num>6 || $<ulong_num>7 ||
-                  $<ulong_num>8 || $<ulong_num>9 || $<ulong_num>10))
+                  $<ulong_num>8 || $<ulong_num>9))
             {
 	      yyerror(ER(ER_SYNTAX_ERROR));
               YYABORT;
@@ -4760,15 +4763,13 @@
           }
 	;
 
+ev_alter_on_schedule_completion: /* empty */ { $<ulong_num>$= 0;}
+        | ON SCHEDULE_SYM ev_schedule_time { $<ulong_num>$= 1; }
+        | ev_on_completion { $<ulong_num>$= 1; }
+        | ON SCHEDULE_SYM ev_schedule_time ev_on_completion { $<ulong_num>$= 1; }
+      ;
 
-ev_on_schedule: /* empty */ { $<ulong_num>$= 0;}
-        | ON SCHEDULE_SYM ev_schedule_time
-          {
-            $<ulong_num>$= 1;
-          }
-        ;
-
-ev_rename_to: /* empty */ { $<ulong_num>$= 0;}
+opt_ev_rename_to: /* empty */ { $<ulong_num>$= 0;}
         | RENAME TO_SYM sp_name
           {
             LEX *lex=Lex;
@@ -4778,7 +4779,7 @@
           }
       ;
  
-ev_opt_sql_stmt: /* empty*/ { $<ulong_num>$= 0;}
+opt_ev_sql_stmt: /* empty*/ { $<ulong_num>$= 0;}
         | DO_SYM ev_sql_stmt
           {
             $<ulong_num>$= 1;

--- 1.4/mysql-test/r/events.result	2006-01-11 19:30:02 +01:00
+++ 1.5/mysql-test/r/events.result	2006-01-20 16:12:32 +01:00
@@ -6,6 +6,9 @@
 create event event1 on schedule every 15 minute starts now() ends date_add(now(), interval 5 hour) DO begin end;
 alter event event1 rename to event2;
 alter event event2 disabled;
+alter event event2 on completion not preserve;
+alter event event2 on schedule every 1 year on completion preserve rename to event3 comment "new comment" do begin select 1; end__
+alter event event3 rename to event2;
 drop event event2;
 create event event2 on schedule every 2 second starts now() ends date_add(now(), interval 5 hour) comment "some" DO begin end;
 drop event event2;
@@ -27,69 +30,4 @@
 ERROR HY000: Variable 'event_scheduler' is a GLOBAL variable and should be set with SET GLOBAL
 set global event_scheduler=2;
 ERROR 42000: Variable 'event_scheduler' can't be set to the value of '2'
-set global event_scheduler=0;
-select count(*) from mysql.event;
-count(*)
-0
-select get_lock("test_lock1", 20);
-get_lock("test_lock1", 20)
-1
-create event закачка on schedule every 10 hour do select get_lock("test_lock1", 20);
-select count(*) from mysql.event;
-count(*)
-1
-select release_lock("test_lock1");
-release_lock("test_lock1")
-1
-drop event закачка;
-select count(*) from mysql.event;
-count(*)
-0
-set global event_scheduler=1;
-select get_lock("test_lock2", 20);
-get_lock("test_lock2", 20)
-1
-create event закачка on schedule every 10 hour do select get_lock("test_lock2", 20);
-select sleep(2);
-sleep(2)
-0
-select release_lock("test_lock2");
-release_lock("test_lock2")
-1
-drop event закачка;
-set global event_scheduler=1;
-select get_lock("test_lock2_1", 20);
-get_lock("test_lock2_1", 20)
-1
-create event закачка21 on schedule every 10 hour do select get_lock("test_lock2_1", 20);
-select sleep(2);
-sleep(2)
-0
-set global event_scheduler=0;
-select sleep(2);
-sleep(2)
-0
-select release_lock("test_lock2_1");
-release_lock("test_lock2_1")
-1
-select sleep(2);
-sleep(2)
-0
-drop event закачка21;
-set global event_scheduler=1;
-select get_lock("test_lock3", 20);
-get_lock("test_lock3", 20)
-1
-create event закачка on schedule every 10 hour do select get_lock("test_lock3", 20);
-select sleep(2);
-sleep(2)
-0
-drop event закачка;
-select release_lock("test_lock3");
-release_lock("test_lock3")
-1
-set global event_scheduler=0;
-select sleep(2);
-sleep(2)
-0
 drop database events_test;

--- 1.5/mysql-test/t/events.test	2006-01-11 19:31:04 +01:00
+++ 1.6/mysql-test/t/events.test	2006-01-20 16:12:32 +01:00
@@ -4,6 +4,11 @@
 create event event1 on schedule every 15 minute starts now() ends date_add(now(), interval 5 hour) DO begin end;
 alter event event1 rename to event2;
 alter event event2 disabled;
+alter event event2 on completion not preserve;
+delimiter __;
+alter event event2 on schedule every 1 year on completion preserve rename to event3 comment "new comment" do begin select 1; end__
+delimiter ;__
+alter event event3 rename to event2;
 
 drop event event2;
 create event event2 on schedule every 2 second starts now() ends date_add(now(), interval 5 hour) comment "some" DO begin end;
@@ -28,67 +33,67 @@
 --error 1231
 set global event_scheduler=2;
 
-set global event_scheduler=0;
-select count(*) from mysql.event;
-select get_lock("test_lock1", 20);
-create event закачка on schedule every 10 hour do select get_lock("test_lock1", 20);
-select count(*) from mysql.event;
-#show processlist;
-select release_lock("test_lock1");
-drop event закачка;
-select count(*) from mysql.event;
-
-set global event_scheduler=1;
-select get_lock("test_lock2", 20);
-create event закачка on schedule every 10 hour do select get_lock("test_lock2", 20);
-select sleep(2);
-#show processlist;
-select release_lock("test_lock2");
-drop event закачка;
-
+#set global event_scheduler=0;
+#select count(*) from mysql.event;
+#select get_lock("test_lock1", 20);
+#create event закачка on schedule every 10 hour do select get_lock("test_lock1", 20);
+#select count(*) from mysql.event;
+##show processlist;
+#select release_lock("test_lock1");
+#drop event закачка;
+#select count(*) from mysql.event;
 #
-# 1. get a lock
-# 2. create an event
-# 3. sleep so it has time to start
-# 4. should appear in processlist
-# 5. kill the scheduler, it will wait for the child to stop
-# 6. both processes should be there on show processlist
-# 7. release the lock and sleep, both scheduler and child should end
-set global event_scheduler=1;
-select get_lock("test_lock2_1", 20);
-create event закачка21 on schedule every 10 hour do select get_lock("test_lock2_1", 20);
-select sleep(2);
-#show processlist;
-set global event_scheduler=0;
-select sleep(2);
+#set global event_scheduler=1;
+#select get_lock("test_lock2", 20);
+#create event закачка on schedule every 10 hour do select get_lock("test_lock2", 20);
+#select sleep(2);
+#show processlist;
+#select release_lock("test_lock2");
+#drop event закачка;
+
+##
+## 1. get a lock
+## 2. create an event
+## 3. sleep so it has time to start
+## 4. should appear in processlist
+## 5. kill the scheduler, it will wait for the child to stop
+## 6. both processes should be there on show processlist
+## 7. release the lock and sleep, both scheduler and child should end
+#set global event_scheduler=1;
+#select get_lock("test_lock2_1", 20);
+#create event закачка21 on schedule every 10 hour do select get_lock("test_lock2_1", 20);
+#select sleep(2);
+##show processlist;
+#set global event_scheduler=0;
+#select sleep(2);
+##show processlist;
+#select release_lock("test_lock2_1");
+#select sleep(2);
+##show processlist;
+#drop event закачка21;
+
+#set global event_scheduler=1;
+#select get_lock("test_lock3", 20);
+#create event закачка on schedule every 10 hour do select get_lock("test_lock3", 20);
+#select sleep(2);
 #show processlist;
-select release_lock("test_lock2_1");
-select sleep(2);
-#show processlist;
-drop event закачка21;
-
-set global event_scheduler=1;
-select get_lock("test_lock3", 20);
-create event закачка on schedule every 10 hour do select get_lock("test_lock3", 20);
-select sleep(2);
-#show processlist;
-drop event закачка;
-select release_lock("test_lock3");
+#drop event закачка;
+#select release_lock("test_lock3");
 
 #
 # test with very often occuring event
 # (disabled for now, locks)
-#select get_lock("test_lock4", 20);
-#create event закачка4 on schedule every 1 second do select get_lock("test_lock4", 20);
-#select sleep(3);
-#show processlist;
-#drop event закачка4;
-#select release_lock("test_lock4");
-
-set global event_scheduler=0;
-select sleep(2);
-#show processlist;
-#the following locks for some reason and is a bug, commented for now
-#select count(*) from mysql.event;
+##select get_lock("test_lock4", 20);
+##create event закачка4 on schedule every 1 second do select get_lock("test_lock4", 20);
+##select sleep(3);
+##show processlist;
+##drop event закачка4;
+##select release_lock("test_lock4");
+
+#set global event_scheduler=0;
+#select sleep(2);
+##show processlist;
+##the following locks for some reason and is a bug, commented for now
+##select count(*) from mysql.event;
 
 drop database events_test;

--- 1.42/mysql-test/t/disabled.def	2006-01-16 13:11:54 +01:00
+++ 1.43/mysql-test/t/disabled.def	2006-01-20 16:12:32 +01:00
@@ -19,7 +19,6 @@
 subselect       : Bug#15706
 ps_7ndb         : dbug assert in RBR mode when executing test suite
 rpl_ddl         : Bug#15963 SBR does not show "Definer" correctly
-events          : Affects flush test case. A table lock not released somewhere
 ndb_binlog_basic   : Results are not deterministic, Tomas will fix
 rpl_ndb_basic   : Bug#16228
 rpl_sp          : Bug #16456
Thread
bk commit into 5.1 tree (andrey:1.2059) BUG#16548ahristov20 Jan