You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by kr...@apache.org on 2026/01/31 09:42:46 UTC
(avro-rs) branch fix/value_to_value created (now 6408528)
This is an automated email from the ASF dual-hosted git repository.
kriskras99 pushed a change to branch fix/value_to_value
in repository https://gitbox.apache.org/repos/asf/avro-rs.git
at 6408528 fix: Don't silently truncate numbers larger than `i64::MAX` when converting from JSON
This branch includes the following new commits:
new 6408528 fix: Don't silently truncate numbers larger than `i64::MAX` when converting from JSON
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(avro-rs) 01/01: fix: Don't silently truncate numbers larger than `i64::MAX` when converting from JSON
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
kriskras99 pushed a commit to branch fix/value_to_value
in repository https://gitbox.apache.org/repos/asf/avro-rs.git
commit 64085281bf67cbe87aa42f1599acb12067f66cdf
Author: Kriskras99 <gi...@kriskras99.nl>
AuthorDate: Sat Jan 31 10:42:35 2026 +0100
fix: Don't silently truncate numbers larger than `i64::MAX` when converting from JSON
---
avro/src/types.rs | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/avro/src/types.rs b/avro/src/types.rs
index 0060987..9e4af89 100644
--- a/avro/src/types.rs
+++ b/avro/src/types.rs
@@ -145,7 +145,7 @@ to_value!(f32, Value::Float);
to_value!(f64, Value::Double);
to_value!(String, Value::String);
to_value!(Vec<u8>, Value::Bytes);
-to_value!(uuid::Uuid, Value::Uuid);
+to_value!(Uuid, Value::Uuid);
to_value!(Decimal, Value::Decimal);
to_value!(BigDecimal, Value::BigDecimal);
to_value!(Duration, Value::Duration);
@@ -283,7 +283,7 @@ impl From<JsonValue> for Value {
}
}
JsonValue::Number(ref n) if n.is_f64() => Value::Double(n.as_f64().unwrap()),
- JsonValue::Number(n) => Value::Long(n.as_u64().unwrap() as i64), // TODO: Not so great
+ JsonValue::Number(n) => panic!("{n:?} does not fit into an Avro long"),
JsonValue::String(s) => s.into(),
JsonValue::Array(items) => Value::Array(items.into_iter().map(Value::from).collect()),
JsonValue::Object(items) => Value::Map(
@@ -3240,7 +3240,6 @@ Field with name '"b"' is not a member of the map items"#,
assert_eq!(Value::from(json!(1.23)), Value::Double(1.23));
assert_eq!(Value::from(json!(-1.23)), Value::Double(-1.23));
assert_eq!(Value::from(json!(u64::MIN)), Value::Int(u64::MIN as i32));
- assert_eq!(Value::from(json!(u64::MAX)), Value::Long(u64::MAX as i64));
assert_eq!(
Value::from(json!("some text")),
Value::String("some text".into())
@@ -3500,4 +3499,10 @@ Field with name '"b"' is not a member of the map items"#,
Details::ZagI32(_, _)
));
}
+
+ #[test]
+ #[should_panic(expected = "Number(18446744073709551615) does not fit into an Avro long")]
+ fn avro_rs_xxx_serde_json_number_u64_max() {
+ let _ = Value::from(json!(u64::MAX));
+ }
}