summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandrey@lmy004. <>2006-02-15 17:12:27 +0100
committerandrey@lmy004. <>2006-02-15 17:12:27 +0100
commit32ae54bdbc14e022a27074900e9b072c3500888c (patch)
tree9ed6fc16ec4ffe63119d291e56559b89f9210473
parent3195aef714d813a9824f74f41a39117e367a84c7 (diff)
downloadmariadb-git-32ae54bdbc14e022a27074900e9b072c3500888c.tar.gz
fix for bug#16410 (Events: CREATE EVENT is legal in a CREATE TRIGGER statement)
WL#1034 (Internal CRON) (post-post-review updates)
-rw-r--r--mysql-test/r/events.result4
-rw-r--r--mysql-test/t/events.test11
-rw-r--r--sql/sp_head.cc3
-rw-r--r--sql/sql_parse.cc6
4 files changed, 24 insertions, 0 deletions
diff --git a/mysql-test/r/events.result b/mysql-test/r/events.result
index c138b8bde48..86f98f0da8b 100644
--- a/mysql-test/r/events.result
+++ b/mysql-test/r/events.result
@@ -361,4 +361,8 @@ show processlist;
Id User Host db Command Time State Info
# root localhost events_test Query # NULL show processlist
drop event закачка21;
+create table t_16 (s1 int);
+create trigger t_16_bi before insert on t_16 for each row create event e_16 on schedule every 1 second do set @a=5;
+ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
+drop table t_16;
drop database events_test;
diff --git a/mysql-test/t/events.test b/mysql-test/t/events.test
index 87b578dff9e..d2a4e877672 100644
--- a/mysql-test/t/events.test
+++ b/mysql-test/t/events.test
@@ -323,6 +323,17 @@ select release_lock("test_lock2_1");
show processlist;
drop event закачка21;
+####
+# Bug #16410 Events: CREATE EVENT is legal in a CREATE TRIGGER statement
+#
+create table t_16 (s1 int);
+--error 1422
+create trigger t_16_bi before insert on t_16 for each row create event e_16 on schedule every 1 second do set @a=5;
+drop table t_16;
+#
+# end of test case
+####
+
##set global event_scheduler=1;
##select get_lock("test_lock3", 20);
##create event закачка on schedule every 10 hour do select get_lock("test_lock3", 20);
diff --git a/sql/sp_head.cc b/sql/sp_head.cc
index cf1097a28c6..301d88c8775 100644
--- a/sql/sp_head.cc
+++ b/sql/sp_head.cc
@@ -255,6 +255,9 @@ sp_get_flags_for_command(LEX *lex)
case SQLCOM_ALTER_FUNCTION:
case SQLCOM_DROP_PROCEDURE:
case SQLCOM_DROP_FUNCTION:
+ case SQLCOM_CREATE_EVENT:
+ case SQLCOM_ALTER_EVENT:
+ case SQLCOM_DROP_EVENT:
flags= sp_head::HAS_COMMIT_OR_ROLLBACK;
break;
default:
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index a061ff3730b..b84eb1cfcb8 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -3773,6 +3773,12 @@ end_with_restore_list:
is_schema_db(lex->et->dbname.str)))
break;
+ if (end_active_trans(thd))
+ {
+ res= -1;
+ break;
+ }
+
switch (lex->sql_command) {
case SQLCOM_CREATE_EVENT:
res= evex_create_event(thd, lex->et, (uint) lex->create_info.options,