Re: Converting SetOp to read its two inputs separately

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Richard Guo <guofenglinux(at)gmail(dot)com>
Cc: pgsql-hackers(at)lists(dot)postgresql(dot)org, David Rowley <dgrowleyml(at)gmail(dot)com>
Subject: Re: Converting SetOp to read its two inputs separately
Date: 2024-11-20 02:09:36
Message-ID: 56245.1732068576@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Richard Guo <guofenglinux(at)gmail(dot)com> writes:
> On Thu, Nov 14, 2024 at 11:00 AM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>> Aside from that minor TODO, the main thing that's left undone in this
>> patch series is to persuade the thing to exploit presorted input
>> paths.

> I think we may need to do the following to make this work:
> 1. We need to teach set_operation_ordered_results_useful() that sorted
> input paths are also useful for INTERSECT/EXCEPT, so that we can have
> setop_pathkeys set for the subqueries.
> 2. In generate_nonunion_paths(), we need to provide a valid
> "interesting_pathkeys" when calling build_setop_child_paths().

Once I'd wrapped my head around how things are done now (which the
comments in prepunion.c were remarkably unhelpful about), I saw that
most of the problem for #2 just requires re-ordering things that
generate_nonunion_paths was already doing. As for #1, I have a modest
proposal: we should get rid of set_operation_ordered_results_useful
entirely. It's not the code that actually does useful work, and
keeping it in sync with the code that does do useful work is hard and
unnecessary.

0001-0003 below are the same as before (so the slot-munging TODO is
still there). 0004 fixes a rather basic bug for nested set-operations
and gets rid of set_operation_ordered_results_useful along the way.
Then 0005 does your step 2.

regards, tom lane

Attachment Content-Type Size
v2-0001-Convert-SetOp-to-read-its-inputs-as-outerPlan-and.patch text/x-diff 69.3 KB
v2-0002-Remove-some-dead-code-in-prepunion.c.patch text/x-diff 12.4 KB
v2-0003-Get-rid-of-choose_hashed_setop.patch text/x-diff 16.9 KB
v2-0004-Fix-bogus-decisions-about-whether-we-want-pre-sor.patch text/x-diff 12.3 KB
v2-0005-Teach-generate_nonunion_paths-to-consider-pre-sor.patch text/x-diff 11.4 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message zengman 2024-11-20 03:11:26 Re: [PATCH] Fixed assertion issues in "pg_get_viewdef"
Previous Message Nathan Bossart 2024-11-20 01:55:04 Re: sunsetting md5 password support