avro-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Steve Sun <steve.j....@gmail.com>
Subject Re: java.math.BigDecimal to Avro .avdl file help please
Date Thu, 16 Feb 2017 02:50:57 GMT
Thanks Nathan for your info and effort.

I really appreciate it.

Also, I posted the same question on Stackoverflow:
http://stackoverflow.com/questions/41969300/java-math-bigdecimal-to-avro-avdl-file,
looks like we're not alone.

Feel free to share your updates below that question as well to benefit more
developers.

Steve



On Wed, Feb 15, 2017 at 8:14 AM, Nathan Fisher <nfisher@junctionbox.ca>
wrote:

> Hi Steve,
>
> I'm seeing the same issue. I think you'll need to drop down to JSON. The
> IDL appears to provide a subset of the Avro specification.
>
> I've started mapping the gaps with the following record type:
>
> enum YesNo { YES, NO }
> fixed TWO(2);
>
> record IdlHarness {
>     // primitives
>     boolean bool = true;
>     int i = 0;
>     int iN = null;
>     long l = 0;
>     long lN = null;
>     float f = 0.1;
>     float fN = 0.1;
>     double d = 0.1;
>     double dN = null;
>     bytes b = "banana";
>     bytes bN = null;
>     string s = "s";
>     string sN = null;
>
>     // complex
>     YesNo en = "YES";
>     YesNo enN = null;
>     array<int> a = [1];
>     array<int> aN = null;
>     map<int> m = { "hello": 1 };
>     map<int> mN = null;
>     union {null, string} un = "hello";
>     union {null, string} unN = null;
>     TWO fix = "12";
>     TWO fixN = null;
>
>     // logical
>     // decimal dec; // error
>     date dt = "2017-01-01";
>     date dtN = null;
>     // time-millis ms; // fails
>     // time-micros us; // fails
>     // timestamp-millis tsms; // fails
>     // timestamp-micros tsus; // fails
>     // duration du; // fails
> }
>
> I've put my results into the Google sheet below. It's still a work in
> progress and I'll try to turn it into a JUnit test scenario.
> https://docs.google.com/spreadsheets/d/1dQAyWbrD5PmHzMJ7sVovHBoZug6jl
> t_x_Htc7ixdbP8/edit?usp=sharing
>
> Kind regards,
> Nathan
>
> On Wed, 1 Feb 2017 at 05:12 Steve Sun <steve.j.sun@gmail.com> wrote:
>
> Hi Avro users mailing list,
>
> I'm having trouble writing an Avro schema for java.math.BigDecimal type, I
> tried the following:
>
> 1. Based on Avro official doc: https://avro.apache.org/docs/
> 1.8.1/spec.html#Decimal, I know I need to define Logical Types myself to
> support BigDecimal, but that link gives example only in avsc, I'm trying to
> figure it out in avdl.
> 2. Based on Avro dochttps://avro.apache.org/docs/1.7.6/api/java/org/
> apache/avro/reflect/package-summary.html and this example:
> https://github.com/apache/avro/blob/master/share/
> test/schemas/stringables.avdl, I wrote below avdl:
>
>
>
>     @namespace("test")
>     protocol My_Protocol_v1 {
>
>       record BigDecimal {
>             @java-class("java.math.BigDecimal") string value;
>       }
>
>
>
> But it's not working:
> This IDL schema compiles fine and can generate a Java class called
> BigDecimal, but I cannot really use the generated BigDecimal as
> java.math.BigDecimal, what's wrong? or How should I do it?
>
> Thanks a lot
> Steve
>
> --
> - from my thumbs to your eyes
>

Mime
View raw message