From f45c7bf99d5b8ae0803c3e6fb28f363ffe686099 Mon Sep 17 00:00:00 2001 From: Raphael Taylor-Davies Date: Thu, 20 May 2021 19:07:38 +0100 Subject: [PATCH] fix comparison of dictionaries with different values arrays (#332) --- arrow/src/array/ord.rs | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/arrow/src/array/ord.rs b/arrow/src/array/ord.rs index efd68b122646..c2c94f5ffc7c 100644 --- a/arrow/src/array/ord.rs +++ b/arrow/src/array/ord.rs @@ -94,7 +94,7 @@ where let right_keys = right.keys_array(); let left_values = StringArray::from(left.values().data().clone()); - let right_values = StringArray::from(left.values().data().clone()); + let right_values = StringArray::from(right.values().data().clone()); Box::new(move |i: usize, j: usize| { let key_left = left_keys.value(i).to_usize().unwrap(); @@ -222,7 +222,7 @@ pub fn build_compare<'a>(left: &'a Array, right: &'a Array) -> Result(left: &'a Array, right: &'a Array) -> Result Result<()> { + let d1 = vec!["a", "b", "c", "d"]; + let a1 = DictionaryArray::::from_iter(d1.into_iter()); + let d2 = vec!["e", "f", "g", "a"]; + let a2 = DictionaryArray::::from_iter(d2.into_iter()); + + let cmp = build_compare(&a1, &a2)?; + + assert_eq!(Ordering::Less, (cmp)(0, 0)); + assert_eq!(Ordering::Equal, (cmp)(0, 3)); + assert_eq!(Ordering::Greater, (cmp)(1, 3)); + Ok(()) + } }