Repository navigation
Conversation
Merging this PR will degrade performance by 6.04%4 warnings, 1 note
Warning Please fix the performance issues or acknowledge them on CodSpeed. Performance Changes
Tip Investigate this regression by commenting Comparing Footnotes
|
|
I think for maximum compatibility this has to be a new top level field in https://github.com/vortex-data/vortex/pull/9775/changes#diff-9c5a36ce8f55480706984e8996f192cd3abbdd1b97afa6f702f646b3ce42e039L25. The problem you run into is that old readers already shipped code that make assumption about existing footer statistics. One issue is that they validate field count and if the count doesn't add up they will assume it's a corrupted file. The writer could optionally populate both of the segments and the new version will only ever read the new field. If you go that route you will see all the places that make assumptions about field stats that need fixing, i.e. datafusion, duckdb and jni |
|
We also want to use aggregate partials here? |
e24266f to
9c91f1a
Compare
|
@joseph-isaacs I've modified the summary stats to use aggregate partials. |
9c91f1a to
3b07ff7
Compare
9f6ce2f to
83660ba
Compare
e72a792 to
ee01b02
Compare
6a3a2a8 to
f8e7cf0
Compare
9c210b1 to
e0a709b
Compare
I didn't realize stats were broken for nullable nested types. We can implement this by having skipped fields point to empty AggregateSets. |
|
Right now we have https://github.com/vortex-data/vortex/blob/develop/vortex-layout/src/layouts/file_stats.rs#L468-L471. For non nullable Structs things are correct but at the moment vortex allows you to have parent nullability different from child which needs either changing or adding handling for |
|
I'm on PTO next week, will pick this back up after vacation |
af95eb2 to
6557f97
Compare
I've added an |
aa8ad8b to
f2d5240
Compare
robert3005
left a comment
There was a problem hiding this comment.
I think we should fix the Sum, otherwise this is good to go
bf777f3 to
4ec33fc
Compare
Store file-level statistics via a post-order walk of the DType tree, so nested struct fields get whole-file pruning instead of only top-level columns. Each leaf gets a stats entry, and each nullable struct gets a trailing null-count entry. A new `is_nested` footer flag keeps old files readable via the legacy top-level-only layout. Signed-off-by: "Thor" <thor.hansen@dash0.com> Signed-off-by: Thor <thor.hansen@dash0.com>
Signed-off-by: Thor <thor.hansen@dash0.com>
Signed-off-by: Thor <thor.hansen@dash0.com>
Signed-off-by: Thor <thor.hansen@dash0.com>
children of a nullable struct as the stats are incorrect for these stats see vortex-data#9205 Signed-off-by: Thor <thor.hansen@dash0.com>
excluded Signed-off-by: Thor <thor.hansen@dash0.com>
Signed-off-by: Thor <thor.hansen@dash0.com>
File statistics are optional, so a statistics segment that fails to parse is logged and dropped rather than failing the whole file open. Signed-off-by: Thor <thor.hansen@dash0.com>
Signed-off-by: Thor <thor.hansen@dash0.com>
The legacy Sum aggregate is unreliable, so the defaults no longer record it in either the legacy or the aggregate-based statistics. An overflow-aware SumV2 can be added to the footer separately. Signed-off-by: Thor <thor.hansen@dash0.com>
Signed-off-by: Thor <thor.hansen@dash0.com>
pushed that handling into the writer. Signed-off-by: Thor <thor.hansen@dash0.com>
4ec33fc to
f689528
Compare
Summary
Being able to perform file level pruning on nested columns speeds up queries.
Changes
Adds post order stats to the file stats footer for nested columns. It adds a new
is_nested: bool = falseto the stats set flatbuffer for backward compatibility.Additionally it modifies the way the stats footer is accumulated to use the same AggRef functions that the zone maps use as well.
Only goofy thing it it also has to track truncatable stats separately because the aggregate partials don't have a way to express exactness.