Loading sql/item.h +3 −6 Original line number Diff line number Diff line Loading @@ -1352,12 +1352,9 @@ class Item_ref :public Item_ident { (*ref)->save_in_field(result_field, no_conversions); } Item *real_item() { Item *item= this; do item= *((Item_ref *)item)->ref; while (item->type() == Item::REF_ITEM); return item; Item *real_item() { return (*ref)->real_item(); } bool walk(Item_processor processor, byte *arg) { return (*ref)->walk(processor, arg); } Loading sql/sql_select.cc +1 −1 Original line number Diff line number Diff line Loading @@ -7958,7 +7958,7 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type, convert_blob_length); } case Item::REF_ITEM: if ( ((Item_ref*)item)->real_item()->type() == Item::FIELD_ITEM) if ( item->real_item()->type() == Item::FIELD_ITEM) { Item_field *field= (Item_field*) *((Item_ref*)item)->ref; Field *new_field= create_tmp_field_from_field(thd, Loading tests/mysql_client_test.c +23 −9 Original line number Diff line number Diff line Loading @@ -13156,14 +13156,24 @@ static void test_bug11111() char buf[2][20]; long len[2]; int i; int rc; const char * query = "SELECT DISTINCT f1,ff2 FROM v1"; myheader("test_bug11111"); mysql_query(mysql, "drop table if exists t1, t2, v1"); mysql_query(mysql, "create table t1 (f1 int, f2 int)"); mysql_query(mysql, "create table t2 (ff1 int, ff2 int)"); mysql_query(mysql, "create view v1 as select * from t1, t2 where f1=ff1"); mysql_query(mysql, "insert into t1 values (1,1), (2,2), (3,3)"); mysql_query(mysql, "insert into t2 values (1,1), (2,2), (3,3)"); rc= mysql_query(mysql, "drop table if exists t1, t2, v1"); myquery(rc); rc= mysql_query(mysql, "drop view if exists t1, t2, v1"); myquery(rc); rc= mysql_query(mysql, "create table t1 (f1 int, f2 int)"); myquery(rc); rc= mysql_query(mysql, "create table t2 (ff1 int, ff2 int)"); myquery(rc); rc= mysql_query(mysql, "create view v1 as select * from t1, t2 where f1=ff1"); myquery(rc); rc= mysql_query(mysql, "insert into t1 values (1,1), (2,2), (3,3)"); myquery(rc); rc= mysql_query(mysql, "insert into t2 values (1,1), (2,2), (3,3)"); myquery(rc); stmt = mysql_stmt_init(mysql); Loading @@ -13182,9 +13192,13 @@ static void test_bug11111() printf("Error: %s\n", mysql_stmt_error(stmt)); mysql_stmt_fetch(stmt); printf("return: %s", buf[1]); DIE_UNLESS(!strcmp(buf[1],"1")); mysql_stmt_close(stmt); mysql_query(mysql, "drop table t1, t2, v1"); rc= mysql_query(mysql, "drop view v1"); myquery(rc); rc= mysql_query(mysql, "drop table t1, t2"); myquery(rc); } /* Loading Loading
sql/item.h +3 −6 Original line number Diff line number Diff line Loading @@ -1352,12 +1352,9 @@ class Item_ref :public Item_ident { (*ref)->save_in_field(result_field, no_conversions); } Item *real_item() { Item *item= this; do item= *((Item_ref *)item)->ref; while (item->type() == Item::REF_ITEM); return item; Item *real_item() { return (*ref)->real_item(); } bool walk(Item_processor processor, byte *arg) { return (*ref)->walk(processor, arg); } Loading
sql/sql_select.cc +1 −1 Original line number Diff line number Diff line Loading @@ -7958,7 +7958,7 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type, convert_blob_length); } case Item::REF_ITEM: if ( ((Item_ref*)item)->real_item()->type() == Item::FIELD_ITEM) if ( item->real_item()->type() == Item::FIELD_ITEM) { Item_field *field= (Item_field*) *((Item_ref*)item)->ref; Field *new_field= create_tmp_field_from_field(thd, Loading
tests/mysql_client_test.c +23 −9 Original line number Diff line number Diff line Loading @@ -13156,14 +13156,24 @@ static void test_bug11111() char buf[2][20]; long len[2]; int i; int rc; const char * query = "SELECT DISTINCT f1,ff2 FROM v1"; myheader("test_bug11111"); mysql_query(mysql, "drop table if exists t1, t2, v1"); mysql_query(mysql, "create table t1 (f1 int, f2 int)"); mysql_query(mysql, "create table t2 (ff1 int, ff2 int)"); mysql_query(mysql, "create view v1 as select * from t1, t2 where f1=ff1"); mysql_query(mysql, "insert into t1 values (1,1), (2,2), (3,3)"); mysql_query(mysql, "insert into t2 values (1,1), (2,2), (3,3)"); rc= mysql_query(mysql, "drop table if exists t1, t2, v1"); myquery(rc); rc= mysql_query(mysql, "drop view if exists t1, t2, v1"); myquery(rc); rc= mysql_query(mysql, "create table t1 (f1 int, f2 int)"); myquery(rc); rc= mysql_query(mysql, "create table t2 (ff1 int, ff2 int)"); myquery(rc); rc= mysql_query(mysql, "create view v1 as select * from t1, t2 where f1=ff1"); myquery(rc); rc= mysql_query(mysql, "insert into t1 values (1,1), (2,2), (3,3)"); myquery(rc); rc= mysql_query(mysql, "insert into t2 values (1,1), (2,2), (3,3)"); myquery(rc); stmt = mysql_stmt_init(mysql); Loading @@ -13182,9 +13192,13 @@ static void test_bug11111() printf("Error: %s\n", mysql_stmt_error(stmt)); mysql_stmt_fetch(stmt); printf("return: %s", buf[1]); DIE_UNLESS(!strcmp(buf[1],"1")); mysql_stmt_close(stmt); mysql_query(mysql, "drop table t1, t2, v1"); rc= mysql_query(mysql, "drop view v1"); myquery(rc); rc= mysql_query(mysql, "drop table t1, t2"); myquery(rc); } /* Loading