diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2018-10-05 08:09:49 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2018-10-05 08:09:49 +0300 |
commit | 444c380ceb26895748ce50c50be3f839393ebfd7 (patch) | |
tree | 65b1fbf3b7caec3de48c1f76de4614a2d9793a8d /sql/sql_derived.cc | |
parent | 55dd0776566000c5ea12e177df0c784b500ab7c1 (diff) | |
parent | 941ca92a2ca3990020b23bcc92e7ca98dcc8f814 (diff) | |
download | mariadb-git-444c380ceb26895748ce50c50be3f839393ebfd7.tar.gz |
Merge 10.3 into 10.4
Diffstat (limited to 'sql/sql_derived.cc')
-rw-r--r-- | sql/sql_derived.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc index d65969d2160..878aa715b84 100644 --- a/sql/sql_derived.cc +++ b/sql/sql_derived.cc @@ -1107,6 +1107,7 @@ bool mysql_derived_fill(THD *thd, LEX *lex, TABLE_LIST *derived) DBUG_ASSERT(derived->table && derived->table->is_created()); select_unit *derived_result= derived->derived_result; SELECT_LEX *save_current_select= lex->current_select; + bool derived_recursive_is_filled= false; if (unit->executed && !derived_is_recursive && (unit->uncacheable & UNCACHEABLE_DEPENDENT)) @@ -1135,6 +1136,7 @@ bool mysql_derived_fill(THD *thd, LEX *lex, TABLE_LIST *derived) { /* In this case all iteration are performed */ res= derived->fill_recursive(thd); + derived_recursive_is_filled= true; } } else if (unit->is_unit_op()) @@ -1190,7 +1192,8 @@ bool mysql_derived_fill(THD *thd, LEX *lex, TABLE_LIST *derived) } } err: - if (res || (!lex->describe && !derived_is_recursive && !unit->uncacheable)) + if (res || (!lex->describe && !unit->uncacheable && + (!derived_is_recursive || derived_recursive_is_filled))) unit->cleanup(); lex->current_select= save_current_select; |