Commit 30a0ad3a authored by evgen@moonbone.local's avatar evgen@moonbone.local

Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0

into  moonbone.local:/work/mysql-5.0-bug-11298
parents 93d0763b 5097c682
......@@ -1757,6 +1757,20 @@ select * from v1;
cast(1 as decimal)
1.00
drop view v1;
create table t1(f1 int);
create table t2(f2 int);
insert into t1 values(1),(2),(3);
insert into t2 values(1),(2),(3);
create view v1 as select * from t1,t2 where f1=f2;
create table t3 (f1 int, f2 int);
insert into t3 select * from v1 order by 1;
select * from t3;
f1 f2
1 1
2 2
3 3
drop view v1;
drop table t1,t2,t3;
create view v1 as select '\\','\\shazam';
select * from v1;
\ \shazam
......
......@@ -1599,6 +1599,19 @@ drop table t1;
create view v1 as select cast(1 as decimal);
select * from v1;
drop view v1;
#
# Bug#11298 insert into select from VIEW produces incorrect result when
# using ORDER BY
create table t1(f1 int);
create table t2(f2 int);
insert into t1 values(1),(2),(3);
insert into t2 values(1),(2),(3);
create view v1 as select * from t1,t2 where f1=f2;
create table t3 (f1 int, f2 int);
insert into t3 select * from v1 order by 1;
select * from t3;
drop view v1;
drop table t1,t2,t3;
#
# Generation unique names for columns, and correct names check (BUG#7448)
......
......@@ -4361,6 +4361,28 @@ my_decimal *Item_ref::val_decimal(my_decimal *decimal_value)
return val;
}
int Item_ref::save_in_field(Field *to, bool no_conversions)
{
int res;
if(result_field){
if (result_field->is_null())
{
null_value= 1;
return set_field_to_null_with_conversions(to, no_conversions);
}
else
{
to->set_notnull();
field_conv(to, result_field);
null_value= 0;
}
return 0;
}
res= (*ref)->save_in_field(to, no_conversions);
null_value= (*ref)->null_value;
return res;
}
void Item_ref_null_helper::print(String *str)
{
......
......@@ -1345,8 +1345,7 @@ class Item_ref :public Item_ident
bool send(Protocol *prot, String *tmp);
void make_field(Send_field *field) { (*ref)->make_field(field); }
bool fix_fields(THD *, struct st_table_list *, Item **);
int save_in_field(Field *field, bool no_conversions)
{ return (*ref)->save_in_field(field, no_conversions); }
int save_in_field(Field *field, bool no_conversions);
void save_org_in_field(Field *field) { (*ref)->save_org_in_field(field); }
enum Item_result result_type () const { return (*ref)->result_type(); }
enum_field_types field_type() const { return (*ref)->field_type(); }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment