From 51b26a4d3fb6a42645a0a19c2bab4c8180013f7f Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 7 Jul 2003 00:45:51 +0300 Subject: [PATCH] fixed subselect with to temporary tables executing (now it return correct results. Test was commited before, but it is not pushed, BUG# is not registered, because bug was introduced after release) sql/sql_select.cc: fixed subselect with to temporary tables executing sql/sql_select.h: fixed subselect with to temporary tables executing --- sql/sql_select.cc | 14 ++++++++++++++ sql/sql_select.h | 4 +++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 0eead502f31..0aa7e67a12b 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -1137,6 +1137,20 @@ JOIN::exec() thd->proc_info="Copying to group table"; tmp_error= -1; + if (curr_join != this) + { + if (sum_funcs2) + { + curr_join->sum_funcs= sum_funcs2; + curr_join->sum_funcs_end= sum_funcs_end2; + } + else + { + curr_join->alloc_func_list(); + sum_funcs2= curr_join->sum_funcs; + sum_funcs_end2= curr_join->sum_funcs_end; + } + } if (curr_join->make_sum_func_list(*curr_all_fields, *curr_fields_list, 1) || (tmp_error= do_select(curr_join, (List *) 0, curr_tmp_table, diff --git a/sql/sql_select.h b/sql/sql_select.h index aa08c5c1725..7de9007369e 100644 --- a/sql/sql_select.h +++ b/sql/sql_select.h @@ -146,6 +146,8 @@ class JOIN :public Sql_alloc TABLE *exec_tmp_table1, *exec_tmp_table2; THD *thd; Item_sum **sum_funcs, ***sum_funcs_end; + /* second copy of sumfuncs (for queries with 2 temporary tables */ + Item_sum **sum_funcs2, ***sum_funcs_end2; Procedure *procedure; Item *having; Item *tmp_having; // To store Having when processed temporary table @@ -199,7 +201,7 @@ class JOIN :public Sql_alloc send_records(0), found_records(0), examined_rows(0), exec_tmp_table1(0), exec_tmp_table2(0), thd(thd_arg), - sum_funcs(0), + sum_funcs(0),sum_funcs2(0), procedure(0), having(0), tmp_having(0), select_options(select_options_arg),