Skip to content

Commit d541313

Browse files
committed
add imports
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
1 parent 2672e1b commit d541313

1 file changed

Lines changed: 12 additions & 31 deletions

File tree

vortex-array/src/scalar_fn/fns/binary/compare.rs

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use arrow_ord::cmp;
99
use arrow_ord::ord::make_comparator;
1010
use arrow_schema::SortOptions;
1111
use vortex_error::VortexResult;
12+
use vortex_error::vortex_err;
1213

1314
use crate::ArrayRef;
1415
use crate::Canonical;
@@ -187,29 +188,22 @@ pub fn scalar_cmp(lhs: &Scalar, rhs: &Scalar, operator: CompareOperator) -> Vort
187188

188189
let nullability = lhs.dtype().nullability() | rhs.dtype().nullability();
189190

190-
// Equality and inequality can be determined without `partial_cmp`.
191-
match operator {
192-
CompareOperator::Eq => return Ok(Scalar::bool(lhs == rhs, nullability)),
193-
CompareOperator::NotEq => return Ok(Scalar::bool(lhs != rhs, nullability)),
194-
_ => {}
195-
}
196-
197-
// We do this instead of `<` and `>` to ensure we do not lose a type mismatch error.
191+
// We use `partial_cmp` to ensure we do not lose a type mismatch error.
198192
let ordering = lhs.partial_cmp(rhs).ok_or_else(|| {
199-
vortex_error::vortex_err!(
193+
vortex_err!(
200194
"Cannot compare scalars with incompatible types: {} and {}",
201195
lhs.dtype(),
202196
rhs.dtype()
203197
)
204198
})?;
205199

206200
let b = match operator {
201+
CompareOperator::Eq => ordering.is_eq(),
202+
CompareOperator::NotEq => ordering.is_ne(),
207203
CompareOperator::Gt => ordering.is_gt(),
208204
CompareOperator::Gte => ordering.is_ge(),
209205
CompareOperator::Lt => ordering.is_lt(),
210206
CompareOperator::Lte => ordering.is_le(),
211-
// Already handled above.
212-
CompareOperator::Eq | CompareOperator::NotEq => unreachable!(),
213207
};
214208

215209
Ok(Scalar::bool(b, nullability))
@@ -275,6 +269,7 @@ mod tests {
275269
use crate::extension::datetime::TimestampOptions;
276270
use crate::scalar::Scalar;
277271
use crate::scalar_fn::fns::binary::compare::ConstantArray;
272+
use crate::scalar_fn::fns::binary::scalar_cmp;
278273
use crate::scalar_fn::fns::operators::CompareOperator;
279274
use crate::scalar_fn::fns::operators::Operator;
280275
use crate::test_harness::to_int_indices;
@@ -523,26 +518,12 @@ mod tests {
523518
);
524519

525520
// Ordering comparisons must error on incompatible types.
526-
assert!(super::scalar_cmp(&ms_scalar, &s_scalar, CompareOperator::Gt).is_err());
527-
assert!(super::scalar_cmp(&ms_scalar, &s_scalar, CompareOperator::Lt).is_err());
528-
assert!(super::scalar_cmp(&ms_scalar, &s_scalar, CompareOperator::Gte).is_err());
529-
assert!(super::scalar_cmp(&ms_scalar, &s_scalar, CompareOperator::Lte).is_err());
530-
531-
// Equality comparisons should succeed (and return false since the types differ).
532-
assert_eq!(
533-
super::scalar_cmp(&ms_scalar, &s_scalar, CompareOperator::Eq)
534-
.unwrap()
535-
.as_bool()
536-
.value(),
537-
Some(false),
538-
);
539-
assert_eq!(
540-
super::scalar_cmp(&ms_scalar, &s_scalar, CompareOperator::NotEq)
541-
.unwrap()
542-
.as_bool()
543-
.value(),
544-
Some(true),
545-
);
521+
assert!(scalar_cmp(&ms_scalar, &s_scalar, CompareOperator::Gt).is_err());
522+
assert!(scalar_cmp(&ms_scalar, &s_scalar, CompareOperator::Lt).is_err());
523+
assert!(scalar_cmp(&ms_scalar, &s_scalar, CompareOperator::Gte).is_err());
524+
assert!(scalar_cmp(&ms_scalar, &s_scalar, CompareOperator::Lte).is_err());
525+
assert!(scalar_cmp(&ms_scalar, &s_scalar, CompareOperator::Eq).is_err());
526+
assert!(scalar_cmp(&ms_scalar, &s_scalar, CompareOperator::NotEq).is_err());
546527
}
547528

548529
#[test]

0 commit comments

Comments
 (0)