mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
5.0-bugteam->5.1-bugteam merge
This commit is contained in:
commit
2ea2cc02c3
4 changed files with 52 additions and 2 deletions
|
@ -1200,7 +1200,7 @@ int main(int argc,char *argv[])
|
|||
#endif
|
||||
sprintf(buff, "%s",
|
||||
#ifndef NOT_YET
|
||||
"Type 'help;' or '\\h' for help. Type '\\c' to clear the buffer.\n");
|
||||
"Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\n");
|
||||
#else
|
||||
"Type 'help [[%]function name[%]]' to get help on usage of function.\n");
|
||||
#endif
|
||||
|
|
|
@ -611,3 +611,22 @@ check table t1 extended;
|
|||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
drop table t1;
|
||||
select least(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci);
|
||||
least(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci)
|
||||
a
|
||||
create table t1
|
||||
select least(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci) as f1;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` varchar(1) CHARACTER SET latin5 NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
select case _latin1'a' when _latin2'b' then 1 when _latin5'c' collate
|
||||
latin5_turkish_ci then 2 else 3 end;
|
||||
case _latin1'a' when _latin2'b' then 1 when _latin5'c' collate
|
||||
latin5_turkish_ci then 2 else 3 end
|
||||
3
|
||||
select concat(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci);
|
||||
concat(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci)
|
||||
abc
|
||||
|
|
|
@ -229,3 +229,17 @@ insert into t1 set a=0x6c;
|
|||
insert into t1 set a=0x4c98;
|
||||
check table t1 extended;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#41627 Illegal mix of collations in LEAST / GREATEST / CASE
|
||||
#
|
||||
select least(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci);
|
||||
create table t1
|
||||
select least(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci) as f1;
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
select case _latin1'a' when _latin2'b' then 1 when _latin5'c' collate
|
||||
latin5_turkish_ci then 2 else 3 end;
|
||||
|
||||
select concat(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci);
|
||||
|
|
19
sql/item.cc
19
sql/item.cc
|
@ -1531,7 +1531,8 @@ bool DTCollation::aggregate(DTCollation &dt, uint flags)
|
|||
else
|
||||
{
|
||||
// Cannot apply conversion
|
||||
set(0, DERIVATION_NONE, 0);
|
||||
set(&my_charset_bin, DERIVATION_NONE,
|
||||
(dt.repertoire|repertoire));
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
@ -1614,15 +1615,31 @@ bool agg_item_collations(DTCollation &c, const char *fname,
|
|||
{
|
||||
uint i;
|
||||
Item **arg;
|
||||
bool unknown_cs= 0;
|
||||
|
||||
c.set(av[0]->collation);
|
||||
for (i= 1, arg= &av[item_sep]; i < count; i++, arg++)
|
||||
{
|
||||
if (c.aggregate((*arg)->collation, flags))
|
||||
{
|
||||
if (c.derivation == DERIVATION_NONE &&
|
||||
c.collation == &my_charset_bin)
|
||||
{
|
||||
unknown_cs= 1;
|
||||
continue;
|
||||
}
|
||||
my_coll_agg_error(av, count, fname, item_sep);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (unknown_cs &&
|
||||
c.derivation != DERIVATION_EXPLICIT)
|
||||
{
|
||||
my_coll_agg_error(av, count, fname, item_sep);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if ((flags & MY_COLL_DISALLOW_NONE) &&
|
||||
c.derivation == DERIVATION_NONE)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue