You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[DO NOT MERGE] Add list length min-max aggregate - #8886
Adds an aggregate function ListLengthMinMax to calculate the minimum and maximum length of a List-like array. This is just the current MinMax aggregate composed with the ListLength scalar function.
This will allow us to do several beneficial things if incorporated as a default stat in upcoming pr)
Easily detect if variable sized lists have a single shared size and write with upcoming FixedSizeList layout
Include as zone map stat to allow for pruning list predicates like list_length (obviously) and others, since we can identify zones with all-empty lists and prune them (e.g. list_sum > k)
What changes are included in this PR?
Add ListLengthMinMax for List and FixedSizeList inputs.
Return nullable min_length and max_length fields, ignoring null outer lists while allowing valid empty lists to contribute zero.
Reuse the numeric min_max implementation over the List sizes child with outer-list validity attached.
Short-circuit FixedSizeList inputs from their dtype and outer validity, saturating after the first non-null list.
Register the aggregate in the default aggregate-function session.
NOTE: Should come up with framework to do aggregate on derived column instead of just implementing this one-off
No successful run was found on develop (46b0b2b) during the generation of this report, so 3a098b4 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩
Verdict: Overall PR-level signal after subtracting baseline drift estimated from Parquet control rows. It can be Likely improvement, Likely regression, or No clear signal.
Engines: Per-engine attribution. DataFusion is compared against DataFusion/Parquet controls; DuckDB is compared against DuckDB/Parquet controls. This answers whether each engine improved or regressed independently.
Confidence: Based on directional consistency, share of rows above the noise floor, and control-run noise.
This PR has been marked as stale because it has been open for 14 days with no activity. Please comment or remove the stale label if you wish to keep it active, otherwise it will be closed in 7 days
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
Adds an aggregate function
ListLengthMinMaxto calculate the minimum and maximum length of aList-like array. This is just the currentMinMaxaggregate composed with theListLengthscalar function.This will allow us to do several beneficial things if incorporated as a default stat in upcoming pr)
FixedSizeListlayoutlist_length(obviously) and others, since we can identify zones with all-empty lists and prune them (e.g.list_sum > k)What changes are included in this PR?
NOTE: Should come up with framework to do aggregate on derived column instead of just implementing this one-off