summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/events_logs_tests.result (renamed from mysql-test/r/events_slow_query.result)19
-rw-r--r--mysql-test/t/events_logs_tests-master.opt (renamed from mysql-test/t/events_slow_query-master.opt)0
-rw-r--r--mysql-test/t/events_logs_tests.test (renamed from mysql-test/t/events_slow_query.test)15
-rw-r--r--sql/event_timed.cc2
-rw-r--r--sql/sp_head.cc22
-rw-r--r--sql/sp_head.h3
6 files changed, 55 insertions, 6 deletions
diff --git a/mysql-test/r/events_slow_query.result b/mysql-test/r/events_logs_tests.result
index 90aa629dfc7..7c9086ba9e5 100644
--- a/mysql-test/r/events_slow_query.result
+++ b/mysql-test/r/events_logs_tests.result
@@ -1,5 +1,24 @@
create database if not exists events_test;
use events_test;
+"Check General Query Log"
+SET GLOBAL event_scheduler=0;
+create event log_general on schedule every 1 minute do seLect 'alabala', sleep(3) from dual;
+TRUNCATE mysql.general_log;
+SELECT user_host, command_type, argument FROM mysql.general_log;
+user_host command_type argument
+root[root] @ localhost [] Query SELECT user_host, command_type, argument FROM mysql.general_log
+SET GLOBAL event_scheduler=1;
+"Wait the scheduler to start"
+"Should see 3 rows. The create, the seLect and the select from the general_log"
+SELECT user_host, command_type, argument FROM mysql.general_log;
+user_host command_type argument
+root[root] @ localhost [] Query SELECT user_host, command_type, argument FROM mysql.general_log
+root[root] @ localhost [] Query SET GLOBAL event_scheduler=1
+root[root] @ localhost [localhost] Query seLect 'alabala', sleep(3) from dual
+root[root] @ localhost [] Query SELECT user_host, command_type, argument FROM mysql.general_log
+DROP EVENT log_general;
+SET GLOBAL event_scheduler=0;
+"Check slow query log"
"Save the values"
SET @old_global_long_query_time:=(select get_value());
SET @old_session_long_query_time:=@@long_query_time;
diff --git a/mysql-test/t/events_slow_query-master.opt b/mysql-test/t/events_logs_tests-master.opt
index 35ff7911705..35ff7911705 100644
--- a/mysql-test/t/events_slow_query-master.opt
+++ b/mysql-test/t/events_logs_tests-master.opt
diff --git a/mysql-test/t/events_slow_query.test b/mysql-test/t/events_logs_tests.test
index a75a1d464e2..6b733fa989f 100644
--- a/mysql-test/t/events_slow_query.test
+++ b/mysql-test/t/events_logs_tests.test
@@ -1,6 +1,21 @@
create database if not exists events_test;
use events_test;
+--echo "Check General Query Log"
+SET GLOBAL event_scheduler=0;
+create event log_general on schedule every 1 minute do seLect 'alabala', sleep(3) from dual;
+TRUNCATE mysql.general_log;
+SELECT user_host, command_type, argument FROM mysql.general_log;
+SET GLOBAL event_scheduler=1;
+--echo "Wait the scheduler to start"
+--echo "Should see 3 rows. The create, the seLect and the select from the general_log"
+--sleep 2
+SELECT user_host, command_type, argument FROM mysql.general_log;
+DROP EVENT log_general;
+SET GLOBAL event_scheduler=0;
+--sleep 1
+
+--echo "Check slow query log"
--disable_query_log
DELIMITER |;
CREATE FUNCTION get_value()
diff --git a/sql/event_timed.cc b/sql/event_timed.cc
index 9c818219fe3..a80a17074ab 100644
--- a/sql/event_timed.cc
+++ b/sql/event_timed.cc
@@ -1164,6 +1164,8 @@ Event_timed::execute(THD *thd, MEM_ROOT *mem_root)
empty_item_list.empty();
if (thd->enable_slow_log)
sphead->m_flags|= sp_head::LOG_SLOW_STATEMENTS;
+ sphead->m_flags|= sp_head::LOG_GENERAL_LOG;
+
ret= sphead->execute_procedure(thd, &empty_item_list);
}
else
diff --git a/sql/sp_head.cc b/sql/sp_head.cc
index d5b2fc0d898..d7490a5ac8e 100644
--- a/sql/sp_head.cc
+++ b/sql/sp_head.cc
@@ -1413,6 +1413,7 @@ sp_head::execute_procedure(THD *thd, List<Item> *args)
sp_rcontext *save_spcont, *octx;
sp_rcontext *nctx = NULL;
bool save_enable_slow_log= false;
+ bool save_log_general= false;
DBUG_ENTER("sp_head::execute_procedure");
DBUG_PRINT("info", ("procedure %s", m_name.str));
@@ -1511,20 +1512,28 @@ sp_head::execute_procedure(THD *thd, List<Item> *args)
DBUG_PRINT("info",(" %.*s: eval args done", m_name.length, m_name.str));
}
- if (thd->enable_slow_log && !(m_flags & LOG_SLOW_STATEMENTS))
+ if (!(m_flags & LOG_SLOW_STATEMENTS) && thd->enable_slow_log)
{
DBUG_PRINT("info", ("Disabling slow log for the execution"));
- save_enable_slow_log= thd->enable_slow_log;
+ save_enable_slow_log= true;
thd->enable_slow_log= FALSE;
}
+ if (!(m_flags & LOG_GENERAL_LOG) && !(thd->options & OPTION_LOG_OFF))
+ {
+ DBUG_PRINT("info", ("Disabling general log for the execution"));
+ save_log_general= true;
+ /* disable this bit */
+ thd->options |= OPTION_LOG_OFF;
+ }
thd->spcont= nctx;
if (!err_status)
err_status= execute(thd);
- if (save_enable_slow_log && !(m_flags & LOG_SLOW_STATEMENTS))
- thd->enable_slow_log= save_enable_slow_log;
-
+ if (save_log_general)
+ thd->options &= ~OPTION_LOG_OFF;
+ if (save_enable_slow_log)
+ thd->enable_slow_log= true;
/*
In the case when we weren't able to employ reuse mechanism for
OUT/INOUT paranmeters, we should reallocate memory. This
@@ -2303,6 +2312,9 @@ sp_instr_stmt::execute(THD *thd, uint *nextp)
(the order of query cache and subst_spvars calls is irrelevant because
queries with SP vars can't be cached)
*/
+ if (unlikely((thd->options & OPTION_LOG_OFF)==0))
+ general_log_print(thd, COM_QUERY, "%s", thd->query);
+
if (query_cache_send_result_to_client(thd,
thd->query, thd->query_length) <= 0)
{
diff --git a/sql/sp_head.h b/sql/sp_head.h
index 83228147430..472e5343991 100644
--- a/sql/sp_head.h
+++ b/sql/sp_head.h
@@ -125,7 +125,8 @@ public:
HAS_SET_AUTOCOMMIT_STMT= 64,// Is set if a procedure with 'set autocommit'
/* Is set if a procedure with COMMIT (implicit or explicit) | ROLLBACK */
HAS_COMMIT_OR_ROLLBACK= 128,
- LOG_SLOW_STATEMENTS= 256
+ LOG_SLOW_STATEMENTS= 256, // Used by events
+ LOG_GENERAL_LOG= 512 // Used by events
};
/* TYPE_ENUM_FUNCTION, TYPE_ENUM_PROCEDURE or TYPE_ENUM_TRIGGER */