mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +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
|
#endif
|
||||||
sprintf(buff, "%s",
|
sprintf(buff, "%s",
|
||||||
#ifndef NOT_YET
|
#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
|
#else
|
||||||
"Type 'help [[%]function name[%]]' to get help on usage of function.\n");
|
"Type 'help [[%]function name[%]]' to get help on usage of function.\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -611,3 +611,22 @@ check table t1 extended;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 check status OK
|
test.t1 check status OK
|
||||||
drop table t1;
|
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;
|
insert into t1 set a=0x4c98;
|
||||||
check table t1 extended;
|
check table t1 extended;
|
||||||
drop table t1;
|
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
|
else
|
||||||
{
|
{
|
||||||
// Cannot apply conversion
|
// Cannot apply conversion
|
||||||
set(0, DERIVATION_NONE, 0);
|
set(&my_charset_bin, DERIVATION_NONE,
|
||||||
|
(dt.repertoire|repertoire));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1614,15 +1615,31 @@ bool agg_item_collations(DTCollation &c, const char *fname,
|
||||||
{
|
{
|
||||||
uint i;
|
uint i;
|
||||||
Item **arg;
|
Item **arg;
|
||||||
|
bool unknown_cs= 0;
|
||||||
|
|
||||||
c.set(av[0]->collation);
|
c.set(av[0]->collation);
|
||||||
for (i= 1, arg= &av[item_sep]; i < count; i++, arg++)
|
for (i= 1, arg= &av[item_sep]; i < count; i++, arg++)
|
||||||
{
|
{
|
||||||
if (c.aggregate((*arg)->collation, flags))
|
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);
|
my_coll_agg_error(av, count, fname, item_sep);
|
||||||
return TRUE;
|
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) &&
|
if ((flags & MY_COLL_DISALLOW_NONE) &&
|
||||||
c.derivation == DERIVATION_NONE)
|
c.derivation == DERIVATION_NONE)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue