diff --git a/src/datatypes/src/vectors/eq.rs b/src/datatypes/src/vectors/eq.rs index 372b3ceee4..e8e942d3ff 100644 --- a/src/datatypes/src/vectors/eq.rs +++ b/src/datatypes/src/vectors/eq.rs @@ -67,7 +67,7 @@ fn equal(lhs: &dyn Vector, rhs: &dyn Vector) -> bool { .downcast_ref::() .unwrap() .inner(), - &**lhs + &**rhs .as_any() .downcast_ref::() .unwrap() @@ -259,6 +259,22 @@ mod tests { ]))); } + // Regression: second arm must downcast `rhs` (was `lhs`), or same-length ConstantVectors + // with different inners compare equal. + #[test] + fn test_constant_vector_eq_compares_both_inners() { + assert_vector_ref_ne( + Arc::new(ConstantVector::new( + Arc::new(BooleanVector::from(vec![true])), + 5, + )), + Arc::new(ConstantVector::new( + Arc::new(BooleanVector::from(vec![false])), + 5, + )), + ); + } + #[test] fn test_vector_ne() { assert_vector_ref_ne(