Hi all, With the following statements on latest master (c81bd3b9), I find negative cost for plan nodes.
create table a (i int, j int); insert into a select i%100000, i from generate_series(1,1000000)i; analyze a; # explain select i from a group by i; QUERY PLAN ----------------------------------------------------------------- HashAggregate (cost=1300.00..-1585.82 rows=102043 width=4) Group Key: i Planned Partitions: 4 -> Seq Scan on a (cost=0.00..14425.00 rows=1000000 width=4) (4 rows) In function cost_agg, when we add the disk costs of hash aggregation that spills to disk, nbatches is calculated as 1.18 in this case. It is greater than 1, so there will be spill. And the depth is calculated as -1 in this case, with num_partitions being 4. I think this is where thing goes wrong. Thanks Richard