List:Commits« Previous MessageNext Message »
From:Alexander Nozdrin Date:March 26 2009 6:15am
Subject:bzr commit into mysql-6.0 branch (alik:2751) Bug#35297
View as plain text  
#At file:///mnt/raid/alik/MySQL/bzr/bug35297/6.0-rt-bug35297/ based on revid:alik@stripped26060824-7b8h0dw3gpzav2qn

 2751 Alexander Nozdrin	2009-03-26
      A patch for Bug#35297: SHOW CREATE EVENT does not show the DEFINER.
      
      The problem was that SHOW CREATE EVENT output does not include
      the DEFINER clause, even if is specified in the CREATE EVENT statement.
      SHOW CREATE EVENT is used for backup/restore metadata, so it is essential
      to have the DEFINER clause in the output.
      
      The fix is to include DEFINER clause in the generated CREATE EVENT statement.
      
      mysqldump needs to enclose the clause in version-specific comment in order
      to generate the dump that is compatible with old server versions
      (the versions which don't support DEFINER in events).

    modified:
      client/mysqldump.c
      mysql-test/r/ddl_i18n_koi8r.result
      mysql-test/r/ddl_i18n_utf8.result
      mysql-test/r/events_1.result
      mysql-test/r/events_2.result
      mysql-test/r/mysqldump.result
      mysql-test/r/show_check.result
      sql/event_data_objects.cc
=== modified file 'client/mysqldump.c'
--- a/client/mysqldump.c	2009-02-16 21:18:45 +0000
+++ b/client/mysqldump.c	2009-03-26 06:15:10 +0000
@@ -1318,120 +1318,68 @@ static int switch_character_set_results(
 }
 
 /**
-  Rewrite CREATE TRIGGER statement, enclosing DEFINER clause in
-  version-specific comment.
+  Rewrite statement, enclosing DEFINER clause in version-specific comment.
 
-  This function parses the CREATE TRIGGER statement and encloses
-  DEFINER-clause in version-specific comment:
-    input query:     CREATE DEFINER=a@b TRIGGER ...
-    rewritten query: CREATE * / / *!50017 DEFINER=a@b * / / *!50003 TRIGGER ...
-
-  @note This function will go away when WL#3995 is implemented.
-
-  @param[in] trigger_def_str    CREATE TRIGGER statement string.
-  @param[in] trigger_def_length length of the trigger_def_str.
-
-  @return pointer to the new allocated query string.
-*/
-
-static char *cover_definer_clause_in_trigger(const char *trigger_def_str,
-                                             uint trigger_def_length)
-{
-  char *query_str= NULL;
-  char *definer_begin= my_case_str(trigger_def_str, trigger_def_length,
-                                   C_STRING_WITH_LEN(" DEFINER"));
-  char *definer_end;
-
-  if (!definer_begin)
-    return NULL;
-
-  definer_end= my_case_str(definer_begin, strlen(definer_begin),
-                           C_STRING_WITH_LEN(" TRIGGER"));
-
-  if (definer_end)
-  {
-    char *query_str_tail;
-
-    /*
-       Allocate memory for new query string: original string
-       from SHOW statement and version-specific comments.
-     */
-    query_str= alloc_query_str(trigger_def_length + 23);
-
-    query_str_tail= strnmov(query_str,
-                            trigger_def_str,
-                            definer_begin - trigger_def_str);
-
-    query_str_tail= strmov(query_str_tail,
-                           "*/ /*!50017");
-
-    query_str_tail= strnmov(query_str_tail,
-                            definer_begin,
-                            definer_end - definer_begin);
-
-    query_str_tail= strxmov(query_str_tail,
-                            "*/ /*!50003",
-                            definer_end,
-                            NullS);
-  }
-
-  return query_str;
-}
-
-/**
-  Rewrite CREATE FUNCTION or CREATE PROCEDURE statement, enclosing DEFINER
-  clause in version-specific comment.
-
-  This function parses the CREATE FUNCTION | PROCEDURE statement and
-  encloses DEFINER-clause in version-specific comment:
+  This function parses any CREATE statement and encloses DEFINER-clause in
+  version-specific comment:
     input query:     CREATE DEFINER=a@b FUNCTION ...
     rewritten query: CREATE * / / *!50020 DEFINER=a@b * / / *!50003 FUNCTION ...
 
   @note This function will go away when WL#3995 is implemented.
 
-  @param[in] def_str        CREATE FUNCTION|PROCEDURE statement string.
-  @param[in] def_str_length length of the def_str.
+  @param[in] stmt_str                 CREATE statement string.
+  @param[in] stmt_length              Length of the stmt_str.
+  @param[in] definer_version_str      Minimal MySQL version number when
+                                      DEFINER clause is supported in the
+                                      given statement.
+  @param[in] definer_version_length   Length of definer_version_str.
+  @param[in] stmt_version_str         Minimal MySQL version number when the
+                                      given statement is supported.
+  @param[in] stmt_version_length      Length of stmt_version_str.
+  @param[in] keyword_str              Keyword to look for after CREATE.
+  @param[in] keyword_length           Length of keyword_str.
 
   @return pointer to the new allocated query string.
 */
 
-static char *cover_definer_clause_in_sp(const char *def_str,
-                                        uint def_str_length)
+static char *cover_definer_clause(const char *stmt_str,
+                                  uint stmt_length,
+                                  const char *definer_version_str,
+                                  uint definer_version_length,
+                                  const char *stmt_version_str,
+                                  uint stmt_version_length,
+                                  const char *keyword_str,
+                                  uint keyword_length)
 {
-  char *query_str= NULL;
-  char *definer_begin= my_case_str(def_str, def_str_length,
+  char *definer_begin= my_case_str(stmt_str, stmt_length,
                                    C_STRING_WITH_LEN(" DEFINER"));
-  char *definer_end;
+  char *definer_end= NULL;
+
+  char *query_str= NULL;
+  char *query_ptr;
 
   if (!definer_begin)
     return NULL;
 
   definer_end= my_case_str(definer_begin, strlen(definer_begin),
-                           C_STRING_WITH_LEN(" PROCEDURE"));
+                           keyword_str, keyword_length);
 
   if (!definer_end)
-  {
-    definer_end= my_case_str(definer_begin, strlen(definer_begin),
-                             C_STRING_WITH_LEN(" FUNCTION"));
-  }
-
-  if (definer_end)
-  {
-    char *query_str_tail;
+    return NULL;
 
-    /*
-      Allocate memory for new query string: original string
-      from SHOW statement and version-specific comments.
-    */
-    query_str= alloc_query_str(def_str_length + 23);
+  /*
+    Allocate memory for new query string: original string
+    from SHOW statement and version-specific comments.
+  */
+  query_str= alloc_query_str(stmt_length + 23);
 
-    query_str_tail= strnmov(query_str, def_str, definer_begin - def_str);
-    query_str_tail= strmov(query_str_tail, "*/ /*!50020");
-    query_str_tail= strnmov(query_str_tail, definer_begin,
-                            definer_end - definer_begin);
-    query_str_tail= strxmov(query_str_tail, "*/ /*!50003",
-                            definer_end, NullS);
-  }
+  query_ptr= strnmov(query_str, stmt_str, definer_begin - stmt_str);
+  query_ptr= strnmov(query_ptr, C_STRING_WITH_LEN("*/ /*!"));
+  query_ptr= strnmov(query_ptr, definer_version_str, definer_version_length);
+  query_ptr= strnmov(query_ptr, definer_begin, definer_end - definer_begin);
+  query_ptr= strnmov(query_ptr, C_STRING_WITH_LEN("*/ /*!"));
+  query_ptr= strnmov(query_ptr, stmt_version_str, stmt_version_length);
+  query_ptr= strxmov(query_ptr, definer_end, NullS);
 
   return query_str;
 }
@@ -1965,6 +1913,8 @@ static uint dump_events_for_db(char *db)
         */
         if (strlen(row[3]) != 0)
         {
+          char *query_str;
+
           if (opt_drop)
             fprintf(sql_file, "/*!50106 DROP EVENT IF EXISTS %s */%s\n", 
                 event_name, delimiter);
@@ -1991,31 +1941,36 @@ static uint dump_events_for_db(char *db)
                                 row[4],   /* character_set_results */
                                 row[5]);  /* collation_connection */
           }
-            else
-            {
-              /*
-                mysqldump is being run against the server, that does not
-                provide character set information in SHOW CREATE
-                statements.
+          else
+          {
+            /*
+              mysqldump is being run against the server, that does not
+              provide character set information in SHOW CREATE
+              statements.
 
-                NOTE: the dump may be incorrect, since character set
-                information is required in order to restore event properly.
-              */
+              NOTE: the dump may be incorrect, since character set
+              information is required in order to restore event properly.
+            */
 
-              fprintf(sql_file,
-                      "--\n"
-                      "-- WARNING: old server version. "
-                        "The following dump may be incomplete.\n"
-                      "--\n");
-            }
+            fprintf(sql_file,
+                    "--\n"
+                    "-- WARNING: old server version. "
+                      "The following dump may be incomplete.\n"
+                    "--\n");
+          }
 
           switch_sql_mode(sql_file, delimiter, row[1]);
 
           switch_time_zone(sql_file, delimiter, row[2]);
 
+          query_str= cover_definer_clause(row[3], strlen(row[3]),
+                                          C_STRING_WITH_LEN("50117"),
+                                          C_STRING_WITH_LEN("50106"),
+                                          C_STRING_WITH_LEN(" EVENT"));
+
           fprintf(sql_file,
                   "/*!50106 %s */ %s\n",
-                  (const char *) row[3],
+                  (const char *) (query_str != NULL ? query_str : row[3]),
                   (const char *) delimiter);
 
           restore_time_zone(sql_file, delimiter);
@@ -2170,7 +2125,16 @@ static uint dump_routines_for_db(char *d
               fprintf(sql_file, "/*!50003 DROP %s IF EXISTS %s */;\n",
                       routine_type[i], routine_name);
 
-            query_str= cover_definer_clause_in_sp(row[2], strlen(row[2]));
+            query_str= cover_definer_clause(row[2], strlen(row[2]),
+                                            C_STRING_WITH_LEN("50020"),
+                                            C_STRING_WITH_LEN("50003"),
+                                            C_STRING_WITH_LEN(" FUNCTION"));
+
+            if (!query_str)
+              query_str= cover_definer_clause(row[2], strlen(row[2]),
+                                              C_STRING_WITH_LEN("50020"),
+                                              C_STRING_WITH_LEN("50003"),
+                                              C_STRING_WITH_LEN(" PROCEDURE"));
 
             if (mysql_num_fields(routine_res) >= 6)
             {
@@ -2855,8 +2819,10 @@ static int dump_trigger(MYSQL_RES *show_
 
   while ((row= mysql_fetch_row(show_create_trigger_rs)))
   {
-    char *query_str= cover_definer_clause_in_trigger(row[2], strlen(row[2]));
-
+    char *query_str= cover_definer_clause(row[2], strlen(row[2]),
+                                          C_STRING_WITH_LEN("50017"),
+                                          C_STRING_WITH_LEN("50003"),
+                                          C_STRING_WITH_LEN(" TRIGGER"));
 
     if (switch_db_collation(sql_file, db_name, ";",
                             db_cl_name, row[5], &db_cl_altered))

=== modified file 'mysql-test/r/ddl_i18n_koi8r.result'
--- a/mysql-test/r/ddl_i18n_koi8r.result	2009-02-16 14:47:53 +0000
+++ b/mysql-test/r/ddl_i18n_koi8r.result	2009-03-26 06:15:10 +0000
@@ -2226,7 +2226,7 @@ END|
 
 SHOW CREATE EVENT ev1|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev1		SYSTEM	CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev1		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE ��� CHAR(10);
 SELECT
 COLLATION(���) AS c1,
@@ -2239,7 +2239,7 @@ END	koi8r	koi8r_general_ci	utf8_unicode_
 
 SHOW CREATE EVENT ev2|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev2		SYSTEM	CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev2		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE �LATION(���) AS c1,
@@ -2252,7 +2252,7 @@ END	koi8r	koi8r_general_ci	utf8_unicode_
 
 SHOW CREATE EVENT mysqltest2.ev3|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev3		SYSTEM	CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE ��� CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(���) AS c1,
@@ -2265,7 +2265,7 @@ END	koi8r	koi8r_general_ci	utf8_unicode_
 
 SHOW CREATE EVENT mysqltest2.ev3|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev3		SYSTEM	CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE ��� CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(��r|
 
 SHOW CREATE EVENT ev1|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev1		SYSTEM	CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev1		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE ��� CHAR(10);
 SELECT
 COLLATION(���) AS c1,
@@ -2374,7 +2374,7 @@ END	koi8r	koi8r_general_ci	utf8_unicode_
 
 SHOW CREATE EVENT ev2|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev2		SYSTEM	CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev2		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE COLLATION(���) AS c1,
@@ -2387,7 +2387,7 @@ END	koi8r	koi8r_general_ci	utf8_unicode_
 
 SHOW CREATE EVENT mysqltest2.ev3|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev3		SYSTEM	CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE ��� CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(���) AS c1,
@@ -2400,7 +2400,7 @@ END	koi8r	koi8r_general_ci	utf8_unicode_
 
 SHOW CREATE EVENT mysqltest2.ev3|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev3		SYSTEM	CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE ��� CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(�ASE mysqltest1 CHARACTER SET 
 /*!50003 SET sql_mode              = '' */ ;;
 /*!50003 SET @saved_time_zone      = @@time_zone */ ;;
 /*!50003 SET time_zone             = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE ��� CHAR(10);
 SELECT
 COLLATION(���) AS c1,
@@ -2525,7 +2525,7 @@ ALTER DATABASE mysqltest1 CHARACTER SET 
 /*!50003 SET sql_mode              = '' */ ;;
 /*!50003 SET @saved_time_zone      = @@time_zone */ ;;
 /*!50003 SET time_zone             = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE ��� CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(���) AS c1,
@@ -2564,7 +2564,7 @@ ALTER DATABASE mysqltest2 CHARACTER SET 
 /*!50003 SET sql_mode              = '' */ ;;
 /*!50003 SET @saved_time_zone      = @@time_zone */ ;;
 /*!50003 SET time_zone             = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE ��� CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(���) AS c1,
@@ -2592,7 +2592,7 @@ ALTER DATABASE mysqltest2 CHARACTER SET 
 /*!50003 SET sql_mode              = '' */ ;;
 /*!50003 SET @saved_time_zone      = @@time_zone */ ;;
 /*!50003 SET time_zone             = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev4` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev4` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE ��� CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(��r|
 
 SHOW CREATE EVENT ev1|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev1		SYSTEM	CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev1		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE ��� CHAR(10);
 SELECT
 COLLATION(���) AS c1,
@@ -2647,7 +2647,7 @@ END	koi8r	koi8r_general_ci	utf8_unicode_
 
 SHOW CREATE EVENT ev2|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev2		SYSTEM	CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev2		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE COLLATION(���) AS c1,
@@ -2660,7 +2660,7 @@ END	koi8r	koi8r_general_ci	utf8_unicode_
 
 SHOW CREATE EVENT mysqltest2.ev3|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev3		SYSTEM	CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE ��� CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(���) AS c1,
@@ -2673,7 +2673,7 @@ END	koi8r	koi8r_general_ci	utf8_unicode_
 
 SHOW CREATE EVENT mysqltest2.ev3|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev3		SYSTEM	CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE ��� CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(�/ddl_i18n_utf8.result'
--- a/mysql-test/r/ddl_i18n_utf8.result	2009-02-16 14:47:53 +0000
+++ b/mysql-test/r/ddl_i18n_utf8.result	2009-03-26 06:15:10 +0000
@@ -2226,7 +2226,7 @@ END|
 
 SHOW CREATE EVENT ev1|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev1		SYSTEM	CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev1		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перем1 CHAR(10);
 SELECT
 COLLATION(перем1) AS c1,
@@ -2239,7 +2239,7 @@ END	utf8	utf8_general_ci	utf8_unicode_ci
 
 SHOW CREATE EVENT ev2|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev2		SYSTEM	CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev2		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перем1 CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(перем1) AS c1,
@@ -2252,7 +2252,7 @@ END	utf8	utf8_general_ci	utf8_unicode_ci
 
 SHOW CREATE EVENT mysqltest2.ev3|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev3		SYSTEM	CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перем1 CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(перем1) AS c1,
@@ -2265,7 +2265,7 @@ END	utf8	utf8_general_ci	utf8_unicode_ci
 
 SHOW CREATE EVENT mysqltest2.ev3|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev3		SYSTEM	CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перем1 CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(перем1) AS c1,
@@ -2361,7 +2361,7 @@ set names utf8|
 
 SHOW CREATE EVENT ev1|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev1		SYSTEM	CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev1		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перем1 CHAR(10);
 SELECT
 COLLATION(перем1) AS c1,
@@ -2374,7 +2374,7 @@ END	utf8	utf8_general_ci	utf8_unicode_ci
 
 SHOW CREATE EVENT ev2|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev2		SYSTEM	CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev2		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перем1 CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(перем1) AS c1,
@@ -2387,7 +2387,7 @@ END	utf8	utf8_general_ci	utf8_unicode_ci
 
 SHOW CREATE EVENT mysqltest2.ev3|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev3		SYSTEM	CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перем1 CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(п	utf8_general_ci	utf8_unicode_ci
 
 SHOW CREATE EVENT mysqltest2.ev3|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev3		SYSTEM	CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перем1 CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(перем1) AS c1,
@@ -2497,7 +2497,7 @@ ALTER DATABASE mysqltest1 CHARACTER SET 
 /*!50003 SET sql_mode              = '' */ ;;
 /*!50003 SET @saved_time_zone      = @@time_zone */ ;;
 /*!50003 SET time_zone             = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перем1 CHAR(10);
 SELECT
 COLLATION(перем1) AS c1,
@@ -2525,7 +2525,7 @@ ALTER DATABASE mysqltest1 CHARACTER SET 
 /*!50003 SET sql_mode              = '' */ ;;
 /*!50003 SET @saved_time_zone      = @@time_zone */ ;;
 /*!50003 SET time_zone             = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перем1 CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(перем1) AS c1,
@@ -2564,7 +2564,7 @@ ALTER DATABASE mysqltest2 CHARACTER SET 
 /*!50003 SET sql_mode              = '' */ ;;
 /*!50003 SET @saved_time_zone      = @@time_zone */ ;;
 /*!50003 SET time_zone             = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перем1 CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(перем1) AS c1,
@@ -2592,7 +2592,7 @@ ALTER DATABASE mysqltest2 CHARACTER SET 
 /*!50003 SET sql_mode              = '' */ ;;
 /*!50003 SET @saved_time_zone      = @@time_zone */ ;;
 /*!50003 SET time_zone             = 'SYSTEM' */ ;;
-/*!50106 CREATE EVENT `ev4` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev4` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перем1 CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(перем1) AS c1,
@@ -2634,7 +2634,7 @@ set names utf8|
 
 SHOW CREATE EVENT ev1|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev1		SYSTEM	CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev1		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перем1 CHAR(10);
 SELECT
 COLLATION(п	utf8_general_ci	utf8_unicode_ci
 
 SHOW CREATE EVENT ev2|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev2		SYSTEM	CREATE EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev2		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перLATION(перем1) AS c1,
@@ -2660,7 +2660,7 @@ END	utf8	utf8_general_ci	utf8_unicode_ci
 
 SHOW CREATE EVENT mysqltest2.ev3|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev3		SYSTEM	CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перем1 CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(перем1) AS c1,
@@ -2673,7 +2673,7 @@ END	utf8	utf8_general_ci	utf8_unicode_ci
 
 SHOW CREATE EVENT mysqltest2.ev3|
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev3		SYSTEM	CREATE EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
+ev3		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
 DECLARE перем1 CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(перем1) AS c1,

=== modified file 'mysql-test/r/events_1.result'
--- a/mysql-test/r/events_1.result	2008-02-20 13:40:46 +0000
+++ b/mysql-test/r/events_1.result	2009-03-26 06:15:10 +0000
@@ -123,80 +123,80 @@ set names utf8;
 CREATE EVENT root6 ON SCHEDULE EVERY '10:20' MINUTE_SECOND ON COMPLETION PRESERVE ENABLE COMMENT 'some comment' DO select 1;
 SHOW CREATE EVENT root6;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root6		SYSTEM	CREATE EVENT `root6` ON SCHEDULE EVERY '10:20' MINUTE_SECOND STARTS '#' ON COMPLETION PRESERVE ENABLE COMMENT 'some comment' DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root6		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root6` ON SCHEDULE EVERY '10:20' MINUTE_SECOND STARTS '#' ON COMPLETION PRESERVE ENABLE COMMENT 'some comment' DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root7 on schedule every 2 year do select 1;
 SHOW CREATE EVENT root7;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root7		SYSTEM	CREATE EVENT `root7` ON SCHEDULE EVERY 2 YEAR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root7		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root7` ON SCHEDULE EVERY 2 YEAR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root8 on schedule every '2:5' year_month do select 1;
 SHOW CREATE EVENT root8;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root8		SYSTEM	CREATE EVENT `root8` ON SCHEDULE EVERY '2-5' YEAR_MONTH STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root8		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root8` ON SCHEDULE EVERY '2-5' YEAR_MONTH STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root8_1 on schedule every '2:15' year_month do select 1;
 SHOW CREATE EVENT root8_1;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root8_1		SYSTEM	CREATE EVENT `root8_1` ON SCHEDULE EVERY '3-3' YEAR_MONTH STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root8_1		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root8_1` ON SCHEDULE EVERY '3-3' YEAR_MONTH STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root9 on schedule every 2 week ON COMPLETION PRESERVE DISABLE COMMENT 'коментар на кирилицnt	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root9		SYSTEM	CREATE EVENT `root9` ON SCHEDULE EVERY 2 WEEK STARTS '#' ON COMPLETION PRESERVE DISABLE COMMENT 'коментар на кири_swedish_ci
+root9		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root9` ON SCHEDULE EVERY 2 WEEK STARTS '#' ON COMPLETION PRESERVE DISABLE COMMENT 'коментар на кирилица' DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root10 on schedule every '20:5' day_hour do select 1;
 SHOW CREATE EVENT root10;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root10		SYSTEM	CREATE EVENT `root10` ON SCHEDULE EVERY '20 5' DAY_HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root10		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root10` ON SCHEDULE EVERY '20 5' DAY_HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root11 on schedule every '20:25' day_hour do select 1;
 SHOW CREATE EVENT root11;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root11		SYSTEM	CREATE EVENT `root11` ON SCHEDULE EVERY '21 1' DAY_HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root11		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root11` ON SCHEDULE EVERY '21 1' DAY_HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root12 on schedule every '20:25' hour_minute do select 1;
 SHOW CREATE EVENT root12;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root12		SYSTEM	CREATE EVENT `root12` ON SCHEDULE EVERY '20:25' HOUR_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root12		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root12` ON SCHEDULE EVERY '20:25' HOUR_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root13 on schedule every '25:25' hour_minute do select 1;
 SHOW CREATE EVENT root13;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root13		SYSTEM	CREATE EVENT `root13` ON SCHEDULE EVERY '25:25' HOUR_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root13		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root13` ON SCHEDULE EVERY '25:25' HOUR_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root13_1 on schedule every '11:65' hour_minute do select 1;
 SHOW CREATE EVENT root13_1;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root13_1		SYSTEM	CREATE EVENT `root13_1` ON SCHEDULE EVERY '12:5' HOUR_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root13_1		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root13_1` ON SCHEDULE EVERY '12:5' HOUR_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root14 on schedule every '35:35' minute_second do select 1;
 SHOW CREATE EVENT root14;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root14		SYSTEM	CREATE EVENT `root14` ON SCHEDULE EVERY '35:35' MINUTE_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root14		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root14` ON SCHEDULE EVERY '35:35' MINUTE_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root15 on schedule every '35:66' minute_second do select 1;
 SHOW CREATE EVENT root15;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root15		SYSTEM	CREATE EVENT `root15` ON SCHEDULE EVERY '36:6' MINUTE_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root15		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root15` ON SCHEDULE EVERY '36:6' MINUTE_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root16 on schedule every '35:56' day_minute do select 1;
 SHOW CREATE EVENT root16;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root16		SYSTEM	CREATE EVENT `root16` ON SCHEDULE EVERY '1 11:56' DAY_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root16		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root16` ON SCHEDULE EVERY '1 11:56' DAY_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root17 on schedule every '35:12:45' day_minute do select 1;
 SHOW CREATE EVENT root17;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root17		SYSTEM	CREATE EVENT `root17` ON SCHEDULE EVERY '35 12:45' DAY_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root17		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root17` ON SCHEDULE EVERY '35 12:45' DAY_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root17_1 on schedule every '35:25:65' day_minute do select 1;
 SHOW CREATE EVENT root17_1;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root17_1		SYSTEM	CREATE EVENT `root17_1` ON SCHEDULE EVERY '36 2:5' DAY_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root17_1		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root17_1` ON SCHEDULE EVERY '36 2:5' DAY_MINUTE STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root18 on schedule every '35:12:45' hour_second do select 1;
 SHOW CREATE EVENT root18;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root18		SYSTEM	CREATE EVENT `root18` ON SCHEDULE EVERY '35:12:45' HOUR_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root18		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root18` ON SCHEDULE EVERY '35:12:45' HOUR_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root19 on schedule every '15:59:85' hour_second do select 1;
 SHOW CREATE EVENT root19;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root19		SYSTEM	CREATE EVENT `root19` ON SCHEDULE EVERY '16:0:25' HOUR_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root19		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root19` ON SCHEDULE EVERY '16:0:25' HOUR_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 create event root20 on schedule every '50:20:12:45' day_second do select 1;
 SHOW CREATE EVENT root20;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-root20		SYSTEM	CREATE EVENT `root20` ON SCHEDULE EVERY '50 20:12:45' DAY_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+root20		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `root20` ON SCHEDULE EVERY '50 20:12:45' DAY_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 set names cp1251;
 create event �21 on schedule every '50:23:59:95' day_second COMMENT '� �251 
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-�21		SYSTEM	CREATE EVENT `руут21` ON SCHEDULE EVERY '51 0:0:35' DAY_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE COMMENT '1251	cp1251_general_ci	latin1_swedish_ci
+�21		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `руут21` ON SCHEDULE EVERY '51 0:0:35' DAY_SECOND STARTS '#' ON COMPLETION NOT PRESERVE ENABLE COMMENT 'това е 1251 коментар' DO select 1	cp1251	cp1251_general_ci	latin1_swedish_ci
 insert into mysql.event (
 db,
 name,
@@ -271,7 +271,7 @@ event_name
 intact_check
 SHOW CREATE EVENT intact_check;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-intact_check		SYSTEM	CREATE EVENT `intact_check` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO SELECT "nothing"	latin1	latin1_swedish_ci	latin1_swedish_ci
+intact_check		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `intact_check` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO SELECT "nothing"	latin1	latin1_swedish_ci	latin1_swedish_ci
 DROP EVENT no_such_event;
 ERROR HY000: Unknown event 'no_such_event'
 CREATE EVENT intact_check_1 ON SCHEDULE EVERY 5 HOUR DO SELECT 5;

=== modified file 'mysql-test/r/events_2.result'
--- a/mysql-test/r/events_2.result	2008-08-18 11:05:51 +0000
+++ b/mysql-test/r/events_2.result	2009-03-26 06:15:10 +0000
@@ -134,7 +134,7 @@ create event e1 on schedule every 10 hou
 lock table t1 read;
 show create event e1;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-e1		SYSTEM	CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+e1		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 select event_name from information_schema.events;
 event_name
 e1
@@ -152,7 +152,7 @@ unlock tables;
 lock table t1 write;
 show create event e1;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-e1		SYSTEM	CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+e1		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 select event_name from information_schema.events;
 event_name
 e1
@@ -170,7 +170,7 @@ unlock tables;
 lock table t1 read, mysql.event read;
 show create event e1;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-e1		SYSTEM	CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+e1		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 select event_name from information_schema.events;
 event_name
 e1
@@ -188,7 +188,7 @@ unlock tables;
 lock table t1 write, mysql.event read;
 show create event e1;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-e1		SYSTEM	CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+e1		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 select event_name from information_schema.events;
 event_name
 e1
@@ -210,7 +210,7 @@ ERROR HY000: You can't combine write-loc
 lock table mysql.event write;
 show create event e1;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-e1		SYSTEM	CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
+e1		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1	utf8	utf8_general_ci	latin1_swedish_ci
 select event_name from information_schema.events;
 event_name
 e1

=== modified file 'mysql-test/r/mysqldump.result'
--- a/mysql-test/r/mysqldump.result	2009-02-03 16:32:37 +0000
+++ b/mysql-test/r/mysqldump.result	2009-03-26 06:15:10 +0000
@@ -3887,7 +3887,7 @@ Db	Name	Definer	Time zone	Type	Execute a
 first	ee1	root@localhost	UTC	ONE TIME	2035-12-31 20:01:23	NULL	NULL	NULL	NULL	ENABLED	1	latin1	latin1_swedish_ci	latin1_swedish_ci
 show create event ee1;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ee1		UTC	CREATE EVENT `ee1` ON SCHEDULE AT '2035-12-31 20:01:23' ON COMPLETION NOT PRESERVE ENABLE DO set @a=5	latin1	latin1_swedish_ci	latin1_swedish_ci
+ee1		UTC	CREATE DEFINER=`root`@`localhost` EVENT `ee1` ON SCHEDULE AT '2035-12-31 20:01:23' ON COMPLETION NOT PRESERVE ENABLE DO set @a=5	latin1	latin1_swedish_ci	latin1_swedish_ci
 drop database first;
 create database second;
 use second;
@@ -3896,7 +3896,7 @@ Db	Name	Definer	Time zone	Type	Execute a
 second	ee1	root@localhost	UTC	ONE TIME	2035-12-31 20:01:23	NULL	NULL	NULL	NULL	ENABLED	1	latin1	latin1_swedish_ci	latin1_swedish_ci
 show create event ee1;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ee1		UTC	CREATE EVENT `ee1` ON SCHEDULE AT '2035-12-31 20:01:23' ON COMPLETION NOT PRESERVE ENABLE DO set @a=5	latin1	latin1_swedish_ci	latin1_swedish_ci
+ee1		UTC	CREATE DEFINER=`root`@`localhost` EVENT `ee1` ON SCHEDULE AT '2035-12-31 20:01:23' ON COMPLETION NOT PRESERVE ENABLE DO set @a=5	latin1	latin1_swedish_ci	latin1_swedish_ci
 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;

=== modified file 'mysql-test/r/show_check.result'
--- a/mysql-test/r/show_check.result	2009-02-16 14:47:53 +0000
+++ b/mysql-test/r/show_check.result	2009-03-26 06:15:10 +0000
@@ -1429,7 +1429,7 @@ FOR EACH ROW
 SET NEW.c1 = 'тест'	koi8r	koi8r_general_ci	latin1_swedish_ci
 SHOW CREATE EVENT ev1;
 Event	sql_mode	time_zone	Create Event	character_set_client	collation_connection	Database Collation
-ev1		SYSTEM	CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO SELECT 'тест' AS test	koi8r	koi8r_general_ci	latin1_swedish_ci
+ev1		SYSTEM	CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO SELECT 'тест' AS test	koi8r	koi8r_general_ci	latin1_swedish_ci
 DROP VIEW v1;
 DROP PROCEDURE p1;
 DROP FUNCTION f1;

=== modified file 'sql/event_data_objects.cc'
--- a/sql/event_data_objects.cc	2008-12-03 00:47:42 +0000
+++ b/sql/event_data_objects.cc	2009-03-26 06:15:10 +0000
@@ -1224,7 +1224,9 @@ Event_timed::get_create_event(THD *thd, 
                                                             expression))
     DBUG_RETURN(EVEX_MICROSECOND_UNSUP);
 
-  buf->append(STRING_WITH_LEN("CREATE EVENT "));
+  buf->append(STRING_WITH_LEN("CREATE "));
+  append_definer(thd, buf, &definer_user, &definer_host);
+  buf->append(STRING_WITH_LEN("EVENT "));
   append_identifier(thd, buf, name.str, name.length);
 
   if (expression)

Attachment: [text/bzr-bundle] bzr/alik@sun.com-20090326061510-izdjevxgjsusgy1y.bundle
Thread
bzr commit into mysql-6.0 branch (alik:2751) Bug#35297Alexander Nozdrin26 Mar