fallintoplace opened a new pull request, #2156: URL: https://github.com/apache/iceberg-go/pull/2156
**What** - Limit Parquet row-group stats to columns used by the pruning filter. **Why** - Wide projections currently inspect stats for every read column, even when the filter uses only a few. **Implementation** - Track pruning field IDs in compiled filter plans. - Resolve them to Parquet column indices once per file. - Keep nil `StatsFieldIDs` as the all-read-columns fallback. **Benchmark** `go test ./table -run '^$' -bench '^BenchmarkParquetRowGroupStatsFilterColumns$' -benchmem -benchtime=300ms -count=5 -cpu=1` Stats evaluator, 1,024 row groups; Go 1.26.3 on Apple M1 Pro. Median of five 300 ms samples. | Projected / filter columns | All read (ms/op) | Filter only (ms/op) | Speedup | | --- | ---: | ---: | ---: | | 32 / 1 | 46.81 | 1.96 | 23.9× | | 32 / 4 | 47.23 | 7.26 | 6.5× | | 128 / 1 | 183.11 | 1.99 | 92.0× | | 128 / 4 | 182.77 | 7.26 | 25.2× | | 128 / 128 | 218.34 | 218.79 | 1.00× (neutral) | For 128 projected columns and 1 filter column, allocations fell from 2,233,361 to 22,528 per iteration. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
