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)
*/
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());
{
......
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