summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Babaev <igor@askmonty.org>2020-12-28 21:20:13 -0800
committerIgor Babaev <igor@askmonty.org>2020-12-28 21:20:32 -0800
commite59c1cef3bc4016f9fa9d7a0f6935463b7283a58 (patch)
tree865f9ea5f6488f6dec6be51de69fbd5f130aabc4
parent7f037b8c9f38b11a8c5038763cea273ff7fc8136 (diff)
downloadmariadb-git-e59c1cef3bc4016f9fa9d7a0f6935463b7283a58.tar.gz
Correction of the merge 10.2 into 10.3 for MDEV-23619
(correction for commit 6fed6de93f120b5e311b79892e7865639e9613a4)
-rw-r--r--mysql-test/main/cte_recursive.result4
-rw-r--r--sql/sql_lex.cc14
2 files changed, 9 insertions, 9 deletions
diff --git a/mysql-test/main/cte_recursive.result b/mysql-test/main/cte_recursive.result
index 62354a619c1..21c6b225a89 100644
--- a/mysql-test/main/cte_recursive.result
+++ b/mysql-test/main/cte_recursive.result
@@ -1301,7 +1301,7 @@ select ancestors.name, ancestors.dob from ancestors;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived4> ALL NULL NULL NULL NULL 24
4 DERIVED folks ALL NULL NULL NULL NULL 12 Using where
-6 RECURSIVE UNION <derived3> ALL NULL NULL NULL NULL 12
+6 UNION <derived3> ALL NULL NULL NULL NULL 12
5 RECURSIVE UNION <derived4> ALL NULL NULL NULL NULL 24
NULL UNION RESULT <union4,6,5> ALL NULL NULL NULL NULL NULL
3 DERIVED folks ALL NULL NULL NULL NULL 12 Using where
@@ -4029,7 +4029,7 @@ id select_type table type possible_keys key key_len ref rows Extra
3 RECURSIVE UNION t1 ALL NULL NULL NULL NULL 4 Using where
3 RECURSIVE UNION <derived2> ref key0 key0 9 test.t1.c 2
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
-4 RECURSIVE UNION <derived2> ALL NULL NULL NULL NULL 4
+4 UNION <derived2> ALL NULL NULL NULL NULL 4
with recursive r_cte as
( select * from t1 as s
union
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index dc0662e11b8..6116dee6e7e 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -4712,14 +4712,14 @@ void st_select_lex::set_explain_type(bool on_the_fly)
/*
pos_in_table_list=NULL for e.g. post-join aggregation JOIN_TABs.
*/
- if (!tab->table);
- else if (const TABLE_LIST *pos= tab->table->pos_in_table_list)
+ if (!(tab->table && tab->table->pos_in_table_list))
+ continue;
+ TABLE_LIST *tbl= tab->table->pos_in_table_list;
+ if (tbl->with && tbl->with->is_recursive &&
+ tbl->is_with_table_recursive_reference())
{
- if (pos->with && pos->with->is_recursive)
- {
- uses_cte= true;
- break;
- }
+ uses_cte= true;
+ break;
}
}
if (uses_cte)