summaryrefslogtreecommitdiff
path: root/sql/sql_lex.cc
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2019-02-28 21:50:00 +0100
committerOleksandr Byelkin <sanja@mariadb.com>2019-02-28 21:50:00 +0100
commit7b5c63856b324281a3b0533b7b90fb6c130fcc66 (patch)
treecf7150ac4ac72de333cb624e5a70f058546e9cc5 /sql/sql_lex.cc
parentd9d83f1d92b696ef56f4944df036b8a78364ebb4 (diff)
parentcb11b3fbe9d4dde776cb8f2c0d6f83a569655efc (diff)
downloadmariadb-git-7b5c63856b324281a3b0533b7b90fb6c130fcc66.tar.gz
Merge branch '5.5' into 10.0
Diffstat (limited to 'sql/sql_lex.cc')
-rw-r--r--sql/sql_lex.cc16
1 files changed, 5 insertions, 11 deletions
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index 2fb239ed498..9bc0cf39ac7 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -1896,7 +1896,7 @@ void st_select_lex::init_query()
n_child_sum_items= 0;
subquery_in_having= explicit_limit= 0;
is_item_list_lookup= 0;
- first_execution= 1;
+ changed_elements= 0;
first_natural_join_processing= 1;
first_cond_optimization= 1;
parsing_place= NO_MATTER;
@@ -3368,9 +3368,10 @@ void st_select_lex::fix_prepare_information(THD *thd, Item **conds,
Item **having_conds)
{
DBUG_ENTER("st_select_lex::fix_prepare_information");
- if (!thd->stmt_arena->is_conventional() && first_execution)
+ if (!thd->stmt_arena->is_conventional() &&
+ !(changed_elements & TOUCHED_SEL_COND))
{
- first_execution= 0;
+ changed_elements|= TOUCHED_SEL_COND;
if (group_list.first)
{
if (!group_list_ptrs)
@@ -3608,14 +3609,7 @@ bool st_select_lex::optimize_unflattened_subqueries(bool const_only)
bool st_select_lex::handle_derived(LEX *lex, uint phases)
{
- for (TABLE_LIST *cursor= (TABLE_LIST*) table_list.first;
- cursor;
- cursor= cursor->next_local)
- {
- if (cursor->is_view_or_derived() && cursor->handle_derived(lex, phases))
- return TRUE;
- }
- return FALSE;
+ return lex->handle_list_of_derived(table_list.first, phases);
}