Re: Teaching planner to short-circuit empty UNION/EXCEPT/INTERSECT inputs
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: David Rowley <dgrowleyml@gmail.com>
Cc: PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>
Date: 2025-10-07T01:48:35Z
Lists: pgsql-hackers
David Rowley <dgrowleyml@gmail.com> writes: > The reason I didn't go down the route of SETOP_VAR was that it's still > a hack, it's just making it look a bit more official. I suppose the > correct way to fix all this and get rid of the varno==0 stuff forever > is to have a proper top-level RTE for the top-level set operation and > make it so each child is an OTHER_MEMBER rel at that query level. It > felt like going a bit too far to do something like that to fix this > bug, so I didn't explore that further. Yeah, I think "more RTEs" is the ultimate solution here, but it's never risen to the top of my to-do list either. I was kind of thinking about an RTE per set-op child, though. Not sure if one for the top-level op, or one for an intermediate op, would help; though it's certainly possible it would. regards, tom lane
Commits
-
Fix UNION planner estimate_num_groups with varno==0
- eaa159632d03 19 (unreleased) landed
-
Fix possible usage of incorrect UPPERREL_SETOP RelOptInfo
- fdda78e361f1 19 (unreleased) landed
-
Teach planner to short-circuit EXCEPT/INTERSECT with dummy inputs
- 9c9d41af4db7 19 (unreleased) landed
-
Fix incorrect targetlist in dummy UNIONs
- 928df067d1e6 19 (unreleased) landed
-
Teach UNION planner to remove dummy inputs
- 03d40e4b523b 19 (unreleased) landed