Loading mysql-test/r/join.result +16 −0 Original line number Diff line number Diff line Loading @@ -764,3 +764,19 @@ natural join t5; y c b a z 1 3 2 1 4 drop table t1, t2, t3, t4, t5; CREATE TABLE t1 (ID INTEGER, Name VARCHAR(50)); CREATE TABLE t2 (Test_ID INTEGER); CREATE VIEW v1 (Test_ID, Description) AS SELECT ID, Name FROM t1; CREATE TABLE tv1 SELECT Description AS Name FROM v1 JOIN t2 USING (Test_ID); DESCRIBE tv1; Field Type Null Key Default Extra Name varchar(50) YES NULL CREATE TABLE tv2 SELECT Description AS Name FROM v1 JOIN t2 ON v1.Test_ID = t2.Test_ID; DESCRIBE tv2; Field Type Null Key Default Extra Name varchar(50) YES NULL DROP VIEW v1; DROP TABLE t1,t2,tv1,tv2; End of 5.0 tests. mysql-test/t/join.test +20 −0 Original line number Diff line number Diff line Loading @@ -591,3 +591,23 @@ select * from ((t3 natural join (t1 natural join t2)) natural join t4) drop table t1, t2, t3, t4, t5; # End of tests for WL#2486 - natural/using join # # BUG#25106: A USING clause in combination with a VIEW results in column # aliases ignored # CREATE TABLE t1 (ID INTEGER, Name VARCHAR(50)); CREATE TABLE t2 (Test_ID INTEGER); CREATE VIEW v1 (Test_ID, Description) AS SELECT ID, Name FROM t1; CREATE TABLE tv1 SELECT Description AS Name FROM v1 JOIN t2 USING (Test_ID); DESCRIBE tv1; CREATE TABLE tv2 SELECT Description AS Name FROM v1 JOIN t2 ON v1.Test_ID = t2.Test_ID; DESCRIBE tv2; DROP VIEW v1; DROP TABLE t1,t2,tv1,tv2; --echo End of 5.0 tests. sql/sql_base.cc +13 −0 Original line number Diff line number Diff line Loading @@ -2975,6 +2975,19 @@ find_field_in_natural_join(THD *thd, TABLE_LIST *table_ref, const char *name, column reference. See create_view_field() for details. */ item= nj_col->create_item(thd); /* *ref != NULL means that *ref contains the item that we need to replace. If the item was aliased by the user, set the alias to the replacing item. We need to set alias on both ref itself and on ref real item. */ if (*ref && !(*ref)->is_autogenerated_name) { item->set_name((*ref)->name, (*ref)->name_length, system_charset_info); item->real_item()->set_name((*ref)->name, (*ref)->name_length, system_charset_info); } if (register_tree_change && arena) thd->restore_active_arena(arena, &backup); Loading Loading
mysql-test/r/join.result +16 −0 Original line number Diff line number Diff line Loading @@ -764,3 +764,19 @@ natural join t5; y c b a z 1 3 2 1 4 drop table t1, t2, t3, t4, t5; CREATE TABLE t1 (ID INTEGER, Name VARCHAR(50)); CREATE TABLE t2 (Test_ID INTEGER); CREATE VIEW v1 (Test_ID, Description) AS SELECT ID, Name FROM t1; CREATE TABLE tv1 SELECT Description AS Name FROM v1 JOIN t2 USING (Test_ID); DESCRIBE tv1; Field Type Null Key Default Extra Name varchar(50) YES NULL CREATE TABLE tv2 SELECT Description AS Name FROM v1 JOIN t2 ON v1.Test_ID = t2.Test_ID; DESCRIBE tv2; Field Type Null Key Default Extra Name varchar(50) YES NULL DROP VIEW v1; DROP TABLE t1,t2,tv1,tv2; End of 5.0 tests.
mysql-test/t/join.test +20 −0 Original line number Diff line number Diff line Loading @@ -591,3 +591,23 @@ select * from ((t3 natural join (t1 natural join t2)) natural join t4) drop table t1, t2, t3, t4, t5; # End of tests for WL#2486 - natural/using join # # BUG#25106: A USING clause in combination with a VIEW results in column # aliases ignored # CREATE TABLE t1 (ID INTEGER, Name VARCHAR(50)); CREATE TABLE t2 (Test_ID INTEGER); CREATE VIEW v1 (Test_ID, Description) AS SELECT ID, Name FROM t1; CREATE TABLE tv1 SELECT Description AS Name FROM v1 JOIN t2 USING (Test_ID); DESCRIBE tv1; CREATE TABLE tv2 SELECT Description AS Name FROM v1 JOIN t2 ON v1.Test_ID = t2.Test_ID; DESCRIBE tv2; DROP VIEW v1; DROP TABLE t1,t2,tv1,tv2; --echo End of 5.0 tests.
sql/sql_base.cc +13 −0 Original line number Diff line number Diff line Loading @@ -2975,6 +2975,19 @@ find_field_in_natural_join(THD *thd, TABLE_LIST *table_ref, const char *name, column reference. See create_view_field() for details. */ item= nj_col->create_item(thd); /* *ref != NULL means that *ref contains the item that we need to replace. If the item was aliased by the user, set the alias to the replacing item. We need to set alias on both ref itself and on ref real item. */ if (*ref && !(*ref)->is_autogenerated_name) { item->set_name((*ref)->name, (*ref)->name_length, system_charset_info); item->real_item()->set_name((*ref)->name, (*ref)->name_length, system_charset_info); } if (register_tree_change && arena) thd->restore_active_arena(arena, &backup); Loading