MCPcopy Create free account
hub / github.com/apache/arrow-rs / base_equal

Function base_equal

arrow-data/src/equal/utils.rs:60–91  ·  view source on GitHub ↗
(lhs: &ArrayData, rhs: &ArrayData)

Source from the content-addressed store, hash-verified

58
59#[inline]
60pub(super) fn base_equal(lhs: &ArrayData, rhs: &ArrayData) -> bool {
61 let equal_type = match (lhs.data_type(), rhs.data_type()) {
62 (DataType::Union(l_fields, l_mode), DataType::Union(r_fields, r_mode)) => {
63 l_fields == r_fields && l_mode == r_mode
64 }
65 (DataType::Map(l_field, l_sorted), DataType::Map(r_field, r_sorted)) => {
66 let field_equal = match (l_field.data_type(), r_field.data_type()) {
67 (DataType::Struct(l_fields), DataType::Struct(r_fields))
68 if l_fields.len() == 2 && r_fields.len() == 2 =>
69 {
70 let l_key_field = &l_fields[0];
71 let r_key_field = &r_fields[0];
72 let l_value_field = &l_fields[1];
73 let r_value_field = &r_fields[1];
74
75 // We don't enforce the equality of field names
76 let data_type_equal = l_key_field.data_type() == r_key_field.data_type()
77 && l_value_field.data_type() == r_value_field.data_type();
78 let nullability_equal = l_key_field.is_nullable() == r_key_field.is_nullable()
79 && l_value_field.is_nullable() == r_value_field.is_nullable();
80 let metadata_equal = l_key_field.metadata() == r_key_field.metadata()
81 && l_value_field.metadata() == r_value_field.metadata();
82 data_type_equal && nullability_equal && metadata_equal
83 }
84 _ => panic!("Map type should have 2 fields Struct in its field"),
85 };
86 field_equal && l_sorted == r_sorted
87 }
88 (l_data_type, r_data_type) => l_data_type == r_data_type,
89 };
90 equal_type && lhs.len() == rhs.len()
91}
92
93// whether the two memory regions are equal
94#[inline]

Callers 1

equalFunction · 0.85

Calls 4

data_typeMethod · 0.45
lenMethod · 0.45
is_nullableMethod · 0.45
metadataMethod · 0.45

Tested by

no test coverage detected