| 179 | } |
| 180 | |
| 181 | void Aggregator::UpdateTuple( |
| 182 | AggFnEvaluator** agg_fn_evals, Tuple* tuple, TupleRow* row, bool is_merge) noexcept { |
| 183 | DCHECK(tuple != nullptr || agg_fns_.empty()); |
| 184 | for (int i = 0; i < agg_fns_.size(); ++i) { |
| 185 | if (is_merge) { |
| 186 | agg_fn_evals[i]->Merge(row->GetTuple(0), tuple); |
| 187 | } else { |
| 188 | agg_fn_evals[i]->Add(row, tuple); |
| 189 | } |
| 190 | } |
| 191 | } |
| 192 | |
| 193 | Tuple* Aggregator::GetOutputTuple( |
| 194 | const vector<AggFnEvaluator*>& agg_fn_evals, Tuple* tuple, MemPool* pool) { |