Backport to 2.18.x: #7661: Optimize quals on segmentby columns in ColumnarScan #7671
+460
−26
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.
This is an automated backport of #7661: Optimize quals on segmentby columns in ColumnarScan.
This PR will be merged automatically after all the relevant CI checks pass. If this fix should not be backported, or will be backported manually, just close this PR. You can use the backport branch to add your changes, it won't be modified automatically anymore.
For more details, please see the documentation
Original description
Optimize quals on segmentby columns in ColumnarScan
When filtering arrow slots in ColumnarScan, quals on segmentby columns should be executed separately from those on other columns because they don't require decompression and might filter the whole arrow slot in one go. Furthermore, the quals only need to be applied once per arrow slot since the segmentby value is the same for all compressed rows in the slot.
This will speed up scans when filters on segmentby columns cannot be pushed down to Hypercore TAM as scankeys. For example, " IN (1, 2, 3)" won't be pushed down as a scankey because only index scans support scankeys with such scalar array expressions.
Disable-check: force-changelog-file
Disable-check: commit-count