[Commits] d0064c6: MDEV-7635: Convert log_queries_not_using_indexes to ulong

Nirbhay Choubey nirbhay at mariadb.com
Fri Oct 14 02:09:53 EEST 2016


revision-id: d0064c6e94414cfd6bbfcf171b1efabababe1d2e (mariadb-10.2.1-55-gd0064c6)
parent(s): 0d70fd0f9b7b8480b6053ef2dfcb55d917de2bca
author: Nirbhay Choubey
committer: Nirbhay Choubey
timestamp: 2016-10-13 19:09:53 -0400
message:

MDEV-7635: Convert log_queries_not_using_indexes to ulong

---
 mysql-test/r/mysqld--help.result                       |  7 ++++---
 mysql-test/r/show_check.result                         | 10 +++++-----
 mysql-test/r/variables.result                          |  4 ++--
 .../r/log_queries_not_using_indexes_basic.result       | 18 ++++++++++--------
 .../t/log_queries_not_using_indexes_basic.test         | 14 +++++++-------
 mysql-test/t/show_check.test                           |  4 ++--
 sql/mysqld.cc                                          |  2 +-
 sql/mysqld.h                                           |  2 +-
 sql/sql_parse.cc                                       |  3 ++-
 sql/sys_vars.cc                                        |  9 +++++----
 10 files changed, 39 insertions(+), 34 deletions(-)

diff --git a/mysql-test/r/mysqld--help.result b/mysql-test/r/mysqld--help.result
index cb1399d..2a570f8 100644
--- a/mysql-test/r/mysqld--help.result
+++ b/mysql-test/r/mysqld--help.result
@@ -365,9 +365,10 @@ The following options may be given as the first argument:
  --log-isam[=name]   Log all MyISAM changes to file.
  --log-output=name   How logs should be written. Any combination of: NONE, 
  FILE, TABLE
- --log-queries-not-using-indexes 
+ --log-queries-not-using-indexes[=#] 
  Log queries that are executed without benefit of any
- index to the slow log if it is open
+ index and that examined fewer rows than specified to the
+ slow log if it is open
  --log-short-format  Don't log extra information to update and slow-query
  logs.
  --log-slave-updates Tells the slave to log the updates from the slave thread
@@ -1257,7 +1258,7 @@ log-bin-trust-function-creators FALSE
 log-error 
 log-isam myisam.log
 log-output FILE
-log-queries-not-using-indexes FALSE
+log-queries-not-using-indexes 0
 log-short-format FALSE
 log-slave-updates FALSE
 log-slow-admin-statements FALSE
diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result
index 19a2597..db1a0ee 100644
--- a/mysql-test/r/show_check.result
+++ b/mysql-test/r/show_check.result
@@ -1228,27 +1228,27 @@ use test;
 flush status;
 show variables like "log_queries_not_using_indexes";
 Variable_name	Value
-log_queries_not_using_indexes	ON
+log_queries_not_using_indexes	1
 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;
+set global log_queries_not_using_indexes=0;
 show variables like "log_queries_not_using_indexes";
 Variable_name	Value
-log_queries_not_using_indexes	OFF
+log_queries_not_using_indexes	0
 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;
+set global log_queries_not_using_indexes=1;
 show variables like "log_queries_not_using_indexes";
 Variable_name	Value
-log_queries_not_using_indexes	ON
+log_queries_not_using_indexes	1
 select 1 from information_schema.tables limit 1;
 1
 1
diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result
index 50379a5..1423284 100644
--- a/mysql-test/r/variables.result
+++ b/mysql-test/r/variables.result
@@ -995,10 +995,10 @@ select @@log_queries_not_using_indexes;
 0
 show variables like 'log_queries_not_using_indexes';
 Variable_name	Value
-log_queries_not_using_indexes	OFF
+log_queries_not_using_indexes	0
 select * from information_schema.session_variables where variable_name like 'log_queries_not_using_indexes';
 VARIABLE_NAME	VARIABLE_VALUE
-LOG_QUERIES_NOT_USING_INDEXES	OFF
+LOG_QUERIES_NOT_USING_INDEXES	0
 select @@"";
 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '""' at line 1
 select @@&;
diff --git a/mysql-test/suite/sys_vars/r/log_queries_not_using_indexes_basic.result b/mysql-test/suite/sys_vars/r/log_queries_not_using_indexes_basic.result
index fcb5abb..9dafcb7 100644
--- a/mysql-test/suite/sys_vars/r/log_queries_not_using_indexes_basic.result
+++ b/mysql-test/suite/sys_vars/r/log_queries_not_using_indexes_basic.result
@@ -29,10 +29,12 @@ SELECT @@global.log_queries_not_using_indexes;
 @@global.log_queries_not_using_indexes
 0
 SET GLOBAL log_queries_not_using_indexes= ON;
+ERROR 42000: Incorrect argument type to variable 'log_queries_not_using_indexes'
 SELECT @@global.log_queries_not_using_indexes;
 @@global.log_queries_not_using_indexes
-1
+0
 SET GLOBAL log_queries_not_using_indexes= OFF;
+ERROR 42000: Incorrect argument type to variable 'log_queries_not_using_indexes'
 SELECT @@global.log_queries_not_using_indexes;
 @@global.log_queries_not_using_indexes
 0
@@ -47,20 +49,20 @@ SELECT @@global.log_queries_not_using_indexes;
 @@global.log_queries_not_using_indexes
 0
 SET @@global.log_queries_not_using_indexes= 'DEFAULT';
-ERROR 42000: Variable 'log_queries_not_using_indexes' can't be set to the value of 'DEFAULT'
+ERROR 42000: Incorrect argument type to variable 'log_queries_not_using_indexes'
 SET @@global.log_queries_not_using_indexes= 'true';
-ERROR 42000: Variable 'log_queries_not_using_indexes' can't be set to the value of 'true'
+ERROR 42000: Incorrect argument type to variable 'log_queries_not_using_indexes'
 SET @@global.log_queries_not_using_indexes= BLABLA;
-ERROR 42000: Variable 'log_queries_not_using_indexes' can't be set to the value of 'BLABLA'
+ERROR 42000: Incorrect argument type to variable 'log_queries_not_using_indexes'
 SET @@global.log_queries_not_using_indexes= 25;
-ERROR 42000: Variable 'log_queries_not_using_indexes' can't be set to the value of '25'
 SET GLOBAL log_queries_not_using_indexes= -1;
-ERROR 42000: Variable 'log_queries_not_using_indexes' can't be set to the value of '-1'
+Warnings:
+Warning	1292	Truncated incorrect log_queries_not_using_indexes value: '-1'
 SET @badvar= 'true';
 SET @@global.log_queries_not_using_indexes= @badvar;
-ERROR 42000: Variable 'log_queries_not_using_indexes' can't be set to the value of 'true'
+ERROR 42000: Incorrect argument type to variable 'log_queries_not_using_indexes'
 SET GLOBAL log_queries_not_using_indexes= 'DEFAULT';
-ERROR 42000: Variable 'log_queries_not_using_indexes' can't be set to the value of 'DEFAULT'
+ERROR 42000: Incorrect argument type to variable 'log_queries_not_using_indexes'
 SET log_queries_not_using_indexes= TRUE;
 ERROR HY000: Variable 'log_queries_not_using_indexes' is a GLOBAL variable and should be set with SET GLOBAL
 SET SESSION log_queries_not_using_indexes= TRUE;
diff --git a/mysql-test/suite/sys_vars/t/log_queries_not_using_indexes_basic.test b/mysql-test/suite/sys_vars/t/log_queries_not_using_indexes_basic.test
index a726bff..806030d 100644
--- a/mysql-test/suite/sys_vars/t/log_queries_not_using_indexes_basic.test
+++ b/mysql-test/suite/sys_vars/t/log_queries_not_using_indexes_basic.test
@@ -47,9 +47,11 @@ SELECT @@global.log_queries_not_using_indexes;
 SET GLOBAL log_queries_not_using_indexes= DEFAULT;
 SELECT @@global.log_queries_not_using_indexes;
 
+--error ER_WRONG_TYPE_FOR_VAR
 SET GLOBAL log_queries_not_using_indexes= ON;
 SELECT @@global.log_queries_not_using_indexes;
 
+--error ER_WRONG_TYPE_FOR_VAR
 SET GLOBAL log_queries_not_using_indexes= OFF;
 SELECT @@global.log_queries_not_using_indexes;
 
@@ -66,26 +68,24 @@ SELECT @@global.log_queries_not_using_indexes;
 # Check if the value in GLOBAL Table matches value in variable  #
 #################################################################
 
---error ER_WRONG_VALUE_FOR_VAR
+--error ER_WRONG_TYPE_FOR_VAR
 SET @@global.log_queries_not_using_indexes= 'DEFAULT';
 
---error ER_WRONG_VALUE_FOR_VAR
+--error ER_WRONG_TYPE_FOR_VAR
 SET @@global.log_queries_not_using_indexes= 'true';
 
---error ER_WRONG_VALUE_FOR_VAR
+--error ER_WRONG_TYPE_FOR_VAR
 SET @@global.log_queries_not_using_indexes= BLABLA;
 
---error ER_WRONG_VALUE_FOR_VAR
 SET @@global.log_queries_not_using_indexes= 25;
 
---error ER_WRONG_VALUE_FOR_VAR
 SET GLOBAL log_queries_not_using_indexes= -1;
 
 SET @badvar= 'true';
---error ER_WRONG_VALUE_FOR_VAR
+--error ER_WRONG_TYPE_FOR_VAR
 SET @@global.log_queries_not_using_indexes= @badvar;
 
---error ER_WRONG_VALUE_FOR_VAR
+--error ER_WRONG_TYPE_FOR_VAR
 SET GLOBAL log_queries_not_using_indexes= 'DEFAULT';
 
 --error ER_GLOBAL_VARIABLE
diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test
index a14c42d..9644b77 100644
--- a/mysql-test/t/show_check.test
+++ b/mysql-test/t/show_check.test
@@ -945,11 +945,11 @@ 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;
+set global log_queries_not_using_indexes=0;
 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;
+set global log_queries_not_using_indexes=1;
 show variables like "log_queries_not_using_indexes";
 select 1 from information_schema.tables limit 1;
 show status like 'slow_queries';
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 28e91e2..f02f2b0 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -395,7 +395,7 @@ my_bool disable_log_notes;
 static my_bool opt_abort;
 ulonglong log_output_options;
 my_bool opt_userstat_running;
-my_bool opt_log_queries_not_using_indexes= 0;
+ulong opt_log_queries_not_using_indexes= 0;
 bool opt_error_log= IF_WIN(1,0);
 bool opt_disable_networking=0, opt_skip_show_db=0;
 bool opt_skip_name_resolve=0;
diff --git a/sql/mysqld.h b/sql/mysqld.h
index 846a01a..d577a9b 100644
--- a/sql/mysqld.h
+++ b/sql/mysqld.h
@@ -114,7 +114,7 @@ extern my_bool opt_backup_history_log;
 extern my_bool opt_backup_progress_log;
 extern ulonglong log_output_options;
 extern ulong log_backup_output_options;
-extern my_bool opt_log_queries_not_using_indexes;
+extern ulong opt_log_queries_not_using_indexes;
 extern bool opt_disable_networking, opt_skip_show_db;
 extern bool opt_skip_name_resolve;
 extern bool opt_ignore_builtin_innodb;
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index c76e22a..de2da9e 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -2417,7 +2417,8 @@ void log_slow_statement(THD *thd)
   if (((thd->server_status & SERVER_QUERY_WAS_SLOW) ||
        ((thd->server_status &
          (SERVER_QUERY_NO_INDEX_USED | SERVER_QUERY_NO_GOOD_INDEX_USED)) &&
-        opt_log_queries_not_using_indexes &&
+        (opt_log_queries_not_using_indexes > 0) &&
+        (thd->get_examined_row_count() >= opt_log_queries_not_using_indexes) &&
         !(sql_command_flags[thd->lex->sql_command] & CF_STATUS_COMMAND))) &&
       thd->get_examined_row_count() >= thd->variables.min_examined_row_limit)
   {
diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc
index 47a0a38..d11d690 100644
--- a/sql/sys_vars.cc
+++ b/sql/sys_vars.cc
@@ -1178,12 +1178,13 @@ static Sys_var_charptr Sys_log_error(
        CMD_LINE(OPT_ARG, OPT_LOG_ERROR),
        IN_FS_CHARSET, DEFAULT(disabled_my_option));
 
-static Sys_var_mybool Sys_log_queries_not_using_indexes(
+static Sys_var_ulong Sys_log_queries_not_using_indexes(
        "log_queries_not_using_indexes",
-       "Log queries that are executed without benefit of any index to the "
-       "slow log if it is open",
+       "Log queries that are executed without benefit of any index and that "
+       "examined fewer rows than specified to the slow log if it is open",
        GLOBAL_VAR(opt_log_queries_not_using_indexes),
-       CMD_LINE(OPT_ARG), DEFAULT(FALSE));
+       CMD_LINE(OPT_ARG), VALID_RANGE(0, UINT_MAX), DEFAULT(0),
+       BLOCK_SIZE(1));
 
 static Sys_var_mybool Sys_log_slow_admin_statements(
        "log_slow_admin_statements",


More information about the commits mailing list