mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-01 12:41:20 +02:00
Fix incorrect comment for get_agg_clause_costs
Adjust the header comment in get_agg_clause_costs so that it matches what
the function currently does. No recursive searching has been done ever
since 0a2bc5d61
. It also does not determine the aggtranstype like the
comment claimed. That's all done in preprocess_aggref().
preprocess_aggref also now determines the numOrderedAggs, so remove the
mention that get_agg_clause_costs also calculates "counts".
Normally, since this is just an adjustment of a comment it might not be
worth back-patching, but since this code is new to PG14 and that version
is still in beta, then it seems worth having the comments match.
Discussion: https://postgr.es/m/CAApHDvrrGrTJFPELrjx0CnDtz9B7Jy2XYW3Z2BKifAWLSaJYwQ@mail.gmail.com
Backpatch-though: 14
This commit is contained in:
parent
4ef64c425d
commit
2b58f894e5
@ -515,28 +515,24 @@ GetAggInitVal(Datum textInitVal, Oid transtype)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* get_agg_clause_costs
|
* get_agg_clause_costs
|
||||||
* Recursively find the Aggref nodes in an expression tree, and
|
* Process the PlannerInfo's 'aggtransinfos' and 'agginfos' lists
|
||||||
* accumulate cost information about them.
|
* accumulating the cost information about them.
|
||||||
*
|
*
|
||||||
* 'aggsplit' tells us the expected partial-aggregation mode, which affects
|
* 'aggsplit' tells us the expected partial-aggregation mode, which affects
|
||||||
* the cost estimates.
|
* the cost estimates.
|
||||||
*
|
*
|
||||||
* NOTE that the counts/costs are ADDED to those already in *costs ... so
|
* NOTE that the costs are ADDED to those already in *costs ... so the caller
|
||||||
* the caller is responsible for zeroing the struct initially.
|
* is responsible for zeroing the struct initially.
|
||||||
*
|
*
|
||||||
* We count the nodes, estimate their execution costs, and estimate the total
|
* For each AggTransInfo, we add the cost of an aggregate transition using
|
||||||
* space needed for their transition state values if all are evaluated in
|
* either the transfn or combinefn depending on the 'aggsplit' value. We also
|
||||||
* parallel (as would be done in a HashAgg plan). Also, we check whether
|
* account for the costs of any aggfilters and any serializations and
|
||||||
* partial aggregation is feasible. See AggClauseCosts for the exact set
|
* deserializations of the transition state and also estimate the total space
|
||||||
* of statistics collected.
|
* needed for the transition states as if each aggregate's state was stored in
|
||||||
|
* memory concurrently (as would be done in a HashAgg plan).
|
||||||
*
|
*
|
||||||
* In addition, we mark Aggref nodes with the correct aggtranstype, so
|
* For each AggInfo in the 'agginfos' list we add the cost of running the
|
||||||
* that that doesn't need to be done repeatedly. (That makes this function's
|
* final function and the direct args, if any.
|
||||||
* name a bit of a misnomer.)
|
|
||||||
*
|
|
||||||
* This does not descend into subqueries, and so should be used only after
|
|
||||||
* reduction of sublinks to subplans, or in contexts where it's known there
|
|
||||||
* are no subqueries. There mustn't be outer-aggregate references either.
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
get_agg_clause_costs(PlannerInfo *root, AggSplit aggsplit, AggClauseCosts *costs)
|
get_agg_clause_costs(PlannerInfo *root, AggSplit aggsplit, AggClauseCosts *costs)
|
||||||
|
Loading…
Reference in New Issue
Block a user