diff options
-rw-r--r-- | mysql-test/r/cte_recursive.result | 5 | ||||
-rw-r--r-- | mysql-test/t/cte_recursive.test | 7 | ||||
-rw-r--r-- | sql/sql_select.cc | 2 |
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); |