Bug#41030 Wrong meta data (incorrect fieldlen)
set user variable max length on fix_length_and_dec() stage using real value length. mysql-test/r/variables.result: test result mysql-test/t/variables.test: test case sql/item_func.cc: set user variable max length on fix_length_and_dec() stage using real value length.
This commit is contained in:
parent
326de4957a
commit
3ef86918a2
@ -1389,3 +1389,8 @@ SET @@session.thread_stack= 7;
|
|||||||
ERROR HY000: Variable 'thread_stack' is a read only variable
|
ERROR HY000: Variable 'thread_stack' is a read only variable
|
||||||
SET @@global.thread_stack= 7;
|
SET @@global.thread_stack= 7;
|
||||||
ERROR HY000: Variable 'thread_stack' is a read only variable
|
ERROR HY000: Variable 'thread_stack' is a read only variable
|
||||||
|
select @@storage_engine;
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def @@storage_engine 253 6 6 N 1 31 8
|
||||||
|
@@storage_engine
|
||||||
|
MyISAM
|
||||||
|
@ -1121,3 +1121,10 @@ SET @@session.thread_stack= 7;
|
|||||||
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||||
SET @@global.thread_stack= 7;
|
SET @@global.thread_stack= 7;
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#41030 Wrong meta data (incorrect fieldlen)
|
||||||
|
#
|
||||||
|
--enable_metadata
|
||||||
|
select @@storage_engine;
|
||||||
|
--disable_metadata
|
||||||
|
@ -4837,7 +4837,10 @@ bool Item_func_get_system_var::is_written_to_binlog()
|
|||||||
|
|
||||||
void Item_func_get_system_var::fix_length_and_dec()
|
void Item_func_get_system_var::fix_length_and_dec()
|
||||||
{
|
{
|
||||||
|
char *cptr;
|
||||||
|
int well_formed_error;
|
||||||
maybe_null=0;
|
maybe_null=0;
|
||||||
|
max_length= 0;
|
||||||
|
|
||||||
if (var->check_type(var_type))
|
if (var->check_type(var_type))
|
||||||
{
|
{
|
||||||
@ -4867,8 +4870,14 @@ void Item_func_get_system_var::fix_length_and_dec()
|
|||||||
break;
|
break;
|
||||||
case SHOW_CHAR:
|
case SHOW_CHAR:
|
||||||
case SHOW_CHAR_PTR:
|
case SHOW_CHAR_PTR:
|
||||||
|
pthread_mutex_lock(&LOCK_global_system_variables);
|
||||||
|
cptr= var->show_type() == SHOW_CHAR_PTR ?
|
||||||
|
*(char**) var->value_ptr(current_thd, var_type, &component) :
|
||||||
|
(char*) var->value_ptr(current_thd, var_type, &component);
|
||||||
|
if (cptr)
|
||||||
|
max_length= strlen(cptr) * system_charset_info->mbmaxlen;
|
||||||
|
pthread_mutex_unlock(&LOCK_global_system_variables);
|
||||||
collation.set(system_charset_info, DERIVATION_SYSCONST);
|
collation.set(system_charset_info, DERIVATION_SYSCONST);
|
||||||
max_length= MAX_BLOB_WIDTH;
|
|
||||||
decimals=NOT_FIXED_DEC;
|
decimals=NOT_FIXED_DEC;
|
||||||
break;
|
break;
|
||||||
case SHOW_BOOL:
|
case SHOW_BOOL:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user