Thread

Commits

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

  1. don't allocate HashAgg hash tables when running explain only

    Alexey Bashtanov <bashtanov@imap.cc> — 2020-11-13T16:10:30Z

    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
    
  2. Re: don't allocate HashAgg hash tables when running explain only

    Heikki Linnakangas <hlinnaka@iki.fi> — 2020-11-18T10:40:24Z

    On 13/11/2020 18:10, Alexey Bashtanov wrote:
    > 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.
    
    Makes sense. Committed, thanks for the patch!
    
    - Heikki
    
    
    
    
  3. Re: don't allocate HashAgg hash tables when running explain only

    Greg Stark <stark@mit.edu> — 2020-11-19T05:20:15Z

    On Wed, 18 Nov 2020 at 05:40, Heikki Linnakangas <hlinnaka@iki.fi> wrote:
    >
    > On 13/11/2020 18:10, Alexey Bashtanov wrote:
    >> > I would appreciate if someone could have a look at the patch attached,
    > > which makes executor skip initializing hash tables when doing explain only.
    >
    > Makes sense. Committed, thanks for the patch!
    
    
    Egads. That seems like a backpatchable bug fix to me. Have we been
    doing this all along?!
    
    -- 
    greg
    
    
    
    
  4. Re: don't allocate HashAgg hash tables when running explain only

    Heikki Linnakangas <hlinnaka@iki.fi> — 2020-11-19T06:47:51Z

    On 19/11/2020 07:20, Greg Stark wrote:
    > On Wed, 18 Nov 2020 at 05:40, Heikki Linnakangas <hlinnaka@iki.fi> wrote:
    >>
    >> On 13/11/2020 18:10, Alexey Bashtanov wrote:
    >>>> I would appreciate if someone could have a look at the patch attached,
    >>> which makes executor skip initializing hash tables when doing explain only.
    >>
    >> Makes sense. Committed, thanks for the patch!
    > 
    > Egads. That seems like a backpatchable bug fix to me. Have we been
    > doing this all along?!
    
    Yeah, I believe it's always been like that. Yeah, arguably it should be 
    backpatched. I felt conservative and didn't backpatch, but feel free to 
    do it if you think it should be.
    
    - Heikki
    
    
    
    
  5. Re: don't allocate HashAgg hash tables when running explain only

    Michael Paquier <michael@paquier.xyz> — 2020-11-20T06:31:22Z

    On Thu, Nov 19, 2020 at 08:47:51AM +0200, Heikki Linnakangas wrote:
    > Yeah, I believe it's always been like that. Yeah, arguably it should be
    > backpatched. I felt conservative and didn't backpatch, but feel free to do
    > it if you think it should be.
    
    +1 for a backpatch.  The difference in runtime for EXPLAIN in this case
    is quite something.
    --
    Michael
    
  6. Re: don't allocate HashAgg hash tables when running explain only

    Heikki Linnakangas <hlinnaka@iki.fi> — 2020-11-20T13:30:53Z

    On 20/11/2020 08:31, Michael Paquier wrote:
    > On Thu, Nov 19, 2020 at 08:47:51AM +0200, Heikki Linnakangas wrote:
    >> Yeah, I believe it's always been like that. Yeah, arguably it should be
    >> backpatched. I felt conservative and didn't backpatch, but feel free to do
    >> it if you think it should be.
    > 
    > +1 for a backpatch.  The difference in runtime for EXPLAIN in this case
    > is quite something.
    
    That's two votes for backpatching. Ok, I'll go do it.
    
    - Heikki