On Fri, Sep 12, 2025 at 5:34 AM Richard Guo <guofengli...@gmail.com> wrote: > I really like this idea. Currently, aggtransspace represents an > estimate of the transition state size provided by the aggregate > definition. If it's set to zero, a default estimate based on the > state data type is used. Negative values currently have no defined > meaning. I think it makes perfect sense to reuse this field so that > a negative value indicates that the transition state data can grow > unboundedly in size. > > Attached 0002 implements this idea. It requires fewer code changes > than I expected. This is mainly because that our current code uses > aggtransspace in such a way that if it's a positive value, that value > is used as it's provided by the aggregate definition; otherwise, some > heuristics are applied to estimate the size. For the aggregates that > accumulate input rows (e.g., array_agg, string_agg), I don't currently > have a better heuristic for estimating their size, so I've chosen to > keep the current logic. This won't regress anything in estimating > transition state data size.
This might be OK, but it's not what I was suggesting: I was suggesting trying to do a calculation like space_used = -aggtransspace * rowcount, not just using a <0 value as a sentinel. -- Robert Haas EDB: http://www.enterprisedb.com