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

Function encode_prefix_write_error

arrow-avro/src/writer/encoder.rs:3838–3881  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

3836
3837 #[test]
3838 fn encode_prefix_write_error() {
3839 use crate::codec::AvroFieldBuilder;
3840 use crate::schema::{AvroSchema, FingerprintAlgorithm};
3841 use std::io;
3842
3843 struct FailWriter {
3844 failed: bool,
3845 }
3846
3847 impl io::Write for FailWriter {
3848 fn write(&mut self, _buf: &[u8]) -> io::Result<usize> {
3849 if !self.failed {
3850 self.failed = true;
3851 Err(io::Error::other("fail write"))
3852 } else {
3853 Ok(0)
3854 }
3855 }
3856
3857 fn flush(&mut self) -> io::Result<()> {
3858 Ok(())
3859 }
3860 }
3861
3862 let schema = ArrowSchema::new(vec![Field::new("x", DataType::Int32, false)]);
3863 let arr = Int32Array::from(vec![42]);
3864 let batch = RecordBatch::try_new(Arc::new(schema.clone()), vec![Arc::new(arr)]).unwrap();
3865 let avro_schema = AvroSchema::try_from(&schema).unwrap();
3866 let fingerprint = avro_schema
3867 .fingerprint(FingerprintAlgorithm::Rabin)
3868 .unwrap();
3869 let avro_root = AvroFieldBuilder::new(&avro_schema.schema().unwrap())
3870 .build()
3871 .unwrap();
3872 let encoder = RecordEncoderBuilder::new(&avro_root, &schema)
3873 .with_fingerprint(Some(fingerprint))
3874 .build()
3875 .unwrap();
3876
3877 let mut writer = FailWriter { failed: false };
3878 let err = encoder.encode(&mut writer, &batch).unwrap_err();
3879 let msg = format!("{err}");
3880 assert!(msg.contains("write prefix"), "unexpected error: {msg}");
3881 }
3882}

Callers

nothing calls this directly

Calls 7

try_newFunction · 0.85
fingerprintMethod · 0.80
with_fingerprintMethod · 0.80
cloneMethod · 0.45
buildMethod · 0.45
schemaMethod · 0.45
encodeMethod · 0.45

Tested by

no test coverage detected