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.
For queries like
the limit cannot be simply pushed past the join - but it can be duplicated past the join. The same currently happens with
MV_EXPAND
.This draft solves this by leaving an explicit
Limit
plan node downstream from theJoin
, but marks it in a way that prevents being duplicated multiple times (which would cause infinite loops).The alternative approach would be to follow what we do with
MvExpand
, and internalize the limit into theJoin
plan node. This works, too, but then any other optimization rule passes that would do anything with the limit won't apply anymore, because it has become part of theJoin
node.We should decide on one approach (internalizing the limit or leaving it in place but marked unavailable for pushdown); then I plan to align the code paths for both
Join
s andMvExpand
accordingly.