Skip to content

Commit

Permalink
AVRO-3948: [Rust] Re-export bigdecimal::BigDecimal as apache_avro::Bi…
Browse files Browse the repository at this point in the history
…gDecimal (#2771)

Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
  • Loading branch information
martin-g authored Feb 27, 2024
1 parent a11c25b commit 87f7fd2
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 19 deletions.
2 changes: 1 addition & 1 deletion lang/rust/avro/src/bigdecimal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ use crate::{
types::Value,
Error,
};
use bigdecimal::BigDecimal;
pub use bigdecimal::BigDecimal;
use num_bigint::BigInt;
use std::io::Read;

Expand Down
1 change: 1 addition & 0 deletions lang/rust/avro/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -820,6 +820,7 @@ pub mod schema_equality;
pub mod types;
pub mod validator;

pub use crate::bigdecimal::BigDecimal;
pub use codec::Codec;
pub use de::from_value;
pub use decimal::Decimal;
Expand Down
36 changes: 18 additions & 18 deletions lang/rust/avro/tests/avro-3786.rs
Original file line number Diff line number Diff line change
Expand Up @@ -127,15 +127,15 @@ fn avro_3786_deserialize_union_with_different_enum_order() -> TestResult {
bar_init: Bar::Bar1,
bar_use_parent: Some(BarUseParent { bar_use: Bar::Bar1 }),
};
let avro_value = crate::to_value(foo1)?;
let avro_value = to_value(foo1)?;
assert!(
avro_value.validate(&writer_schema),
"value is valid for schema",
);
let datum = crate::to_avro_datum(&writer_schema, avro_value)?;
let datum = to_avro_datum(&writer_schema, avro_value)?;
let mut x = &datum[..];
let reader_schema = Schema::parse_str(reader_schema)?;
let deser_value = crate::from_avro_datum(&writer_schema, &mut x, Some(&reader_schema))?;
let deser_value = from_avro_datum(&writer_schema, &mut x, Some(&reader_schema))?;
match deser_value {
types::Value::Record(fields) => {
assert_eq!(fields.len(), 2);
Expand Down Expand Up @@ -251,15 +251,15 @@ fn avro_3786_deserialize_union_with_different_enum_order_defined_in_record() ->
let foo1 = Foo {
bar_parent: Some(BarParent { bar: Bar::Bar0 }),
};
let avro_value = crate::to_value(foo1)?;
let avro_value = to_value(foo1)?;
assert!(
avro_value.validate(&writer_schema),
"value is valid for schema",
);
let datum = crate::to_avro_datum(&writer_schema, avro_value)?;
let datum = to_avro_datum(&writer_schema, avro_value)?;
let mut x = &datum[..];
let reader_schema = Schema::parse_str(reader_schema)?;
let deser_value = crate::from_avro_datum(&writer_schema, &mut x, Some(&reader_schema))?;
let deser_value = from_avro_datum(&writer_schema, &mut x, Some(&reader_schema))?;
match deser_value {
types::Value::Record(fields) => {
assert_eq!(fields.len(), 1);
Expand Down Expand Up @@ -364,15 +364,15 @@ fn test_avro_3786_deserialize_union_with_different_enum_order_defined_in_record_
let foo1 = Foo {
bar_parent: Some(BarParent { bar: Bar::Bar1 }),
};
let avro_value = crate::to_value(foo1)?;
let avro_value = to_value(foo1)?;
assert!(
avro_value.validate(&writer_schema),
"value is valid for schema",
);
let datum = crate::to_avro_datum(&writer_schema, avro_value)?;
let datum = to_avro_datum(&writer_schema, avro_value)?;
let mut x = &datum[..];
let reader_schema = Schema::parse_str(reader_schema)?;
let deser_value = crate::from_avro_datum(&writer_schema, &mut x, Some(&reader_schema))?;
let deser_value = from_avro_datum(&writer_schema, &mut x, Some(&reader_schema))?;
match deser_value {
types::Value::Record(fields) => {
assert_eq!(fields.len(), 1);
Expand Down Expand Up @@ -477,15 +477,15 @@ fn test_avro_3786_deserialize_union_with_different_enum_order_defined_in_record_
let foo1 = Foo {
bar_parent: Some(BarParent { bar: Bar::Bar1 }),
};
let avro_value = crate::to_value(foo1)?;
let avro_value = to_value(foo1)?;
assert!(
avro_value.validate(&writer_schema),
"value is valid for schema",
);
let datum = crate::to_avro_datum(&writer_schema, avro_value)?;
let datum = to_avro_datum(&writer_schema, avro_value)?;
let mut x = &datum[..];
let reader_schema = Schema::parse_str(reader_schema)?;
let deser_value = crate::from_avro_datum(&writer_schema, &mut x, Some(&reader_schema))?;
let deser_value = from_avro_datum(&writer_schema, &mut x, Some(&reader_schema))?;
match deser_value {
types::Value::Record(fields) => {
assert_eq!(fields.len(), 1);
Expand Down Expand Up @@ -590,15 +590,15 @@ fn deserialize_union_with_different_enum_order_defined_in_record() -> TestResult
let foo1 = Foo {
bar_parent: Some(BarParent { bar: Bar::Bar2 }),
};
let avro_value = crate::to_value(foo1)?;
let avro_value = to_value(foo1)?;
assert!(
avro_value.validate(&writer_schema),
"value is valid for schema",
);
let datum = crate::to_avro_datum(&writer_schema, avro_value)?;
let datum = to_avro_datum(&writer_schema, avro_value)?;
let mut x = &datum[..];
let reader_schema = Schema::parse_str(reader_schema)?;
let deser_value = crate::from_avro_datum(&writer_schema, &mut x, Some(&reader_schema))?;
let deser_value = from_avro_datum(&writer_schema, &mut x, Some(&reader_schema))?;
match deser_value {
types::Value::Record(fields) => {
assert_eq!(fields.len(), 1);
Expand Down Expand Up @@ -864,15 +864,15 @@ fn deserialize_union_with_record_with_enum_defined_inline_reader_has_different_i
defined_in_record: DefinedInRecord::Val1,
}),
};
let avro_value = crate::to_value(foo1)?;
let avro_value = to_value(foo1)?;
assert!(
avro_value.validate(&writer_schema),
"value is valid for schema",
);
let datum = crate::to_avro_datum(&writer_schema, avro_value)?;
let datum = to_avro_datum(&writer_schema, avro_value)?;
let mut x = &datum[..];
let reader_schema = Schema::parse_str(reader_schema)?;
let deser_value = crate::from_avro_datum(&writer_schema, &mut x, Some(&reader_schema))?;
let deser_value = from_avro_datum(&writer_schema, &mut x, Some(&reader_schema))?;
match deser_value {
types::Value::Record(fields) => {
assert_eq!(fields.len(), 3);
Expand Down
23 changes: 23 additions & 0 deletions lang/rust/avro/tests/big_decimal.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.

use apache_avro::BigDecimal;

#[test]
fn avro_3948_use_apache_avro_big_decimal() {
let _ = BigDecimal::from(1234567890123456789_i64);
}

0 comments on commit 87f7fd2

Please sign in to comment.