wickro <robwickert(at)gmail(dot)com> writes:
> So this is a planning mistake? Should a hash be allowed to grow larger
> than work_mem before it starts to use the disk?
HashAggregate doesn't have any ability to spill to disk. The planner
will not select a HashAggregate if it thinks the required hash table
would be larger than work_mem. What you've evidently got here is a
misestimate of the required hash table size, which most likely is
stemming from a bad estimate of the number of groups. How does that
estimate (12617088 here) compare to reality? Have you tried increasing
the statistics target for partner_id and keyword (or the whole table)?
regards, tom lane