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 <[email protected]> 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

Reply via email to