diff options
author | andrey@lmy004. <> | 2006-02-15 17:12:27 +0100 |
---|---|---|
committer | andrey@lmy004. <> | 2006-02-15 17:12:27 +0100 |
commit | 32ae54bdbc14e022a27074900e9b072c3500888c (patch) | |
tree | 9ed6fc16ec4ffe63119d291e56559b89f9210473 | |
parent | 3195aef714d813a9824f74f41a39117e367a84c7 (diff) | |
download | mariadb-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.result | 4 | ||||
-rw-r--r-- | mysql-test/t/events.test | 11 | ||||
-rw-r--r-- | sql/sp_head.cc | 3 | ||||
-rw-r--r-- | sql/sql_parse.cc | 6 |
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, |