refactor[array]: move boolean ops to lazy binary expr#6447
refactor[array]: move boolean ops to lazy binary expr#6447joseph-isaacs merged 7 commits intodevelopfrom
Conversation
…Kernel dispatch Signed-off-by: Joe Isaacs <joe@spiraldb.com> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Merging this PR will degrade performance by 21%
Performance Changes
Comparing Footnotes
|
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Polar Signals Profiling ResultsLatest Run
Previous Runs (4)
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingSummary
Detailed Results Table
|
Benchmarks: TPC-H SF=1 on NVMESummary
Detailed Results Table
|
Benchmarks: FineWeb NVMeSummary
Detailed Results Table
|
Benchmarks: TPC-H SF=1 on S3Summary
Detailed Results Table
|
Benchmarks: TPC-DS SF=1 on NVMESummary
Detailed Results Table
|
Benchmarks: TPC-H SF=10 on NVMESummary
Detailed Results Table
|
Benchmarks: FineWeb S3Summary
Detailed Results Table
|
vortex-array/src/compute/boolean.rs
Outdated
| fn is_elementwise(&self) -> bool { | ||
| true | ||
| } | ||
| arrow_boolean(lhs.to_array(), rhs.to_array(), op) |
There was a problem hiding this comment.
This should build the binary expression
Benchmarks: Statistical and Population GeneticsSummary
Detailed Results Table
|
Benchmarks: TPC-H SF=10 on S3Summary
Detailed Results Table
|
Benchmarks: CompressionSummary
Detailed Results Table
|
Benchmarks: Random AccessSummary
Detailed Results Table
|
Benchmarks: Clickbench on NVMESummary
Detailed Results Table
|
| compute::BooleanOperator::AndKleene => Ok(Operator::And), | ||
| compute::BooleanOperator::OrKleene => Ok(Operator::Or), |
There was a problem hiding this comment.
I know this is not part of this pr but do we differentiate between And and AndKleene in the expressions?
There was a problem hiding this comment.
All use kleene, I think we can rename and add the others with different enum int values
|
I will fixup between shortly |
## Does this PR closes an open issue or discussion?
<!--
This helps us keep track of fixed issues and changes.
-->
- Closes #.
## What changes are included in this PR?
Move over boolean compute to lazy expr comptue
## What is the rationale for this change?
Want lazy compute for all compute functions, move over boolean here
## How is this change tested?
<!--
Changes should be tested, we expect changes to fit in one of the
following categories:
1. Verifying existing behavior is maintained.
2. For serialization related changes - Compatibility should be
maintained or explicitly broken.
3. For new behavior and functionality, this helps us maintaining that
desired behavior in the future.
-->
## Are there any user-facing changes?
from array/compute/binary deprecated
```rust
#[deprecated(note = "Use and_kleene instead. Non-Kleene boolean ops cannot be lazily evaluated.")]
pub fn and(lhs: &dyn Array, rhs: &dyn Array)
#[deprecated(note = "Use or_kleene instead. Non-Kleene boolean ops cannot be lazily evaluated.")]
pub fn or(lhs: &dyn Array, rhs: &dyn Array) -> VortexResult<ArrayRef> {
```
We will soon deprecate all functions in this mod
---------
Signed-off-by: Joe Isaacs <joe@spiraldb.com>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Does this PR closes an open issue or discussion?
What changes are included in this PR?
Move over boolean compute to lazy expr comptue
What is the rationale for this change?
Want lazy compute for all compute functions, move over boolean here
How is this change tested?
Are there any user-facing changes?
from array/compute/binary deprecated
We will soon deprecate all functions in this mod