diff options
-rw-r--r-- | mysql-test/main/cte_recursive.result | 5 | ||||
-rw-r--r-- | mysql-test/main/cte_recursive.test | 7 | ||||
-rw-r--r-- | mysql-test/main/disabled.def | 1 | ||||
-rw-r--r-- | sql/sql_select.cc | 2 |
4 files changed, 12 insertions, 3 deletions
diff --git a/mysql-test/main/cte_recursive.result b/mysql-test/main/cte_recursive.result index 48f67f259da..93fe8a99c16 100644 --- a/mysql-test/main/cte_recursive.result +++ b/mysql-test/main/cte_recursive.result @@ -3089,16 +3089,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/main/cte_recursive.test b/mysql-test/main/cte_recursive.test index 1d4e328081b..0647e6c15c3 100644 --- a/mysql-test/main/cte_recursive.test +++ b/mysql-test/main/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/mysql-test/main/disabled.def b/mysql-test/main/disabled.def index fcba3054972..b489139a59f 100644 --- a/mysql-test/main/disabled.def +++ b/mysql-test/main/disabled.def @@ -21,4 +21,3 @@ innodb-wl5522-debug-zip : broken upstream innodb_bug12902967 : broken upstream file_contents : MDEV-6526 these files are not installed anymore max_statement_time : cannot possibly work, depends on timing -cte_recursive : Merge problem (MDEV-15575) diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 9a36ef725cc..320e6318e4c 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -1605,6 +1605,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); |