polars_arrow/io/ipc/read/error.rs
1use std::fmt::{Display, Formatter};
2
3/// The different types of errors that reading from IPC can cause
4#[derive(Debug)]
5#[non_exhaustive]
6pub enum OutOfSpecKind {
7 /// The IPC file does not start with [b'A', b'R', b'R', b'O', b'W', b'1']
8 InvalidHeader,
9 /// The IPC file does not end with [b'A', b'R', b'R', b'O', b'W', b'1']
10 InvalidFooter,
11 /// The first 4 bytes of the last 10 bytes is < 0
12 NegativeFooterLength,
13 /// The footer is an invalid flatbuffer
14 InvalidFlatbufferFooter(arrow_format::ipc::planus::Error),
15 /// The file's footer does not contain record batches
16 MissingRecordBatches,
17 /// The footer's record batches is an invalid flatbuffer
18 InvalidFlatbufferRecordBatches(arrow_format::ipc::planus::Error),
19 /// The file's footer does not contain a schema
20 MissingSchema,
21 /// The footer's schema is an invalid flatbuffer
22 InvalidFlatbufferSchema(arrow_format::ipc::planus::Error),
23 /// The file's schema does not contain fields
24 MissingFields,
25 /// The footer's dictionaries is an invalid flatbuffer
26 InvalidFlatbufferDictionaries(arrow_format::ipc::planus::Error),
27 /// The block is an invalid flatbuffer
28 InvalidFlatbufferBlock(arrow_format::ipc::planus::Error),
29 /// The dictionary message is an invalid flatbuffer
30 InvalidFlatbufferMessage(arrow_format::ipc::planus::Error),
31 /// The message does not contain a header
32 MissingMessageHeader,
33 /// The message's header is an invalid flatbuffer
34 InvalidFlatbufferHeader(arrow_format::ipc::planus::Error),
35 /// Relative positions in the file is < 0
36 UnexpectedNegativeInteger,
37 /// dictionaries can only contain dictionary messages; record batches can only contain records
38 UnexpectedMessageType,
39 /// RecordBatch messages do not contain buffers
40 MissingMessageBuffers,
41 /// The message's buffers is an invalid flatbuffer
42 InvalidFlatbufferBuffers(arrow_format::ipc::planus::Error),
43 /// RecordBatch messages does not contain nodes
44 MissingMessageNodes,
45 /// The message's nodes is an invalid flatbuffer
46 InvalidFlatbufferNodes(arrow_format::ipc::planus::Error),
47 /// The message's body length is an invalid flatbuffer
48 InvalidFlatbufferBodyLength(arrow_format::ipc::planus::Error),
49 /// The message does not contain data
50 MissingData,
51 /// The message's data is an invalid flatbuffer
52 InvalidFlatbufferData(arrow_format::ipc::planus::Error),
53 /// The version is an invalid flatbuffer
54 InvalidFlatbufferVersion(arrow_format::ipc::planus::Error),
55 /// The compression is an invalid flatbuffer
56 InvalidFlatbufferCompression(arrow_format::ipc::planus::Error),
57 /// The record contains a number of buffers that does not match the required number by the data type
58 ExpectedBuffer,
59 /// A buffer's size is smaller than the required for the number of elements
60 InvalidBuffer {
61 /// Declared number of elements in the buffer
62 length: usize,
63 /// The name of the `NativeType`
64 type_name: &'static str,
65 /// Bytes required for the `length` and `type`
66 required_number_of_bytes: usize,
67 /// The size of the IPC buffer
68 buffer_length: usize,
69 },
70 /// A buffer's size is larger than the file size
71 InvalidBuffersLength {
72 /// number of bytes of all buffers in the record
73 buffers_size: u64,
74 /// the size of the file
75 file_size: u64,
76 },
77 /// A bitmap's size is smaller than the required for the number of elements
78 InvalidBitmap {
79 /// Declared length of the bitmap
80 length: usize,
81 /// Number of bits on the IPC buffer
82 number_of_bits: usize,
83 },
84 /// The dictionary is_delta is an invalid flatbuffer
85 InvalidFlatbufferIsDelta(arrow_format::ipc::planus::Error),
86 /// The dictionary id is an invalid flatbuffer
87 InvalidFlatbufferId(arrow_format::ipc::planus::Error),
88 /// Invalid dictionary id
89 InvalidId {
90 /// The requested dictionary id
91 requested_id: i64,
92 },
93 /// Field id is not a dictionary
94 InvalidIdDataType {
95 /// The requested dictionary id
96 requested_id: i64,
97 },
98 /// FixedSizeBinaryArray has invalid datatype.
99 InvalidDataType,
100}
101
102impl Display for OutOfSpecKind {
103 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
104 write!(f, "{self:?}")
105 }
106}