mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 05:52:27 +01:00
Merge mysql.com:/home/ram/work/mysql-5.1-maint
into mysql.com:/home/ram/work/b31604/b31604.5.1
This commit is contained in:
commit
8d589be34b
3 changed files with 50 additions and 6 deletions
|
@ -175,3 +175,16 @@ SET GLOBAL slow_query_log = ON;
|
|||
SET GLOBAL READ_ONLY = OFF;
|
||||
SET GLOBAL general_log = @old_general_log_state;
|
||||
SET GLOBAL slow_query_log = @old_slow_log_state;
|
||||
set @old_general_log_file= @@global.general_log_file;
|
||||
set @old_slow_query_log_file= @@global.slow_query_log_file;
|
||||
set global general_log_file= concat('/not exiting path/log.maste', 'r');
|
||||
ERROR 42000: Variable 'general_log_file' can't be set to the value of '/not exiting path/log.master'
|
||||
set global general_log_file= NULL;
|
||||
ERROR 42000: Variable 'general_log_file' can't be set to the value of 'NULL'
|
||||
set global slow_query_log_file= concat('/not exiting path/log.maste', 'r');
|
||||
ERROR 42000: Variable 'slow_query_log_file' can't be set to the value of '/not exiting path/log.master'
|
||||
set global slow_query_log_file= NULL;
|
||||
ERROR 42000: Variable 'slow_query_log_file' can't be set to the value of 'NULL'
|
||||
set global general_log_file= @old_general_log_file;
|
||||
set global slow_query_log_file= @old_slow_query_log_file;
|
||||
End of 5.1 tests
|
||||
|
|
|
@ -189,3 +189,23 @@ disconnect con1;
|
|||
# Remove the log files that was created in the "default location"
|
||||
# i.e var/run
|
||||
--remove_file $MYSQLTEST_VARDIR/run/master.log
|
||||
|
||||
#
|
||||
# Bug #31604: server crash when setting slow_query_log_file/general_log_file
|
||||
#
|
||||
set @old_general_log_file= @@global.general_log_file;
|
||||
set @old_slow_query_log_file= @@global.slow_query_log_file;
|
||||
|
||||
--error 1231
|
||||
set global general_log_file= concat('/not exiting path/log.maste', 'r');
|
||||
--error 1231
|
||||
set global general_log_file= NULL;
|
||||
--error 1231
|
||||
set global slow_query_log_file= concat('/not exiting path/log.maste', 'r');
|
||||
--error 1231
|
||||
set global slow_query_log_file= NULL;
|
||||
|
||||
set global general_log_file= @old_general_log_file;
|
||||
set global slow_query_log_file= @old_slow_query_log_file;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
|
|
@ -2102,18 +2102,24 @@ void sys_var_log_state::set_default(THD *thd, enum_var_type type)
|
|||
|
||||
static int sys_check_log_path(THD *thd, set_var *var)
|
||||
{
|
||||
char path[FN_REFLEN];
|
||||
char path[FN_REFLEN], buff[FN_REFLEN];
|
||||
MY_STAT f_stat;
|
||||
const char *var_path= var->value->str_value.ptr();
|
||||
String str(buff, sizeof(buff), system_charset_info), *res;
|
||||
const char *log_file_str;
|
||||
|
||||
if (!(res= var->value->val_str(&str)))
|
||||
goto err;
|
||||
|
||||
log_file_str= res->c_ptr();
|
||||
bzero(&f_stat, sizeof(MY_STAT));
|
||||
|
||||
(void) unpack_filename(path, var_path);
|
||||
(void) unpack_filename(path, log_file_str);
|
||||
if (my_stat(path, &f_stat, MYF(0)))
|
||||
{
|
||||
/* Check if argument is a file and we have 'write' permission */
|
||||
if (!MY_S_ISREG(f_stat.st_mode) ||
|
||||
!(f_stat.st_mode & MY_S_IWRITE))
|
||||
return -1;
|
||||
goto err;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2122,11 +2128,16 @@ static int sys_check_log_path(THD *thd, set_var *var)
|
|||
Check if directory exists and
|
||||
we have permission to create file & write to file
|
||||
*/
|
||||
(void) dirname_part(path, var_path, &path_length);
|
||||
(void) dirname_part(path, log_file_str, &path_length);
|
||||
if (my_access(path, (F_OK|W_OK)))
|
||||
return -1;
|
||||
goto err;
|
||||
}
|
||||
return 0;
|
||||
|
||||
err:
|
||||
my_error(ER_WRONG_VALUE_FOR_VAR, MYF(0), var->var->name,
|
||||
res ? log_file_str : "NULL");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue