You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Martin Tzvetanov Grigorov (Jira)" <ji...@apache.org> on 2022/01/31 07:37:00 UTC

[jira] [Comment Edited] (AVRO-3331) Rust: Cannot extract Decimal value

    [ https://issues.apache.org/jira/browse/AVRO-3331?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17484553#comment-17484553 ] 

Martin Tzvetanov Grigorov edited comment on AVRO-3331 at 1/31/22, 7:36 AM:
---------------------------------------------------------------------------

I wonder how this is supposed to work...

num_bigint does not support decimals!
{code:java}
use num_bigint::BigInt;
use num_traits::FromPrimitive;
use num_traits::cast::ToPrimitive;

let big_int = BigInt::from_f32(9936.23_f32).unwrap();
println!("as float {:.2?}", big_int.to_f32().unwrap());  // prints 9936.00, i.e. .23 is lost!{code}
 

I might be missing something but I have the feeling we will have to rework it to use some BigDecimal library, like [https://github.com/akubera/bigdecimal-rs]


was (Author: mgrigorov):
I wonder how this is supposed to work...

num_bigint does not support decimals!
{code:java}
use num_traits::FromPrimitive;
use num_traits::cast::ToPrimitive;

let big_int = BigInt::from_f32(9936.23_f32).unwrap();
println!("as float {:.2?}", big_int.to_f32().unwrap());  // prints 9936.00, i.e. .23 is lost!{code}
 

I might be missing something but I have the feeling we will have to rework it to use some BigDecimal library, like https://github.com/akubera/bigdecimal-rs

> Rust: Cannot extract Decimal value
> ----------------------------------
>
>                 Key: AVRO-3331
>                 URL: https://issues.apache.org/jira/browse/AVRO-3331
>             Project: Apache Avro
>          Issue Type: Bug
>          Components: rust
>            Reporter: Thomas Schilling
>            Assignee: Martin Tzvetanov Grigorov
>            Priority: Major
>
> The [Decimal|https://docs.rs/avro-rs/latest/avro_rs/struct.Decimal.html] type (as of 0.13) doesn't have any methods or trait implementations that allow users to extract the value. The only workaround I could think of would be to parse the output of the `Debug` implementation. But that's clearly very inefficient and fragile.
> The (unreleased?) version 0.14 also seems to have the same issue ([source|https://github.com/apache/avro/blob/master/lang/rust/src/decimal.rs]).
> It might just be enough to make the {{to_vec }}method public and specify how to interpret the result vector.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)