mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 18:20:07 +01:00
Merge epotemkin@lsmy3:/data/users/bk/mysql-5.0-opt-bugs
into moonbone.local:/work/18739-bug-5.0-mysql
This commit is contained in:
commit
69b90fb2a8
4 changed files with 39 additions and 5 deletions
|
@ -3302,7 +3302,7 @@ sub valgrind_arguments {
|
|||
|
||||
if ( $opt_valgrind_options )
|
||||
{
|
||||
mtr_add_arg($args, split(' ', $opt_valgrind_options));
|
||||
mtr_add_arg($args, '%s', $_) for (split(' ', $opt_valgrind_options));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -175,6 +175,14 @@ SELECT CASE '1' WHEN '2' THEN 'BUG' ELSE 'nobug' END;
|
|||
case+union+test
|
||||
case+union+test
|
||||
nobug
|
||||
create table t1(a float, b int default 3);
|
||||
insert into t1 (a) values (2), (11), (8);
|
||||
select min(a), min(case when 1=1 then a else NULL end),
|
||||
min(case when 1!=1 then NULL else a end)
|
||||
from t1 where b=3 group by b;
|
||||
min(a) min(case when 1=1 then a else NULL end) min(case when 1!=1 then NULL else a end)
|
||||
2 2 2
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (EMPNUM INT);
|
||||
INSERT INTO t1 VALUES (0), (2);
|
||||
CREATE TABLE t2 (EMPNUM DECIMAL (4, 2));
|
||||
|
|
|
@ -122,6 +122,17 @@ SELECT 'case+union+test'
|
|||
UNION
|
||||
SELECT CASE '1' WHEN '2' THEN 'BUG' ELSE 'nobug' END;
|
||||
|
||||
#
|
||||
# Bug #17896: problem with MIN(CASE...)
|
||||
#
|
||||
|
||||
create table t1(a float, b int default 3);
|
||||
insert into t1 (a) values (2), (11), (8);
|
||||
select min(a), min(case when 1=1 then a else NULL end),
|
||||
min(case when 1!=1 then NULL else a end)
|
||||
from t1 where b=3 group by b;
|
||||
drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
|
||||
|
|
|
@ -41,10 +41,25 @@ static Item_result item_store_type(Item_result a,Item_result b)
|
|||
|
||||
static void agg_result_type(Item_result *type, Item **items, uint nitems)
|
||||
{
|
||||
uint i;
|
||||
type[0]= items[0]->result_type();
|
||||
for (i=1 ; i < nitems ; i++)
|
||||
type[0]= item_store_type(type[0], items[i]->result_type());
|
||||
Item **item, **item_end;
|
||||
|
||||
*type= STRING_RESULT;
|
||||
/* Skip beginning NULL items */
|
||||
for (item= items, item_end= item + nitems; item < item_end; item++)
|
||||
{
|
||||
if ((*item)->type() != Item::NULL_ITEM)
|
||||
{
|
||||
*type= (*item)->result_type();
|
||||
item++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* Combine result types. Note: NULL items don't affect the result */
|
||||
for (; item < item_end; item++)
|
||||
{
|
||||
if ((*item)->type() != Item::NULL_ITEM)
|
||||
*type= item_store_type(type[0], (*item)->result_type());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue