Loading mysql-test/r/metadata.result +34 −0 Original line number Diff line number Diff line Loading @@ -96,3 +96,37 @@ i 2 affected rows: 1 affected rows: 0 create table t1 (id int(10)); insert into t1 values (1); CREATE VIEW v1 AS select t1.id as id from t1; CREATE VIEW v2 AS select t1.id as renamed from t1; CREATE VIEW v3 AS select t1.id + 12 as renamed from t1; select * from v1 group by id limit 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t1 v1 id id 3 10 1 Y 32768 0 63 id 1 select * from v1 group by id limit 0; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t1 v1 id id 3 10 0 Y 32768 0 63 id select * from v1 where id=1000 group by id; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t1 v1 id id 3 10 0 Y 32768 0 63 id select * from v1 where id=1 group by id; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t1 v1 id id 3 10 1 Y 32768 0 63 id 1 select * from v2 where renamed=1 group by renamed; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t1 v2 id renamed 3 10 1 Y 32768 0 63 renamed 1 select * from v3 where renamed=1 group by renamed; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def v3 renamed 8 12 0 Y 32896 0 63 renamed drop table t1; drop view v1,v2,v3; mysql-test/t/metadata.test +19 −0 Original line number Diff line number Diff line Loading @@ -61,4 +61,23 @@ drop table t1;// delimiter ;// --disable_info # # Bug #20191: getTableName gives wrong or inconsistent result when using VIEWs # --enable_metadata create table t1 (id int(10)); insert into t1 values (1); CREATE VIEW v1 AS select t1.id as id from t1; CREATE VIEW v2 AS select t1.id as renamed from t1; CREATE VIEW v3 AS select t1.id + 12 as renamed from t1; select * from v1 group by id limit 1; select * from v1 group by id limit 0; select * from v1 where id=1000 group by id; select * from v1 where id=1 group by id; select * from v2 where renamed=1 group by renamed; select * from v3 where renamed=1 group by renamed; drop table t1; drop view v1,v2,v3; --disable_metadata # End of 4.1 tests sql/item.cc +4 −0 Original line number Diff line number Diff line Loading @@ -4202,6 +4202,10 @@ void Item_field::make_field(Send_field *tmp_field) DBUG_ASSERT(tmp_field->table_name != 0); if (name) tmp_field->col_name=name; // Use user supplied name if (table_name) tmp_field->table_name= table_name; if (db_name) tmp_field->db_name= db_name; } Loading sql/sql_select.cc +9 −2 Original line number Diff line number Diff line Loading @@ -13596,9 +13596,16 @@ setup_copy_fields(THD *thd, TMP_TABLE_PARAM *param, if (real_pos->type() == Item::FIELD_ITEM) { Item_field *item; pos= real_pos; if (!(item= new Item_field(thd, ((Item_field*) pos)))) if (!(item= new Item_field(thd, ((Item_field*) real_pos)))) goto err; if (pos->type() == Item::REF_ITEM) { /* preserve the names of the ref when dereferncing */ Item_ref *ref= (Item_ref *) pos; item->db_name= ref->db_name; item->table_name= ref->table_name; item->name= ref->name; } pos= item; if (item->field->flags & BLOB_FLAG) { Loading Loading
mysql-test/r/metadata.result +34 −0 Original line number Diff line number Diff line Loading @@ -96,3 +96,37 @@ i 2 affected rows: 1 affected rows: 0 create table t1 (id int(10)); insert into t1 values (1); CREATE VIEW v1 AS select t1.id as id from t1; CREATE VIEW v2 AS select t1.id as renamed from t1; CREATE VIEW v3 AS select t1.id + 12 as renamed from t1; select * from v1 group by id limit 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t1 v1 id id 3 10 1 Y 32768 0 63 id 1 select * from v1 group by id limit 0; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t1 v1 id id 3 10 0 Y 32768 0 63 id select * from v1 where id=1000 group by id; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t1 v1 id id 3 10 0 Y 32768 0 63 id select * from v1 where id=1 group by id; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t1 v1 id id 3 10 1 Y 32768 0 63 id 1 select * from v2 where renamed=1 group by renamed; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t1 v2 id renamed 3 10 1 Y 32768 0 63 renamed 1 select * from v3 where renamed=1 group by renamed; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def v3 renamed 8 12 0 Y 32896 0 63 renamed drop table t1; drop view v1,v2,v3;
mysql-test/t/metadata.test +19 −0 Original line number Diff line number Diff line Loading @@ -61,4 +61,23 @@ drop table t1;// delimiter ;// --disable_info # # Bug #20191: getTableName gives wrong or inconsistent result when using VIEWs # --enable_metadata create table t1 (id int(10)); insert into t1 values (1); CREATE VIEW v1 AS select t1.id as id from t1; CREATE VIEW v2 AS select t1.id as renamed from t1; CREATE VIEW v3 AS select t1.id + 12 as renamed from t1; select * from v1 group by id limit 1; select * from v1 group by id limit 0; select * from v1 where id=1000 group by id; select * from v1 where id=1 group by id; select * from v2 where renamed=1 group by renamed; select * from v3 where renamed=1 group by renamed; drop table t1; drop view v1,v2,v3; --disable_metadata # End of 4.1 tests
sql/item.cc +4 −0 Original line number Diff line number Diff line Loading @@ -4202,6 +4202,10 @@ void Item_field::make_field(Send_field *tmp_field) DBUG_ASSERT(tmp_field->table_name != 0); if (name) tmp_field->col_name=name; // Use user supplied name if (table_name) tmp_field->table_name= table_name; if (db_name) tmp_field->db_name= db_name; } Loading
sql/sql_select.cc +9 −2 Original line number Diff line number Diff line Loading @@ -13596,9 +13596,16 @@ setup_copy_fields(THD *thd, TMP_TABLE_PARAM *param, if (real_pos->type() == Item::FIELD_ITEM) { Item_field *item; pos= real_pos; if (!(item= new Item_field(thd, ((Item_field*) pos)))) if (!(item= new Item_field(thd, ((Item_field*) real_pos)))) goto err; if (pos->type() == Item::REF_ITEM) { /* preserve the names of the ref when dereferncing */ Item_ref *ref= (Item_ref *) pos; item->db_name= ref->db_name; item->table_name= ref->table_name; item->name= ref->name; } pos= item; if (item->field->flags & BLOB_FLAG) { Loading