1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Bug #57954: BIT_AND function returns incorrect results

when semijoin=on

When setting the aggregate function as having no rows to report
the function no_rows_in_result() was calling Item_sum::reset().
However this function in addition to cleaning up the aggregate 
value by calling aggregator_clear() was also adding the current
value to the aggregate value by calling aggregator_add().
Fixed by making no_rows_in_result() to call aggregator_clear()
directly.
Renamed Item_sum::reset to Item_sum::reset_and_add() to
and added a comment to avoid misinterpretation of what the
function does.
This commit is contained in:
Georgi Kodinov
2010-12-08 14:28:06 +02:00
parent 703014b807
commit 4e9fb2c76f
7 changed files with 116 additions and 11 deletions

View File

@ -424,7 +424,7 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
item_sum->aggregator_clear();
}
else
item_sum->reset();
item_sum->reset_and_add();
item_sum->make_const();
recalc_const_item= 1;
break;