Remove DictionaryArray::keys_array method and replace usages by the keys method (#419)
diff --git a/arrow/src/array/array_dictionary.rs b/arrow/src/array/array_dictionary.rs
index 9b036da..168a439 100644
--- a/arrow/src/array/array_dictionary.rs
+++ b/arrow/src/array/array_dictionary.rs
@@ -70,26 +70,11 @@
}
impl<'a, K: ArrowPrimitiveType> DictionaryArray<K> {
- /// Return an iterator to the keys of this dictionary.
+ /// Return an array view of the keys of this dictionary as a PrimitiveArray.
pub fn keys(&self) -> &PrimitiveArray<K> {
&self.keys
}
- /// Returns an array view of the keys of this dictionary
- pub fn keys_array(&self) -> PrimitiveArray<K> {
- let data = self.data_ref();
- let keys_data = ArrayData::new(
- K::DATA_TYPE,
- data.len(),
- Some(data.null_count()),
- data.null_buffer().cloned(),
- data.offset(),
- data.buffers().to_vec(),
- vec![],
- );
- PrimitiveArray::<K>::from(keys_data)
- }
-
/// Returns the lookup key by doing reverse dictionary lookup
pub fn lookup_key(&self, value: &str) -> Option<K::Native> {
let rd_buf: &StringArray =
@@ -379,7 +364,7 @@
let test = vec!["a", "b", "c", "a"];
let array: DictionaryArray<Int8Type> = test.into_iter().collect();
- let keys = array.keys_array();
+ let keys = array.keys();
assert_eq!(&DataType::Int8, keys.data_type());
assert_eq!(0, keys.null_count());
assert_eq!(&[0, 1, 2, 0], keys.values());
@@ -390,7 +375,7 @@
let test = vec![Some("a"), None, Some("b"), None, None, Some("a")];
let array: DictionaryArray<Int32Type> = test.into_iter().collect();
- let keys = array.keys_array();
+ let keys = array.keys();
assert_eq!(&DataType::Int32, keys.data_type());
assert_eq!(3, keys.null_count());
diff --git a/arrow/src/array/builder.rs b/arrow/src/array/builder.rs
index 71fd9a9..3bbeaf7 100644
--- a/arrow/src/array/builder.rs
+++ b/arrow/src/array/builder.rs
@@ -3282,7 +3282,7 @@
assert_eq!(array.is_null(1), true);
assert_eq!(array.is_valid(1), false);
- let keys = array.keys_array();
+ let keys = array.keys();
assert_eq!(keys.value(0), 1);
assert_eq!(keys.is_null(1), true);
diff --git a/arrow/src/array/ord.rs b/arrow/src/array/ord.rs
index c2c94f5..d7b1829 100644
--- a/arrow/src/array/ord.rs
+++ b/arrow/src/array/ord.rs
@@ -90,8 +90,8 @@
{
let left = left.as_any().downcast_ref::<DictionaryArray<T>>().unwrap();
let right = right.as_any().downcast_ref::<DictionaryArray<T>>().unwrap();
- let left_keys = left.keys_array();
- let right_keys = right.keys_array();
+ let left_keys = left.keys();
+ let right_keys = right.keys();
let left_values = StringArray::from(left.values().data().clone());
let right_values = StringArray::from(right.values().data().clone());
diff --git a/arrow/src/compute/kernels/cast.rs b/arrow/src/compute/kernels/cast.rs
index 463da7c..150f1f6 100644
--- a/arrow/src/compute/kernels/cast.rs
+++ b/arrow/src/compute/kernels/cast.rs
@@ -1370,7 +1370,8 @@
)
})?;
- let keys_array: ArrayRef = Arc::new(dict_array.keys_array());
+ let keys_array: ArrayRef =
+ Arc::new(PrimitiveArray::<K>::from(dict_array.keys().data().clone()));
let values_array = dict_array.values();
let cast_keys = cast_with_options(&keys_array, to_index_type, &cast_options)?;
let cast_values =
@@ -1450,7 +1451,8 @@
cast_with_options(&dict_array.values(), to_type, cast_options)?;
// Note take requires first casting the indices to u32
- let keys_array: ArrayRef = Arc::new(dict_array.keys_array());
+ let keys_array: ArrayRef =
+ Arc::new(PrimitiveArray::<K>::from(dict_array.keys().data().clone()));
let indicies = cast_with_options(&keys_array, &DataType::UInt32, cast_options)?;
let u32_indicies =
indicies
diff --git a/arrow/src/compute/kernels/sort.rs b/arrow/src/compute/kernels/sort.rs
index feef00c..dff5695 100644
--- a/arrow/src/compute/kernels/sort.rs
+++ b/arrow/src/compute/kernels/sort.rs
@@ -600,7 +600,7 @@
) -> Result<UInt32Array> {
let values: &DictionaryArray<T> = as_dictionary_array::<T>(values);
- let keys: &PrimitiveArray<T> = &values.keys_array();
+ let keys: &PrimitiveArray<T> = values.keys();
let dict = values.values();
let dict: &StringArray = as_string_array(&dict);
@@ -1071,7 +1071,7 @@
.as_any()
.downcast_ref::<StringArray>()
.expect("Unable to get dictionary values");
- let sorted_keys = sorted.keys_array();
+ let sorted_keys = sorted.keys();
assert_eq!(sorted_dict, dict);
diff --git a/arrow/src/compute/kernels/take.rs b/arrow/src/compute/kernels/take.rs
index d325ce4..66bfd61 100644
--- a/arrow/src/compute/kernels/take.rs
+++ b/arrow/src/compute/kernels/take.rs
@@ -755,7 +755,7 @@
I: ArrowNumericType,
I::Native: ToPrimitive,
{
- let new_keys = take_primitive::<T, I>(&values.keys_array(), indices)?;
+ let new_keys = take_primitive::<T, I>(values.keys(), indices)?;
let new_keys_data = new_keys.data_ref();
let data = ArrayData::new(
diff --git a/arrow/src/util/display.rs b/arrow/src/util/display.rs
index 61f549a..13d9f19 100644
--- a/arrow/src/util/display.rs
+++ b/arrow/src/util/display.rs
@@ -297,7 +297,7 @@
) -> Result<String> {
let dict_array = colum.as_any().downcast_ref::<DictionaryArray<K>>().unwrap();
- let keys_array = dict_array.keys_array();
+ let keys_array = dict_array.keys();
if keys_array.is_null(row) {
return Ok(String::from(""));