summaryrefslogtreecommitdiff
path: root/sql/sql_derived.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_derived.cc')
-rw-r--r--sql/sql_derived.cc21
1 files changed, 3 insertions, 18 deletions
diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc
index 22dd7734aea..4ceebcc1978 100644
--- a/sql/sql_derived.cc
+++ b/sql/sql_derived.cc
@@ -351,24 +351,6 @@ bool mysql_derived_merge(THD *thd, LEX *lex, TABLE_LIST *derived)
DBUG_RETURN(FALSE);
}
- if (dt_select->uncacheable & UNCACHEABLE_RAND)
- {
- /* There is random function => fall back to materialization. */
- cause= "Random function in the select";
- if (unlikely(thd->trace_started()))
- {
- OPT_TRACE_VIEWS_TRANSFORM(thd, trace_wrapper, trace_derived,
- derived->is_derived() ? "derived" : "view",
- derived->alias.str ? derived->alias.str : "<NULL>",
- derived->get_unit()->first_select()->select_number,
- "materialized");
- trace_derived.add("cause", cause);
- }
- derived->change_refs_to_fields();
- derived->set_materialized_derived();
- DBUG_RETURN(FALSE);
- }
-
if (derived->dt_handler)
{
derived->change_refs_to_fields();
@@ -821,6 +803,9 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived)
cursor->outer_join|= JOIN_TYPE_OUTER;
}
}
+ // Prevent it for possible ORDER BY clause
+ if (unit->fake_select_lex)
+ unit->fake_select_lex->context.outer_context= 0;
if (unlikely(thd->trace_started()))
{