From 32c2712083b968fae9200ec1d320a9ab900d5e80 Mon Sep 17 00:00:00 2001 From: "msvensson@neptunus.(none)" <> Date: Thu, 9 Feb 2006 11:05:28 +0100 Subject: [PATCH 1/2] Bug#16878 dump of trigger - Pass "in_comment" variable on to new lex in sp_head::reset_lex - Add testcases for dumping and reloading trigger without BEGIN/END --- mysql-test/r/mysqldump.result | 22 ++++++++++++++++++++++ mysql-test/t/mysqldump.test | 30 ++++++++++++++++++++++++++++++ sql/sp_head.cc | 2 ++ 3 files changed, 54 insertions(+) diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index 717d9f67774..46056edcd5e 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -2611,3 +2611,25 @@ UNLOCK TABLES; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; drop table t1; +create table t1 (a int, created datetime); +create table t2 (b int, created datetime); +create trigger tr1 before insert on t1 for each row set +new.created=now(); +create trigger tr2 after insert on t1 +for each row +begin +insert into t2 set b=new.a and created=new.created; +end| +drop trigger tr1; +drop trigger tr2; +drop table t1, t2; +show triggers; +Trigger Event Table Statement Timing Created sql_mode Definer +tr1 INSERT t1 set +new.created=now() BEFORE # root@localhost +tr2 INSERT t1 begin +insert into t2 set b=new.a and created=new.created; +end AFTER # root@localhost +drop trigger tr1; +drop trigger tr2; +drop table t1, t2; diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index e54bf6386c5..caa1ae0d837 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -1036,3 +1036,33 @@ insert into t1 values ('',''); drop table t1; # End of 4.1 tests + +# +# Bug #16878 dump of trigger +# + +create table t1 (a int, created datetime); +create table t2 (b int, created datetime); +create trigger tr1 before insert on t1 for each row set +new.created=now(); +delimiter |; +create trigger tr2 after insert on t1 +for each row +begin + insert into t2 set b=new.a and created=new.created; +end| +delimiter ;| + +# dump table and trigger +--exec $MYSQL_DUMP test > var/tmp/bug16878.sql +drop trigger tr1; +drop trigger tr2; +drop table t1, t2; + +# reload dump +--exec $MYSQL test < var/tmp/bug16878.sql +--replace_column 6 # +show triggers; +drop trigger tr1; +drop trigger tr2; +drop table t1, t2; diff --git a/sql/sp_head.cc b/sql/sp_head.cc index 96bf2c51b02..df993d304b1 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -1584,6 +1584,8 @@ sp_head::reset_lex(THD *thd) sublex->trg_table_fields.empty(); sublex->sp_lex_in_use= FALSE; + sublex->in_comment= oldlex->in_comment; + /* Reset type info. */ sublex->charset= NULL; From e50d43b41a1d854d278a6ed52b1de798f5db784e Mon Sep 17 00:00:00 2001 From: "msvensson@neptunus.(none)" <> Date: Tue, 21 Feb 2006 13:43:29 +0100 Subject: [PATCH 2/2] Bug#14857 Reading dump files with single statement stored routines fails.Bug #14857 Reading dump files with single statement stored routines fails. - Add tests, fixed by patch for 16878 --- mysql-test/r/mysqldump.result | 14 ++++++++++++++ mysql-test/t/mysqldump.test | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index 46056edcd5e..01d90cb0901 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -2633,3 +2633,17 @@ end AFTER # root@localhost drop trigger tr1; drop trigger tr2; drop table t1, t2; +/*!50003 CREATE FUNCTION `f`() RETURNS bigint(20) +return 42 */| +/*!50003 CREATE PROCEDURE `p`() +select 42 */| +show create function f; +Function sql_mode Create Function +f CREATE FUNCTION `f`() RETURNS bigint(20) +return 42 +show create procedure p; +Procedure sql_mode Create Procedure +p CREATE PROCEDURE `p`() +select 42 +drop function f; +drop procedure p; diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index caa1ae0d837..b76c82958f2 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -1066,3 +1066,21 @@ show triggers; drop trigger tr1; drop trigger tr2; drop table t1, t2; + + +# +# Bug#14857 Reading dump files with single statement stored routines fails. +# fixed by patch for bug#16878 +# +# +DELIMITER |; +/*!50003 CREATE FUNCTION `f`() RETURNS bigint(20) +return 42 */| +/*!50003 CREATE PROCEDURE `p`() +select 42 */| +DELIMITER ;| +show create function f; +show create procedure p; +drop function f; +drop procedure p; +