1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

Bug#10201 group_concat returns string with binary collation

item.cc:
  After merge fixes.
func_gconcat.result:
  After merge fixes


mysql-test/r/func_gconcat.result:
  After merge fixes
sql/item.cc:
  After merge fixes.
This commit is contained in:
unknown
2005-07-26 14:52:33 +05:00
parent 5fa6e3c557
commit 4d7aaed11d
2 changed files with 9 additions and 3 deletions

View File

@ -458,7 +458,7 @@ create table t2 select group_concat(a) as a from t1;
show create table t2; show create table t2;
Table Create Table Table Create Table
t2 CREATE TABLE `t2` ( t2 CREATE TABLE `t2` (
`a` longtext character set cp1250 `a` varchar(400) character set cp1250 default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
select collation(group_concat(a,_koi8r'test')) from t1; select collation(group_concat(a,_koi8r'test')) from t1;
collation(group_concat(a,_koi8r'test')) collation(group_concat(a,_koi8r'test'))

View File

@ -1191,7 +1191,7 @@ bool agg_item_charsets(DTCollation &coll, const char *fname,
} }
THD *thd= current_thd; THD *thd= current_thd;
Item_arena *arena, backup; Query_arena *arena, backup;
bool res= FALSE; bool res= FALSE;
/* /*
In case we're in statement prepare, create conversion item In case we're in statement prepare, create conversion item
@ -1220,7 +1220,8 @@ bool agg_item_charsets(DTCollation &coll, const char *fname,
res= TRUE; res= TRUE;
break; // we cannot return here, we need to restore "arena". break; // we cannot return here, we need to restore "arena".
} }
conv->fix_fields(thd, 0, &conv); if ((*arg)->type() == Item::FIELD_ITEM)
((Item_field *)(*arg))->no_const_subst= 1;
/* /*
If in statement prepare, then we create a converter for two If in statement prepare, then we create a converter for two
constant items, do it once and then reuse it. constant items, do it once and then reuse it.
@ -1235,6 +1236,11 @@ bool agg_item_charsets(DTCollation &coll, const char *fname,
*arg= conv; *arg= conv;
else else
thd->change_item_tree(arg, conv); thd->change_item_tree(arg, conv);
/*
We do not check conv->fixed, because Item_func_conv_charset which can
be return by safe_charset_converter can't be fixed at creation
*/
conv->fix_fields(thd, arg);
} }
if (arena) if (arena)
thd->restore_backup_item_arena(arena, &backup); thd->restore_backup_item_arena(arena, &backup);