avro-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Doug Cutting <cutt...@gmail.com>
Subject Re: java.math.BigDecimal to Avro .avdl file help please
Date Thu, 16 Feb 2017 17:37:56 GMT
I believe this has already been implemented but not yet released.

It was implemented in:

https://issues.apache.org/jira/browse/AVRO-1847

This is slated to be included in the 1.8.2 release, which should soon be out.

Doug

On Wed, Feb 15, 2017 at 6:50 PM, Steve Sun <steve.j.sun@gmail.com> wrote:
> 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/1dQAyWbrD5PmHzMJ7sVovHBoZug6jlt_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