adriangb opened a new pull request, #21160:
URL: https://github.com/apache/datafusion/pull/21160

   ## Summary
   
   - Adds `MetricCategory` enum (`Rows`, `Bytes`, `Timing`) classifying metrics 
by what they measure and, critically, their **determinism**: rows/bytes are 
deterministic given the same plan+data; timing varies across runs.
   - Each `Metric` can now declare its category via 
`MetricBuilder::with_category()`. Well-known builder methods (`output_rows`, 
`elapsed_compute`, `output_bytes`, etc.) set the category automatically. Custom 
counters/gauges default to "always included".
   - New session config `datafusion.explain.analyze_categories` accepts `all` 
(default), `none`, or comma-separated `rows`, `bytes`, `timing`.
   - This is orthogonal to the existing `analyze_level` (summary/dev) which 
controls verbosity.
   
   ## Motivation
   
   Running `EXPLAIN ANALYZE` in `.slt` tests currently requires liberal use of 
`<slt:ignore>` for every non-deterministic timing metric. With this change, a 
test can simply:
   
   ```sql
   SET datafusion.explain.analyze_categories = 'rows';
   EXPLAIN ANALYZE SELECT ...;
   -- output contains only row-count metrics — fully deterministic, no 
<slt:ignore> needed
   ```
   
   ## Test plan
   
   - [x] New Rust integration test `explain_analyze_categories` covering all 
combos (rows, none, all, rows+bytes)
   - [x] New `.slt` tests in `explain_analyze.slt` for `rows`, `none`, 
`rows,bytes`, and `rows` with dev level
   - [x] Existing `explain_analyze` integration tests pass (24/24)
   - [x] Proto roundtrip test updated and passing
   - [x] `information_schema` slt updated for new config entry
   - [x] Full `core_integration` suite passes (918 tests)
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)


-- 
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]

Reply via email to