summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/cte_recursive.result5
-rw-r--r--mysql-test/t/cte_recursive.test7
-rw-r--r--sql/sql_select.cc2
3 files changed, 12 insertions, 2 deletions
diff --git a/mysql-test/r/cte_recursive.result b/mysql-test/r/cte_recursive.result
index 6b2db359294..70752c7200c 100644
--- a/mysql-test/r/cte_recursive.result
+++ b/mysql-test/r/cte_recursive.result
@@ -3083,16 +3083,19 @@ set big_tables=default;
#
# MDEV-15571: using recursive cte with big_tables enabled
#
+create table t1 (a bigint);
+insert into t1 values(1);
set big_tables=1;
with recursive qn as
(
-select 1 as a from dual
+select a from t1
union all
select a*2000 from qn where a<10000000000000000000
)
select * from qn;
ERROR 22003: BIGINT value is out of range in '`qn`.`a` * 2000'
set big_tables=default;
+drop table t1;
#
# MDEV-15556: using recursive cte with big_tables enabled
# when recursive tables are accessed by key
diff --git a/mysql-test/t/cte_recursive.test b/mysql-test/t/cte_recursive.test
index 50cb39a2b35..332a64b30de 100644
--- a/mysql-test/t/cte_recursive.test
+++ b/mysql-test/t/cte_recursive.test
@@ -2114,12 +2114,15 @@ set big_tables=default;
--echo # MDEV-15571: using recursive cte with big_tables enabled
--echo #
+create table t1 (a bigint);
+insert into t1 values(1);
+
set big_tables=1;
--error ER_DATA_OUT_OF_RANGE
with recursive qn as
(
- select 1 as a from dual
+ select a from t1
union all
select a*2000 from qn where a<10000000000000000000
)
@@ -2127,6 +2130,8 @@ select * from qn;
set big_tables=default;
+drop table t1;
+
--echo #
--echo # MDEV-15556: using recursive cte with big_tables enabled
--echo # when recursive tables are accessed by key
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 57c82a2d7dc..30ef26f67e2 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -1304,6 +1304,8 @@ JOIN::optimize_inner()
/* Convert all outer joins to inner joins if possible */
conds= simplify_joins(this, join_list, conds, TRUE, FALSE);
+ if (thd->is_error())
+ DBUG_RETURN(1);
if (select_lex->save_leaf_tables(thd))
DBUG_RETURN(1);
build_bitmap_for_nested_joins(join_list, 0);