List:Commits« Previous MessageNext Message »
From:Vamsikrishna Bhagi Date:November 19 2012 4:23pm
Subject:bzr push into mysql-5.5 branch (vamsikrishna.bhagi:4069 to 4070) Bug#14463669
View as plain text  
 4070 Vamsikrishna Bhagi	2012-11-19
      Bug#14463669 FAILURE TO CORRECTLY PARSE ROUTINES IN
                   MYSQLDUMP OUTPUT
      
      Problem: mysqldump when used with option --routines, dumps
               all the routines of the specified database into
               output. The statements in this output are written
               in such a way that they are version safe using C
               style version commenting (of the format
               /*!<version num> <sql statement>*/). If a semicolon
               is present right before closing of the comment in
               dump output, it results in a syntax error while
               importing.
      
      
      Solution: Version comments for dumped routines are
                specifically to protect the ones older than 5.0.
                When the import is done on 5.0 or later versions,
                entire create statement gets executed as all the
                check conditions at the beginning of the comments
                are cleared. Since the trade off is between the
                performance of newer versions which are more in
                use and protection of very old versions which are
                no longer supported, it is proposed that these
                comments be removed altogether to maintain
                stability of the versions supported.
     @ client/mysqldump.c
        Bug#14463669 FAILURE TO CORRECTLY PARSE ROUTINES IN
                     MYSQLDUMP OUTPUT
        
        Output of mysqldump is derived by getting the queries from
        show create and appending version comments to them.
        query_str is the variable used to store the final string.
        Since it is no longer required, its declaration and
        manipulations made on it are deleted. At the step where
        output is printed, query_str is replaced with the original
        query string derived from 'show create'.

    modified:
      client/mysqldump.c
      mysql-test/r/mysqldump.result
 4069 Satya Bodapati	2012-11-19
      Bug#14147491 - INFINITE LOOP WHEN OPENING A CORRUPTED TABLE
      
      This bug is fixed by Bug#14251529. Only testcase from the 
      contribution is used.

    added:
      mysql-test/suite/innodb/r/innodb_bug14147491.result
      mysql-test/suite/innodb/t/innodb_bug14147491-master.opt
      mysql-test/suite/innodb/t/innodb_bug14147491.test
=== modified file 'client/mysqldump.c'
--- a/client/mysqldump.c	2012-11-09 09:46:49 +0000
+++ b/client/mysqldump.c	2012-11-19 16:11:35 +0000
@@ -2240,7 +2240,6 @@ static uint dump_routines_for_db(char *d
   const char *routine_type[]= {"FUNCTION", "PROCEDURE"};
   char       db_name_buff[NAME_LEN*2+3], name_buff[NAME_LEN*2+3];
   char       *routine_name;
-  char       *query_str;
   int        i;
   FILE       *sql_file= md_result_file;
   MYSQL_RES  *routine_res, *routine_list_res;
@@ -2334,17 +2333,6 @@ 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(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)
             {
               if (switch_db_collation(sql_file, db_name_buff, ";",
@@ -2382,9 +2370,9 @@ static uint dump_routines_for_db(char *d
 
             fprintf(sql_file,
                     "DELIMITER ;;\n"
-                    "/*!50003 %s */;;\n"
+                    "%s ;;\n"
                     "DELIMITER ;\n",
-                    (const char *) (query_str != NULL ? query_str : row[2]));
+                    (const char *) row[2]);
 
             restore_sql_mode(sql_file, ";");
 
@@ -2399,7 +2387,6 @@ static uint dump_routines_for_db(char *d
               }
             }
 
-            my_free(query_str);
           }
         } /* end of routine printing */
         mysql_free_result(routine_res);

=== modified file 'mysql-test/r/mysqldump.result'
--- a/mysql-test/r/mysqldump.result	2012-07-04 14:48:58 +0000
+++ b/mysql-test/r/mysqldump.result	2012-11-19 16:11:35 +0000
@@ -2706,8 +2706,8 @@ UNLOCK TABLES;
 /*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
 /*!50003 SET sql_mode              = '' */ ;
 DELIMITER ;;
-/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 FUNCTION `bug9056_func1`(a INT, b INT) RETURNS int(11)
-RETURN a+b */;;
+CREATE DEFINER=`root`@`localhost` FUNCTION `bug9056_func1`(a INT, b INT) RETURNS int(11)
+RETURN a+b ;;
 DELIMITER ;
 /*!50003 SET sql_mode              = @saved_sql_mode */ ;
 /*!50003 SET character_set_client  = @saved_cs_client */ ;
@@ -2723,11 +2723,11 @@ DELIMITER ;
 /*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
 /*!50003 SET sql_mode              = '' */ ;
 DELIMITER ;;
-/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 FUNCTION `bug9056_func2`(f1 char binary) RETURNS char(1) CHARSET latin1
+CREATE DEFINER=`root`@`localhost` FUNCTION `bug9056_func2`(f1 char binary) RETURNS char(1) CHARSET latin1
 begin
 set f1= concat( 'hello', f1 );
 return f1;
-end */;;
+end ;;
 DELIMITER ;
 /*!50003 SET sql_mode              = @saved_sql_mode */ ;
 /*!50003 SET character_set_client  = @saved_cs_client */ ;
@@ -2743,8 +2743,8 @@ DELIMITER ;
 /*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
 /*!50003 SET sql_mode              = 'REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI' */ ;
 DELIMITER ;;
-/*!50003 CREATE*/ /*!50020 DEFINER="root"@"localhost"*/ /*!50003 PROCEDURE "a'b"()
-select 1 */;;
+CREATE DEFINER="root"@"localhost" PROCEDURE "a'b"()
+select 1 ;;
 DELIMITER ;
 /*!50003 SET sql_mode              = @saved_sql_mode */ ;
 /*!50003 SET character_set_client  = @saved_cs_client */ ;
@@ -2760,8 +2760,8 @@ DELIMITER ;
 /*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
 /*!50003 SET sql_mode              = '' */ ;
 DELIMITER ;;
-/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 PROCEDURE `bug9056_proc1`(IN a INT, IN b INT, OUT c INT)
-BEGIN SELECT a+b INTO c; end */;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `bug9056_proc1`(IN a INT, IN b INT, OUT c INT)
+BEGIN SELECT a+b INTO c; end ;;
 DELIMITER ;
 /*!50003 SET sql_mode              = @saved_sql_mode */ ;
 /*!50003 SET character_set_client  = @saved_cs_client */ ;
@@ -2777,10 +2777,10 @@ DELIMITER ;
 /*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
 /*!50003 SET sql_mode              = '' */ ;
 DELIMITER ;;
-/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 PROCEDURE `bug9056_proc2`(OUT a INT)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `bug9056_proc2`(OUT a INT)
 BEGIN
 select sum(id) from t1 into a;
-END */;;
+END ;;
 DELIMITER ;
 /*!50003 SET sql_mode              = @saved_sql_mode */ ;
 /*!50003 SET character_set_client  = @saved_cs_client */ ;
@@ -3766,8 +3766,8 @@ create procedure mysqldump_test_db.sp1()
 /*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
 /*!50003 SET sql_mode              = '' */ ;
 DELIMITER ;;
-/*!50003 CREATE*/ /*!50020 DEFINER=`user1`@`%`*/ /*!50003 PROCEDURE `sp1`()
-select 'hello' */;;
+CREATE DEFINER=`user1`@`%` PROCEDURE `sp1`()
+select 'hello' ;;
 DELIMITER ;
 /*!50003 SET sql_mode              = @saved_sql_mode */ ;
 /*!50003 SET character_set_client  = @saved_cs_client */ ;

No bundle (reason: useless for push emails).
Thread
bzr push into mysql-5.5 branch (vamsikrishna.bhagi:4069 to 4070) Bug#14463669Vamsikrishna Bhagi19 Nov