Skip to content

Commit b09d031

Browse files
committed
wip
Signed-off-by: Joe Isaacs <[email protected]>
1 parent 77c7211 commit b09d031

File tree

2 files changed

+52
-11
lines changed

2 files changed

+52
-11
lines changed

vortex-compute/src/comparison/datum.rs

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ use vortex_vector::BoolDatum;
66
use vortex_vector::Datum;
77
use vortex_vector::DecimalDatum;
88
use vortex_vector::PrimitiveDatum;
9+
use vortex_vector::ScalarOps;
910
use vortex_vector::TypedDatum;
11+
use vortex_vector::VectorMutOps;
12+
use vortex_vector::VectorOps;
1013
use vortex_vector::binaryview::BinaryType;
1114
use vortex_vector::binaryview::BinaryViewScalar;
1215
use vortex_vector::binaryview::BinaryViewType;
@@ -53,8 +56,17 @@ where
5356
fn compare(self, rhs: Self) -> Self::Output {
5457
match (self, rhs) {
5558
(BoolDatum::Scalar(sc1), BoolDatum::Scalar(sc2)) => BoolDatum::Scalar(sc1.compare(sc2)),
56-
(BoolDatum::Vector(sc1), BoolDatum::Vector(sc2)) => BoolDatum::Vector(sc1.compare(sc2)),
57-
_ => unreachable!(""),
59+
(BoolDatum::Vector(vec), BoolDatum::Scalar(sc)) => {
60+
let repeated: BoolVector = sc.repeat(vec.len()).into_bool().freeze();
61+
BoolDatum::Vector(vec.compare(repeated))
62+
}
63+
(BoolDatum::Scalar(sc), BoolDatum::Vector(vec)) => {
64+
let repeated: BoolVector = sc.repeat(vec.len()).into_bool().freeze();
65+
BoolDatum::Vector(repeated.compare(vec))
66+
}
67+
(BoolDatum::Vector(vec1), BoolDatum::Vector(vec2)) => {
68+
BoolDatum::Vector(vec1.compare(vec2))
69+
}
5870
}
5971
}
6072
}
@@ -71,10 +83,17 @@ where
7183
(PrimitiveDatum::Scalar(sc1), PrimitiveDatum::Scalar(sc2)) => {
7284
BoolDatum::Scalar(sc1.compare(sc2))
7385
}
74-
(PrimitiveDatum::Vector(sc1), PrimitiveDatum::Vector(sc2)) => {
75-
BoolDatum::Vector(sc1.compare(sc2))
86+
(PrimitiveDatum::Vector(vec), PrimitiveDatum::Scalar(sc)) => {
87+
let repeated: PrimitiveVector = sc.repeat(vec.len()).into_primitive().freeze();
88+
BoolDatum::Vector(vec.compare(repeated))
89+
}
90+
(PrimitiveDatum::Scalar(sc), PrimitiveDatum::Vector(vec)) => {
91+
let repeated: PrimitiveVector = sc.repeat(vec.len()).into_primitive().freeze();
92+
BoolDatum::Vector(repeated.compare(vec))
93+
}
94+
(PrimitiveDatum::Vector(vec1), PrimitiveDatum::Vector(vec2)) => {
95+
BoolDatum::Vector(vec1.compare(vec2))
7696
}
77-
_ => unreachable!(""),
7897
}
7998
}
8099
}
@@ -91,10 +110,17 @@ where
91110
(DecimalDatum::Scalar(sc1), DecimalDatum::Scalar(sc2)) => {
92111
BoolDatum::Scalar(sc1.compare(sc2))
93112
}
94-
(DecimalDatum::Vector(sc1), DecimalDatum::Vector(sc2)) => {
95-
BoolDatum::Vector(sc1.compare(sc2))
113+
(DecimalDatum::Vector(vec), DecimalDatum::Scalar(sc)) => {
114+
let repeated = sc.repeat(vec.len()).into_decimal().freeze();
115+
BoolDatum::Vector(vec.compare(repeated))
116+
}
117+
(DecimalDatum::Scalar(sc), DecimalDatum::Vector(vec)) => {
118+
let repeated = sc.repeat(vec.len()).into_decimal().freeze();
119+
BoolDatum::Vector(repeated.compare(vec))
120+
}
121+
(DecimalDatum::Vector(vec1), DecimalDatum::Vector(vec2)) => {
122+
BoolDatum::Vector(vec1.compare(vec2))
96123
}
97-
_ => unreachable!(""),
98124
}
99125
}
100126
}
@@ -112,10 +138,17 @@ where
112138
(BinaryViewDatum::Scalar(sc1), BinaryViewDatum::Scalar(sc2)) => {
113139
BoolDatum::Scalar(sc1.compare(sc2))
114140
}
115-
(BinaryViewDatum::Vector(sc1), BinaryViewDatum::Vector(sc2)) => {
116-
BoolDatum::Vector(sc1.compare(sc2))
141+
(BinaryViewDatum::Vector(vec), BinaryViewDatum::Scalar(sc)) => {
142+
let repeated = T::downcast(sc.repeat(vec.len())).freeze();
143+
BoolDatum::Vector(vec.compare(repeated))
144+
}
145+
(BinaryViewDatum::Scalar(sc), BinaryViewDatum::Vector(vec)) => {
146+
let repeated = T::downcast(sc.repeat(vec.len())).freeze();
147+
BoolDatum::Vector(repeated.compare(vec))
148+
}
149+
(BinaryViewDatum::Vector(vec1), BinaryViewDatum::Vector(vec2)) => {
150+
BoolDatum::Vector(vec1.compare(vec2))
117151
}
118-
_ => unreachable!(""),
119152
}
120153
}
121154
}

vortex-vector/src/vector_mut.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,14 @@ impl VectorMut {
242242
vortex_panic!("Expected PrimitiveVectorMut, got {self:?}");
243243
}
244244

245+
/// Consumes `self` and returns the inner [`PrimitiveVectorMut`] if `self` is of that variant.
246+
pub fn into_decimal(self) -> DecimalVectorMut {
247+
if let VectorMut::Decimal(v) = self {
248+
return v;
249+
}
250+
vortex_panic!("Expected DecimalVectorMut, got {self:?}");
251+
}
252+
245253
/// Consumes `self` and returns the inner [`StringVectorMut`] if `self` is of that variant.
246254
#[expect(
247255
clippy::same_name_method,

0 commit comments

Comments
 (0)