Fix for bug #28808: log_queries_not_using_indexes variable dynamic change is ignored

Problem: logging queries not using indexes we check a special flag which 
is set only at the server startup and is not changing with a corresponding
server variable together.

Fix: check the variable value instead of the flag.
parent 0bc89226
...@@ -1088,4 +1088,34 @@ DROP TABLE t1; ...@@ -1088,4 +1088,34 @@ DROP TABLE t1;
DROP VIEW v1; DROP VIEW v1;
DROP PROCEDURE p1; DROP PROCEDURE p1;
DROP FUNCTION f1; DROP FUNCTION f1;
flush status;
show variables like "log_queries_not_using_indexes";
Variable_name Value
log_queries_not_using_indexes ON
select 1 from information_schema.tables limit 1;
1
1
show status like 'slow_queries';
Variable_name Value
Slow_queries 1
set global log_queries_not_using_indexes=OFF;
show variables like "log_queries_not_using_indexes";
Variable_name Value
log_queries_not_using_indexes OFF
select 1 from information_schema.tables limit 1;
1
1
show status like 'slow_queries';
Variable_name Value
Slow_queries 1
set global log_queries_not_using_indexes=ON;
show variables like "log_queries_not_using_indexes";
Variable_name Value
log_queries_not_using_indexes ON
select 1 from information_schema.tables limit 1;
1
1
show status like 'slow_queries';
Variable_name Value
Slow_queries 2
End of 5.0 tests End of 5.0 tests
...@@ -766,4 +766,20 @@ DROP VIEW v1; ...@@ -766,4 +766,20 @@ DROP VIEW v1;
DROP PROCEDURE p1; DROP PROCEDURE p1;
DROP FUNCTION f1; DROP FUNCTION f1;
#
# Bug #28808: log_queries_not_using_indexes variable dynamic change is ignored
#
flush status;
show variables like "log_queries_not_using_indexes";
select 1 from information_schema.tables limit 1;
show status like 'slow_queries';
set global log_queries_not_using_indexes=OFF;
show variables like "log_queries_not_using_indexes";
select 1 from information_schema.tables limit 1;
show status like 'slow_queries';
set global log_queries_not_using_indexes=ON;
show variables like "log_queries_not_using_indexes";
select 1 from information_schema.tables limit 1;
show status like 'slow_queries';
--echo End of 5.0 tests --echo End of 5.0 tests
...@@ -7461,8 +7461,6 @@ static void get_options(int argc,char **argv) ...@@ -7461,8 +7461,6 @@ static void get_options(int argc,char **argv)
if (opt_short_log_format) if (opt_short_log_format)
opt_specialflag|= SPECIAL_SHORT_LOG_FORMAT; opt_specialflag|= SPECIAL_SHORT_LOG_FORMAT;
if (opt_log_queries_not_using_indexes)
opt_specialflag|= SPECIAL_LOG_QUERIES_NOT_USING_INDEXES;
if (init_global_datetime_format(MYSQL_TIMESTAMP_DATE, if (init_global_datetime_format(MYSQL_TIMESTAMP_DATE,
&global_system_variables.date_format) || &global_system_variables.date_format) ||
......
...@@ -2207,7 +2207,7 @@ void log_slow_statement(THD *thd) ...@@ -2207,7 +2207,7 @@ void log_slow_statement(THD *thd)
thd->variables.long_query_time || thd->variables.long_query_time ||
(thd->server_status & (thd->server_status &
(SERVER_QUERY_NO_INDEX_USED | SERVER_QUERY_NO_GOOD_INDEX_USED)) && (SERVER_QUERY_NO_INDEX_USED | SERVER_QUERY_NO_GOOD_INDEX_USED)) &&
(specialflag & SPECIAL_LOG_QUERIES_NOT_USING_INDEXES) && opt_log_queries_not_using_indexes &&
/* == SQLCOM_END unless this is a SHOW command */ /* == SQLCOM_END unless this is a SHOW command */
thd->lex->orig_sql_command == SQLCOM_END) thd->lex->orig_sql_command == SQLCOM_END)
{ {
......
...@@ -120,7 +120,7 @@ ...@@ -120,7 +120,7 @@
#define SPECIAL_NO_HOST_CACHE 512 /* Don't cache hosts */ #define SPECIAL_NO_HOST_CACHE 512 /* Don't cache hosts */
#define SPECIAL_SHORT_LOG_FORMAT 1024 #define SPECIAL_SHORT_LOG_FORMAT 1024
#define SPECIAL_SAFE_MODE 2048 #define SPECIAL_SAFE_MODE 2048
#define SPECIAL_LOG_QUERIES_NOT_USING_INDEXES 4096 /* Log q not using indexes */ #define SPECIAL_LOG_QUERIES_NOT_USING_INDEXES 4096 /* Obsolete */
/* Extern defines */ /* Extern defines */
#define store_record(A,B) bmove_align((A)->B,(A)->record[0],(size_t) (A)->s->reclength) #define store_record(A,B) bmove_align((A)->B,(A)->record[0],(size_t) (A)->s->reclength)
......
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