mirror of
https://github.com/MariaDB/server.git
synced 2025-08-05 13:16:09 +03:00
Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into example.com:/work/mysql-5.1-runtime-bug22830-new sql/sql_lex.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_parse.cc: Auto merged sql/sql_yacc.yy: Auto merged
This commit is contained in:
@@ -206,13 +206,13 @@ drop event events_test.mysqltest_user1;
|
|||||||
drop user mysqltest_user1@localhost;
|
drop user mysqltest_user1@localhost;
|
||||||
drop database mysqltest_db1;
|
drop database mysqltest_db1;
|
||||||
create event e_53 on schedule at (select s1 from ttx) do drop table t;
|
create event e_53 on schedule at (select s1 from ttx) do drop table t;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select s1 from ttx) do drop table t' at line 1
|
ERROR 42000: This version of MySQL doesn't yet support 'Usage of subqueries or stored function calls as part of this statement'
|
||||||
create event e_53 on schedule every (select s1 from ttx) second do drop table t;
|
create event e_53 on schedule every (select s1 from ttx) second do drop table t;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select s1 from ttx) second do drop table t' at line 1
|
ERROR 42000: This version of MySQL doesn't yet support 'Usage of subqueries or stored function calls as part of this statement'
|
||||||
create event e_53 on schedule every 5 second starts (select s1 from ttx) do drop table t;
|
create event e_53 on schedule every 5 second starts (select s1 from ttx) do drop table t;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select s1 from ttx) do drop table t' at line 1
|
ERROR 42000: This version of MySQL doesn't yet support 'Usage of subqueries or stored function calls as part of this statement'
|
||||||
create event e_53 on schedule every 5 second ends (select s1 from ttx) do drop table t;
|
create event e_53 on schedule every 5 second ends (select s1 from ttx) do drop table t;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select s1 from ttx) do drop table t' at line 1
|
ERROR 42000: This version of MySQL doesn't yet support 'Usage of subqueries or stored function calls as part of this statement'
|
||||||
drop event if exists e_16;
|
drop event if exists e_16;
|
||||||
drop procedure if exists p_16;
|
drop procedure if exists p_16;
|
||||||
create event e_16 on schedule every 1 second do set @a=5;
|
create event e_16 on schedule every 1 second do set @a=5;
|
||||||
@@ -226,4 +226,46 @@ set @a= 6;
|
|||||||
call p_16();
|
call p_16();
|
||||||
drop procedure p_16;
|
drop procedure p_16;
|
||||||
drop event e_16;
|
drop event e_16;
|
||||||
|
drop function if exists f22830;
|
||||||
|
drop event if exists e22830;
|
||||||
|
drop event if exists e22830_1;
|
||||||
|
drop event if exists e22830_2;
|
||||||
|
drop event if exists e22830_3;
|
||||||
|
drop event if exists e22830_4;
|
||||||
|
drop table if exists t1;
|
||||||
|
drop table if exists t2;
|
||||||
|
create table t1 (a int);
|
||||||
|
insert into t1 values (2);
|
||||||
|
create table t2 (a char(20));
|
||||||
|
insert into t2 values ("e22830_1");
|
||||||
|
create function f22830 () returns int return 5;
|
||||||
|
create event e22830 on schedule every f22830() second do select 123;
|
||||||
|
ERROR 42000: This version of MySQL doesn't yet support 'Usage of subqueries or stored function calls as part of this statement'
|
||||||
|
create event e22830_1 on schedule every 1 hour do alter event e22830_1 on schedule every (select 8 from dual) hour;
|
||||||
|
create event e22830_2 on schedule every 1 hour do alter event e22830_2 on schedule every (select 8 from t1) hour;
|
||||||
|
create event e22830_3 on schedule every 1 hour do alter event e22830_3 on schedule every f22830() hour;
|
||||||
|
create event e22830_4 on schedule every 1 hour do alter event e22830_4 on schedule every (select f22830() from dual) hour;
|
||||||
|
select event_name, event_definition, interval_value, interval_field from information_schema.events order by event_name;
|
||||||
|
event_name event_definition interval_value interval_field
|
||||||
|
e22830_1 alter event e22830_1 on schedule every (select 8 from dual) hour 1 HOUR
|
||||||
|
e22830_2 alter event e22830_2 on schedule every (select 8 from t1) hour 1 HOUR
|
||||||
|
e22830_3 alter event e22830_3 on schedule every f22830() hour 1 HOUR
|
||||||
|
e22830_4 alter event e22830_4 on schedule every (select f22830() from dual) hour 1 HOUR
|
||||||
|
set global event_scheduler=on;
|
||||||
|
set global event_scheduler=off;
|
||||||
|
select event_name, event_definition, interval_value, interval_field from information_schema.events order by event_name;
|
||||||
|
event_name event_definition interval_value interval_field
|
||||||
|
e22830_1 alter event e22830_1 on schedule every (select 8 from dual) hour 8 HOUR
|
||||||
|
e22830_2 alter event e22830_2 on schedule every (select 8 from t1) hour 1 HOUR
|
||||||
|
e22830_3 alter event e22830_3 on schedule every f22830() hour 1 HOUR
|
||||||
|
e22830_4 alter event e22830_4 on schedule every (select f22830() from dual) hour 1 HOUR
|
||||||
|
drop function f22830;
|
||||||
|
drop event (select a from t2);
|
||||||
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(select a from t2)' at line 1
|
||||||
|
drop event e22830_1;
|
||||||
|
drop event e22830_2;
|
||||||
|
drop event e22830_3;
|
||||||
|
drop event e22830_4;
|
||||||
|
drop table t1;
|
||||||
|
drop table t2;
|
||||||
drop database events_test;
|
drop database events_test;
|
||||||
|
@@ -4,7 +4,7 @@ CREATE EVENT one_event ON SCHEDULE EVERY 10 SECOND DO SELECT 123;
|
|||||||
SHOW EVENTS;
|
SHOW EVENTS;
|
||||||
Db Name Definer Type Execute at Interval value Interval field Starts Ends Status
|
Db Name Definer Type Execute at Interval value Interval field Starts Ends Status
|
||||||
events_test one_event root@localhost RECURRING NULL 10 SECOND # # ENABLED
|
events_test one_event root@localhost RECURRING NULL 10 SECOND # # ENABLED
|
||||||
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT from information_schema.events;
|
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
|
||||||
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
|
||||||
NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
|
NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
|
||||||
CREATE DATABASE events_test2;
|
CREATE DATABASE events_test2;
|
||||||
@@ -57,37 +57,37 @@ USE events_test2;
|
|||||||
CREATE EVENT four_event ON SCHEDULE EVERY 20 SECOND DO SELECT 42;
|
CREATE EVENT four_event ON SCHEDULE EVERY 20 SECOND DO SELECT 42;
|
||||||
USE events_test;
|
USE events_test;
|
||||||
"We should see 4 events : one_event, two_event, three_event & four_event"
|
"We should see 4 events : one_event, two_event, three_event & four_event"
|
||||||
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS;
|
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
|
||||||
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
|
||||||
NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
|
NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
|
||||||
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
|
|
||||||
NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
|
NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
|
||||||
|
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
|
||||||
NULL events_test2 four_event ev_test@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE
|
NULL events_test2 four_event ev_test@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE
|
||||||
DROP DATABASE events_test2;
|
DROP DATABASE events_test2;
|
||||||
"We should see 3 events : one_event, two_event, three_event"
|
"We should see 3 events : one_event, two_event, three_event"
|
||||||
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS;
|
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
|
||||||
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
|
||||||
NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
|
NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
|
||||||
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
|
|
||||||
NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
|
NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
|
||||||
|
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
|
||||||
CREATE DATABASE events_test2;
|
CREATE DATABASE events_test2;
|
||||||
USE events_test2;
|
USE events_test2;
|
||||||
CREATE EVENT five_event ON SCHEDULE EVERY 20 SECOND DO SELECT 42;
|
CREATE EVENT five_event ON SCHEDULE EVERY 20 SECOND DO SELECT 42;
|
||||||
"Should see 4 events - one, two, three & five"
|
"Should see 4 events - one, two, three & five"
|
||||||
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS;
|
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
|
||||||
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
|
||||||
NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
|
NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
|
||||||
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
|
|
||||||
NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
|
NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
|
||||||
|
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
|
||||||
NULL events_test2 five_event root@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE
|
NULL events_test2 five_event root@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE
|
||||||
REVOKE EVENT ON events_test2.* FROM ev_test@localhost;
|
REVOKE EVENT ON events_test2.* FROM ev_test@localhost;
|
||||||
USE test;
|
USE test;
|
||||||
"Should see 3 events - one, two & three"
|
"Should see 3 events - one, two & three"
|
||||||
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS;
|
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
|
||||||
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
|
||||||
NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
|
NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE
|
||||||
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
|
|
||||||
NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
|
NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
|
||||||
|
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
|
||||||
"Let's test ALTER EVENT which changes the definer"
|
"Let's test ALTER EVENT which changes the definer"
|
||||||
USE events_test;
|
USE events_test;
|
||||||
ALTER EVENT one_event ON SCHEDULE EVERY 10 SECOND;
|
ALTER EVENT one_event ON SCHEDULE EVERY 10 SECOND;
|
||||||
@@ -111,10 +111,10 @@ ALTER EVENT one_event COMMENT "new comment";
|
|||||||
"test DROP by another user"
|
"test DROP by another user"
|
||||||
DROP EVENT one_event;
|
DROP EVENT one_event;
|
||||||
"One event should not be there"
|
"One event should not be there"
|
||||||
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS;
|
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
|
||||||
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
|
EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT
|
||||||
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
|
|
||||||
NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
|
NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event
|
||||||
|
NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event
|
||||||
NULL events_test2 five_event root@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE
|
NULL events_test2 five_event root@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE
|
||||||
DROP USER ev_test@localhost;
|
DROP USER ev_test@localhost;
|
||||||
DROP DATABASE events_test2;
|
DROP DATABASE events_test2;
|
||||||
|
@@ -16,7 +16,7 @@ select 4;
|
|||||||
4
|
4
|
||||||
drop table t1;
|
drop table t1;
|
||||||
kill (select count(*) from mysql.user);
|
kill (select count(*) from mysql.user);
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select count(*) from mysql.user)' at line 1
|
ERROR 42000: This version of MySQL doesn't yet support 'Usage of subqueries or stored function calls as part of this statement'
|
||||||
create table t1 (id int primary key);
|
create table t1 (id int primary key);
|
||||||
create table t2 (id int unsigned not null);
|
create table t2 (id int unsigned not null);
|
||||||
insert into t2 select id from t1;
|
insert into t2 select id from t1;
|
||||||
|
@@ -222,13 +222,13 @@ drop database mysqltest_db1;
|
|||||||
#
|
#
|
||||||
# START - BUG#16394: Events: Crash if schedule contains SELECT
|
# START - BUG#16394: Events: Crash if schedule contains SELECT
|
||||||
#
|
#
|
||||||
--error ER_PARSE_ERROR
|
--error ER_NOT_SUPPORTED_YET
|
||||||
create event e_53 on schedule at (select s1 from ttx) do drop table t;
|
create event e_53 on schedule at (select s1 from ttx) do drop table t;
|
||||||
--error ER_PARSE_ERROR
|
--error ER_NOT_SUPPORTED_YET
|
||||||
create event e_53 on schedule every (select s1 from ttx) second do drop table t;
|
create event e_53 on schedule every (select s1 from ttx) second do drop table t;
|
||||||
--error ER_PARSE_ERROR
|
--error ER_NOT_SUPPORTED_YET
|
||||||
create event e_53 on schedule every 5 second starts (select s1 from ttx) do drop table t;
|
create event e_53 on schedule every 5 second starts (select s1 from ttx) do drop table t;
|
||||||
--error ER_PARSE_ERROR
|
--error ER_NOT_SUPPORTED_YET
|
||||||
create event e_53 on schedule every 5 second ends (select s1 from ttx) do drop table t;
|
create event e_53 on schedule every 5 second ends (select s1 from ttx) do drop table t;
|
||||||
#
|
#
|
||||||
# END - BUG#16394: Events: Crash if schedule contains SELECT
|
# END - BUG#16394: Events: Crash if schedule contains SELECT
|
||||||
@@ -253,4 +253,47 @@ call p_16();
|
|||||||
|
|
||||||
drop procedure p_16;
|
drop procedure p_16;
|
||||||
drop event e_16;
|
drop event e_16;
|
||||||
|
|
||||||
|
#
|
||||||
|
# START - BUG#22830 Events: crash with procedure which alters events with function
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
drop function if exists f22830;
|
||||||
|
drop event if exists e22830;
|
||||||
|
drop event if exists e22830_1;
|
||||||
|
drop event if exists e22830_2;
|
||||||
|
drop event if exists e22830_3;
|
||||||
|
drop event if exists e22830_4;
|
||||||
|
drop table if exists t1;
|
||||||
|
drop table if exists t2;
|
||||||
|
--enable_warnings
|
||||||
|
create table t1 (a int);
|
||||||
|
insert into t1 values (2);
|
||||||
|
create table t2 (a char(20));
|
||||||
|
insert into t2 values ("e22830_1");
|
||||||
|
create function f22830 () returns int return 5;
|
||||||
|
--error ER_NOT_SUPPORTED_YET
|
||||||
|
create event e22830 on schedule every f22830() second do select 123;
|
||||||
|
create event e22830_1 on schedule every 1 hour do alter event e22830_1 on schedule every (select 8 from dual) hour;
|
||||||
|
create event e22830_2 on schedule every 1 hour do alter event e22830_2 on schedule every (select 8 from t1) hour;
|
||||||
|
create event e22830_3 on schedule every 1 hour do alter event e22830_3 on schedule every f22830() hour;
|
||||||
|
create event e22830_4 on schedule every 1 hour do alter event e22830_4 on schedule every (select f22830() from dual) hour;
|
||||||
|
select event_name, event_definition, interval_value, interval_field from information_schema.events order by event_name;
|
||||||
|
set global event_scheduler=on;
|
||||||
|
--sleep 0.7
|
||||||
|
set global event_scheduler=off;
|
||||||
|
select event_name, event_definition, interval_value, interval_field from information_schema.events order by event_name;
|
||||||
|
drop function f22830;
|
||||||
|
--error ER_PARSE_ERROR
|
||||||
|
drop event (select a from t2);
|
||||||
|
drop event e22830_1;
|
||||||
|
drop event e22830_2;
|
||||||
|
drop event e22830_3;
|
||||||
|
drop event e22830_4;
|
||||||
|
drop table t1;
|
||||||
|
drop table t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# End of tests
|
||||||
|
#
|
||||||
drop database events_test;
|
drop database events_test;
|
||||||
|
@@ -9,7 +9,7 @@ use events_test;
|
|||||||
CREATE EVENT one_event ON SCHEDULE EVERY 10 SECOND DO SELECT 123;
|
CREATE EVENT one_event ON SCHEDULE EVERY 10 SECOND DO SELECT 123;
|
||||||
--replace_column 8 # 9 #
|
--replace_column 8 # 9 #
|
||||||
SHOW EVENTS;
|
SHOW EVENTS;
|
||||||
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT from information_schema.events;
|
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
|
||||||
CREATE DATABASE events_test2;
|
CREATE DATABASE events_test2;
|
||||||
CREATE USER ev_test@localhost;
|
CREATE USER ev_test@localhost;
|
||||||
GRANT ALL ON events_test.* to ev_test@localhost;
|
GRANT ALL ON events_test.* to ev_test@localhost;
|
||||||
@@ -55,10 +55,10 @@ CREATE EVENT four_event ON SCHEDULE EVERY 20 SECOND DO SELECT 42;
|
|||||||
connection default;
|
connection default;
|
||||||
USE events_test;
|
USE events_test;
|
||||||
--echo "We should see 4 events : one_event, two_event, three_event & four_event"
|
--echo "We should see 4 events : one_event, two_event, three_event & four_event"
|
||||||
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS;
|
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
|
||||||
DROP DATABASE events_test2;
|
DROP DATABASE events_test2;
|
||||||
--echo "We should see 3 events : one_event, two_event, three_event"
|
--echo "We should see 3 events : one_event, two_event, three_event"
|
||||||
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS;
|
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
|
||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
CREATE DATABASE events_test2;
|
CREATE DATABASE events_test2;
|
||||||
@@ -67,13 +67,13 @@ CREATE EVENT five_event ON SCHEDULE EVERY 20 SECOND DO SELECT 42;
|
|||||||
|
|
||||||
connection ev_con1;
|
connection ev_con1;
|
||||||
--echo "Should see 4 events - one, two, three & five"
|
--echo "Should see 4 events - one, two, three & five"
|
||||||
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS;
|
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
|
||||||
connection default;
|
connection default;
|
||||||
REVOKE EVENT ON events_test2.* FROM ev_test@localhost;
|
REVOKE EVENT ON events_test2.* FROM ev_test@localhost;
|
||||||
connection ev_con1;
|
connection ev_con1;
|
||||||
USE test;
|
USE test;
|
||||||
--echo "Should see 3 events - one, two & three"
|
--echo "Should see 3 events - one, two & three"
|
||||||
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS;
|
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
|
||||||
--echo "Let's test ALTER EVENT which changes the definer"
|
--echo "Let's test ALTER EVENT which changes the definer"
|
||||||
USE events_test;
|
USE events_test;
|
||||||
ALTER EVENT one_event ON SCHEDULE EVERY 10 SECOND;
|
ALTER EVENT one_event ON SCHEDULE EVERY 10 SECOND;
|
||||||
@@ -96,7 +96,7 @@ connection ev_con1;
|
|||||||
DROP EVENT one_event;
|
DROP EVENT one_event;
|
||||||
connection default;
|
connection default;
|
||||||
--echo "One event should not be there"
|
--echo "One event should not be there"
|
||||||
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS;
|
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
|
||||||
disconnect ev_con1;
|
disconnect ev_con1;
|
||||||
connection default;
|
connection default;
|
||||||
DROP USER ev_test@localhost;
|
DROP USER ev_test@localhost;
|
||||||
|
@@ -48,7 +48,7 @@ select 4;
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
--error 1064
|
--error ER_NOT_SUPPORTED_YET
|
||||||
kill (select count(*) from mysql.user);
|
kill (select count(*) from mysql.user);
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@@ -2149,6 +2149,28 @@ void st_lex::restore_backup_query_tables_list(Query_tables_list *backup)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Checks for usage of routines and/or tables in a parsed statement
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
st_lex:table_or_sp_used()
|
||||||
|
|
||||||
|
RETURN
|
||||||
|
FALSE No routines and tables used
|
||||||
|
TRUE Either or both routines and tables are used.
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool st_lex::table_or_sp_used()
|
||||||
|
{
|
||||||
|
DBUG_ENTER("table_or_sp_used");
|
||||||
|
|
||||||
|
if (sroutines.records || query_tables)
|
||||||
|
DBUG_RETURN(TRUE);
|
||||||
|
|
||||||
|
DBUG_RETURN(FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Do end-of-prepare fixup for list of tables and their merge-VIEWed tables
|
Do end-of-prepare fixup for list of tables and their merge-VIEWed tables
|
||||||
|
|
||||||
@@ -2216,6 +2238,7 @@ void st_select_lex::fix_prepare_information(THD *thd, Item **conds,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
There are st_select_lex::add_table_to_list &
|
There are st_select_lex::add_table_to_list &
|
||||||
st_select_lex::set_lock_for_tables are in sql_parse.cc
|
st_select_lex::set_lock_for_tables are in sql_parse.cc
|
||||||
|
@@ -1203,6 +1203,8 @@ typedef struct st_lex : public Query_tables_list
|
|||||||
|
|
||||||
void reset_n_backup_query_tables_list(Query_tables_list *backup);
|
void reset_n_backup_query_tables_list(Query_tables_list *backup);
|
||||||
void restore_backup_query_tables_list(Query_tables_list *backup);
|
void restore_backup_query_tables_list(Query_tables_list *backup);
|
||||||
|
|
||||||
|
bool table_or_sp_used();
|
||||||
} LEX;
|
} LEX;
|
||||||
|
|
||||||
struct st_lex_local: public st_lex
|
struct st_lex_local: public st_lex
|
||||||
|
@@ -3900,6 +3900,12 @@ end_with_restore_list:
|
|||||||
case SQLCOM_ALTER_EVENT:
|
case SQLCOM_ALTER_EVENT:
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(lex->event_parse_data);
|
DBUG_ASSERT(lex->event_parse_data);
|
||||||
|
if (lex->table_or_sp_used())
|
||||||
|
{
|
||||||
|
my_error(ER_NOT_SUPPORTED_YET, MYF(0), "Usage of subqueries or stored "
|
||||||
|
"function calls as part of this statement");
|
||||||
|
break;
|
||||||
|
}
|
||||||
switch (lex->sql_command) {
|
switch (lex->sql_command) {
|
||||||
case SQLCOM_CREATE_EVENT:
|
case SQLCOM_CREATE_EVENT:
|
||||||
res= Events::get_instance()->
|
res= Events::get_instance()->
|
||||||
@@ -4201,6 +4207,13 @@ end_with_restore_list:
|
|||||||
{
|
{
|
||||||
Item *it= (Item *)lex->value_list.head();
|
Item *it= (Item *)lex->value_list.head();
|
||||||
|
|
||||||
|
if (lex->table_or_sp_used())
|
||||||
|
{
|
||||||
|
my_error(ER_NOT_SUPPORTED_YET, MYF(0), "Usage of subqueries or stored "
|
||||||
|
"function calls as part of this statement");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if ((!it->fixed && it->fix_fields(lex->thd, &it)) || it->check_cols(1))
|
if ((!it->fixed && it->fix_fields(lex->thd, &it)) || it->check_cols(1))
|
||||||
{
|
{
|
||||||
my_message(ER_SET_CONSTANTS_ONLY, ER(ER_SET_CONSTANTS_ONLY),
|
my_message(ER_SET_CONSTANTS_ONLY, ER(ER_SET_CONSTANTS_ONLY),
|
||||||
|
@@ -1329,7 +1329,6 @@ event_tail:
|
|||||||
|
|
||||||
Lex->sql_command= SQLCOM_CREATE_EVENT;
|
Lex->sql_command= SQLCOM_CREATE_EVENT;
|
||||||
/* We need that for disallowing subqueries */
|
/* We need that for disallowing subqueries */
|
||||||
Lex->expr_allows_subselect= FALSE;
|
|
||||||
}
|
}
|
||||||
ON SCHEDULE_SYM ev_schedule_time
|
ON SCHEDULE_SYM ev_schedule_time
|
||||||
opt_ev_on_completion
|
opt_ev_on_completion
|
||||||
@@ -1351,7 +1350,6 @@ event_tail:
|
|||||||
can overwrite it
|
can overwrite it
|
||||||
*/
|
*/
|
||||||
Lex->sql_command= SQLCOM_CREATE_EVENT;
|
Lex->sql_command= SQLCOM_CREATE_EVENT;
|
||||||
Lex->expr_allows_subselect= TRUE;
|
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
@@ -4737,8 +4735,6 @@ alter:
|
|||||||
YYTHD->client_capabilities &= ~CLIENT_MULTI_QUERIES;
|
YYTHD->client_capabilities &= ~CLIENT_MULTI_QUERIES;
|
||||||
|
|
||||||
Lex->sql_command= SQLCOM_ALTER_EVENT;
|
Lex->sql_command= SQLCOM_ALTER_EVENT;
|
||||||
/* we need that for disallowing subqueries */
|
|
||||||
Lex->expr_allows_subselect= FALSE;
|
|
||||||
}
|
}
|
||||||
ev_alter_on_schedule_completion
|
ev_alter_on_schedule_completion
|
||||||
opt_ev_rename_to
|
opt_ev_rename_to
|
||||||
@@ -4764,7 +4760,6 @@ alter:
|
|||||||
can overwrite it
|
can overwrite it
|
||||||
*/
|
*/
|
||||||
Lex->sql_command= SQLCOM_ALTER_EVENT;
|
Lex->sql_command= SQLCOM_ALTER_EVENT;
|
||||||
Lex->expr_allows_subselect= TRUE;
|
|
||||||
}
|
}
|
||||||
| ALTER TABLESPACE alter_tablespace_info
|
| ALTER TABLESPACE alter_tablespace_info
|
||||||
{
|
{
|
||||||
@@ -8639,17 +8634,12 @@ purge_option:
|
|||||||
/* kill threads */
|
/* kill threads */
|
||||||
|
|
||||||
kill:
|
kill:
|
||||||
KILL_SYM
|
KILL_SYM kill_option expr
|
||||||
{
|
|
||||||
Lex->sql_command= SQLCOM_KILL;
|
|
||||||
Lex->expr_allows_subselect= FALSE;
|
|
||||||
}
|
|
||||||
kill_option expr
|
|
||||||
{
|
{
|
||||||
LEX *lex=Lex;
|
LEX *lex=Lex;
|
||||||
lex->value_list.empty();
|
lex->value_list.empty();
|
||||||
lex->value_list.push_front($4);
|
lex->value_list.push_front($3);
|
||||||
Lex->expr_allows_subselect= TRUE;
|
lex->sql_command= SQLCOM_KILL;
|
||||||
};
|
};
|
||||||
|
|
||||||
kill_option:
|
kill_option:
|
||||||
|
Reference in New Issue
Block a user