1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

MDEV-31214 Recursive CTE execution is interrupted without errors or warnings

This commit is contained in:
Sergei Golubchik
2023-06-30 21:03:29 +02:00
parent 22e5a5ff6e
commit 5c81c50f10
2 changed files with 11 additions and 0 deletions

View File

@ -1214,6 +1214,8 @@ generation name
2 Grandma Ann 2 Grandma Ann
2 Grandma Sally 2 Grandma Sally
2 Grandpa Ben 2 Grandpa Ben
Warnings:
Warning 1931 Query execution was interrupted. The query exceeded max_recursive_iterations = 1. The query result may be incomplete
# query with recursive tables using key access # query with recursive tables using key access
alter table folks add primary key (id); alter table folks add primary key (id);
explain explain
@ -2592,6 +2594,8 @@ select * from applied_modules;
m m
m1 m1
m2 m2
Warnings:
Warning 1931 Query execution was interrupted. The query exceeded max_recursive_iterations = 2. The query result may be incomplete
drop table value_nodes, module_nodes, module_arguments, module_results; drop table value_nodes, module_nodes, module_arguments, module_results;
# #
# mdev-12519: recursive references in subqueries # mdev-12519: recursive references in subqueries

View File

@ -1142,7 +1142,14 @@ bool TABLE_LIST::fill_recursive(THD *thd)
while (!rc && !with->all_are_stabilized()) while (!rc && !with->all_are_stabilized())
{ {
if (with->level > thd->variables.max_recursive_iterations) if (with->level > thd->variables.max_recursive_iterations)
{
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
ER_QUERY_RESULT_INCOMPLETE,
ER_THD(thd, ER_QUERY_RESULT_INCOMPLETE),
"max_recursive_iterations =",
(ulonglong)thd->variables.max_recursive_iterations);
break; break;
}
with->prepare_for_next_iteration(); with->prepare_for_next_iteration();
rc= unit->exec_recursive(); rc= unit->exec_recursive();
} }