diff options
author | Alexander Barkov <bar@mariadb.org> | 2017-11-05 22:22:01 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2017-11-05 22:22:01 +0400 |
commit | 98b3f28862210a56f6a8a681e6add12ac400521d (patch) | |
tree | 4c07a5edb0880d7d7db85d3df110a046b612465d /sql/sql_union.cc | |
parent | 4e34eaf1877f8b732bf8d7313e5c6c0699d33043 (diff) | |
download | mariadb-git-98b3f28862210a56f6a8a681e6add12ac400521d.tar.gz |
MDEV-14217 [db crash] Recursive CTE when SELECT includes new field
Diffstat (limited to 'sql/sql_union.cc')
-rw-r--r-- | sql/sql_union.cc | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/sql/sql_union.cc b/sql/sql_union.cc index 6b5c328fd5d..b978241608c 100644 --- a/sql/sql_union.cc +++ b/sql/sql_union.cc @@ -770,13 +770,7 @@ bool st_select_lex_unit::join_union_type_handlers(THD *thd_arg, holders[pos].set_handler(item_type_handler); else { - if (first_sl->item_list.elements != sl->item_list.elements) - { - my_message(ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT, - ER_THD(thd_arg, ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT), - MYF(0)); - DBUG_RETURN(true); - } + DBUG_ASSERT(first_sl->item_list.elements == sl->item_list.elements); if (holders[pos].aggregate_for_result(item_type_handler)) { my_error(ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION, MYF(0), @@ -1024,6 +1018,16 @@ bool st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result, goto err; } } + else + { + if (first_sl->item_list.elements != sl->item_list.elements) + { + my_message(ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT, + ER_THD(thd_arg, ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT), + MYF(0)); + goto err; + } + } if (is_recursive) { if (!with_element->is_anchor(sl)) |