mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into magare.gmz:/home/kgeorge/mysql/autopush/B33133-5.0-opt sql/sql_base.cc: Auto merged
This commit is contained in:
@ -4254,7 +4254,36 @@ find_item_in_list(Item *find, List<Item> &items, uint *counter,
|
||||
*resolution= RESOLVED_IGNORING_ALIAS;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (table_name && item->type() == Item::REF_ITEM &&
|
||||
((Item_ref *)item)->ref_type() == Item_ref::VIEW_REF)
|
||||
{
|
||||
/*
|
||||
TODO:Here we process prefixed view references only. What we should
|
||||
really do is process all types of Item_refs. But this will currently
|
||||
lead to a clash with the way references to outer SELECTs (from the
|
||||
HAVING clause) are handled in e.g. :
|
||||
SELECT 1 FROM t1 AS t1_o GROUP BY a
|
||||
HAVING (SELECT t1_o.a FROM t1 AS t1_i GROUP BY t1_i.a LIMIT 1).
|
||||
Processing all Item_refs here will cause t1_o.a to resolve to itself.
|
||||
We still need to process the special case of Item_direct_view_ref
|
||||
because in the context of views they have the same meaning as
|
||||
Item_field for tables.
|
||||
*/
|
||||
Item_ident *item_ref= (Item_ident *) item;
|
||||
if (item_ref->name && item_ref->table_name &&
|
||||
!my_strcasecmp(system_charset_info, item_ref->name, field_name) &&
|
||||
!my_strcasecmp(table_alias_charset, item_ref->table_name,
|
||||
table_name) &&
|
||||
(!db_name || (item_ref->db_name &&
|
||||
!strcmp (item_ref->db_name, db_name))))
|
||||
{
|
||||
found= li.ref();
|
||||
*counter= i;
|
||||
*resolution= RESOLVED_IGNORING_ALIAS;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
{
|
||||
|
Reference in New Issue
Block a user