mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
merge
This commit is contained in:
@ -1511,4 +1511,38 @@ SELECT @@skip_name_resolve;
|
|||||||
SHOW VARIABLES LIKE 'skip_name_resolve';
|
SHOW VARIABLES LIKE 'skip_name_resolve';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
skip_name_resolve OFF
|
skip_name_resolve OFF
|
||||||
|
#
|
||||||
|
# Bug #43233 : Some server variables are clipped during "update,"
|
||||||
|
# not "check" stage
|
||||||
|
#
|
||||||
|
SET @kbs=@@global.key_buffer_size;
|
||||||
|
SET @kcbs=@@global.key_cache_block_size;
|
||||||
|
throw errors in STRICT mode
|
||||||
|
SET SQL_MODE=STRICT_ALL_TABLES;
|
||||||
|
SET @@global.max_binlog_cache_size=-1;
|
||||||
|
ERROR 42000: Variable 'max_binlog_cache_size' can't be set to the value of '-1'
|
||||||
|
SET @@global.max_join_size=0;
|
||||||
|
ERROR 42000: Variable 'max_join_size' can't be set to the value of '0'
|
||||||
|
SET @@global.key_buffer_size=0;
|
||||||
|
ERROR 42000: Variable 'key_buffer_size' can't be set to the value of '0'
|
||||||
|
SET @@global.key_cache_block_size=0;
|
||||||
|
ERROR 42000: Variable 'key_cache_block_size' can't be set to the value of '0'
|
||||||
|
throw warnings in default mode
|
||||||
|
SET SQL_MODE=DEFAULT;
|
||||||
|
SET @@global.max_binlog_cache_size=-1;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect max_binlog_cache_size value: '-1'
|
||||||
|
SET @@global.max_join_size=0;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect max_join_size value: '0'
|
||||||
|
SET @@global.key_buffer_size=0;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect key_buffer_size value: '0'
|
||||||
|
SET @@global.key_cache_block_size=0;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect key_cache_block_size value: '0'
|
||||||
|
SET @@global.max_binlog_cache_size=DEFAULT;
|
||||||
|
SET @@global.max_join_size=DEFAULT;
|
||||||
|
SET @@global.key_buffer_size=@kbs;
|
||||||
|
SET @@global.key_cache_block_size=@kcbs;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -1255,4 +1255,45 @@ SET GLOBAL max_binlog_cache_size = @old_max_binlog_cache_size;
|
|||||||
SELECT @@skip_name_resolve;
|
SELECT @@skip_name_resolve;
|
||||||
SHOW VARIABLES LIKE 'skip_name_resolve';
|
SHOW VARIABLES LIKE 'skip_name_resolve';
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #43233 : Some server variables are clipped during "update,"
|
||||||
|
--echo # not "check" stage
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET @kbs=@@global.key_buffer_size;
|
||||||
|
SET @kcbs=@@global.key_cache_block_size;
|
||||||
|
|
||||||
|
--echo throw errors in STRICT mode
|
||||||
|
SET SQL_MODE=STRICT_ALL_TABLES;
|
||||||
|
|
||||||
|
# sys_var_ulonglong_ptr: sys_max_binlog_cache_size
|
||||||
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
|
SET @@global.max_binlog_cache_size=-1;
|
||||||
|
|
||||||
|
# sys_var_thd_ha_rows: "max_join_size" et al.
|
||||||
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
|
SET @@global.max_join_size=0;
|
||||||
|
|
||||||
|
# sys_var_key_buffer_size: "key_buffer_size"
|
||||||
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
|
SET @@global.key_buffer_size=0;
|
||||||
|
|
||||||
|
# sys_var_key_cache_long: "key_cache_block_size" et al.
|
||||||
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
|
SET @@global.key_cache_block_size=0;
|
||||||
|
|
||||||
|
--echo throw warnings in default mode
|
||||||
|
SET SQL_MODE=DEFAULT;
|
||||||
|
|
||||||
|
SET @@global.max_binlog_cache_size=-1;
|
||||||
|
SET @@global.max_join_size=0;
|
||||||
|
SET @@global.key_buffer_size=0;
|
||||||
|
SET @@global.key_cache_block_size=0;
|
||||||
|
|
||||||
|
# cleanup
|
||||||
|
SET @@global.max_binlog_cache_size=DEFAULT;
|
||||||
|
SET @@global.max_join_size=DEFAULT;
|
||||||
|
SET @@global.key_buffer_size=@kbs;
|
||||||
|
SET @@global.key_cache_block_size=@kcbs;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -4872,7 +4872,7 @@ void Item_func_get_system_var::fix_length_and_dec()
|
|||||||
decimals=0;
|
decimals=0;
|
||||||
break;
|
break;
|
||||||
case SHOW_LONGLONG:
|
case SHOW_LONGLONG:
|
||||||
unsigned_flag= FALSE;
|
unsigned_flag= TRUE;
|
||||||
max_length= MY_INT64_NUM_DECIMAL_DIGITS;
|
max_length= MY_INT64_NUM_DECIMAL_DIGITS;
|
||||||
decimals=0;
|
decimals=0;
|
||||||
break;
|
break;
|
||||||
@ -5013,7 +5013,7 @@ longlong Item_func_get_system_var::val_int()
|
|||||||
{
|
{
|
||||||
case SHOW_INT: get_sys_var_safe (uint);
|
case SHOW_INT: get_sys_var_safe (uint);
|
||||||
case SHOW_LONG: get_sys_var_safe (ulong);
|
case SHOW_LONG: get_sys_var_safe (ulong);
|
||||||
case SHOW_LONGLONG: get_sys_var_safe (longlong);
|
case SHOW_LONGLONG: get_sys_var_safe (ulonglong);
|
||||||
case SHOW_HA_ROWS: get_sys_var_safe (ha_rows);
|
case SHOW_HA_ROWS: get_sys_var_safe (ha_rows);
|
||||||
case SHOW_BOOL: get_sys_var_safe (bool);
|
case SHOW_BOOL: get_sys_var_safe (bool);
|
||||||
case SHOW_MY_BOOL: get_sys_var_safe (my_bool);
|
case SHOW_MY_BOOL: get_sys_var_safe (my_bool);
|
||||||
|
@ -1579,11 +1579,16 @@ void sys_var_long_ptr_global::set_default(THD *thd, enum_var_type type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool sys_var_ulonglong_ptr::check(THD *thd, set_var *var)
|
||||||
|
{
|
||||||
|
return get_unsigned(thd, var, 0, GET_ULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool sys_var_ulonglong_ptr::update(THD *thd, set_var *var)
|
bool sys_var_ulonglong_ptr::update(THD *thd, set_var *var)
|
||||||
{
|
{
|
||||||
ulonglong tmp= var->save_result.ulonglong_value;
|
ulonglong tmp= var->save_result.ulonglong_value;
|
||||||
pthread_mutex_lock(&LOCK_global_system_variables);
|
pthread_mutex_lock(&LOCK_global_system_variables);
|
||||||
bound_unsigned(thd, &tmp, option_limits);
|
|
||||||
*value= (ulonglong) tmp;
|
*value= (ulonglong) tmp;
|
||||||
pthread_mutex_unlock(&LOCK_global_system_variables);
|
pthread_mutex_unlock(&LOCK_global_system_variables);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1675,25 +1680,30 @@ uchar *sys_var_thd_ulong::value_ptr(THD *thd, enum_var_type type,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool sys_var_thd_ha_rows::check(THD *thd, set_var *var)
|
||||||
|
{
|
||||||
|
return get_unsigned(thd, var, max_system_variables.*offset,
|
||||||
|
#ifdef BIG_TABLES
|
||||||
|
GET_ULL
|
||||||
|
#else
|
||||||
|
GET_ULONG
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool sys_var_thd_ha_rows::update(THD *thd, set_var *var)
|
bool sys_var_thd_ha_rows::update(THD *thd, set_var *var)
|
||||||
{
|
{
|
||||||
ulonglong tmp= var->save_result.ulonglong_value;
|
|
||||||
|
|
||||||
/* Don't use bigger value than given with --maximum-variable-name=.. */
|
|
||||||
if ((ha_rows) tmp > max_system_variables.*offset)
|
|
||||||
tmp= max_system_variables.*offset;
|
|
||||||
|
|
||||||
bound_unsigned(thd, &tmp, option_limits);
|
|
||||||
|
|
||||||
if (var->type == OPT_GLOBAL)
|
if (var->type == OPT_GLOBAL)
|
||||||
{
|
{
|
||||||
/* Lock is needed to make things safe on 32 bit systems */
|
/* Lock is needed to make things safe on 32 bit systems */
|
||||||
pthread_mutex_lock(&LOCK_global_system_variables);
|
pthread_mutex_lock(&LOCK_global_system_variables);
|
||||||
global_system_variables.*offset= (ha_rows) tmp;
|
global_system_variables.*offset= (ha_rows)
|
||||||
|
var->save_result.ulonglong_value;
|
||||||
pthread_mutex_unlock(&LOCK_global_system_variables);
|
pthread_mutex_unlock(&LOCK_global_system_variables);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
thd->variables.*offset= (ha_rows) tmp;
|
thd->variables.*offset= (ha_rows) var->save_result.ulonglong_value;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2305,6 +2315,12 @@ uchar *sys_var_key_cache_param::value_ptr(THD *thd, enum_var_type type,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool sys_var_key_buffer_size::check(THD *thd, set_var *var)
|
||||||
|
{
|
||||||
|
return get_unsigned(thd, var, 0, GET_ULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool sys_var_key_buffer_size::update(THD *thd, set_var *var)
|
bool sys_var_key_buffer_size::update(THD *thd, set_var *var)
|
||||||
{
|
{
|
||||||
ulonglong tmp= var->save_result.ulonglong_value;
|
ulonglong tmp= var->save_result.ulonglong_value;
|
||||||
@ -2318,10 +2334,10 @@ bool sys_var_key_buffer_size::update(THD *thd, set_var *var)
|
|||||||
|
|
||||||
pthread_mutex_lock(&LOCK_global_system_variables);
|
pthread_mutex_lock(&LOCK_global_system_variables);
|
||||||
key_cache= get_key_cache(base_name);
|
key_cache= get_key_cache(base_name);
|
||||||
|
|
||||||
if (!key_cache)
|
if (!key_cache)
|
||||||
{
|
{
|
||||||
/* Key cache didn't exists */
|
/* Key cache didn't exist */
|
||||||
if (!tmp) // Tried to delete cache
|
if (!tmp) // Tried to delete cache
|
||||||
goto end; // Ok, nothing to do
|
goto end; // Ok, nothing to do
|
||||||
if (!(key_cache= create_key_cache(base_name->str, base_name->length)))
|
if (!(key_cache= create_key_cache(base_name->str, base_name->length)))
|
||||||
@ -2371,7 +2387,6 @@ bool sys_var_key_buffer_size::update(THD *thd, set_var *var)
|
|||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
bound_unsigned(thd, &tmp, option_limits);
|
|
||||||
key_cache->param_buff_size= (ulonglong) tmp;
|
key_cache->param_buff_size= (ulonglong) tmp;
|
||||||
|
|
||||||
/* If key cache didn't exist initialize it, else resize it */
|
/* If key cache didn't exist initialize it, else resize it */
|
||||||
@ -2388,10 +2403,19 @@ bool sys_var_key_buffer_size::update(THD *thd, set_var *var)
|
|||||||
|
|
||||||
end:
|
end:
|
||||||
pthread_mutex_unlock(&LOCK_global_system_variables);
|
pthread_mutex_unlock(&LOCK_global_system_variables);
|
||||||
|
|
||||||
|
var->save_result.ulonglong_value = SIZE_T_MAX;
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool sys_var_key_cache_long::check(THD *thd, set_var *var)
|
||||||
|
{
|
||||||
|
return get_unsigned(thd, var, 0, GET_ULONG);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@todo
|
@todo
|
||||||
Abort if some other thread is changing the key cache.
|
Abort if some other thread is changing the key cache.
|
||||||
@ -2400,7 +2424,6 @@ end:
|
|||||||
*/
|
*/
|
||||||
bool sys_var_key_cache_long::update(THD *thd, set_var *var)
|
bool sys_var_key_cache_long::update(THD *thd, set_var *var)
|
||||||
{
|
{
|
||||||
ulonglong tmp= var->value->val_int();
|
|
||||||
LEX_STRING *base_name= &var->base;
|
LEX_STRING *base_name= &var->base;
|
||||||
bool error= 0;
|
bool error= 0;
|
||||||
|
|
||||||
@ -2425,8 +2448,8 @@ bool sys_var_key_cache_long::update(THD *thd, set_var *var)
|
|||||||
if (key_cache->in_init)
|
if (key_cache->in_init)
|
||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
bound_unsigned(thd, &tmp, option_limits);
|
*((ulong*) (((char*) key_cache) + offset))= (ulong)
|
||||||
*((ulong*) (((char*) key_cache) + offset))= (ulong) tmp;
|
var->save_result.ulonglong_value;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Don't create a new key cache if it didn't exist
|
Don't create a new key cache if it didn't exist
|
||||||
|
@ -196,6 +196,7 @@ public:
|
|||||||
sys_after_update_func func)
|
sys_after_update_func func)
|
||||||
:sys_var(name_arg,func), value(value_ptr_arg)
|
:sys_var(name_arg,func), value(value_ptr_arg)
|
||||||
{ chain_sys_var(chain); }
|
{ chain_sys_var(chain); }
|
||||||
|
bool check(THD *thd, set_var *var);
|
||||||
bool update(THD *thd, set_var *var);
|
bool update(THD *thd, set_var *var);
|
||||||
void set_default(THD *thd, enum_var_type type);
|
void set_default(THD *thd, enum_var_type type);
|
||||||
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
|
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
|
||||||
@ -442,6 +443,7 @@ public:
|
|||||||
sys_after_update_func func)
|
sys_after_update_func func)
|
||||||
:sys_var_thd(name_arg,func), offset(offset_arg)
|
:sys_var_thd(name_arg,func), offset(offset_arg)
|
||||||
{ chain_sys_var(chain); }
|
{ chain_sys_var(chain); }
|
||||||
|
bool check(THD *thd, set_var *var);
|
||||||
bool update(THD *thd, set_var *var);
|
bool update(THD *thd, set_var *var);
|
||||||
void set_default(THD *thd, enum_var_type type);
|
void set_default(THD *thd, enum_var_type type);
|
||||||
SHOW_TYPE show_type() { return SHOW_HA_ROWS; }
|
SHOW_TYPE show_type() { return SHOW_HA_ROWS; }
|
||||||
@ -854,6 +856,7 @@ public:
|
|||||||
:sys_var_key_cache_param(chain, name_arg,
|
:sys_var_key_cache_param(chain, name_arg,
|
||||||
offsetof(KEY_CACHE, param_buff_size))
|
offsetof(KEY_CACHE, param_buff_size))
|
||||||
{}
|
{}
|
||||||
|
bool check(THD *thd, set_var *var);
|
||||||
bool update(THD *thd, set_var *var);
|
bool update(THD *thd, set_var *var);
|
||||||
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
|
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
|
||||||
};
|
};
|
||||||
@ -865,6 +868,7 @@ public:
|
|||||||
sys_var_key_cache_long(sys_var_chain *chain, const char *name_arg, size_t offset_arg)
|
sys_var_key_cache_long(sys_var_chain *chain, const char *name_arg, size_t offset_arg)
|
||||||
:sys_var_key_cache_param(chain, name_arg, offset_arg)
|
:sys_var_key_cache_param(chain, name_arg, offset_arg)
|
||||||
{}
|
{}
|
||||||
|
bool check(THD *thd, set_var *var);
|
||||||
bool update(THD *thd, set_var *var);
|
bool update(THD *thd, set_var *var);
|
||||||
SHOW_TYPE show_type() { return SHOW_LONG; }
|
SHOW_TYPE show_type() { return SHOW_LONG; }
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user