This is an automated email from the ASF dual-hosted git repository.
kriskras99 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/avro-rs.git
The following commit(s) were added to refs/heads/main by this push:
new 5a553be feat: Add posibility to append values to writer without
validating (#447)
5a553be is described below
commit 5a553beac6b1858e6f97d110318216cf6ecdb4c6
Author: Kriskras99 <[email protected]>
AuthorDate: Wed Jan 28 09:30:53 2026 +0100
feat: Add posibility to append values to writer without validating (#447)
* feat: Add posibility to append values to writer without validating
* fix: Deprecate `Writer::append` in favor of `Writer::append_value` for
consistent naming
* fix: Update README
---
avro/README.md | 6 +-
avro/examples/generate_interop_data.rs | 2 +-
avro/src/bigdecimal.rs | 2 +-
avro/src/lib.rs | 18 ++--
avro/src/reader.rs | 4 +-
avro/src/schema/mod.rs | 2 +-
avro/src/schema_compatibility.rs | 4 +-
avro/src/writer.rs | 140 +++++++++++++++++++++---------
avro/tests/append_to_existing.rs | 8 +-
avro/tests/codecs.rs | 2 +-
avro/tests/schema.rs | 28 +++---
avro/tests/shared.rs | 4 +-
avro/tests/to_from_avro_datum_schemata.rs | 2 +-
wasm-demo/tests/demos.rs | 2 +-
14 files changed, 142 insertions(+), 82 deletions(-)
diff --git a/avro/README.md b/avro/README.md
index 62617c1..ce75605 100644
--- a/avro/README.md
+++ b/avro/README.md
@@ -214,7 +214,7 @@ record.put("a", 27i64);
record.put("b", "foo");
// schema validation happens here
-writer.append(record).unwrap();
+writer.append_value(record).unwrap();
// this is how to get back the resulting avro bytecode
// this performs a flush operation to make sure data has been written, so it
can fail
@@ -427,7 +427,7 @@ fn main() -> Result<(), Error> {
record.put("a", 27i64);
record.put("b", "foo");
- writer.append(record)?;
+ writer.append_value(record)?;
let test = Test {
a: 27,
@@ -564,7 +564,7 @@ fn main() -> Result<(), Error> {
record.put("local_timestamp_nanos", Value::LocalTimestampMicros(6));
record.put("duration", Duration::new(Months::new(6), Days::new(7),
Millis::new(8)));
- writer.append(record)?;
+ writer.append_value(record)?;
let input = writer.into_inner()?;
let reader = Reader::with_schema(&schema, &input[..])?;
diff --git a/avro/examples/generate_interop_data.rs
b/avro/examples/generate_interop_data.rs
index 47cb8ea..519b35a 100644
--- a/avro/examples/generate_interop_data.rs
+++ b/avro/examples/generate_interop_data.rs
@@ -101,7 +101,7 @@ fn main() -> Result<(), Box<dyn Error>> {
write_user_metadata(&mut writer)?;
let datum = create_datum(&schema);
- writer.append(datum)?;
+ writer.append_value(datum)?;
writer.flush()?;
println!("Wrote {file_name}");
}
diff --git a/avro/src/bigdecimal.rs b/avro/src/bigdecimal.rs
index 9702a8c..28f395d 100644
--- a/avro/src/bigdecimal.rs
+++ b/avro/src/bigdecimal.rs
@@ -158,7 +158,7 @@ mod tests {
.writer(Vec::new())
.build()?;
- writer.append(record.clone())?;
+ writer.append_value(record.clone())?;
writer.flush()?;
// read record
diff --git a/avro/src/lib.rs b/avro/src/lib.rs
index f60c8c2..d7aece5 100644
--- a/avro/src/lib.rs
+++ b/avro/src/lib.rs
@@ -216,7 +216,7 @@
//! record.put("b", "foo");
//!
//! // schema validation happens here
-//! writer.append(record).unwrap();
+//! writer.append_value(record).unwrap();
//!
//! // this is how to get back the resulting avro bytecode
//! // this performs a flush operation to make sure data has been written, so
it can fail
@@ -357,7 +357,7 @@
//! # let mut record = Record::new(writer.schema()).unwrap();
//! # record.put("a", 27i64);
//! # record.put("b", "foo");
-//! # writer.append(record).unwrap();
+//! # writer.append_value(record).unwrap();
//! # let input = writer.into_inner().unwrap();
//! // reader creation can fail in case the input to read from is not
Avro-compatible or malformed
//! let reader = Reader::new(&input[..]).unwrap();
@@ -386,7 +386,7 @@
//! # let mut record = Record::new(writer.schema()).unwrap();
//! # record.put("a", 27i64);
//! # record.put("b", "foo");
-//! # writer.append(record).unwrap();
+//! # writer.append_value(record).unwrap();
//! # let input = writer.into_inner().unwrap();
//!
//! let reader_raw_schema = r#"
@@ -446,7 +446,7 @@
//! # let mut record = Record::new(writer.schema()).unwrap();
//! # record.put("a", 27i64);
//! # record.put("b", "foo");
-//! # writer.append(record).unwrap();
+//! # writer.append_value(record).unwrap();
//! # let input = writer.into_inner().unwrap();
//! let reader = Reader::new(&input[..]).unwrap();
//!
@@ -539,7 +539,7 @@
//! record.put("a", 27i64);
//! record.put("b", "foo");
//!
-//! writer.append(record)?;
+//! writer.append_value(record)?;
//!
//! let test = Test {
//! a: 27,
@@ -676,7 +676,7 @@
//! record.put("local_timestamp_nanos", Value::LocalTimestampMicros(6));
//! record.put("duration", Duration::new(Months::new(6), Days::new(7),
Millis::new(8)));
//!
-//! writer.append(record)?;
+//! writer.append_value(record)?;
//!
//! let input = writer.into_inner()?;
//! let reader = Reader::with_schema(&schema, &input[..])?;
@@ -1079,7 +1079,7 @@ mod tests {
let mut record = Record::new(writer.schema()).unwrap();
record.put("a", 27i64);
record.put("b", "foo");
- writer.append(record).unwrap();
+ writer.append_value(record).unwrap();
let input = writer.into_inner().unwrap();
let mut reader = Reader::with_schema(&reader_schema,
&input[..]).unwrap();
assert_eq!(
@@ -1121,7 +1121,7 @@ mod tests {
record.put("a", 27i64);
record.put("b", "foo");
record.put("c", "clubs");
- writer.append(record).unwrap();
+ writer.append_value(record).unwrap();
let input = writer.into_inner().unwrap();
let mut reader = Reader::with_schema(&schema, &input[..]).unwrap();
assert_eq!(
@@ -1163,7 +1163,7 @@ mod tests {
record.put("a", 27i64);
record.put("b", "foo");
record.put("c", "clubs");
- writer.append(record).unwrap();
+ writer.append_value(record).unwrap();
let input = writer.into_inner().unwrap();
let mut reader = Reader::new(&input[..]).unwrap();
assert_eq!(
diff --git a/avro/src/reader.rs b/avro/src/reader.rs
index fed35fe..3c3b740 100644
--- a/avro/src/reader.rs
+++ b/avro/src/reader.rs
@@ -826,8 +826,8 @@ mod tests {
record.put("a", 27i64);
record.put("b", "foo");
- writer.append(record.clone())?;
- writer.append(record.clone())?;
+ writer.append_value(record.clone())?;
+ writer.append_value(record.clone())?;
writer.flush()?;
let result = writer.into_inner()?;
diff --git a/avro/src/schema/mod.rs b/avro/src/schema/mod.rs
index 2f8bf6d..0ac4803 100644
--- a/avro/src/schema/mod.rs
+++ b/avro/src/schema/mod.rs
@@ -2911,7 +2911,7 @@ mod tests {
let mut writer = crate::Writer::new(&schema, Vec::new())?;
// schema validation happens here
- writer.append(avro_value)?;
+ writer.append_value(avro_value)?;
Ok(())
}
diff --git a/avro/src/schema_compatibility.rs b/avro/src/schema_compatibility.rs
index 74ae558..9e62978 100644
--- a/avro/src/schema_compatibility.rs
+++ b/avro/src/schema_compatibility.rs
@@ -1288,7 +1288,7 @@ mod tests {
record.put("a", 27i64);
record.put("b", "foo");
record.put("c", "clubs");
- writer.append(record).unwrap();
+ writer.append_value(record).unwrap();
let input = writer.into_inner()?;
let mut reader = Reader::with_schema(&reader_schema, &input[..])?;
assert_eq!(
@@ -1352,7 +1352,7 @@ mod tests {
record.put("a", 27i64);
record.put("b", "foo");
record.put("c", "hearts");
- writer.append(record).unwrap();
+ writer.append_value(record).unwrap();
let input = writer.into_inner()?;
let mut reader = Reader::with_schema(&reader_schema, &input[..])?;
assert_eq!(
diff --git a/avro/src/writer.rs b/avro/src/writer.rs
index 1dd3fbf..32808d1 100644
--- a/avro/src/writer.rs
+++ b/avro/src/writer.rs
@@ -172,19 +172,22 @@ impl<'a, W: Write> Writer<'a, W> {
self.schema
}
- /// Append a compatible value (implementing the `ToAvro` trait) to a
`Writer`, also performing
- /// schema validation.
+ /// Deprecated. Use [`Writer::append_value`] instead.
+ #[deprecated(since = "0.22.0", note = "Use `Writer::append_value`
instead")]
+ pub fn append<T: Into<Value>>(&mut self, value: T) -> AvroResult<usize> {
+ self.append_value(value)
+ }
+
+ /// Append a compatible value to a `Writer`, also performing schema
validation.
///
/// Returns the number of bytes written (it might be 0, see below).
///
/// **NOTE**: This function is not guaranteed to perform any actual write,
since it relies on
/// internal buffering for performance reasons. If you want to be sure the
value has been
/// written, then call [`flush`](Writer::flush).
- pub fn append<T: Into<Value>>(&mut self, value: T) -> AvroResult<usize> {
- let n = self.maybe_write_header()?;
-
+ pub fn append_value<T: Into<Value>>(&mut self, value: T) ->
AvroResult<usize> {
let avro = value.into();
- self.append_value_ref(&avro).map(|m| m + n)
+ self.append_value_ref(&avro)
}
/// Append a compatible value to a `Writer`, also performing schema
validation.
@@ -195,9 +198,58 @@ impl<'a, W: Write> Writer<'a, W> {
/// internal buffering for performance reasons. If you want to be sure the
value has been
/// written, then call [`flush`](Writer::flush).
pub fn append_value_ref(&mut self, value: &Value) -> AvroResult<usize> {
+ if let Some(reason) = value.validate_internal(
+ self.schema,
+ self.resolved_schema.get_names(),
+ &self.schema.namespace(),
+ ) {
+ return Err(Details::ValidationWithReason {
+ value: value.clone(),
+ schema: self.schema.clone(),
+ reason,
+ }
+ .into());
+ }
+ self.unvalidated_append_value_ref(value)
+ }
+
+ /// Append a compatible value to a `Writer`.
+ ///
+ /// This function does **not** validate that the provided value matches
the schema. If it does
+ /// not match, the file will contain corrupt data. Use
[`Writer::append_value`] to have the
+ /// value validated during write or use [`Value::validate`] to validate
the value.
+ ///
+ /// Returns the number of bytes written (it might be 0, see below).
+ ///
+ /// **NOTE**: This function is not guaranteed to perform any actual write,
since it relies on
+ /// internal buffering for performance reasons. If you want to be sure the
value has been
+ /// written, then call [`flush`](Writer::flush).
+ pub fn unvalidated_append_value<T: Into<Value>>(&mut self, value: T) ->
AvroResult<usize> {
+ let value = value.into();
+ self.unvalidated_append_value_ref(&value)
+ }
+
+ /// Append a compatible value to a `Writer`.
+ ///
+ /// This function does **not** validate that the provided value matches
the schema. If it does
+ /// not match, the file will contain corrupt data. Use
[`Writer::append_value_ref`] to have the
+ /// value validated during write or use [`Value::validate`] to validate
the value.
+ ///
+ /// Returns the number of bytes written (it might be 0, see below).
+ ///
+ /// **NOTE**: This function is not guaranteed to perform any actual write,
since it relies on
+ /// internal buffering for performance reasons. If you want to be sure the
value has been
+ /// written, then call [`flush`](Writer::flush).
+ pub fn unvalidated_append_value_ref(&mut self, value: &Value) ->
AvroResult<usize> {
let n = self.maybe_write_header()?;
+ encode_internal(
+ value,
+ self.schema,
+ self.resolved_schema.get_names(),
+ &self.schema.namespace(),
+ &mut self.buffer,
+ )?;
- write_value_ref_resolved(self.schema, &self.resolved_schema, value,
&mut self.buffer)?;
self.num_values += 1;
if self.buffer.len() >= self.block_size {
@@ -262,7 +314,7 @@ impl<'a, W: Write> Writer<'a, W> {
let mut num_bytes = 0;
for value in values {
- num_bytes += self.append(value)?;
+ num_bytes += self.append_value(value)?;
}
num_bytes += self.flush()?;
@@ -688,29 +740,6 @@ where
}
}
-fn write_value_ref_resolved(
- schema: &Schema,
- resolved_schema: &ResolvedSchema,
- value: &Value,
- buffer: &mut Vec<u8>,
-) -> AvroResult<usize> {
- match value.validate_internal(schema, resolved_schema.get_names(),
&schema.namespace()) {
- Some(reason) => Err(Details::ValidationWithReason {
- value: value.clone(),
- schema: schema.clone(),
- reason,
- }
- .into()),
- None => encode_internal(
- value,
- schema,
- resolved_schema.get_names(),
- &schema.namespace(),
- buffer,
- ),
- }
-}
-
fn write_value_ref_owned_resolved<W: Write>(
resolved_schema: &ResolvedOwnedSchema,
value: &Value,
@@ -1101,8 +1130,8 @@ mod tests {
record.put("a", 27i64);
record.put("b", "foo");
- let n1 = writer.append(record.clone())?;
- let n2 = writer.append(record.clone())?;
+ let n1 = writer.append_value(record.clone())?;
+ let n2 = writer.append_value(record.clone())?;
let n3 = writer.flush()?;
let result = writer.into_inner()?;
@@ -1258,8 +1287,8 @@ mod tests {
record.put("a", 27i64);
record.put("b", "foo");
- let n1 = writer.append(record.clone())?;
- let n2 = writer.append(record.clone())?;
+ let n1 = writer.append_value(record.clone())?;
+ let n2 = writer.append_value(record.clone())?;
let n3 = writer.flush()?;
let result = writer.into_inner()?;
@@ -1335,8 +1364,8 @@ mod tests {
let mut record2 = Record::new(&schema).unwrap();
record2.put("a", Value::Union(0, Box::new(Value::Null)));
- let n1 = writer.append(record1)?;
- let n2 = writer.append(record2)?;
+ let n1 = writer.append_value(record1)?;
+ let n2 = writer.append_value(record2)?;
let n3 = writer.flush()?;
let result = writer.into_inner()?;
@@ -1377,8 +1406,8 @@ mod tests {
record.put("a", 27i64);
record.put("b", "foo");
- writer.append(record.clone())?;
- writer.append(record.clone())?;
+ writer.append_value(record.clone())?;
+ writer.append_value(record.clone())?;
writer.flush()?;
let result = writer.into_inner()?;
@@ -1411,7 +1440,7 @@ mod tests {
let mut record = Record::new(&schema).unwrap();
record.put("a", 27i64);
record.put("b", "foo");
- writer.append(record.clone())?;
+ writer.append_value(record.clone())?;
match writer
.add_user_metadata("stringKey".to_string(), String::from("value2"))
@@ -1749,7 +1778,7 @@ mod tests {
let mut record = Record::new(writer.schema()).unwrap();
record.put("exampleField", "value");
- writer.append(record)?;
+ writer.append_value(record)?;
writer.flush()?;
assert_eq!(
@@ -1805,4 +1834,33 @@ mod tests {
Ok(())
}
+
+ #[test]
+ fn avro_rs_310_append_unvalidated_value() -> TestResult {
+ let schema = Schema::String;
+ let value = Value::Int(1);
+
+ let mut writer = Writer::new(&schema, Vec::new())?;
+ writer.unvalidated_append_value_ref(&value)?;
+ writer.unvalidated_append_value(value)?;
+ let buffer = writer.into_inner()?;
+
+ // Check the last two bytes for the sync marker
+ assert_eq!(&buffer[buffer.len() - 18..buffer.len() - 16], &[2, 2]);
+
+ let mut writer = Writer::new(&schema, Vec::new())?;
+ let value = Value::Int(1);
+ let err = writer.append_value_ref(&value).unwrap_err();
+ assert_eq!(
+ err.to_string(),
+ "Value Int(1) does not match schema String: Reason: Unsupported
value-schema combination! Value: Int(1), schema: String"
+ );
+ let err = writer.append_value(value).unwrap_err();
+ assert_eq!(
+ err.to_string(),
+ "Value Int(1) does not match schema String: Reason: Unsupported
value-schema combination! Value: Int(1), schema: String"
+ );
+
+ Ok(())
+ }
}
diff --git a/avro/tests/append_to_existing.rs b/avro/tests/append_to_existing.rs
index ad702f8..ef5723e 100644
--- a/avro/tests/append_to_existing.rs
+++ b/avro/tests/append_to_existing.rs
@@ -40,7 +40,7 @@ fn avro_3630_append_to_an_existing_file() -> TestResult {
let mut writer = Writer::append_to(&schema, bytes, marker)?;
writer
- .append(create_datum(&schema, 2))
+ .append_value(create_datum(&schema, 2))
.expect("An error occurred while appending more data");
let new_bytes = writer.into_inner().expect("Cannot get the new bytes");
@@ -63,7 +63,7 @@ fn avro_4031_append_to_file_using_multiple_writers() ->
TestResult {
.schema(&schema)
.writer(Vec::new())
.build()?;
- first_writer.append(create_datum(&schema, -42))?;
+ first_writer.append_value(create_datum(&schema, -42))?;
let mut resulting_bytes = first_writer.into_inner()?;
let first_marker = read_marker(&resulting_bytes);
@@ -73,7 +73,7 @@ fn avro_4031_append_to_file_using_multiple_writers() ->
TestResult {
.marker(first_marker)
.writer(Vec::new())
.build()?;
- second_writer.append(create_datum(&schema, 42))?;
+ second_writer.append_value(create_datum(&schema, 42))?;
resulting_bytes.append(&mut second_writer.into_inner()?);
let values: Vec<_> = Reader::new(&resulting_bytes[..])?.collect();
@@ -86,7 +86,7 @@ fn avro_4031_append_to_file_using_multiple_writers() ->
TestResult {
fn get_avro_bytes(schema: &Schema) -> Vec<u8> {
let mut writer = Writer::new(schema, Vec::new()).unwrap();
writer
- .append(create_datum(schema, 1))
+ .append_value(create_datum(schema, 1))
.expect("An error while appending data");
writer.into_inner().expect("Cannot get the Avro bytes")
}
diff --git a/avro/tests/codecs.rs b/avro/tests/codecs.rs
index 89471f4..b4e9f99 100644
--- a/avro/tests/codecs.rs
+++ b/avro/tests/codecs.rs
@@ -76,7 +76,7 @@ fn avro_4032_codec_settings(codec: Codec) -> TestResult {
let mut record = Record::new(writer.schema()).unwrap();
record.put("f1", 27_i32);
record.put("f2", "foo");
- writer.append(record)?;
+ writer.append_value(record)?;
let input = writer.into_inner()?;
let mut reader = Reader::new(&input[..])?;
assert_eq!(
diff --git a/avro/tests/schema.rs b/avro/tests/schema.rs
index e986848..04f0d25 100644
--- a/avro/tests/schema.rs
+++ b/avro/tests/schema.rs
@@ -814,7 +814,7 @@ fn test_record_schema_with_cyclic_references() ->
TestResult {
);
let mut writer = Writer::with_codec(&schema, Vec::new(), Codec::Null)?;
- if let Err(err) = writer.append(datum) {
+ if let Err(err) = writer.append_value(datum) {
panic!("An error occurred while writing datum: {err:?}")
}
let bytes = writer.into_inner()?;
@@ -1027,7 +1027,7 @@ fn test_avro_3847_union_field_with_default_value_of_ref()
-> TestResult {
let mut writer = Writer::new(&writer_schema, Vec::new())?;
let mut record = Record::new(writer.schema()).ok_or("Expected
Some(Record), but got None")?;
record.put("f1", Value::Record(vec![("f1_1".to_string(), 10.into())]));
- writer.append(record)?;
+ writer.append_value(record)?;
let reader_schema_str = r#"
{
@@ -1100,7 +1100,7 @@ fn test_avro_3847_union_field_with_default_value_of_ref()
-> TestResult {
let mut writer = Writer::new(&writer_schema, Vec::new())?;
let mut record = Record::new(writer.schema()).ok_or("Expected
Some(Record), but got None")?;
record.put("f1", Value::Enum(1, "b".to_string()));
- writer.append(record)?;
+ writer.append_value(record)?;
let reader_schema_str = r#"
{
@@ -1160,7 +1160,7 @@ fn test_avro_3847_union_field_with_default_value_of_ref()
-> TestResult {
let mut writer = Writer::new(&writer_schema, Vec::new())?;
let mut record = Record::new(writer.schema()).ok_or("Expected
Some(Record), but got None")?;
record.put("f1", Value::Fixed(3, vec![0, 1, 2]));
- writer.append(record)?;
+ writer.append_value(record)?;
let reader_schema_str = r#"
{
@@ -1231,7 +1231,7 @@ fn
test_avro_3847_union_field_with_default_value_of_ref_with_namespace() -> Test
let mut writer = Writer::new(&writer_schema, Vec::new())?;
let mut record = Record::new(writer.schema()).ok_or("Expected
Some(Record), but got None")?;
record.put("f1", Value::Record(vec![("f1_1".to_string(), 10.into())]));
- writer.append(record)?;
+ writer.append_value(record)?;
let reader_schema_str = r#"
{
@@ -1306,7 +1306,7 @@ fn
test_avro_3847_union_field_with_default_value_of_ref_with_namespace() -> Test
let mut writer = Writer::new(&writer_schema, Vec::new())?;
let mut record = Record::new(writer.schema()).ok_or("Expected
Some(Record), but got None")?;
record.put("f1", Value::Enum(1, "b".to_string()));
- writer.append(record)?;
+ writer.append_value(record)?;
let reader_schema_str = r#"
{
@@ -1368,7 +1368,7 @@ fn
test_avro_3847_union_field_with_default_value_of_ref_with_namespace() -> Test
let mut writer = Writer::new(&writer_schema, Vec::new())?;
let mut record = Record::new(writer.schema()).ok_or("Expected
Some(Record), but got None")?;
record.put("f1", Value::Fixed(3, vec![0, 1, 2]));
- writer.append(record)?;
+ writer.append_value(record)?;
let reader_schema_str = r#"
{
@@ -1440,7 +1440,7 @@ fn
test_avro_3847_union_field_with_default_value_of_ref_with_enclosing_namespace
let mut writer = Writer::new(&writer_schema, Vec::new())?;
let mut record = Record::new(writer.schema()).ok_or("Expected
Some(Record), but got None")?;
record.put("f1", Value::Record(vec![("f1_1".to_string(), 10.into())]));
- writer.append(record)?;
+ writer.append_value(record)?;
let reader_schema_str = r#"
{
@@ -1515,7 +1515,7 @@ fn
test_avro_3847_union_field_with_default_value_of_ref_with_enclosing_namespace
let mut writer = Writer::new(&writer_schema, Vec::new())?;
let mut record = Record::new(writer.schema()).ok_or("Expected
Some(Record), but got None")?;
record.put("f1", Value::Enum(1, "b".to_string()));
- writer.append(record)?;
+ writer.append_value(record)?;
let reader_schema_str = r#"
{
@@ -1577,7 +1577,7 @@ fn
test_avro_3847_union_field_with_default_value_of_ref_with_enclosing_namespace
let mut writer = Writer::new(&writer_schema, Vec::new())?;
let mut record = Record::new(writer.schema()).ok_or("Expected
Some(Record), but got None")?;
record.put("f1", Value::Fixed(3, vec![0, 1, 2]));
- writer.append(record)?;
+ writer.append_value(record)?;
let reader_schema_str = r#"
{
@@ -1640,7 +1640,7 @@ fn write_schema_for_default_value_test() ->
apache_avro::AvroResult<Vec<u8>> {
.ok_or("Expected Some(Record), but got None")
.unwrap();
record.put("f1", 10);
- writer.append(record)?;
+ writer.append_value(record)?;
writer.into_inner()
}
@@ -1921,7 +1921,7 @@ fn
test_avro_3851_read_default_value_for_ref_record_field() -> TestResult {
let mut writer = Writer::new(&writer_schema, Vec::new())?;
let mut record = Record::new(writer.schema()).ok_or("Expected
Some(Record), but got None")?;
record.put("f1", Value::Record(vec![("f1_1".to_string(), 10.into())]));
- writer.append(record)?;
+ writer.append_value(record)?;
let reader_schema_str = r#"
{
@@ -1984,7 +1984,7 @@ fn test_avro_3851_read_default_value_for_enum() ->
TestResult {
"#;
let writer_schema = Schema::parse_str(writer_schema_str)?;
let mut writer = Writer::new(&writer_schema, Vec::new())?;
- writer.append("c")?;
+ writer.append_value("c")?;
let reader_schema_str = r#"
{
@@ -2351,7 +2351,7 @@ fn avro_rs_181_single_null_record() -> TestResult {
let mut buff = Cursor::new(Vec::new());
let schema = Schema::parse_str(r#""null""#)?;
let mut writer = Writer::new(&schema, &mut buff)?;
- writer.append(serde_json::Value::Null)?;
+ writer.append_value(serde_json::Value::Null)?;
writer.into_inner()?;
buff.set_position(0);
diff --git a/avro/tests/shared.rs b/avro/tests/shared.rs
index b240983..c0a51b6 100644
--- a/avro/tests/shared.rs
+++ b/avro/tests/shared.rs
@@ -120,7 +120,9 @@ fn test_folder(folder: &Path) -> Result<(), ErrorsDesc> {
for r in reader {
let record: Value = r.expect("Error on reading");
- writer.append(record.clone()).expect("Error on write item");
+ writer
+ .append_value(record.clone())
+ .expect("Error on write item");
records.push(record);
}
diff --git a/avro/tests/to_from_avro_datum_schemata.rs
b/avro/tests/to_from_avro_datum_schemata.rs
index b5389fe..8617c56 100644
--- a/avro/tests/to_from_avro_datum_schemata.rs
+++ b/avro/tests/to_from_avro_datum_schemata.rs
@@ -108,7 +108,7 @@ fn test_avro_3683_multiple_schemata_writer_reader() ->
TestResult {
let mut output: Vec<u8> = Vec::new();
let mut writer = Writer::with_schemata(schema_b, schemata.clone(), &mut
output, Codec::Null)?;
- writer.append(record.clone())?;
+ writer.append_value(record.clone())?;
writer.flush()?;
drop(writer); //drop the writer so that `output` is no more referenced
mutably
diff --git a/wasm-demo/tests/demos.rs b/wasm-demo/tests/demos.rs
index 6bd0842..b423bb7 100644
--- a/wasm-demo/tests/demos.rs
+++ b/wasm-demo/tests/demos.rs
@@ -70,7 +70,7 @@ fn write_read() {
Codec::Null,
)
.unwrap();
- writer.append(record).unwrap();
+ writer.append_value(record).unwrap();
writer.flush().unwrap();
let bytes = writer.into_inner().unwrap().into_inner().unwrap();