item_cmpfunc.cc, func_in.result, multi_update.result:
After merge fix mysql-test/r/multi_update.result: After merge fix mysql-test/r/func_in.result: After merge fix sql/item_cmpfunc.cc: After merge fix
This commit is contained in:
parent
7b639f05f8
commit
63d6336465
@ -212,12 +212,20 @@ select f2 from t1 where f2 in (1,'z');
|
|||||||
f2
|
f2
|
||||||
0
|
0
|
||||||
1
|
1
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect INTEGER value: 'z'
|
||||||
select f1 from t1 where 'z' in (1,f1);
|
select f1 from t1 where 'z' in (1,f1);
|
||||||
f1
|
f1
|
||||||
z
|
z
|
||||||
select * from t1 where 'z' in (f2,f1);
|
select * from t1 where 'z' in (f2,f1);
|
||||||
f1 f2
|
f1 f2
|
||||||
|
1 0
|
||||||
|
a 1
|
||||||
z 2
|
z 2
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect DOUBLE value: 'z'
|
||||||
|
Warning 1292 Truncated incorrect DOUBLE value: 'z'
|
||||||
|
Warning 1292 Truncated incorrect DOUBLE value: 'z'
|
||||||
select * from t1 where 1 in (f2,f1);
|
select * from t1 where 1 in (f2,f1);
|
||||||
f1 f2
|
f1 f2
|
||||||
1 0
|
1 0
|
||||||
|
@ -480,6 +480,7 @@ create table t1(a int);
|
|||||||
create table t2(a int);
|
create table t2(a int);
|
||||||
delete from t1,t2 using t1,t2 where t1.a=(select a from t1);
|
delete from t1,t2 using t1,t2 where t1.a=(select a from t1);
|
||||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
||||||
|
drop table t1, t2;
|
||||||
create table t1 ( c char(8) not null ) engine=innodb;
|
create table t1 ( c char(8) not null ) engine=innodb;
|
||||||
insert into t1 values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9');
|
insert into t1 values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9');
|
||||||
insert into t1 values ('A'),('B'),('C'),('D'),('E'),('F');
|
insert into t1 values ('A'),('B'),('C'),('D'),('E'),('F');
|
||||||
|
@ -63,6 +63,27 @@ static void agg_result_type(Item_result *type, Item **items, uint nitems)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Aggregates result types from the array of items.
|
||||||
|
|
||||||
|
SYNOPSIS:
|
||||||
|
agg_cmp_type()
|
||||||
|
type [out] the aggregated type
|
||||||
|
items array of items to aggregate the type from
|
||||||
|
nitems number of items in the array
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
This function aggregates result types from the array of items. Found type
|
||||||
|
supposed to be used later for comparison of values of these items.
|
||||||
|
Aggregation itself is performed by the item_cmp_type() function.
|
||||||
|
|
||||||
|
NOTES
|
||||||
|
Aggregation rules:
|
||||||
|
If all items are constants the type will be aggregated from all items.
|
||||||
|
If there are some non-constant items then only types of non-constant
|
||||||
|
items will be used for aggregation.
|
||||||
|
*/
|
||||||
|
|
||||||
static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems)
|
static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems)
|
||||||
{
|
{
|
||||||
uint i;
|
uint i;
|
||||||
@ -89,6 +110,8 @@ static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems)
|
|||||||
}
|
}
|
||||||
else if (is_const)
|
else if (is_const)
|
||||||
type[0]= item_cmp_type(type[0], items[i]->result_type());
|
type[0]= item_cmp_type(type[0], items[i]->result_type());
|
||||||
|
else if (field && convert_constant_item(thd, field, &items[i]))
|
||||||
|
type[0]= INT_RESULT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user