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

Function test_missing_buffer_metadata_error

arrow-ipc/src/reader.rs:2096–2142  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2094
2095 #[test]
2096 fn test_missing_buffer_metadata_error() {
2097 use crate::r#gen::Message::*;
2098 use flatbuffers::FlatBufferBuilder;
2099
2100 let schema = Arc::new(Schema::new(vec![Field::new("col", DataType::Int32, true)]));
2101
2102 // create RecordBatch buffer metadata with invalid buffer count
2103 // Int32Array needs 2 buffers (validity + data) but we provide only 1
2104 let mut fbb = FlatBufferBuilder::new();
2105 let nodes = fbb.create_vector(&[FieldNode::new(2, 0)]);
2106 let buffers = fbb.create_vector(&[crate::Buffer::new(0, 8)]);
2107 let batch_offset = RecordBatch::create(
2108 &mut fbb,
2109 &RecordBatchArgs {
2110 length: 2,
2111 nodes: Some(nodes),
2112 buffers: Some(buffers),
2113 compression: None,
2114 variadicBufferCounts: None,
2115 },
2116 );
2117 fbb.finish_minimal(batch_offset);
2118 let batch_bytes = fbb.finished_data().to_vec();
2119 let batch = flatbuffers::root::<RecordBatch>(&batch_bytes).unwrap();
2120
2121 let data_buffer = Buffer::from(vec![0u8; 8]);
2122 let dictionaries: HashMap<i64, ArrayRef> = HashMap::new();
2123 let metadata = MetadataVersion::V5;
2124
2125 let decoder = RecordBatchDecoder::try_new(
2126 &data_buffer,
2127 batch,
2128 schema.clone(),
2129 &dictionaries,
2130 &metadata,
2131 )
2132 .unwrap();
2133
2134 let result = decoder.read_record_batch();
2135
2136 match result {
2137 Err(ArrowError::IpcError(msg)) => {
2138 assert_eq!(msg, "Buffer count mismatched with metadata");
2139 }
2140 other => panic!("unexpected error: {other:?}"),
2141 }
2142 }
2143
2144 /// Test that the reader can read legacy files where empty list arrays were written with a 0-byte offsets buffer.
2145 #[test]

Callers

nothing calls this directly

Calls 3

try_newFunction · 0.85
read_record_batchMethod · 0.80
cloneMethod · 0.45

Tested by

no test coverage detected