diff options
author | Igor Babaev <igor@askmonty.org> | 2017-01-05 13:54:31 -0800 |
---|---|---|
committer | Igor Babaev <igor@askmonty.org> | 2017-01-05 13:54:31 -0800 |
commit | ae1b3d1991b679bb38095711de27934d7683deda (patch) | |
tree | 982182ec011e6114a7874920748ea376a48baec2 /sql/sql_select.cc | |
parent | 9e528d4fdeab83fcc75ec788da939937ce27b98d (diff) | |
download | mariadb-git-ae1b3d1991b679bb38095711de27934d7683deda.tar.gz |
Fixed bug mdev-10705.
The fix for bug mdev-5104 did not take into account that
for any call of setup_order the size of ref_array must
be big enough. This patch fixes this problem.
Diffstat (limited to 'sql/sql_select.cc')
-rw-r--r-- | sql/sql_select.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc index c406fab5a3a..2c65c59ad7e 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -714,10 +714,15 @@ JOIN::prepare(Item ***rref_pointer_array, if (mixed_implicit_grouping && tbl->table) tbl->table->maybe_null= 1; } + + uint real_og_num= og_num; + if (skip_order_by && + select_lex != select_lex->master_unit()->global_parameters) + real_og_num+= select_lex->order_list.elements; if ((wild_num && setup_wild(thd, tables_list, fields_list, &all_fields, wild_num)) || - select_lex->setup_ref_array(thd, og_num) || + select_lex->setup_ref_array(thd, real_og_num) || setup_fields(thd, (*rref_pointer_array), fields_list, MARK_COLUMNS_READ, &all_fields, 1) || setup_without_group(thd, (*rref_pointer_array), tables_list, |