Re: Problem about postponing gathering partial paths for topmost scan/join rel

From: Richard Guo <guofenglinux(at)gmail(dot)com>
To: Antonin Houska <ah(at)cybertec(dot)at>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Problem about postponing gathering partial paths for topmost scan/join rel
Date: 2022-07-15 09:00:13
Message-ID: CAMbWs49bnXzik4ugysngSY+rZ5xVtXUOh9tSgYixu3z0VUJzrQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, Jul 15, 2022 at 4:03 PM Richard Guo <guofenglinux(at)gmail(dot)com> wrote:

>
> On Thu, Jul 14, 2022 at 10:02 PM Antonin Houska <ah(at)cybertec(dot)at> wrote:
>
>> I'd prefer a test that demonstrates that the Gather node at the top of the
>> "subproblem plan" is useful purely from the *cost* perspective, rather
>> than
>> due to executor limitation.
>
>
> This patch provides an additional path (Gather atop of subproblem) which
> was not available before. But your concern makes sense that we need to
> show this new path is valuable from competing on cost with other paths.
>
> How about we change to Nested Loop at the topmost? Something like:
>

Maybe a better example is that we use a small table 'c' to avoid the
Gather node above scanning 'c', so that the path of parallel nestloop is
possible to be generated.

set join_collapse_limit to 2;

# explain (costs off) select * from a join b on a.i = b.i join c on b.i >
c.i;
QUERY PLAN
------------------------------------------------
Nested Loop
Join Filter: (b.i > c.i)
-> Seq Scan on c
-> Gather
Workers Planned: 4
-> Parallel Hash Join
Hash Cond: (a.i = b.i)
-> Parallel Seq Scan on a
-> Parallel Hash
-> Parallel Seq Scan on b
(10 rows)

Thanks
Richard

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Matthias van de Meent 2022-07-15 09:25:35 Re: MERGE and parsing with prepared statements
Previous Message Ken Kato 2022-07-15 08:49:44 Re: Add last_vacuum_index_scans in pg_stat_all_tables