summaryrefslogtreecommitdiff
path: root/sql/sql_derived.cc
diff options
context:
space:
mode:
authorunknown <sanja@montyprogram.com>2013-06-17 20:33:36 +0300
committerunknown <sanja@montyprogram.com>2013-06-17 20:33:36 +0300
commitb54a4b7621b4bdcc9846a968e4268ea71e88dab8 (patch)
tree24569c8ea4d4a0b5f1ec460a7b9d6bc04a415f1e /sql/sql_derived.cc
parent10be9160c14f3bd488578ed64304a10d27b7b122 (diff)
parentfee78df3130f68c68df7c136593cf92bcb0dd208 (diff)
downloadmariadb-git-b54a4b7621b4bdcc9846a968e4268ea71e88dab8.tar.gz
5.3 -> 5.5 Merge
Diffstat (limited to 'sql/sql_derived.cc')
-rw-r--r--sql/sql_derived.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc
index ff5df31d2e2..2992bb0da6e 100644
--- a/sql/sql_derived.cc
+++ b/sql/sql_derived.cc
@@ -87,7 +87,16 @@ mysql_handle_derived(LEX *lex, uint phases)
sl && !res;
sl= sl->next_select_in_list())
{
- for (TABLE_LIST *cursor= sl->get_table_list();
+ TABLE_LIST *cursor= sl->get_table_list();
+ /*
+ DT_MERGE_FOR_INSERT is not needed for views/derived tables inside
+ subqueries. Views and derived tables of subqueries should be
+ processed normally.
+ */
+ if (phases == DT_MERGE_FOR_INSERT &&
+ cursor && cursor->top_table()->select_lex != &lex->select_lex)
+ continue;
+ for (;
cursor && !res;
cursor= cursor->next_local)
{