Commit 614e0d29 authored by unknown's avatar unknown

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.



mysql-test/r/show_check.result:
  Fix for bug #28808: log_queries_not_using_indexes variable dynamic change is ignored
    - test result.
mysql-test/t/show_check.test:
  Fix for bug #28808: log_queries_not_using_indexes variable dynamic change is ignored
    - test case.
sql/mysqld.cc:
  Fix for bug #28808: log_queries_not_using_indexes variable dynamic change is ignored
    - SPECIAL_LOG_QUERIES_NOT_USING_INDEXES is not used anymore.
sql/sql_parse.cc:
  Fix for bug #28808: log_queries_not_using_indexes variable dynamic change is ignored
    - check opt_log_queries_not_using_indexes instead of 
      SPECIAL_LOG_QUERIES_NOT_USING_INDEXES flag.
sql/unireg.h:
  Fix for bug #28808: log_queries_not_using_indexes variable dynamic change is ignored
    - SPECIAL_LOG_QUERIES_NOT_USING_INDEXES is not used anymore.
parent 5a1c9b1a
......@@ -1088,4 +1088,34 @@ DROP TABLE t1;
DROP VIEW v1;
DROP PROCEDURE p1;
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
......@@ -766,4 +766,20 @@ DROP VIEW v1;
DROP PROCEDURE p1;
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
......@@ -7461,8 +7461,6 @@ static void get_options(int argc,char **argv)
if (opt_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,
&global_system_variables.date_format) ||
......
......@@ -2207,7 +2207,7 @@ void log_slow_statement(THD *thd)
thd->variables.long_query_time ||
(thd->server_status &
(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 */
thd->lex->orig_sql_command == SQLCOM_END)
{
......
......@@ -120,7 +120,7 @@
#define SPECIAL_NO_HOST_CACHE 512 /* Don't cache hosts */
#define SPECIAL_SHORT_LOG_FORMAT 1024
#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 */
#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