Re: apply_scanjoin_target_to_paths and partitionwise join
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>,
Andrei Lepikhov <lepihov@gmail.com>, Jakub Wartak <jakub.wartak@enterprisedb.com>, Tomas Vondra <tomas.vondra@enterprisedb.com>, arne.roland@malkut.net, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Julien Rouhaud <rjuju123@gmail.com>, Etsuro Fujita <etsuro.fujita@gmail.com>, Richard Guo <guofenglinux@gmail.com>
Date: 2025-01-02T21:32:09Z
Lists: pgsql-hackers
On Thu, Jan 2, 2025 at 3:58 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > I am wondering if the problem is not that the plan is slower, it's > that for some reason the planner took a lot longer to create it. > It's very plausible that partitionwise planning takes longer, and > maybe we have some corner cases where the time is O(N^2) or worse. That doesn't seem like a totally unreasonable speculation, but it seems a little surprising that retaining the non-partitionwise paths would fix it. True, that might let us discard a bunch of partitionwise paths more quickly than would otherwise be possible, but I wouldn't expect that to have an impact as dramatic as what Jakub alleged. The thing I thought about was whether there might be some weird effects with lots of empty partitions; or maybe with some other property of the path like say sort keys or parallelism. For example if we couldn't generate a partitionwise path with sort keys as good as the non-partitionwise path had, or if we couldn't generate a parallel partitionwise path but we could generate a parallel non-partitionwise path. As far as I knew neither of those things are real problems, but if they were then I believe they could pretty easily explain a large regression. > However, this is pure speculation without a test case, and any > proposed fix would be even more speculative. I concur with your > bottom line: we should insist on a public test case before deciding > what to do about it. Yeah. -- Robert Haas EDB: http://www.enterprisedb.com
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Remove redundant SET enable_partitionwise_join = on.
- 3f33b63de278 19 (unreleased) landed
-
Don't reset the pathlist of partitioned joinrels.
- 014f9a831a32 19 (unreleased) landed
-
Allow left join removals and unique joins on partitioned tables
- 3c569049b7b5 16.0 cited
-
Consider fractional paths in generate_orderedappend_paths
- 6b94e7a6da2f 15.0 cited
-
Fix handling of targetlist SRFs when scan/join relation is known empty.
- 1d338584062b 12.0 cited