Re: Removing unneeded self joins
Alexander Korotkov <aekorotkov@gmail.com>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Remove GUC_NOT_IN_SAMPLE from enable_self_join_elimination
- 717d0e8dd945 18.0 landed
-
Put enable_self_join_elimination into postgresql.conf.sample
- c2d329260cd8 18.0 landed
-
Get rid of ojrelid local variable in remove_rel_from_query()
- e167191dc146 18.0 landed
-
Implement Self-Join Elimination
- fc069a3a6319 18.0 cited
-
Revert: Remove useless self-joins
- d1d286d83c0e 17.0 landed
-
Replace lateral references to removed rels in subqueries
- 466979ef031a 17.0 landed
-
Replace relids in lateral subquery parse tree during SJE
- 489072ab7a9e 17.0 landed
-
Forbid SJE with result relation
- 8c441c082797 17.0 landed
-
Fix misuse of RelOptInfo.unique_for_rels cache by SJE
- 30b4955a4668 17.0 landed
-
Replace the relid in some missing fields during SJE
- a7928a57b9f0 17.0 landed
-
Revert 56-bit relfilenode change and follow-up commits.
- a448e49bcbe4 16.0 cited
-
Stabilize timetz test across DST transitions.
- 4a071afbd056 14.0 cited
-
Speed up finding EquivalenceClasses for a given set of rels
- 3373c7155350 13.0 cited
-
Fix mark-and-restore-skipping test case to not be a self-join.
- 24d08f3c0a1f 12.0 landed
Hi, Noah! On Sat, Feb 24, 2024 at 7:12 AM Noah Misch <noah@leadboat.com> wrote: > On Sat, Feb 24, 2024 at 12:36:59AM +0200, Alexander Korotkov wrote: > > On Thu, Feb 22, 2024 at 10:51 AM Andrei Lepikhov <a.lepikhov@postgrespro.ru> wrote: > > > On 21/2/2024 14:26, Richard Guo wrote: > > > > I think the right fix for these issues is to introduce a new element > > > > 'sublevels_up' in ReplaceVarnoContext, and enhance replace_varno_walker > > > > to 1) recurse into subselects with sublevels_up increased, and 2) > > > > perform the replacement only when varlevelsup is equal to sublevels_up. > > > This code looks good. No idea how we have lost it before. > > > > Thanks to Richard for the patch and to Andrei for review. I also find > > code looking good. Pushed with minor edits from me. > > I feel this, commit 466979e, misses a few of our project standards: > > - The patch makes many non-whitespace changes to existing test queries. This > makes it hard to review the consequences of the non-test part of the patch. > Did you minimize such edits? Of course, not every such edit is avoidable. > > - The commit message doesn't convey whether this is refactoring or is a bug > fix. This makes it hard to write release notes, among other things. From > this mailing list thread, it gather it's a bug fix in 489072ab7a, hence > v17-specific. The commit message for 489072ab7a is also silent about that > commit's status as refactoring or as a bug fix. > > - Normally, I could answer the previous question by reading the test case > diffs. However, in addition to the first point about non-whitespace > changes, the first three join.sql patch hunks just change whitespace. > Worse, since they move line breaks, "git diff -w" doesn't filter them out. > > To what extent are those community standards vs. points of individual > committer preference? Please tell me where I'm wrong here. I agree that commit 466979e is my individual committer failure. I should have written a better, more clear commit message and separate tests refactoring from the bug fix. I'm not so sure about 489072ab7a (except it provides a wrong fix). It has a "Reported-by:" field meaning it's a problem reported by a particular person. The "Discussion:" points directly to the reported test case. And commit contains the relevant test case. The commit message could be more wordy though. ------ Regards, Alexander Korotkov