Commit 4cbadaea authored by Alexander Barkov's avatar Alexander Barkov

MDEV-16891 EVENTs created with SQL_MODE=ORACLE fail to execute

parent cb1945dd
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;
-- 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) ...@@ -1284,7 +1284,11 @@ Event_job_data::construct_sp_sql(THD *thd, String *sp_sql)
*/ */
sp_sql->append(STRING_WITH_LEN("() SQL SECURITY INVOKER ")); 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); sp_sql->append(&body);
if (thd->variables.sql_mode & MODE_ORACLE)
sp_sql->append(STRING_WITH_LEN("; END"));
DBUG_RETURN(thd->is_fatal_error); DBUG_RETURN(thd->is_fatal_error);
} }
...@@ -1387,9 +1391,6 @@ Event_job_data::execute(THD *thd, bool drop) ...@@ -1387,9 +1391,6 @@ Event_job_data::execute(THD *thd, bool drop)
goto end; goto end;
} }
if (construct_sp_sql(thd, &sp_sql))
goto end;
/* /*
Set up global thread attributes to reflect the properties of Set up global thread attributes to reflect the properties of
this Event. We can simply reset these instead of usual this Event. We can simply reset these instead of usual
...@@ -1401,6 +1402,9 @@ Event_job_data::execute(THD *thd, bool drop) ...@@ -1401,6 +1402,9 @@ Event_job_data::execute(THD *thd, bool drop)
thd->variables.sql_mode= sql_mode; thd->variables.sql_mode= sql_mode;
thd->variables.time_zone= time_zone; 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()); thd->set_query(sp_sql.c_ptr_safe(), sp_sql.length());
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment