mirror of
https://github.com/MariaDB/server.git
synced 2025-05-05 16:59:35 +03:00
had broken the 5.1 behaviour of --log-error: --log-error without argument sent to stderr instead of writing to a file with an autogenerated name. mysql-test/suite/sys_vars/t/log_error_func.test: test that error log is created and shown in SHOW VARIABLES. Interestingly the error log's path is apparently relative if --log-error=argument is used, but may be absolute or relative if --log-error(no argument) is used (because then the path is derived from that of pidfile_name, which can be absolute or relative, depending on if autogenerated or not). mysql-test/suite/sys_vars/t/log_error_func2.test: test that error log is created and shown in SHOW VARIABLES mysql-test/suite/sys_vars/t/log_error_func3.test: test that error log is empty in SHOW VARIABLES sql/mysql_priv.h: id for option --log-error sql/mysqld.cc: No --log-error means "write errors to stderr", whereas --log-error without argument means "write errors to a file". So we cannot use the default logic of class sys_var_charptr, which treats "option not used" the same as "option used without argument" and uses the same default for both. We need to catch "option used", in mysqld_get_one_option(), and then "without argument". Setting to "" makes sure that init_server_components() will create the log, with an autogenerated name. sql/sys_vars.cc: need to give the option a numeric id so that we can catch it in mysqld_get_one_option()
21 lines
700 B
Plaintext
21 lines
700 B
Plaintext
# Test for BUG#51215 "log-error partially works with version 5.5"
|
|
# when --log-error is used without argument
|
|
|
|
# check displayed value. We can check only the suffix, because
|
|
# the rest depends on paths, symbolic links, --vardir, etc...
|
|
select (@err_log:=variable_value)*0 from information_schema.global_variables where variable_name="log_error";
|
|
select instr(@err_log, ".err")>0;
|
|
|
|
# Check file's existence. The displayed value may be relative or not.
|
|
let $err_log=`select @err_log`;
|
|
let $err_log_relative=`select instr(@err_log, ".")=1`;
|
|
if ($err_log_relative)
|
|
{
|
|
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
|
file_exists $MYSQLD_DATADIR/$err_log;
|
|
}
|
|
if (!$err_log_relative)
|
|
{
|
|
file_exists $err_log;
|
|
}
|