Run ProjectionPushdown after the last RelationCSE#31791
Run ProjectionPushdown after the last RelationCSE#31791ggevay merged 3 commits intoMaterializeInc:mainfrom
ProjectionPushdown after the last RelationCSE#31791Conversation
015bccd to
0a29afa
Compare
0a29afa to
b707fb8
Compare
ProjectionPushdown after the last RelationCSE
8aaca69 to
112efc1
Compare
mgree
left a comment
There was a problem hiding this comment.
Looks good to me: code is simple enough and SLTs look good.
The join skipping is an unwelcome bit of complexity (it's almost the same logic), but here we are. Perhaps an issue for another time, but how hard would it be to actually look at JoinImplementations here?
112efc1 to
f077085
Compare
|
Thanks for the review!
It wouldn't be impossible:
One reason for which I decided to not go for (Running Nightly now, and then merging.) |
|
It's good that I've run Nightly, because there is an EXPLAIN output change 😅 Discussing here. |
f077085 to
a314350
Compare
a314350 to
a2bda1d
Compare
…-linear-operators.td
There is a bunch of conflicts indeed. I'm not sure if we should backport these kinds of changes in general, since there is also some risk for them. |
Edit: I've added the
lts-backport-v25.1label, but if this turns out to be too annoying to cherry-pick, then it's ok to skip this, as it's just a performance improvement.This adds a call to
ProjectionPushdownafter the last call toRelationCSE. As explained in a code comment:Slack discussion here:
https://materializeinc.slack.com/archives/C07SUTL7JMQ/p1741358397379089?thread_ts=1741341927.561309&cid=C07SUTL7JMQ
It's guarded by a feature flag as a precaution, but I've enabled it by default, as it's hard to imagine this hurting plans.
The first commit is the actual functionality, while the second commit just adds the feature flag.
Motivation
Tips for reviewer
Checklist
$T ⇔ Proto$Tmapping (possibly in a backwards-incompatible way), then it is tagged with aT-protolabel.