MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / aggInit

Method aggInit

src/dsql/AggNodes.cpp:359–379  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

357}
358
359void 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
381bool AggNode::aggPass(thread_db* tdbb, Request* request) const
382{

Callers

nothing calls this directly

Calls 10

CDecimal128Class · 0.85
getDatabaseMethod · 0.80
makeDoubleMethod · 0.80
make_int64Method · 0.80
make_longMethod · 0.80
make_decimal128Method · 0.80
make_doubleMethod · 0.80
SortClass · 0.50
getCountMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected