From: Date: October 3 2008 5:36am Subject: Re: bzr commit into mysql-5.1 branch (azundris:2741) WL#4403 List-Archive: http://lists.mysql.com/commits/55162 Message-Id: <48E59358.4010505@Sun.COM> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7BIT Hi Tatiana, Tatiana A. Nurnberg wrote: > #At file:///home/tnurnberg/forest/4403/51-4403/ > > 2741 Tatiana A. Nurnberg 2008-09-20 > WL#4403 deprecate @log and @slow_log_queries variables > > Adds --general-log-file, --slow-query-log-file command- > line options to match system variables of the same names. > > Deprecates --log, --log-slow-queries command-line option > and log, log_slow_queries system-variables for v7.0; they > are superseded by general_log/general_log_file and > slow_query_log/slow_query_log_file, respectively. > modified: > mysql-test/r/log_basic.result > mysql-test/r/log_state.result > mysql-test/t/log_basic.test > mysql-test/t/log_state.test > sql/mysqld.cc > sql/set_var.cc > > per-file messages: > mysql-test/r/log_basic.result > Change deprecated system variable "log" to > general log. > mysql-test/r/log_state.result > Show that all log-related server variables that > should throw deprecation warnings do, and the > others don't. > mysql-test/t/log_basic.test > Change deprecated system variable "log" to > general log. > mysql-test/t/log_state.test > Show that all log-related server variables that > should throw deprecation warnings do, and the > others don't. > sql/mysqld.cc > Add command-line options --general-log-file and > --slow-query-log-file to match server options of > the same name. > > Deprecated --log and --log-slow-queries command-line > options; they are superseded by --general-log/ > --general-log-file and --slow-query-log/--slow-query-log-file, > respectively > sql/set_var.cc > Deprecate system-variables log in favour of general_log, > log_slow_queries in favour of slow_query_log for 7.0, > both for value- and DEFAULT-setting. > === modified file 'mysql-test/r/log_basic.result' > --- a/mysql-test/r/log_basic.result 2008-04-10 13:14:28 +0000 > +++ b/mysql-test/r/log_basic.result 2008-09-20 14:46:25 +0000 > @@ -5,8 +5,8 @@ INIT_VALUE > SELECT @@log AS INIT_VALUE; > INIT_VALUE > 1 > -SET @@global.log = ON; > -SET global log = 0; > +SET @@global.general_log = ON; > +SET global general_log = 0; > 'Bug# 34832: log is a system but it is not accessible using SET @@global.log;' > 'SET GLOBAL log; and SELECT @@global.log. SHOW VARIABLES shows the value of log.' > '#--------------------FN_DYNVARS_062_02-------------------------#' > > === modified file 'mysql-test/r/log_state.result' > --- a/mysql-test/r/log_state.result 2008-03-28 18:46:18 +0000 > +++ b/mysql-test/r/log_state.result 2008-09-20 14:46:25 +0000 > @@ -187,6 +187,8 @@ SELECT @@general_log, @@log; > @@general_log @@log > 1 1 > SET GLOBAL log = 0; > +Warnings: > +Warning 1287 The syntax 'log' is deprecated and will be removed in MySQL 7.0. Please use 'general_log' instead Hum, it's really a syntax, it's a variable. > SHOW VARIABLES LIKE 'general_log'; > Variable_name Value > general_log OFF > @@ -216,6 +218,8 @@ SELECT @@slow_query_log, @@log_slow_quer > @@slow_query_log @@log_slow_queries > 0 0 > SET GLOBAL log_slow_queries = 0; > +Warnings: > +Warning 1287 The syntax 'log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use 'slow_query_log' instead > SHOW VARIABLES LIKE 'slow_query_log'; > Variable_name Value > slow_query_log OFF > @@ -270,4 +274,28 @@ SET GLOBAL general_log_file = @general_l > SET GLOBAL slow_query_log_file = @slow_query_log_file_saved; > > # -- End of Bug#32748. > +deprecated: > +SET GLOBAL log = 0; > +Warnings: > +Warning 1287 The syntax 'log' is deprecated and will be removed in MySQL 7.0. Please use 'general_log' instead > +SET GLOBAL log_slow_queries = 0; > +Warnings: > +Warning 1287 The syntax 'log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use 'slow_query_log' instead > +SET GLOBAL log = DEFAULT; > +Warnings: > +Warning 1287 The syntax 'log' is deprecated and will be removed in MySQL 7.0. Please use 'general_log' instead > +SET GLOBAL log_slow_queries = DEFAULT; > +Warnings: > +Warning 1287 The syntax 'log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use 'slow_query_log' instead > +not deprecated: > +SELECT @@global.general_log_file INTO @my_glf; > +SELECT @@global.slow_query_log_file INTO @my_sqlf; > +SET GLOBAL general_log = 0; > +SET GLOBAL slow_query_log = 0; > +SET GLOBAL general_log_file = 'WL4403_G.log'; > +SET GLOBAL slow_query_log_file = 'WL4403_SQ.log'; > +SET GLOBAL general_log_file = @my_glf; > +SET GLOBAL slow_query_log_file = @my_sqlf; > +SET GLOBAL general_log = DEFAULT; > +SET GLOBAL slow_query_log = DEFAULT; > End of 5.1 tests > > === modified file 'mysql-test/t/log_basic.test' > --- a/mysql-test/t/log_basic.test 2008-04-10 13:14:28 +0000 > +++ b/mysql-test/t/log_basic.test 2008-09-20 14:46:25 +0000 > @@ -38,9 +38,9 @@ SELECT @@global.log AS INIT_VALUE; > > SELECT @@log AS INIT_VALUE; > > -SET @@global.log = ON; > +SET @@global.general_log = ON; > > -SET global log = 0; > +SET global general_log = 0; > > --echo 'Bug# 34832: log is a system but it is not accessible using SET @@global.log;' > --echo 'SET GLOBAL log; and SELECT @@global.log. SHOW VARIABLES shows the value of log.' > > === modified file 'mysql-test/t/log_state.test' > --- a/mysql-test/t/log_state.test 2008-03-28 18:46:18 +0000 > +++ b/mysql-test/t/log_state.test 2008-09-20 14:46:25 +0000 > @@ -259,6 +259,32 @@ SET GLOBAL slow_query_log_file = @slow_q > > ########################################################################### > > + > + > +## WL#4403 - deprecate @log and @slow_log_queries variables > + > +## these are all deprecated -- show for command-line as well! > +--echo deprecated: > +SET GLOBAL log = 0; > +SET GLOBAL log_slow_queries = 0; > +SET GLOBAL log = DEFAULT; > +SET GLOBAL log_slow_queries = DEFAULT; > + > +## these are NOT deprecated > +--echo not deprecated: > +SELECT @@global.general_log_file INTO @my_glf; > +SELECT @@global.slow_query_log_file INTO @my_sqlf; > +SET GLOBAL general_log = 0; > +SET GLOBAL slow_query_log = 0; > +SET GLOBAL general_log_file = 'WL4403_G.log'; > +SET GLOBAL slow_query_log_file = 'WL4403_SQ.log'; > +SET GLOBAL general_log_file = @my_glf; > +SET GLOBAL slow_query_log_file = @my_sqlf; > +SET GLOBAL general_log = DEFAULT; > +SET GLOBAL slow_query_log = DEFAULT; > + > + > + > --echo End of 5.1 tests > > --enable_ps_protocol > > === modified file 'sql/mysqld.cc' > --- a/sql/mysqld.cc 2008-08-26 09:31:17 +0000 > +++ b/sql/mysqld.cc 2008-09-20 14:46:25 +0000 > @@ -5536,7 +5536,9 @@ enum options_mysqld > OPT_MIN_EXAMINED_ROW_LIMIT, > OPT_LOG_SLOW_SLAVE_STATEMENTS, > OPT_OLD_MODE, > - OPT_SLAVE_EXEC_MODE > + OPT_SLAVE_EXEC_MODE, > + OPT_GENERAL_LOG_FILE, > + OPT_SLOW_QUERY_LOG_FILE > }; > > > @@ -5769,8 +5771,12 @@ Disable with --skip-large-pages.", > (uchar**) &opt_local_infile, > (uchar**) &opt_local_infile, 0, GET_BOOL, OPT_ARG, > 1, 0, 0, 0, 0, 0}, > + /* --log is deprecated (7.0) in favour of --general-log-file */ > {"log", 'l', "Log connections and queries to file.", (uchar**) &opt_logname, Could you also add a deprecated to the option description? It seems we do it for the other deprecated options. > (uchar**) &opt_logname, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, > + {"general-log-file", OPT_GENERAL_LOG_FILE, > + "Log connections and queries to given file.", (uchar**) &opt_logname, > + (uchar**) &opt_logname, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, > {"log-bin", OPT_BIN_LOG, > "Log update queries in binary format. Optional (but strongly recommended " > "to avoid replication problems if server's hostname changes) argument " > @@ -5848,6 +5854,10 @@ Disable with --skip-large-pages.", > "Log slow queries to a table or log file. Defaults logging to table mysql.slow_log or hostname-slow.log if --log-output=file is used. Must be enabled to activate other slow log options.", > (uchar**) &opt_slow_logname, (uchar**) &opt_slow_logname, 0, GET_STR, OPT_ARG, > 0, 0, 0, 0, 0, 0}, > + {"slow-query-log-file", OPT_SLOW_QUERY_LOG_FILE, > + "Log slow queries to given log file. Defaults logging to hostname-slow.log. Must be enabled to activate other slow log options.", > + (uchar**) &opt_slow_logname, (uchar**) &opt_slow_logname, 0, GET_STR, > + REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, > {"log-tc", OPT_LOG_TC, > "Path to transaction coordinator log (used for transactions that affect " > "more than one storage engine, when binary log is disabled)", > @@ -7655,6 +7665,9 @@ mysqld_get_one_option(int optid, > default_collation_name= 0; > break; > case 'l': > + WARN_DEPRECATED(NULL, "7.0", "log", "'general-log'/'general-log-file'"); > + /* FALL-THROUGH */ > + case OPT_GENERAL_LOG_FILE: > opt_log=1; > break; > case 'h': > @@ -7824,6 +7837,9 @@ mysqld_get_one_option(int optid, > } > #endif /* HAVE_REPLICATION */ > case (int) OPT_SLOW_QUERY_LOG: > + WARN_DEPRECATED(NULL, "7.0", "log-slow-queries", "'slow-query-log'/'slow-query-log-file'"); > + /* FALL-THROUGH */ > + case (int) OPT_SLOW_QUERY_LOG_FILE: > opt_slow_log= 1; > break; > #ifdef WITH_CSV_STORAGE_ENGINE > > === modified file 'sql/set_var.cc' > --- a/sql/set_var.cc 2008-09-09 10:19:31 +0000 > +++ b/sql/set_var.cc 2008-09-20 14:46:25 +0000 > @@ -2391,6 +2391,12 @@ end: > bool sys_var_log_state::update(THD *thd, set_var *var) > { > bool res; > + > + if (this == &sys_var_log) > + WARN_DEPRECATED(thd, "7.0", "log", "'general_log'"); > + else if (this == &sys_var_log_slow) > + WARN_DEPRECATED(thd, "7.0", "log_slow_queries", "'slow_query_log'"); > + I have a feeling that WARN_DEPRECATED was meant for the parse and signal deprecated syntax. I think it would be better if we introduced a extension to the WARN_DEPRECATED macro which would receive a parameter that describing what is exactly is being deprecated. For example: WARN_DEPRECATED_EXT(thd, "7.0", "variable", "log", "'general_log'"); which would unfold to something similar to: The variable 'log' is deprecated and will be removed in MySQL 5.2. Please use 'general_log' variable instead. Regards, -- Davi