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:
@ -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;
|
||||
|
Reference in New Issue
Block a user