mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
Produce an error when arguments are not compatible for CONCAT()
This commit is contained in:
parent
80630f12f3
commit
676f986838
2 changed files with 15 additions and 9 deletions
16
sql/item.cc
16
sql/item.cc
|
@ -180,13 +180,10 @@ bool Item::set_charset(CHARSET_INFO *cs1, enum coercion co1,
|
|||
set_charset(&my_charset_bin, COER_NOCOLL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
if (!my_charset_same(cs1,cs2))
|
||||
{
|
||||
set_charset(&my_charset_bin, COER_NOCOLL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
||||
if (co1 < co2)
|
||||
{
|
||||
set_charset(cs1, co1);
|
||||
|
@ -198,7 +195,12 @@ bool Item::set_charset(CHARSET_INFO *cs1, enum coercion co1,
|
|||
else // co2 == co1
|
||||
{
|
||||
if (cs1 != cs2)
|
||||
set_charset(&my_charset_bin, COER_NOCOLL);
|
||||
{
|
||||
CHARSET_INFO *bin= get_charset_by_csname(cs1->csname, MY_CS_BINSORT,MYF(0));
|
||||
if (!bin)
|
||||
return 1;
|
||||
set_charset(bin, COER_NOCOLL);
|
||||
}
|
||||
else
|
||||
set_charset(cs2, co2);
|
||||
}
|
||||
|
|
|
@ -328,8 +328,12 @@ void Item_func_concat::fix_length_and_dec()
|
|||
for (uint i=0 ; i < arg_count ; i++)
|
||||
{
|
||||
max_length+=args[i]->max_length;
|
||||
set_charset(charset(), coercibility,
|
||||
args[i]->charset(), args[i]->coercibility);
|
||||
if (set_charset(charset(), coercibility,
|
||||
args[i]->charset(), args[i]->coercibility))
|
||||
{
|
||||
my_error(ER_WRONG_ARGUMENTS,MYF(0),func_name());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (max_length > MAX_BLOB_WIDTH)
|
||||
|
|
Loading…
Reference in a new issue