mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-16891 EVENTs created with SQL_MODE=ORACLE fail to execute
This commit is contained in:
16
mysql-test/suite/compat/oracle/r/events.result
Normal file
16
mysql-test/suite/compat/oracle/r/events.result
Normal file
@ -0,0 +1,16 @@
|
||||
set sql_mode='ORACLE';
|
||||
#
|
||||
# MDEV-16891 EVENTs created with SQL_MODE=ORACLE fail to execute
|
||||
#
|
||||
SET GLOBAL event_scheduler=off;
|
||||
SET sql_mode='ORACLE';
|
||||
CREATE TABLE t1 (a TIMESTAMP);
|
||||
CREATE EVENT e1
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MICROSECOND
|
||||
DO INSERT INTO t1 VALUES(NOW());
|
||||
SET GLOBAL event_scheduler=on;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
SET GLOBAL event_scheduler=off;
|
29
mysql-test/suite/compat/oracle/t/events.test
Normal file
29
mysql-test/suite/compat/oracle/t/events.test
Normal file
@ -0,0 +1,29 @@
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
set sql_mode='ORACLE';
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-16891 EVENTs created with SQL_MODE=ORACLE fail to execute
|
||||
--echo #
|
||||
|
||||
SET GLOBAL event_scheduler=off;
|
||||
|
||||
SET sql_mode='ORACLE';
|
||||
CREATE TABLE t1 (a TIMESTAMP);
|
||||
CREATE EVENT e1
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MICROSECOND
|
||||
DO INSERT INTO t1 VALUES(NOW());
|
||||
SET GLOBAL event_scheduler=on;
|
||||
|
||||
let $wait_timeout = 10;
|
||||
let $wait_condition =
|
||||
SELECT COUNT(*) = 0
|
||||
FROM INFORMATION_SCHEMA.EVENTS
|
||||
WHERE event_schema = 'test' AND event_name = 'e1';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
SET GLOBAL event_scheduler=off;
|
@ -1284,7 +1284,11 @@ Event_job_data::construct_sp_sql(THD *thd, String *sp_sql)
|
||||
*/
|
||||
sp_sql->append(STRING_WITH_LEN("() SQL SECURITY INVOKER "));
|
||||
|
||||
if (thd->variables.sql_mode & MODE_ORACLE)
|
||||
sp_sql->append(STRING_WITH_LEN(" AS BEGIN "));
|
||||
sp_sql->append(&body);
|
||||
if (thd->variables.sql_mode & MODE_ORACLE)
|
||||
sp_sql->append(STRING_WITH_LEN("; END"));
|
||||
|
||||
DBUG_RETURN(thd->is_fatal_error);
|
||||
}
|
||||
@ -1387,9 +1391,6 @@ Event_job_data::execute(THD *thd, bool drop)
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (construct_sp_sql(thd, &sp_sql))
|
||||
goto end;
|
||||
|
||||
/*
|
||||
Set up global thread attributes to reflect the properties of
|
||||
this Event. We can simply reset these instead of usual
|
||||
@ -1401,6 +1402,9 @@ Event_job_data::execute(THD *thd, bool drop)
|
||||
thd->variables.sql_mode= sql_mode;
|
||||
thd->variables.time_zone= time_zone;
|
||||
|
||||
if (construct_sp_sql(thd, &sp_sql))
|
||||
goto end;
|
||||
|
||||
thd->set_query(sp_sql.c_ptr_safe(), sp_sql.length());
|
||||
|
||||
{
|
||||
|
Reference in New Issue
Block a user