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;