mirror of
https://github.com/MariaDB/server.git
synced 2026-04-21 15:55:53 +02:00
CONFIG FILES CAUSES TEST
Utility as "mysql_upgrade" forks "mysql"/"mysqlcheck". Attaching
"mysql_upgrade" shows following calls after forking "mysql" or
"mysql_check" when configuration file information is passed as
first argument to "mysql_upgrade".
strace -f ./mysql_upgrade --defaults-file=../pdb/my.cnf --socket=../pdb/mysql.sock -f
[pid 6254] stat("/etc/my.cnf", 0x7fff8e772680) = -1 ENOENT (No such file or directory)
[pid 6254] stat("/etc/mysql/my.cnf", 0x7fff8e772680) = -1 ENOENT (No such file or directory)
[pid 6254] stat("/usr/local/mysql/etc/my.cnf", 0x7fff8e772680) = -1 ENOENT (No such file or directory)
[pid 6254] stat("/home/user_name/.my.cnf", {st_mode=S_IFREG|0664, st_size=19, ...}) = 0
[pid 6254] open("/home/user_name/.my.cnf", O_RDONLY) = 3
But when tool forks "mysqlcheck"/"mysql", "--no-defaults" is passed
as first argument. Before forking, in function "find_tool" of
"mysql_upgrade", check is made to verify whether tool can be
executable or not by calling "mysqlcheck --help" and "mysql --help".
But argument "--no-defaults", "--defaults-file" or
"defaults-extra-file" is not passed to "mysql" and "mysqlcheck".
So my.cnf is searched in default paths.
Fix:
------
Modified code to pass "--no-defaults" as first argument to "mysql"
and "mysqlcheck" while checking tool can be executed or not.
|
||
|---|---|---|
| .. | ||
| client_priv.h | ||
| CMakeLists.txt | ||
| completion_hash.cc | ||
| completion_hash.h | ||
| echo.c | ||
| get_password.c | ||
| my_readline.h | ||
| mysql.cc | ||
| mysql_plugin.c | ||
| mysql_upgrade.c | ||
| mysqladmin.cc | ||
| mysqlbinlog.cc | ||
| mysqlcheck.c | ||
| mysqldump.c | ||
| mysqlimport.c | ||
| mysqlshow.c | ||
| mysqlslap.c | ||
| mysqltest.cc | ||
| readline.cc | ||
| sql_string.cc | ||
| sql_string.h | ||