1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Bug#20327: Marking of a wrong field leads to a wrong result on select with view,

prepared statement and subquery.

When a field of a view from an outer select is resolved the find_field_in_view
function creates an Item_direct_view_ref object that references the 
corresponding view underlying field. After that the view_ref is marked
as a dependent one. While resolving view underlying field it also get
marked as a dependent one due to current_select still points to the subselect.
Marking the view underlying field is wrong and lead to attaching conditions
to a wrong table and thus to the wrong result of the whole statement.

Now mark_select_range_as_dependent() function isn't called for fields from a 
view underlying table.
This commit is contained in:
evgen@moonbone.local
2006-11-29 14:52:11 +03:00
parent 0be7e70399
commit e851a9eaea
3 changed files with 46 additions and 0 deletions

View File

@ -3303,6 +3303,12 @@ find_field_in_tables(THD *thd, Item_ident *item,
{
if (found == WRONG_GRANT)
return (Field*) 0;
/*
Only views fields should be marked as dependent, not an underlying
fields.
*/
if (!table_ref->belong_to_view)
{
SELECT_LEX *current_sel= thd->lex->current_select;
SELECT_LEX *last_select= table_ref->select_lex;