summaryrefslogtreecommitdiff
path: root/sql/sql_derived.cc
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2017-11-08 15:47:49 +0100
committerOleksandr Byelkin <sanja@mariadb.com>2017-11-08 15:47:49 +0100
commitcfb314a13b4187e8bb2d3b2ba0f48270e07c61be (patch)
tree6b72b4acc65b7ed939e858c6a421277f74a2ce5a /sql/sql_derived.cc
parent6a524fcfdde539c6448aa4126ccb5ed79055b9ce (diff)
downloadmariadb-git-bb-10.0-MDEV-14164.tar.gz
MDEV-14164: Unknown column error when adding aggregate to function in oracle style procedure FOR loopbb-10.0-MDEV-14164
Make differentiation between pullout for merge and pulout of outer field during exists2in transformation. In last case the field was outer and so we can safely starrt from name resolution context of the SELECT where it was pulled. Old behaviour lead to inconsistence between list of tables and outer name resolution context (which skipps one SELECT for merge purposes) which cretes problem of name resolution.
Diffstat (limited to 'sql/sql_derived.cc')
-rw-r--r--sql/sql_derived.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc
index 4578bcec394..0aedf5084a9 100644
--- a/sql/sql_derived.cc
+++ b/sql/sql_derived.cc
@@ -466,7 +466,8 @@ bool mysql_derived_merge(THD *thd, LEX *lex, TABLE_LIST *derived)
// Update used tables cache according to new table map
if (derived->on_expr)
{
- derived->on_expr->fix_after_pullout(parent_lex, &derived->on_expr);
+ derived->on_expr->fix_after_pullout(parent_lex, &derived->on_expr,
+ TRUE);
fix_list_after_tbl_changes(parent_lex, &derived->nested_join->join_list);
}
}
@@ -636,7 +637,8 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived)
SELECT_LEX_UNIT *unit= derived->get_unit();
DBUG_ENTER("mysql_derived_prepare");
bool res= FALSE;
- DBUG_PRINT("enter", ("unit 0x%lx", (ulong) unit));
+ DBUG_PRINT("enter", ("unit: %p table_list: %p Alias '%s'",
+ unit, derived, derived->alias));
// Skip already prepared views/DT
if (!unit || unit->prepared ||