| 357 | } |
| 358 | |
| 359 | void AggNode::aggInit(thread_db* tdbb, Request* request) const |
| 360 | { |
| 361 | impure_value_ex* impure = request->getImpure<impure_value_ex>(impureOffset); |
| 362 | impure->vlux_count = 0; |
| 363 | |
| 364 | if (distinct) |
| 365 | { |
| 366 | // Initialize a sort to reject duplicate values. |
| 367 | |
| 368 | impure_agg_sort* asbImpure = request->getImpure<impure_agg_sort>(asb->impure); |
| 369 | |
| 370 | // Get rid of the old sort areas if this request has been used already. |
| 371 | delete asbImpure->iasb_sort; |
| 372 | asbImpure->iasb_sort = NULL; |
| 373 | |
| 374 | asbImpure->iasb_sort = FB_NEW_POOL(request->req_sorts.getPool()) Sort( |
| 375 | tdbb->getDatabase(), &request->req_sorts, asb->length, |
| 376 | asb->keyItems.getCount(), 1, asb->keyItems.begin(), |
| 377 | RecordSource::rejectDuplicate, 0); |
| 378 | } |
| 379 | } |
| 380 | |
| 381 | bool AggNode::aggPass(thread_db* tdbb, Request* request) const |
| 382 | { |
nothing calls this directly
no test coverage detected