Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feat(optimizer): propagate constants #2386
Feat(optimizer): propagate constants #2386
Changes from 14 commits
2f8bb13
2f6b484
7405ed9
b5d0c7f
9245232
ab54273
83dd497
64377a0
1adeb16
d7e1064
81dcfcc
370a4d5
866e3d0
4943eb7
170f5ef
d40fc16
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is replacement right? That takes it a step further than the sqlite rule, which says it just adds the extra predicate.
Do any planners take advantage of column equality in join conditions?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought SQLite does the variable replacement as well, but I'm not 100% sure. Will need to check their source to verify this assumption.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The example doesn’t show replacement. I also wonder if there is different behavior on join conditions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, will dig deeper. Also a good catch, thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Btw I've discovered that there are some gnarly cases that are tricky to take care of - mostly because of coercions (e.g. int to string - see SQLite documentation linked below).
Interestingly, SQLite doesn't seem to implement this transformation for
ON
clauses ofLEFT
,RIGHT
joins:I'll need to understand their code a bit better to make sure this is the case though..
Some documentation on SQLite's implementation can be found here (screenshot of their source code).
On the other hand, MariaDB mentions this transformation in the context of
WHERE
clauses, but towards the end of the page they also have this (note the remark aboutON
expressions):There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Regarding
It's now clear that SQLite does indeed replace the variable with the value: