diff options
author | unknown <kroki/tomash@moonlight.home> | 2007-02-02 20:43:33 +0300 |
---|---|---|
committer | unknown <kroki/tomash@moonlight.home> | 2007-02-02 20:43:33 +0300 |
commit | 2b48825bd6b8704a69c47627ef8d9e1ad4b67618 (patch) | |
tree | 2999e07bb4a34e881435544a05c901a008ca2b19 /mysql-test/t/events_bugs.test | |
parent | 6560c2aa040453084fbc841de1a842580767f30e (diff) | |
download | mariadb-git-2b48825bd6b8704a69c47627ef8d9e1ad4b67618.tar.gz |
BUG#16425: Events: no DEFINER clause
There was already support for CREATE DEFINER=... EVENT syntax in the
parser, but DEFINER information was ignored.
This patch adds processing of DEFINER, and a new ALTER DEFINER=...
EVENT syntax.
mysql-test/r/events_bugs.result:
Add result for bug#16425: Events: no DEFINER clause.
mysql-test/t/events_bugs.test:
Add test case for bug#16425: Events: no DEFINER clause.
sql/event_data_objects.cc:
Event_parse_data::init_definer() looks for DEFINER in
thd->lex->definer, which is always set now.
sql/sql_parse.cc:
Move DEFINER processing into the sp_process_definer(). Call this
function for CREATE EVENT/ALTER EVENT, as well as for CREATE
PROCEDURE/FUNCTION.
sql/sql_yacc.yy:
Add 'alter DEFINER=... event', update rule references accordingly.
Diffstat (limited to 'mysql-test/t/events_bugs.test')
-rw-r--r-- | mysql-test/t/events_bugs.test | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/mysql-test/t/events_bugs.test b/mysql-test/t/events_bugs.test index 26abf663ce1..0790999d720 100644 --- a/mysql-test/t/events_bugs.test +++ b/mysql-test/t/events_bugs.test @@ -364,6 +364,63 @@ drop event e22830_4; drop table t1; drop table t2; + +# +# BUG#16425: Events: no DEFINER clause +# +--error 0,ER_CANNOT_USER +DROP USER mysqltest_u1@localhost; + +CREATE USER mysqltest_u1@localhost; +GRANT EVENT ON events_test.* TO mysqltest_u1@localhost; + +CREATE EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT 1; +SELECT event_name, definer FROM INFORMATION_SCHEMA.EVENTS; +DROP EVENT e1; + +CREATE DEFINER=CURRENT_USER EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT 1; +SELECT event_name, definer FROM INFORMATION_SCHEMA.EVENTS; +ALTER DEFINER=mysqltest_u1@localhost EVENT e1 ON SCHEDULE EVERY 1 HOUR; +SELECT event_name, definer FROM INFORMATION_SCHEMA.EVENTS; +DROP EVENT e1; + +CREATE DEFINER=CURRENT_USER() EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT 1; +SELECT event_name, definer FROM INFORMATION_SCHEMA.EVENTS; +DROP EVENT e1; + +CREATE DEFINER=mysqltest_u1@localhost EVENT e1 ON SCHEDULE EVERY 1 DAY DO + SELECT 1; +SELECT event_name, definer FROM INFORMATION_SCHEMA.EVENTS; +DROP EVENT e1; + +connect (conn1, localhost, mysqltest_u1, , events_test); + +CREATE EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT 1; +SELECT event_name, definer FROM INFORMATION_SCHEMA.EVENTS; +DROP EVENT e1; + +CREATE DEFINER=CURRENT_USER EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT 1; +SELECT event_name, definer FROM INFORMATION_SCHEMA.EVENTS; +--error ER_SPECIFIC_ACCESS_DENIED_ERROR +ALTER DEFINER=root@localhost EVENT e1 ON SCHEDULE EVERY 1 HOUR; +SELECT event_name, definer FROM INFORMATION_SCHEMA.EVENTS; +DROP EVENT e1; + +CREATE DEFINER=CURRENT_USER() EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT 1; +SELECT event_name, definer FROM INFORMATION_SCHEMA.EVENTS; +DROP EVENT e1; + +--error ER_SPECIFIC_ACCESS_DENIED_ERROR +CREATE DEFINER=root@localhost EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT 1; +--error ER_EVENT_DOES_NOT_EXIST +DROP EVENT e1; + +disconnect conn1; +connection default; + +DROP USER mysqltest_u1@localhost; + + # # End of tests # |