fix: avoid double-take in some scenarios #3357
Merged
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.
The code was a little over-eager with regards to eager materialization. I think this was just a mistake from a recent refactor. This led to a double-take (also in the code). In most cases this double-take would be smoothed out by the double-take reducing optimization step. However, in some cases (e.g. if there was a limit between the takes) the takes weren't being combined.
We could improve the double-take optimization step to pushdown through a limit node but it was an easier to fix to avoid accidentally generating the double-take in the first place.
I added a test case for this in test_plans although that test case highlights another interesting optimization we could apply which is to push limits down into vector searches.