Loading mysql-test/r/view.result +14 −0 Original line number Diff line number Diff line Loading @@ -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 Loading mysql-test/t/view.test +13 −0 Original line number Diff line number Diff line Loading @@ -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) Loading sql/item.cc +22 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading sql/item.h +1 −2 Original line number Diff line number Diff line Loading @@ -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(); } Loading Loading
mysql-test/r/view.result +14 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
mysql-test/t/view.test +13 −0 Original line number Diff line number Diff line Loading @@ -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) Loading
sql/item.cc +22 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading
sql/item.h +1 −2 Original line number Diff line number Diff line Loading @@ -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(); } Loading