Skip to content

Commit 164ae42

Browse files
committed
Lint and format
1 parent 8649d25 commit 164ae42

File tree

2 files changed

+87
-57
lines changed

2 files changed

+87
-57
lines changed

arrow-cast/src/cast/map.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
use crate::cast::*;
1919

20-
2120
/// Helper function that takes a map container and casts the inner datatype.
2221
pub(crate) fn cast_map_values(
2322
from: &MapArray,
@@ -28,19 +27,29 @@ pub(crate) fn cast_map_values(
2827
let entries_field = if let DataType::Map(entries_field, _) = to_data_type {
2928
entries_field
3029
} else {
31-
return Err(ArrowError::CastError("Internal Error: to_data_type is not a map type.".to_string()));
30+
return Err(ArrowError::CastError(
31+
"Internal Error: to_data_type is not a map type.".to_string(),
32+
));
3233
};
3334

34-
let key_field = key_field(entries_field).ok_or(ArrowError::CastError("map is missing key field".to_string()))?;
35-
let value_field = value_field(entries_field).ok_or(ArrowError::CastError("map is missing value field".to_string()))?;
35+
let key_field = key_field(entries_field).ok_or(ArrowError::CastError(
36+
"map is missing key field".to_string(),
37+
))?;
38+
let value_field = value_field(entries_field).ok_or(ArrowError::CastError(
39+
"map is missing value field".to_string(),
40+
))?;
3641

3742
let key_array = cast_with_options(from.keys(), key_field.data_type(), cast_options)?;
3843
let value_array = cast_with_options(from.values(), value_field.data_type(), cast_options)?;
3944

4045
Ok(Arc::new(MapArray::new(
4146
entries_field.clone(),
4247
from.offsets().clone(),
43-
StructArray::new(Fields::from(vec![key_field, value_field]), vec![key_array, value_array], from.nulls().cloned()),
48+
StructArray::new(
49+
Fields::from(vec![key_field, value_field]),
50+
vec![key_array, value_array],
51+
from.nulls().cloned(),
52+
),
4453
from.nulls().cloned(),
4554
to_ordered,
4655
)))
@@ -49,7 +58,7 @@ pub(crate) fn cast_map_values(
4958
/// Gets the key field from the entries of a map. For all other types returns None.
5059
pub(crate) fn key_field(entries_field: &FieldRef) -> Option<FieldRef> {
5160
if let DataType::Struct(fields) = entries_field.data_type() {
52-
fields.get(0).cloned()
61+
fields.first().cloned()
5362
} else {
5463
None
5564
}

arrow-cast/src/cast/mod.rs

Lines changed: 72 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ use arrow_select::take::take;
6868
use num::cast::AsPrimitive;
6969
use num::{NumCast, ToPrimitive};
7070

71-
7271
/// CastOptions provides a way to override the default cast behaviors
7372
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
7473
pub struct CastOptions<'a> {
@@ -163,7 +162,7 @@ pub fn can_cast_types(from_type: &DataType, to_type: &DataType) -> bool {
163162
(Map(from_entries,ordered_from), Map(to_entries, ordered_to)) if ordered_from == ordered_to =>
164163
match (key_field(from_entries), key_field(to_entries), value_field(from_entries), value_field(to_entries)) {
165164
(Some(from_key), Some(to_key), Some(from_value), Some(to_value)) =>
166-
can_cast_types(from_key.data_type(), to_key.data_type()) && can_cast_types(&from_value.data_type(), &to_value.data_type()),
165+
can_cast_types(from_key.data_type(), to_key.data_type()) && can_cast_types(from_value.data_type(), to_value.data_type()),
167166
_ => false
168167
},
169168
// cast one decimal type to another decimal type
@@ -719,13 +718,9 @@ pub fn cast_with_options(
719718
(_, FixedSizeList(ref to, size)) if *size == 1 => {
720719
cast_values_to_fixed_size_list(array, to, *size, cast_options)
721720
}
722-
(Map(_, ordered1), Map(_, ordered2)) if ordered1 == ordered2 =>
723-
cast_map_values(
724-
array.as_map(),
725-
&to_type,
726-
cast_options,
727-
ordered1.to_owned()
728-
),
721+
(Map(_, ordered1), Map(_, ordered2)) if ordered1 == ordered2 => {
722+
cast_map_values(array.as_map(), to_type, cast_options, ordered1.to_owned())
723+
}
729724
(Decimal128(_, s1), Decimal128(p2, s2)) => {
730725
cast_decimal_to_decimal_same_type::<Decimal128Type>(
731726
array.as_primitive(),
@@ -7141,18 +7136,26 @@ mod tests {
71417136
let array = builder.finish();
71427137

71437138
let new_ordered = true;
7144-
let new_type = DataType::Map(Arc::new(Field::new("entries", DataType::Struct(
7145-
vec![
7146-
Field::new("key", DataType::Utf8, false),
7147-
Field::new("value", DataType::Utf8, false),
7148-
].into()
7149-
), false)), new_ordered);
7139+
let new_type = DataType::Map(
7140+
Arc::new(Field::new(
7141+
"entries",
7142+
DataType::Struct(
7143+
vec![
7144+
Field::new("key", DataType::Utf8, false),
7145+
Field::new("value", DataType::Utf8, false),
7146+
]
7147+
.into(),
7148+
),
7149+
false,
7150+
)),
7151+
new_ordered,
7152+
);
71507153

7151-
let new_array_result = cast(
7152-
&array,
7153-
&new_type.clone());
7154+
let new_array_result = cast(&array, &new_type.clone());
71547155
assert!(!can_cast_types(array.data_type(), &new_type));
7155-
assert!(matches!(new_array_result, Err(ArrowError::CastError(t)) if t == r#"Casting from Map(Field { name: "entries", data_type: Struct([Field { name: "key", data_type: Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "value", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }]), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, false) to Map(Field { name: "entries", data_type: Struct([Field { name: "key", data_type: Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "value", data_type: Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }]), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, true) not supported"#));
7156+
assert!(
7157+
matches!(new_array_result, Err(ArrowError::CastError(t)) if t == r#"Casting from Map(Field { name: "entries", data_type: Struct([Field { name: "key", data_type: Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "value", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }]), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, false) to Map(Field { name: "entries", data_type: Struct([Field { name: "key", data_type: Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "value", data_type: Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }]), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, true) not supported"#)
7158+
);
71567159
}
71577160

71587161
#[test]
@@ -7180,18 +7183,26 @@ mod tests {
71807183
let array = builder.finish();
71817184

71827185
let new_ordered = true;
7183-
let new_type = DataType::Map(Arc::new(Field::new("entries", DataType::Struct(
7184-
vec![
7185-
Field::new("key", DataType::Utf8, false),
7186-
Field::new("value", DataType::Duration(TimeUnit::Second), false),
7187-
].into()
7188-
), false)), new_ordered);
7186+
let new_type = DataType::Map(
7187+
Arc::new(Field::new(
7188+
"entries",
7189+
DataType::Struct(
7190+
vec![
7191+
Field::new("key", DataType::Utf8, false),
7192+
Field::new("value", DataType::Duration(TimeUnit::Second), false),
7193+
]
7194+
.into(),
7195+
),
7196+
false,
7197+
)),
7198+
new_ordered,
7199+
);
71897200

7190-
let new_array_result = cast(
7191-
&array,
7192-
&new_type.clone());
7201+
let new_array_result = cast(&array, &new_type.clone());
71937202
assert!(!can_cast_types(array.data_type(), &new_type));
7194-
assert!(matches!(new_array_result, Err(ArrowError::CastError(t)) if t == r#"Casting from Map(Field { name: "entries", data_type: Struct([Field { name: "key", data_type: Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "value", data_type: Interval(DayTime), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }]), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, false) to Map(Field { name: "entries", data_type: Struct([Field { name: "key", data_type: Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "value", data_type: Duration(Second), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }]), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, true) not supported"#));
7203+
assert!(
7204+
matches!(new_array_result, Err(ArrowError::CastError(t)) if t == r#"Casting from Map(Field { name: "entries", data_type: Struct([Field { name: "key", data_type: Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "value", data_type: Interval(DayTime), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }]), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, false) to Map(Field { name: "entries", data_type: Struct([Field { name: "key", data_type: Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "value", data_type: Duration(Second), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }]), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, true) not supported"#)
7205+
);
71957206
}
71967207

71977208
#[test]
@@ -7217,18 +7228,24 @@ mod tests {
72177228

72187229
let array = builder.finish();
72197230

7220-
let new_type = DataType::Map(Arc::new(Field::new("entries_new", DataType::Struct(
7221-
vec![
7222-
Field::new("key_new", DataType::Utf8, false),
7223-
Field::new("value_values", DataType::Utf8, false),
7224-
].into()
7225-
), false)), false);
7231+
let new_type = DataType::Map(
7232+
Arc::new(Field::new(
7233+
"entries_new",
7234+
DataType::Struct(
7235+
vec![
7236+
Field::new("key_new", DataType::Utf8, false),
7237+
Field::new("value_values", DataType::Utf8, false),
7238+
]
7239+
.into(),
7240+
),
7241+
false,
7242+
)),
7243+
false,
7244+
);
72267245

72277246
assert_ne!(new_type, array.data_type().clone());
72287247

7229-
let new_array = cast(
7230-
&array,
7231-
&new_type.clone()).unwrap();
7248+
let new_array = cast(&array, &new_type.clone()).unwrap();
72327249
assert_eq!(new_type, new_array.data_type().clone());
72337250
let map_array = new_array.as_map();
72347251

@@ -7245,8 +7262,7 @@ mod tests {
72457262
.collect::<Vec<_>>();
72467263
assert_eq!(&key_string, &vec!["0", "1"]);
72477264

7248-
let values_string_array = cast(map_array
7249-
.values(), &DataType::Utf8).unwrap();
7265+
let values_string_array = cast(map_array.values(), &DataType::Utf8).unwrap();
72507266
let values_string = values_string_array
72517267
.as_any()
72527268
.downcast_ref::<StringArray>()
@@ -7280,16 +7296,22 @@ mod tests {
72807296

72817297
let array = builder.finish();
72827298

7283-
let new_type = DataType::Map(Arc::new(Field::new("entries", DataType::Struct(
7284-
vec![
7285-
Field::new("key", DataType::Utf8, false),
7286-
Field::new("value", DataType::Utf8, false),
7287-
].into()
7288-
), false)), false);
7299+
let new_type = DataType::Map(
7300+
Arc::new(Field::new(
7301+
"entries",
7302+
DataType::Struct(
7303+
vec![
7304+
Field::new("key", DataType::Utf8, false),
7305+
Field::new("value", DataType::Utf8, false),
7306+
]
7307+
.into(),
7308+
),
7309+
false,
7310+
)),
7311+
false,
7312+
);
72897313

7290-
let new_array = cast(
7291-
&array,
7292-
&new_type.clone()).unwrap();
7314+
let new_array = cast(&array, &new_type.clone()).unwrap();
72937315
assert_eq!(new_type, new_array.data_type().clone());
72947316
let map_array = new_array.as_map();
72957317

@@ -7306,8 +7328,7 @@ mod tests {
73067328
.collect::<Vec<_>>();
73077329
assert_eq!(&key_string, &vec!["0", "1"]);
73087330

7309-
let values_string_array = cast(map_array
7310-
.values(), &DataType::Utf8).unwrap();
7331+
let values_string_array = cast(map_array.values(), &DataType::Utf8).unwrap();
73117332
let values_string = values_string_array
73127333
.as_any()
73137334
.downcast_ref::<StringArray>()

0 commit comments

Comments
 (0)