So this is making log-queries-not-using-indexes to take on the same meaning as min_examined_row_limit for the case of no-index and both seam to apply?
Is thd->get_examined_row_count() the right comparison value if the non-indexed table had much fewer rows examined? Note - https://mariadb.com/kb/en/mariadb/server-system-variables/#log_queries_not_using_indexes needs updating and needs to reference min_examined_row_limit as well. Are log_slow_admin_statements / log_slow_slave_statements going to be modified in the same way and min-examined-row-limit to be deprecated? Is giving log-queries-not-using-indexes a default value of 5000 (as suggested for min-examined-row limit) applicable here? On 14/10/16 10:09, Nirbhay Choubey wrote: > 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", > _______________________________________________ > commits mailing list > [email protected] > https://lists.askmonty.org/cgi-bin/mailman/listinfo/commits > _______________________________________________ Mailing list: https://launchpad.net/~maria-developers Post to : [email protected] Unsubscribe : https://launchpad.net/~maria-developers More help : https://help.launchpad.net/ListHelp

