Validates that map keys are non-null and unique.
(array: &dyn Array)
| 188 | |
| 189 | /// Validates that map keys are non-null and unique. |
| 190 | fn validate_map_keys(array: &dyn Array) -> Result<()> { |
| 191 | match array.data_type() { |
| 192 | DataType::Int8 => validate_unique_primitive_keys::<Int8Type>(array), |
| 193 | DataType::Int16 => validate_unique_primitive_keys::<Int16Type>(array), |
| 194 | DataType::Int32 => validate_unique_primitive_keys::<Int32Type>(array), |
| 195 | DataType::Int64 => validate_unique_primitive_keys::<Int64Type>(array), |
| 196 | DataType::UInt8 => validate_unique_primitive_keys::<UInt8Type>(array), |
| 197 | DataType::UInt16 => validate_unique_primitive_keys::<UInt16Type>(array), |
| 198 | DataType::UInt32 => validate_unique_primitive_keys::<UInt32Type>(array), |
| 199 | DataType::UInt64 => validate_unique_primitive_keys::<UInt64Type>(array), |
| 200 | DataType::Date32 => validate_unique_primitive_keys::<Date32Type>(array), |
| 201 | DataType::Date64 => validate_unique_primitive_keys::<Date64Type>(array), |
| 202 | DataType::Utf8 => { |
| 203 | let arr = array.as_string::<i32>(); |
| 204 | validate_unique_str_keys(arr.null_count(), arr.len(), arr.iter().flatten()) |
| 205 | } |
| 206 | DataType::LargeUtf8 => { |
| 207 | let arr = array.as_string::<i64>(); |
| 208 | validate_unique_str_keys(arr.null_count(), arr.len(), arr.iter().flatten()) |
| 209 | } |
| 210 | DataType::Utf8View => { |
| 211 | let arr = array.as_string_view(); |
| 212 | validate_unique_str_keys(arr.null_count(), arr.len(), arr.iter().flatten()) |
| 213 | } |
| 214 | DataType::Binary => { |
| 215 | let arr = array.as_binary::<i32>(); |
| 216 | validate_unique_binary_keys(arr.null_count(), arr.len(), arr.iter().flatten()) |
| 217 | } |
| 218 | DataType::LargeBinary => { |
| 219 | let arr = array.as_binary::<i64>(); |
| 220 | validate_unique_binary_keys(arr.null_count(), arr.len(), arr.iter().flatten()) |
| 221 | } |
| 222 | DataType::BinaryView => { |
| 223 | let arr = array.as_binary_view(); |
| 224 | validate_unique_binary_keys(arr.null_count(), arr.len(), arr.iter().flatten()) |
| 225 | } |
| 226 | _ => validate_unique_keys_generic(array), |
| 227 | } |
| 228 | } |
| 229 | |
| 230 | fn get_first_array_ref(columnar_value: &ColumnarValue) -> Result<ArrayRef> { |
| 231 | match columnar_value { |
no test coverage detected
searching dependent graphs…