(data: ArrayData)
| 597 | |
| 598 | impl From<ArrayData> for FixedSizeBinaryArray { |
| 599 | fn from(data: ArrayData) -> Self { |
| 600 | let (data_type, len, nulls, offset, buffers, _child_data) = data.into_parts(); |
| 601 | |
| 602 | assert_eq!( |
| 603 | buffers.len(), |
| 604 | 1, |
| 605 | "FixedSizeBinaryArray data should contain 1 buffer only (values)" |
| 606 | ); |
| 607 | let value_length = match data_type { |
| 608 | DataType::FixedSizeBinary(len) => len, |
| 609 | _ => panic!("Expected data type to be FixedSizeBinary"), |
| 610 | }; |
| 611 | |
| 612 | let value_size = value_length |
| 613 | .to_usize() |
| 614 | .expect("FixedSizeBinaryArray value length must be non-negative"); |
| 615 | let value_data = buffers[0].slice_with_length( |
| 616 | offset.checked_mul(value_size).expect("offset overflow"), |
| 617 | len.checked_mul(value_size).expect("length overflow"), |
| 618 | ); |
| 619 | |
| 620 | Self { |
| 621 | data_type, |
| 622 | nulls, |
| 623 | len, |
| 624 | value_data, |
| 625 | value_size, |
| 626 | } |
| 627 | } |
| 628 | } |
| 629 | |
| 630 | impl From<FixedSizeBinaryArray> for ArrayData { |
nothing calls this directly
no test coverage detected