adriangb opened a new pull request, #18434: URL: https://github.com/apache/datafusion/pull/18434
## Summary Introduces `InListStorage` enum to support both expression-based and array-based storage in `InListExpr`. This enables more efficient memory usage when InList values are homogeneous and can be stored directly as arrays. ## Changes - Added `InListStorage` enum with `Array(ArrayRef)` and `Exprs(Vec<Arc<dyn PhysicalExpr>>)` variants - Refactored `InListExpr` to use enum storage (initially uses `Exprs` variant only) - Added `Set` implementations for primitive array types (`ArraySet`, `StructArraySet`) - Added `in_list_from_array` helper function for creating InList from arrays - Updated dependent code to handle `Result` from `list()` method ## Value - Better memory representation for homogeneous lists - Infrastructure for future array-based InList optimizations - Support for struct arrays in InList (multi-column joins) ## Testing - ✅ All clippy checks pass with `-D warnings` - ✅ 27 InList tests passing - ✅ Behavior unchanged (uses `Exprs` variant by default) ## Part of Multi-PR Strategy This is **PR2 of 7** in the InList pushdown feature breakdown. **Tier**: Foundation (Tier 1) **Dependencies**: None (independent) **Can merge**: As soon as approved (parallel with PR1) -- 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]
