List:Commits« Previous MessageNext Message »
From:<gshchepa Date:July 20 2007 6:05pm
Subject:bk commit into 5.0 tree (gshchepa:1.2475) BUG#29788
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of uchum. When uchum 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@stripped, 2007-07-20 23:05:09+05:00, gshchepa@stripped +3 -0
  Fixed bug #29788.
  mysqldump discarded the NO_AUTO_VALUE_ON_ZERO value of
  the SQL_MODE variable after the dumping of triggers.
  
  The dump_triggers_for_table function has been modified
  to restore previous value of the SQL_MODE variable after
  the dumping of triggers.

  client/mysqldump.c@stripped, 2007-07-20 23:03:32+05:00, gshchepa@stripped +4 -5
    Fixed bug #29788.
    The dump_triggers_for_table function has been modified
    to restore previous value of the SQL_MODE variable after
    the dumping of triggers.

  mysql-test/r/mysqldump.result@stripped, 2007-07-20 23:03:35+05:00, gshchepa@stripped +25 -4
    Updated test case for bug #29788.

  mysql-test/t/mysqldump.test@stripped, 2007-07-20 23:03:34+05:00, gshchepa@stripped +20 -0
    Updated test case for bug #29788.

diff -Nrup a/client/mysqldump.c b/client/mysqldump.c
--- a/client/mysqldump.c	2007-07-18 19:14:19 +05:00
+++ b/client/mysqldump.c	2007-07-20 23:03:32 +05:00
@@ -2121,11 +2121,7 @@ static void dump_triggers_for_table(char
     DBUG_VOID_RETURN;
   }
   if (mysql_num_rows(result))
-  {
-    if (opt_compact)
-      fprintf(sql_file, "\n/*!50003 SET @OLD_SQL_MODE=@@SQL_MODE*/;\n");
     fprintf(sql_file, "\nDELIMITER ;;\n");
-  }
   while ((row= mysql_fetch_row(result)))
   {
     fprintf(sql_file,
@@ -2169,7 +2165,10 @@ static void dump_triggers_for_table(char
   if (mysql_num_rows(result))
     fprintf(sql_file,
             "DELIMITER ;\n"
-            "/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE */;\n");
+            "/*!50003 SET SESSION SQL_MODE='%s%s%s' */;\n",
+            path ? "" : "NO_AUTO_VALUE_ON_ZERO",
+            compatible_mode_normal_str[0] == 0 ? "" : ",",
+            compatible_mode_normal_str);
   mysql_free_result(result);
   /*
     make sure to set back opt_compatible mode to
diff -Nrup a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result
--- a/mysql-test/r/mysqldump.result	2007-07-18 19:14:21 +05:00
+++ b/mysql-test/r/mysqldump.result	2007-07-20 23:03:35 +05:00
@@ -2260,7 +2260,7 @@ end if;
 end */;;
 
 DELIMITER ;
-/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE */;
+/*!50003 SET SESSION SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
 DROP TABLE IF EXISTS `t2`;
 CREATE TABLE `t2` (
   `a` int(11) default NULL
@@ -2280,7 +2280,7 @@ end if;
 end */;;
 
 DELIMITER ;
-/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE */;
+/*!50003 SET SESSION SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
 /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
 
 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
@@ -2634,7 +2634,7 @@ DELIMITER ;;
 INSERT INTO `t2 test` SET a2 = NEW.a1; END */;;
 
 DELIMITER ;
-/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE */;
+/*!50003 SET SESSION SQL_MODE='NO_AUTO_VALUE_ON_ZERO,ANSI' */;
 DROP TABLE IF EXISTS "t2 test";
 CREATE TABLE "t2 test" (
   "a2" int(11) default NULL
@@ -2795,7 +2795,7 @@ SET new.a = 0;
 END */;;
 
 DELIMITER ;
-/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE */;
+/*!50003 SET SESSION SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
 /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
 
 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
@@ -3333,6 +3333,27 @@ SELECT * FROM v1;
 1
 1
 DROP VIEW v1;
+#
+# Bug #29788: mysqldump discards the NO_AUTO_VALUE_ON_ZERO value of
+#             the SQL_MODE variable after the dumping of triggers.
+#
+CREATE TABLE `t1` (`c1` INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
+CREATE TRIGGER `t1bd` BEFORE DELETE ON `t1` FOR EACH ROW BEGIN END;
+SET @TMP_SQL_MODE = @@SQL_MODE;
+SET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO';
+INSERT INTO t1 VALUES (0), (1), (2);
+SET SQL_MODE = @TMP_SQL_MODE;
+SELECT * FROM t1;
+c1
+0
+1
+2
+SELECT * FROM t1;
+c1
+0
+1
+2
+DROP TABLE t1;
 #
 # End of 5.0 tests
 #
diff -Nrup a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test
--- a/mysql-test/t/mysqldump.test	2007-07-18 19:14:20 +05:00
+++ b/mysql-test/t/mysqldump.test	2007-07-20 23:03:34 +05:00
@@ -1555,5 +1555,25 @@ SELECT * FROM v1;
 DROP VIEW v1;
 
 --echo #
+--echo # Bug #29788: mysqldump discards the NO_AUTO_VALUE_ON_ZERO value of
+--echo #             the SQL_MODE variable after the dumping of triggers.
+--echo #
+
+CREATE TABLE `t1` (`c1` INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
+CREATE TRIGGER `t1bd` BEFORE DELETE ON `t1` FOR EACH ROW BEGIN END;
+
+SET @TMP_SQL_MODE = @@SQL_MODE;
+SET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO';
+INSERT INTO t1 VALUES (0), (1), (2);
+SET SQL_MODE = @TMP_SQL_MODE;
+SELECT * FROM t1;
+
+--exec $MYSQL_DUMP --routines test >$MYSQLTEST_VARDIR/tmp/bug29788.sql
+--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/bug29788.sql
+SELECT * FROM t1;
+
+DROP TABLE t1;
+
+--echo #
 --echo # End of 5.0 tests
 --echo #
Thread
bk commit into 5.0 tree (gshchepa:1.2475) BUG#29788gshchepa20 Jul