don't allocate HashAgg hash tables when running explain only

Alexey Bashtanov <bashtanov@imap.cc>

From: Alexey Bashtanov <bashtanov@imap.cc>
To: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2020-11-13T16:10:30Z
Lists: pgsql-hackers

Attachments

Hi,

I got somewhat scared when my explain took a few seconds to complete and 
used a few gigs of RAM.
To reproduce try the following:

discard temp;
create temp table a as select to_timestamp(generate_series(1, 7000)) i;
analyze a;
set work_mem to '3GB';
explain select distinct a1.i - a2.i from a a1, a a2;

I would appreciate if someone could have a look at the patch attached, 
which makes executor skip initializing hash tables when doing explain only.

Best, Alex

Commits

  1. Skip allocating hash table in EXPLAIN-only mode.